@gavin-hu/my-pi-agent 0.18.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -52
- package/README.zh-CN.md +56 -46
- package/docs/extensions/README.md +34 -0
- package/docs/extensions/board.md +507 -0
- package/{extensions/bytefly/README.md → docs/extensions/bytefly.md} +774 -574
- package/{extensions/check/README.md → docs/extensions/check.md} +83 -68
- package/{extensions/context/README.md → docs/extensions/context.md} +40 -23
- package/docs/extensions/file-browse.md +561 -0
- package/{extensions/file-open/README.md → docs/extensions/file-open.md} +31 -23
- package/{extensions/file-read/README.md → docs/extensions/file-read.md} +47 -55
- package/{extensions/goal/README.md → docs/extensions/goal.md} +115 -131
- package/{extensions/job/README.md → docs/extensions/job.md} +62 -52
- package/{extensions/memory/README.md → docs/extensions/memory.md} +71 -60
- package/{extensions/plan/README.md → docs/extensions/plan.md} +440 -322
- package/{extensions/question/README.md → docs/extensions/question.md} +54 -31
- package/{extensions/rewind/README.md → docs/extensions/rewind.md} +115 -122
- package/docs/extensions/session-bus.md +298 -0
- package/{extensions/subagent/README.md → docs/extensions/subagent.md} +165 -118
- package/docs/extensions/team.md +254 -0
- package/{extensions/todo/README.md → docs/extensions/todo.md} +85 -88
- package/{extensions/watch/README.md → docs/extensions/watch.md} +54 -36
- package/{extensions/web-access/README.md → docs/extensions/web-access.md} +93 -50
- package/{extensions/wechat/README.md → docs/extensions/wechat.md} +260 -163
- package/{extensions/worktree/README.md → docs/extensions/worktree.md} +137 -79
- package/extensions/board/commands.ts +105 -0
- package/extensions/board/config.ts +36 -0
- package/extensions/board/format.ts +170 -0
- package/extensions/board/index.ts +40 -0
- package/extensions/board/input.ts +54 -0
- package/extensions/board/join.ts +42 -0
- package/extensions/board/page.ts +388 -0
- package/extensions/board/result.ts +108 -0
- package/extensions/board/rows.ts +48 -0
- package/extensions/board/schema.ts +90 -0
- package/extensions/board/seat.ts +28 -0
- package/extensions/board/snapshot.ts +42 -0
- package/extensions/board/tools.ts +444 -0
- package/extensions/board/transport/router.ts +91 -0
- package/extensions/board/transport/server.ts +138 -0
- package/extensions/board/types.ts +121 -0
- package/extensions/board/view/client.ts +51 -0
- package/extensions/board/view/dialog.ts +43 -0
- package/extensions/board/view/keys.ts +125 -0
- package/extensions/board/view/live.ts +231 -0
- package/extensions/board/view/names.ts +91 -0
- package/extensions/board/view/page.ts +118 -0
- package/extensions/board/view/render.ts +519 -0
- package/extensions/board/view/styles.ts +228 -0
- package/extensions/board/view/team.ts +327 -0
- package/extensions/bytefly/footer/budget.ts +6 -5
- package/extensions/bytefly/footer/collect/entries.ts +12 -4
- package/extensions/bytefly/footer/collect/snapshot.ts +8 -17
- package/extensions/bytefly/footer/config.ts +19 -8
- package/extensions/bytefly/footer/price/price.ts +30 -8
- package/extensions/bytefly/footer/register.ts +5 -5
- package/extensions/bytefly/footer/render/format.ts +18 -0
- package/extensions/bytefly/footer/render/lines.ts +23 -7
- package/extensions/bytefly/footer/render/segments.ts +117 -31
- package/extensions/bytefly/footer/types.ts +29 -5
- package/extensions/bytefly/footer/unpriced.ts +42 -17
- package/extensions/bytefly/panel/commands.ts +67 -7
- package/extensions/bytefly/panel/filter.ts +68 -0
- package/extensions/bytefly/panel/format.ts +16 -15
- package/extensions/bytefly/panel/join.ts +56 -13
- package/extensions/bytefly/panel/prices.ts +43 -0
- package/extensions/bytefly/panel/settings-runtime.ts +0 -6
- package/extensions/bytefly/panel/settings.ts +75 -43
- package/extensions/bytefly/panel/tui/entries.ts +26 -8
- package/extensions/bytefly/panel/tui/frame.ts +130 -93
- package/extensions/bytefly/panel/tui/keys.ts +352 -0
- package/extensions/bytefly/panel/tui/list-view.ts +25 -46
- package/extensions/bytefly/panel/tui/panes.ts +76 -0
- package/extensions/bytefly/panel/tui/section-view.ts +126 -0
- package/extensions/bytefly/panel/tui/settings-section.ts +54 -125
- package/extensions/bytefly/panel/tui/settings-view.ts +30 -131
- package/extensions/bytefly/panel/tui/side-pane.ts +224 -0
- package/extensions/bytefly/panel/tui.ts +306 -259
- package/extensions/bytefly/picker/discovery.ts +0 -2
- package/extensions/bytefly/picker/types.ts +0 -2
- package/extensions/bytefly/update/check.ts +39 -0
- package/extensions/bytefly/update/format.ts +15 -0
- package/extensions/bytefly/update/register.ts +73 -34
- package/extensions/bytefly/update/state.ts +6 -3
- package/extensions/check/commands.ts +2 -1
- package/extensions/context/tui.ts +1 -1
- package/extensions/file-browse/{config.ts → config/config.ts} +1 -1
- package/extensions/file-browse/files/classify.ts +136 -0
- package/extensions/file-browse/files/files.ts +12 -0
- package/extensions/file-browse/files/index.ts +90 -0
- package/extensions/file-browse/files/list.ts +261 -0
- package/extensions/file-browse/{paths.ts → files/paths.ts} +1 -1
- package/extensions/file-browse/files/tree.ts +101 -0
- package/extensions/file-browse/{git.ts → git/git.ts} +10 -3
- package/extensions/file-browse/index.ts +4 -4
- package/extensions/file-browse/{live.ts → live/live.ts} +20 -69
- package/extensions/file-browse/{router.ts → transport/router.ts} +21 -17
- package/extensions/file-browse/transport/server.ts +110 -0
- package/extensions/file-browse/{chrome.ts → view/chrome.ts} +4 -4
- package/extensions/file-browse/{client.ts → view/client.ts} +1 -1
- package/extensions/file-browse/{diff-html.ts → view/diff-html.ts} +3 -3
- package/extensions/file-browse/view/emit.ts +51 -0
- package/extensions/file-browse/{html.ts → view/html.ts} +19 -18
- package/extensions/file-browse/{icons.ts → view/icons.ts} +1 -1
- package/extensions/file-browse/{markdown.ts → view/markdown.ts} +18 -20
- package/extensions/file-browse/{raw-html.ts → view/raw-html.ts} +19 -14
- package/extensions/file-browse/{styles.ts → view/styles.ts} +29 -5
- package/extensions/file-browse/{tree.ts → view/tree.ts} +1 -1
- package/extensions/file-browse/{urls.ts → view/urls.ts} +1 -1
- package/extensions/file-read/schema.ts +2 -1
- package/extensions/job/runtime.ts +4 -4
- package/extensions/memory/store.ts +12 -5
- package/extensions/plan/blocks.ts +23 -2
- package/extensions/plan/commands.ts +21 -16
- package/extensions/plan/feedback.ts +185 -52
- package/extensions/plan/format.ts +10 -3
- package/extensions/plan/index.ts +23 -5
- package/extensions/plan/plan-files.ts +88 -0
- package/extensions/plan/plan-index.ts +43 -9
- package/extensions/plan/plan-text.ts +33 -23
- package/extensions/plan/plans.ts +27 -34
- package/extensions/plan/policy.ts +30 -17
- package/extensions/plan/review.ts +3 -27
- package/extensions/plan/runtime.ts +52 -11
- package/extensions/plan/sections.ts +112 -0
- package/extensions/plan/steps.ts +3 -22
- package/extensions/plan/todos.ts +51 -3
- package/extensions/plan/tools/exit.ts +20 -95
- package/extensions/plan/tools/todo-seed.ts +4 -2
- package/extensions/plan/tools/write.ts +12 -1
- package/extensions/plan/tui.ts +5 -34
- package/extensions/plan/types.ts +15 -8
- package/extensions/plan/web-blocks.ts +89 -0
- package/extensions/plan/web-chrome.ts +3 -5
- package/extensions/plan/web-client.ts +179 -330
- package/extensions/plan/web-collab.ts +3 -3
- package/extensions/plan/web-comments.ts +18 -8
- package/extensions/plan/web-composer.ts +80 -0
- package/extensions/plan/web-draft.ts +40 -0
- package/extensions/plan/web-keys.ts +134 -0
- package/extensions/plan/web-outline.ts +192 -0
- package/extensions/plan/web-page.ts +4 -8
- package/extensions/plan/web-plan.ts +150 -0
- package/extensions/plan/web-router.ts +3 -58
- package/extensions/plan/web-settle.ts +194 -0
- package/extensions/plan/web-share-session.ts +24 -30
- package/extensions/plan/web-streams.ts +14 -14
- package/extensions/plan/web-tokens.ts +2 -2
- package/extensions/plan/web.ts +66 -120
- package/extensions/rewind/{commands.ts → commands/commands.ts} +5 -5
- package/extensions/rewind/{review.ts → commands/review.ts} +15 -14
- package/extensions/rewind/{rewind.ts → commands/rewind.ts} +6 -6
- package/extensions/rewind/{config.ts → config/config.ts} +1 -1
- package/extensions/rewind/index.ts +3 -3
- package/extensions/rewind/{policy.ts → state/policy.ts} +4 -4
- package/extensions/rewind/{runtime.ts → state/runtime.ts} +11 -11
- package/extensions/rewind/{snapshot-run.ts → state/snapshot-run.ts} +1 -1
- package/extensions/rewind/{timeline.ts → state/timeline.ts} +2 -2
- package/extensions/rewind/{format.ts → text/format.ts} +3 -3
- package/extensions/rewind/{git.ts → transport/git.ts} +2 -2
- package/extensions/rewind/{restore.ts → transport/restore.ts} +2 -2
- package/extensions/rewind/{snapshot.ts → transport/snapshot.ts} +1 -1
- package/extensions/rewind/{store.ts → transport/store.ts} +1 -1
- package/extensions/rewind/{checklist.ts → view/checklist.ts} +6 -6
- package/extensions/rewind/{hunk-picker.ts → view/hunk-picker.ts} +8 -8
- package/extensions/rewind/{path-picker.ts → view/path-picker.ts} +7 -7
- package/extensions/rewind/{review-tui.ts → view/review-tui.ts} +11 -11
- package/extensions/rewind/{rewind-tui.ts → view/rewind-tui.ts} +17 -11
- package/extensions/rewind/{status.ts → view/status.ts} +4 -4
- package/extensions/session-bus/commands.ts +17 -69
- package/extensions/session-bus/format.ts +22 -45
- package/extensions/session-bus/index.ts +13 -7
- package/extensions/session-bus/join-request.ts +40 -0
- package/extensions/session-bus/mail-watch.ts +134 -0
- package/extensions/session-bus/notice.ts +32 -4
- package/{lib/claims → extensions/session-bus}/overlap.ts +11 -18
- package/extensions/session-bus/protocol.ts +19 -49
- package/extensions/session-bus/resolve.ts +67 -0
- package/extensions/session-bus/result.ts +16 -51
- package/extensions/session-bus/rows.ts +11 -5
- package/extensions/session-bus/runtime.ts +220 -267
- package/extensions/session-bus/store.ts +55 -7
- package/extensions/session-bus/tools.ts +31 -66
- package/extensions/session-bus/tui.ts +5 -5
- package/extensions/session-bus/types.ts +23 -14
- package/extensions/subagent/agents.ts +9 -8
- package/extensions/subagent/commands.ts +2 -1
- package/extensions/subagent/invocation.ts +4 -2
- package/extensions/team/commands.ts +145 -0
- package/extensions/team/dispatch.ts +133 -0
- package/extensions/team/format.ts +119 -0
- package/extensions/team/index.ts +34 -0
- package/extensions/team/schema.ts +29 -0
- package/extensions/team/tools.ts +267 -0
- package/extensions/team/types.ts +65 -0
- package/extensions/todo/index.ts +4 -1
- package/extensions/todo/nudge.ts +8 -2
- package/extensions/web-access/fetch/page.ts +4 -1
- package/extensions/web-access/fetch/structured.ts +447 -0
- package/extensions/web-access/fetch/tool.ts +2 -1
- package/extensions/web-access/search/tool.ts +2 -1
- package/extensions/wechat/bridge.ts +106 -251
- package/extensions/wechat/{commands.ts → commands/commands.ts} +26 -18
- package/extensions/wechat/{doctor.ts → commands/doctor.ts} +5 -5
- package/extensions/wechat/{history.ts → commands/history.ts} +1 -1
- package/extensions/wechat/{login.ts → commands/login.ts} +3 -3
- package/extensions/wechat/{slash.ts → commands/slash.ts} +38 -2
- package/extensions/wechat/dialog/channels.ts +136 -0
- package/extensions/wechat/{interaction.ts → dialog/interaction.ts} +37 -37
- package/extensions/wechat/{prompt.ts → dialog/prompt.ts} +2 -2
- package/extensions/wechat/{remote-ui.ts → dialog/remote-ui.ts} +1 -1
- package/extensions/wechat/index.ts +10 -10
- package/extensions/wechat/intake.ts +245 -0
- package/extensions/wechat/{admission.ts → peer/admission.ts} +2 -2
- package/extensions/wechat/{peer-session.ts → peer/peer-session.ts} +2 -2
- package/extensions/wechat/{peer-worker.ts → peer/peer-worker.ts} +100 -22
- package/extensions/wechat/{presence.ts → peer/presence.ts} +8 -7
- package/extensions/wechat/{reply-pipeline.ts → peer/reply-pipeline.ts} +1 -1
- package/extensions/wechat/{credentials.ts → state/credentials.ts} +2 -2
- package/extensions/wechat/{state.ts → state/state.ts} +14 -2
- package/extensions/wechat/{format.ts → text/format.ts} +3 -3
- package/extensions/wechat/{notices.ts → text/notices.ts} +8 -0
- package/extensions/wechat/tools.ts +29 -12
- package/extensions/wechat/{client.ts → transport/client.ts} +26 -2
- package/extensions/wechat/{deliver.ts → transport/deliver.ts} +72 -28
- package/extensions/wechat/{inbound.ts → transport/inbound.ts} +5 -5
- package/extensions/wechat/{media.ts → transport/media.ts} +11 -5
- package/extensions/wechat/transport/outbound.ts +142 -0
- package/extensions/wechat/{poll.ts → transport/poll.ts} +3 -3
- package/extensions/wechat/types.ts +10 -1
- package/extensions/wechat/{login-screen.ts → view/login-screen.ts} +4 -4
- package/extensions/wechat/{status-screen.ts → view/status-screen.ts} +31 -26
- package/extensions/worktree/commands.ts +24 -17
- package/extensions/worktree/exit.ts +12 -6
- package/extensions/worktree/git.ts +22 -14
- package/extensions/worktree/guard.ts +18 -290
- package/extensions/worktree/handoff.ts +10 -2
- package/extensions/worktree/index.ts +2 -1
- package/extensions/worktree/lifecycle.ts +2 -0
- package/extensions/worktree/registry.ts +20 -11
- package/extensions/worktree/root-tools.ts +13 -3
- package/extensions/worktree/runtime.ts +8 -2
- package/extensions/worktree/screen.ts +15 -8
- package/extensions/worktree/shell.ts +303 -0
- package/extensions/worktree/state.ts +1 -1
- package/extensions/worktree/status.ts +42 -9
- package/extensions/worktree/tools.ts +19 -13
- package/lib/README.md +11 -8
- package/lib/board/card.ts +479 -0
- package/lib/board/links.ts +141 -0
- package/lib/board/page-pointer.ts +310 -0
- package/lib/board/round-text.ts +81 -0
- package/lib/board/round.ts +94 -0
- package/lib/board/rules.ts +437 -0
- package/lib/board/session.ts +105 -0
- package/lib/board/store.ts +497 -0
- package/lib/board/view.ts +234 -0
- package/lib/errors.ts +12 -4
- package/lib/format.ts +35 -0
- package/lib/http/guard.ts +112 -0
- package/lib/http/index.ts +16 -5
- package/lib/http/serve.ts +237 -0
- package/lib/http/server.ts +12 -10
- package/lib/http/sink.ts +135 -0
- package/lib/http/token.ts +38 -0
- package/lib/plan-entry.ts +11 -0
- package/lib/policy.ts +25 -2
- package/lib/requirements.ts +6 -7
- package/lib/session-label.ts +64 -0
- package/lib/session-roster.ts +201 -0
- package/lib/session-tool.ts +184 -0
- package/lib/spawn.ts +37 -3
- package/lib/stray-fields.ts +45 -0
- package/lib/tool-names.ts +38 -2
- package/lib/tui/glyphs.ts +3 -2
- package/lib/web/README.md +57 -4
- package/lib/web/client-runtime.ts +123 -0
- package/lib/web/components.ts +5 -0
- package/lib/web/index.ts +4 -2
- package/lib/web/markup.ts +88 -1
- package/lib/web/names.ts +42 -0
- package/lib/web/runtime.ts +7 -1
- package/lib/web/tokens.ts +25 -2
- package/package.json +26 -14
- package/skills/next/SKILL.md +4 -3
- package/skills/project-docs/SKILL.md +133 -0
- package/skills/project-docs/references/audit.md +131 -0
- package/skills/project-docs/references/changelog.md +105 -0
- package/skills/project-docs/references/discovery.md +127 -0
- package/skills/project-docs/references/readme.md +80 -0
- package/skills/project-docs/references/release.md +84 -0
- package/skills/project-docs/references/roadmap.md +93 -0
- package/skills/project-docs/scripts/state.ts +316 -0
- package/skills/refactor/SKILL.md +100 -125
- package/skills/refactor/references/handoff.md +35 -0
- package/skills/refactor/references/signals.md +54 -0
- package/skills/refactor/scripts/inventory.ts +587 -0
- package/extensions/bytefly/panel/tui/extensions-view.ts +0 -40
- package/extensions/bytefly/panel/tui/skills-view.ts +0 -50
- package/extensions/file-browse/README.md +0 -506
- package/extensions/file-browse/files.ts +0 -564
- package/extensions/file-browse/server.ts +0 -141
- package/extensions/job/process.ts +0 -35
- package/extensions/plan/split.ts +0 -87
- package/extensions/session-bus/README.md +0 -247
- package/extensions/session-bus/team.ts +0 -102
- package/extensions/wechat/outbound.ts +0 -100
- package/lib/plans/sections.ts +0 -172
- package/lib/plans/setting.ts +0 -52
- package/lib/plans/split.ts +0 -215
- package/lib/plans/store.ts +0 -19
- package/lib/plans/team.ts +0 -151
- package/skills/changelog/SKILL.md +0 -148
- package/skills/parallel-dev/SKILL.md +0 -150
- /package/extensions/file-browse/{rev.ts → live/rev.ts} +0 -0
- /package/extensions/file-browse/{diff.ts → text/diff.ts} +0 -0
- /package/extensions/file-browse/{fuzzy.ts → text/fuzzy.ts} +0 -0
- /package/extensions/file-browse/{live-client.ts → view/live-client.ts} +0 -0
- /package/extensions/file-browse/{palette.ts → view/palette.ts} +0 -0
- /package/extensions/rewind/{patch.ts → text/patch.ts} +0 -0
- /package/extensions/rewind/{paths.ts → text/paths.ts} +0 -0
- /package/extensions/rewind/{queue.ts → transport/queue.ts} +0 -0
- /package/extensions/rewind/{temp-index.ts → transport/temp-index.ts} +0 -0
- /package/extensions/wechat/{lock.ts → state/lock.ts} +0 -0
- /package/extensions/wechat/{channel.ts → text/channel.ts} +0 -0
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ This page is the catalog and the setup instructions. For how to use a feature
|
|
|
15
15
|
the keys, the commands, and what you should see — start with the
|
|
16
16
|
[user guide](./docs/user-guide/).
|
|
17
17
|
|
|
18
|
-

|
|
19
19
|
|
|
20
20
|
## Contents
|
|
21
21
|
|
|
@@ -39,8 +39,8 @@ want the agent to *think first and work safely*:
|
|
|
39
39
|
log until it matters — then run several sessions on one repository through a
|
|
40
40
|
shared bus, each owning its slice, all while you keep the thread.
|
|
41
41
|
- **Never wreck the checkout.** Isolation is one command: the task moves onto its
|
|
42
|
-
own branch in a `git worktree`, and
|
|
43
|
-
is one `/rewind` away.
|
|
42
|
+
own branch in a `git worktree`, and each prompt's first change is snapshotted,
|
|
43
|
+
so a bad turn is one `/rewind` away.
|
|
44
44
|
- **Remember across sessions.** Durable notes live in plain markdown that you
|
|
45
45
|
can read, edit, and version.
|
|
46
46
|
- **Reach the web and your files.** Search, fetch, browse, open, and read
|
|
@@ -64,23 +64,29 @@ pi install npm:@gavin-hu/my-pi-agent
|
|
|
64
64
|
pinned release, a project-local install, and a trial that writes nothing — plus
|
|
65
65
|
the fit decision, the first workflows, and how to remove the pack.
|
|
66
66
|
|
|
67
|
-
`git` on `PATH` is needed by [`worktree`](./extensions/worktree
|
|
68
|
-
[`rewind`](./extensions/rewind
|
|
67
|
+
`git` on `PATH` is needed by [`worktree`](./docs/extensions/worktree.md) and
|
|
68
|
+
[`rewind`](./docs/extensions/rewind.md); everything else degrades or disables cleanly,
|
|
69
69
|
and `/bytefly doctor` names what is missing, including optional runtime pieces.
|
|
70
70
|
Windows, macOS, and Linux all work, and the full check suite runs on each in CI.
|
|
71
71
|
|
|
72
72
|
Then, from inside Pi:
|
|
73
73
|
|
|
74
|
-
- `/bytefly [extension] [refresh]` opens the control center on Extensions
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
- `/bytefly [extension] [refresh]` opens the control center on Extensions: one
|
|
75
|
+
frame for all three sections, its header rule carrying the attention at the
|
|
76
|
+
right (or `all clear`), a tab row with each section's count and the write scope.
|
|
77
|
+
It lists every loaded extension by name, with a checkbox and at most one
|
|
78
|
+
verdict word, enables or disables one, and clears a project override with `x`;
|
|
79
|
+
`/` filters the rows, `!` keeps only what needs attention, and `?` shows every
|
|
80
|
+
key.
|
|
81
|
+
- `/bytefly settings` opens the control center's Settings section: the twelve
|
|
82
|
+
preferences a session changes, grouped under Startup, Notifications, Session,
|
|
83
|
+
and Price with each value in an aligned column, `Space`/`Enter` to change one
|
|
84
|
+
and `s` for Global/Project scope. Every other key is a `bytefly.json` edit,
|
|
85
|
+
listed in the configuration reference.
|
|
81
86
|
- `/bytefly skills` opens the control center's Skills section: one row per Pi
|
|
82
|
-
skill with its enable checkbox
|
|
83
|
-
`Space` to switch it on or off for the
|
|
87
|
+
skill with its enable checkbox and at most one verdict word, what its `SKILL.md`
|
|
88
|
+
declares in the block beside it, and `Space` to switch it on or off for the
|
|
89
|
+
active scope.
|
|
84
90
|
- `/bytefly doctor [extension] [refresh]` prints the doctor report —
|
|
85
91
|
`run_doctor`'s text — and checks that each enabled extension has what it needs
|
|
86
92
|
at runtime.
|
|
@@ -95,53 +101,58 @@ asks Pi's package manager which configured packages are behind, suppresses Pi's
|
|
|
95
101
|
own startup update blocks, and posts one themed notice naming
|
|
96
102
|
`pi update --extensions`, plus one for a newer Pi that names `pi update` and the
|
|
97
103
|
changelog; a new version also marks the header — this package's, and Pi's own.
|
|
98
|
-
Nothing about the session is sent
|
|
99
|
-
|
|
104
|
+
Nothing about the session is sent: Pi's own release request is re-rendered, and
|
|
105
|
+
this package's newest version comes from one fixed `GET` of npm's `latest`
|
|
106
|
+
document. `PI_OFFLINE` skips the check;
|
|
100
107
|
[`docs/security.md`](./docs/security.md) covers the trust boundaries.
|
|
101
108
|
|
|
102
109
|
## What you get
|
|
103
110
|
|
|
104
|
-
|
|
105
|
-
|
|
111
|
+
21 extensions, 4 packaged skills, and 2 themes, grouped by the promises the
|
|
112
|
+
[roadmap](./ROADMAP.md) tracks; the [guide](./docs/user-guide/) covers the same
|
|
113
|
+
ground chapter by chapter. Each extension's own page in `docs/extensions/` has
|
|
114
|
+
the full tool and command surface, opening with its capabilities.
|
|
106
115
|
|
|
107
116
|
### Plan and delegate
|
|
108
117
|
|
|
109
118
|
| Extension | Tools and commands | What it does |
|
|
110
119
|
|---|---|---|
|
|
111
|
-
| [`plan`](./extensions/plan
|
|
112
|
-
| [`check`](./extensions/check
|
|
113
|
-
| [`subagent`](./extensions/subagent
|
|
114
|
-
| [`todo`](./extensions/todo
|
|
115
|
-
| [`goal`](./extensions/goal
|
|
116
|
-
| [`question`](./extensions/question
|
|
117
|
-
| [`job`](./extensions/job
|
|
118
|
-
| [`watch`](./extensions/watch
|
|
119
|
-
| [`session-bus`](./extensions/session-bus
|
|
120
|
-
| [`
|
|
120
|
+
| [`plan`](./docs/extensions/plan.md) | `enter_plan_mode`, `write_plan`, `exit_plan_mode`, `cancel_plan_mode`, `set_plan_steps`, `/plan`, `--plan` | Read-only planning: the model investigates, saves a plan under `~/.pi/agent/plans/<repo-key>` — one store per repository, shared by its worktrees — and you approve it before anything is written. Review in the TUI, or open it in a browser to leave inline comments: the page follows the plan file live, and you can hand one reviewer link per teammate so each comments under their own name. The `init` skill uses the same review to create or update a project's `AGENTS.md`. |
|
|
121
|
+
| [`check`](./docs/extensions/check.md) | `run_check`, `/check` | Detect the project's test, lint, or typecheck command (or take `check.command`), run it in a supervised process, and turn failures into a navigable `file:line` list. |
|
|
122
|
+
| [`subagent`](./docs/extensions/subagent.md) | `subagent`, `/agents` | Delegate a task to a specialist agent (`explorer`, `planner`, `reviewer`, `worker`, `researcher`, `tester`, `debugger`, `documenter`) in its own Pi process — single, parallel, chained, or in the background, with a footer chip while it runs and a finish notice. |
|
|
123
|
+
| [`todo`](./docs/extensions/todo.md) | `todo`, `/todos` | A persistent task list (`pending` / `in_progress` / `completed`) with a one-line widget. |
|
|
124
|
+
| [`goal`](./docs/extensions/goal.md) | `goal`, `/goal` | A persistent session objective, kept in a widget and restated before each turn. |
|
|
125
|
+
| [`question`](./docs/extensions/question.md) | `ask_user_question` | Ask you one or more structured questions (labelled options plus free-form "Other") and wait. |
|
|
126
|
+
| [`job`](./docs/extensions/job.md) | `job`, `/jobs` | Run long-lived shell commands in the background; inspect logs, wait, or kill them. |
|
|
127
|
+
| [`watch`](./docs/extensions/watch.md) | `watch`, `/watch` | Tail a file or command output, match lines against patterns, and alert you or hand matching lines to the agent. |
|
|
128
|
+
| [`session-bus`](./docs/extensions/session-bus.md) | `session`, `/sessions` (screen) | Coordinate parallel Pi sessions on one repository: discover peers, exchange short messages/events, consume an inbox, or claim paths before editing, with `/sessions` as a live board of peers, unread mail, and claims. Local, pull-based by default, with an opt-in inbox watch that raises this session's turn once it is idle; it never spawns an agent. |
|
|
129
|
+
| [`board`](./docs/extensions/board.md) | `board`, `/board` | One shared feature board per repository: a card per feature, which any session claims, moves, edits, notes, finishes, and archives — a finished card leaves the board for an `archive/` pile with its notes and landed commit still readable, so a long history stops costing every read — and one loopback page that shows the same cards live in a **Board** and a **Team** tab. The page is a read view — the tools are the only writers — served as the seat `team-lead`, so a second session opens the same page instead of starting a rival one, and handing a card to a teammate is `team`'s job because only it can message them. A card can carry a priority and name the cards it waits on. Steps stay in the owner's plan and `todo`; a card is the feature, its owner, and the history that explains it. `board.port` in `bytefly.json` pins the page's port, so a bookmarked URL survives a restart. |
|
|
130
|
+
| [`team`](./docs/extensions/team.md) | `team`, `/team` | The lead's round over the same board. `/team join <label>` puts a session on the team, and `/board` does it for the lead as `team-lead`; then `assign` hands a feature to a running session, `offer` hands one to whoever is free — a broadcast that writes nothing, claimed by the first taker — and `reclaim` takes a card back to To do. A result says who will be woken for it and who will read it at their next turn, `/team` prints the round in the terminal without a browser, and nothing is spawned. |
|
|
131
|
+
| [`context`](./docs/extensions/context.md) | `/context` | Show where the context window goes — system prompt, tool definitions, conversation by role, injected notes — and compact from the report with the before and after numbers. |
|
|
121
132
|
|
|
122
133
|
### Keep your work safe
|
|
123
134
|
|
|
124
135
|
| Extension | Tools and commands | What it does |
|
|
125
136
|
|---|---|---|
|
|
126
|
-
| [`worktree`](./extensions/worktree
|
|
127
|
-
| [`rewind`](./extensions/rewind
|
|
128
|
-
| [`memory`](./extensions/memory
|
|
137
|
+
| [`worktree`](./docs/extensions/worktree.md) | `enter_worktree`, `exit_worktree`, `prune_worktrees`, `list_worktrees`, `/worktree` (screen), `/worktree enter\|exit\|prune`, `--worktree` | Work inside an isolated `git worktree` on its own branch; the built-in read/write/edit/bash tools follow, and cleanup refuses to throw work away. |
|
|
138
|
+
| [`rewind`](./docs/extensions/rewind.md) | `/rewind`, `/review`, `↺ N` status chip | Snapshot the repo before each prompt's first change, under `refs/pi/rewind`, restore code, conversation, or both, and review the latest turn's changes before reverting a file. |
|
|
139
|
+
| [`memory`](./docs/extensions/memory.md) | `memory`, `/memory` | Durable cross-session notes as human-editable markdown, injected into each run and managed through the `/memory` picker. |
|
|
129
140
|
|
|
130
141
|
### Reach the world
|
|
131
142
|
|
|
132
143
|
| Extension | Tools and commands | What it does |
|
|
133
144
|
|---|---|---|
|
|
134
|
-
| [`web-access`](./extensions/web-access
|
|
135
|
-
| [`file-browse`](./extensions/file-browse
|
|
136
|
-
| [`file-read`](./extensions/file-read
|
|
137
|
-
| [`file-open`](./extensions/file-open
|
|
138
|
-
| [`wechat`](./extensions/wechat
|
|
145
|
+
| [`web-access`](./docs/extensions/web-access.md) | `web_search`, `web_fetch` | Search the web (keyless DuckDuckGo by default, optional SearXNG or Brave) and fetch a page as readable text, with paging, `find`, per-hop SSRF checks, a JSON/CSV/XML body rendered as a table or a tree, and optional PDF support. |
|
|
146
|
+
| [`file-browse`](./docs/extensions/file-browse.md) | `/browse` | Start a loopback, read-only file browser rooted at the working directory, with Markdown preview, a fuzzy quick-open palette, a `path:12-30` reference copied from a selection, live status for a page left open, and a reload hint when the folder it lists changes. |
|
|
147
|
+
| [`file-read`](./docs/extensions/file-read.md) | `read_doc` | Extract text from a local PDF, DOCX, DOC, ODT, RTF, or XLSX in process, paged. |
|
|
148
|
+
| [`file-open`](./docs/extensions/file-open.md) | `/open`, `open_path` | Open or reveal a file or directory in the OS-native application. |
|
|
149
|
+
| [`wechat`](./docs/extensions/wechat.md) | `/wechat`, `send_wechat` | Bridge a WeChat chat to the live session over the Weixin iLink bot API; inbound text, images, and files become turns. |
|
|
139
150
|
|
|
140
151
|
### Chrome and upkeep
|
|
141
152
|
|
|
142
153
|
| Extension | Tools and commands | What it does |
|
|
143
154
|
|---|---|---|
|
|
144
|
-
| [`bytefly`](./extensions/bytefly
|
|
155
|
+
| [`bytefly`](./docs/extensions/bytefly.md) | `/bytefly` (with the `doctor`, `settings`, `skills`, `update`, and `upgrade` subcommands), `run_doctor` | The visible layer: a themed header with a width-adaptive footer, a live run line on Pi's working row (tool, tool count, and elapsed time), and a transcript where every tool block leads with its call line and rails its result under it. `/bytefly` switches extensions and skills and holds the curated settings, and `/bytefly upgrade` installs a pending update through Pi's own package manager behind a confirmation; opt-in `notify` raises OS notifications when a run, a job, or a question needs you, and Pi's own startup update blocks become themed notices and header markers. `bytefly.json` is the config document every extension reads. |
|
|
145
156
|
|
|
146
157
|
### Skills
|
|
147
158
|
|
|
@@ -152,9 +163,8 @@ advertised to the model, and its instructions load only when the task matches
|
|
|
152
163
|
| Skill | What it does |
|
|
153
164
|
|---|---|
|
|
154
165
|
| [`init`](./skills/init/SKILL.md) | Creates or updates the instruction file Pi actually reads (`AGENTS.md`, or `AGENTS.override.md` when it shadows it) through a built-in interactive interview and plan review, deriving commands, generated paths, packages, and purpose from repository evidence. |
|
|
155
|
-
| [`refactor`](./skills/refactor/SKILL.md) | Audits a project or path for refactoring opportunities: duplication, oversized modules, coupling, drift, and high-churn code with weak tests.
|
|
156
|
-
| [`
|
|
157
|
-
| [`parallel-dev`](./skills/parallel-dev/SKILL.md) | Runs parallel development as a lead and a team: a lead accountable for the contract, shared files, merge order and a green baseline who also owns a workstream, one owner per disjoint workstream, a walking skeleton first, advisory path claims, a turn-boundary protocol, and independent verification. |
|
|
166
|
+
| [`refactor`](./skills/refactor/SKILL.md) | Audits a project or path for refactoring opportunities: duplication, oversized modules, coupling, drift, and high-churn code with weak tests. A bundled `scripts/inventory.ts` measures sizes, fan-in, churn, and test proximity so a finding is a number with a source, and the ranked shortlist has evidence and verification commands; it then carries the candidate you choose through a behaviour-preserving refactor, and the audit itself is read-only. |
|
|
167
|
+
| [`project-docs`](./skills/project-docs/SKILL.md) | Keeps a project's documents telling the truth about the code: a read-only audit of the front door, the roadmap, the contributor path, and the changelog against the tree and against each other, then one mode per act that writes — a changelog bullet in the same commit as the change, a release section curated from the project's own rules, a shipped roadmap item deleted with the rest renumbered, and the front door's catalog, counts, and examples synced. Discovers each project's category names, scope spelling, item form, and guards rather than assuming a template, and a bundled `scripts/state.ts` prints the changelog's tag, window, and unreleased categories. |
|
|
158
168
|
| [`next`](./skills/next/SKILL.md) | Suggests the next todos by priority — loose work, a broken or unfinished promise — from this conversation once it has done work, and from the tree only when it is empty, with the words and a path after the command saying what to ask and where to look. Read-only, and capped at a short numbered list with evidence and the command that starts each. |
|
|
159
169
|
|
|
160
170
|
### Themes
|
|
@@ -171,16 +181,16 @@ README use `bytefly-dark`.
|
|
|
171
181
|
|
|
172
182
|
<table>
|
|
173
183
|
<tr>
|
|
174
|
-
<td width="50%"><img src="assets/todo.png" alt="The /todos screen: a Todos title rule, a 3/7 completed summary, and the list with check, spinner, and circle glyphs" width="100%"></td>
|
|
175
|
-
<td width="50%"><img src="assets/question.png" alt="The ask_user_question dialog: Auth and Scope tabs, a question, four numbered options with descriptions, and the navigation hint" width="100%"></td>
|
|
184
|
+
<td width="50%"><img src="assets/screens/todo.png" alt="The /todos screen: a Todos title rule, a 3/7 completed summary, and the list with check, spinner, and circle glyphs" width="100%"></td>
|
|
185
|
+
<td width="50%"><img src="assets/screens/question.png" alt="The ask_user_question dialog: Auth and Scope tabs, a question, four numbered options with descriptions, and the navigation hint" width="100%"></td>
|
|
176
186
|
</tr>
|
|
177
187
|
<tr>
|
|
178
|
-
<td width="50%"><img src="assets/job.png" alt="The /jobs screen: a summary line, the job rows with status glyphs and elapsed times, and the focused job's command, cwd, and last output line" width="100%"></td>
|
|
179
|
-
<td width="50%"><img src="assets/rewind.png" alt="The /rewind screen: prompt rows newest first, a diamond marking prompts with a code snapshot, and the focused prompt
|
|
188
|
+
<td width="50%"><img src="assets/screens/job.png" alt="The /jobs screen: a summary line, the job rows with status glyphs and elapsed times, and the focused job's command, cwd, and last output line" width="100%"></td>
|
|
189
|
+
<td width="50%"><img src="assets/screens/rewind.png" alt="The /rewind screen: prompt rows newest first, a diamond marking prompts with a code snapshot, and a detail line naming the snapshot the focused prompt holds" width="100%"></td>
|
|
180
190
|
</tr>
|
|
181
191
|
<tr>
|
|
182
|
-
<td width="50%"><img src="assets/session.png" alt="The /sessions screen: a counts summary, session rows with unread and claim counts, the focused session's cwd, claims, and identity, and the Tab scope and watch hints" width="100%"></td>
|
|
183
|
-
<td width="50%"><img src="assets/watch.png" alt="The /watch screen: a summary line and watcher rows with live match counts and the focused watcher's pattern and source" width="100%"></td>
|
|
192
|
+
<td width="50%"><img src="assets/screens/session.png" alt="The /sessions screen: a counts summary, session rows with unread and claim counts, the focused session's cwd, claims, and identity, and the Tab scope and watch hints" width="100%"></td>
|
|
193
|
+
<td width="50%"><img src="assets/screens/watch.png" alt="The /watch screen: a summary line and watcher rows with live match counts and the focused watcher's pattern and source" width="100%"></td>
|
|
184
194
|
</tr>
|
|
185
195
|
</table>
|
|
186
196
|
|
|
@@ -192,7 +202,7 @@ each tool's own renderer (or bytefly's generic fallback): the user nameplate and
|
|
|
192
202
|
a notice, Pi's built-ins, and every tool this package registers. The rail glyph
|
|
193
203
|
is the `chrome.rail` setting.
|
|
194
204
|
|
|
195
|
-

|
|
205
|
+

|
|
196
206
|
|
|
197
207
|
`bun run screenshot:tools` regenerates it; `bun run screenshot:tool-pngs` writes
|
|
198
208
|
one image per tool under [`assets/tools/`](./assets/tools).
|
|
@@ -202,10 +212,12 @@ each: the first run, the keys that matter, and what to expect on screen.
|
|
|
202
212
|
|
|
203
213
|
## Configuration
|
|
204
214
|
|
|
205
|
-
Most extensions need no configuration. Every setting lives in one
|
|
206
|
-
document, `bytefly.json`, read from `<agent-dir>/bytefly.json` and
|
|
207
|
-
`<cwd>/.pi/bytefly.json` (project wins), under a top-level section
|
|
208
|
-
extension. Each extension's `
|
|
215
|
+
Most extensions need no configuration. Every extension setting lives in one
|
|
216
|
+
shared document, `bytefly.json`, read from `<agent-dir>/bytefly.json` and
|
|
217
|
+
merged with `<cwd>/.pi/bytefly.json` (project wins), under a top-level section
|
|
218
|
+
named for the extension. Each extension's page under `docs/extensions/` covers
|
|
219
|
+
the behaviour
|
|
220
|
+
around its keys, and
|
|
209
221
|
[`docs/configuration.md`](./docs/configuration.md) has the resolution rules, the
|
|
210
222
|
settings screen walkthrough, and every section's keys with their type, default,
|
|
211
223
|
and bounds.
|
|
@@ -228,10 +240,12 @@ stops the factories from registering; to drop the whole package, use Pi's
|
|
|
228
240
|
|---|---|
|
|
229
241
|
| [User guide](./docs/user-guide/) | A chaptered manual: install, every feature, settings, troubleshooting, and a command reference. |
|
|
230
242
|
| [Configuration](./docs/configuration.md) | Resolution, the settings screen, and every `bytefly.json` key with its default and bounds. |
|
|
231
|
-
| [Architecture](./docs/architecture.md) | The load path,
|
|
243
|
+
| [Architecture](./docs/architecture.md) | The target shape: the load path, the extension contract, the turn, state, layers, lifetimes, and where a change belongs. |
|
|
244
|
+
| [Extension docs](./docs/extensions/) | One page per extension, opening with its capabilities: the tool and command surface, the integration contract, and the design notes. |
|
|
232
245
|
| [Development](./docs/development.md) | Local setup, checks, tests, cross-platform notes, and the release process. |
|
|
233
246
|
| [Security](./docs/security.md) | Trust boundaries for the loopback and remote surfaces. |
|
|
234
247
|
| [Roadmap](./ROADMAP.md) | Where the pack is going, grouped by the README's promises, with the evidence behind each item. |
|
|
248
|
+
| [Documentation index](./docs/README.md) | The map of everything: the guides, and the deep contracts behind them, by audience. |
|
|
235
249
|
|
|
236
250
|
## Contributing
|
|
237
251
|
|
package/README.zh-CN.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
本页是目录与安装说明。要了解某个功能怎么用 —— 按键、命令以及应有的效果 ——
|
|
14
14
|
请先看[用户指南](./docs/user-guide/)。
|
|
15
15
|
|
|
16
|
-

|
|
17
17
|
|
|
18
18
|
## 目录
|
|
19
19
|
|
|
@@ -36,7 +36,7 @@ Pi 提供一个精简而锐利的内核。这个包是在其之上的一层,
|
|
|
36
36
|
让 watcher 盯住日志直到出现关键行,还能让同一仓库上的多个会话通过共享总线协作、
|
|
37
37
|
各自负责自己的一摊 —— 你继续把握主线。
|
|
38
38
|
- **绝不搞乱检出区。** 隔离只需一条命令:任务切到自己分支的 `git worktree` 中,
|
|
39
|
-
|
|
39
|
+
每次提示的首次改动都会生成快照,因此一次糟糕的回合只需一个 `/rewind` 就能回退。
|
|
40
40
|
- **跨会话记忆。** 持久笔记以纯 Markdown 保存,可读、可改、可纳入版本控制。
|
|
41
41
|
- **连通网络与文件。** 在会话内搜索、抓取、浏览、打开和读取文档与表格,还可通过桥接
|
|
42
42
|
在微信里直接回答当前会话。
|
|
@@ -56,20 +56,25 @@ pi install npm:@gavin-hu/my-pi-agent
|
|
|
56
56
|
[用户指南](./docs/user-guide/) 介绍其余安装方式——git、固定版本、
|
|
57
57
|
仅项目本地安装,以及不写入任何内容的试用——还有适用性判断、首个工作流和移除方式。
|
|
58
58
|
|
|
59
|
-
`git` 需在 `PATH` 上,供 [`worktree`](./extensions/worktree
|
|
60
|
-
[`rewind`](./extensions/rewind
|
|
59
|
+
`git` 需在 `PATH` 上,供 [`worktree`](./docs/extensions/worktree.md) 与
|
|
60
|
+
[`rewind`](./docs/extensions/rewind.md) 使用;其余部分会优雅降级或禁用,
|
|
61
61
|
`/bytefly doctor` 会指出缺少什么,包括可选的运行时组件。
|
|
62
62
|
Windows、macOS 和 Linux 均可运行,完整检查套件在每个平台上都会执行。
|
|
63
63
|
|
|
64
64
|
然后在 Pi 中:
|
|
65
65
|
|
|
66
|
-
- `/bytefly [extension] [refresh]` 打开控制中心的 Extensions
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
- `/bytefly [extension] [refresh]` 打开控制中心的 Extensions 区:三个区共用一个
|
|
67
|
+
框架,头部横线的右端写着需要注意的事项(没有问题时为 `all clear`),一行 tab
|
|
68
|
+
标出各区的数量与写入作用域。它按名称列出每个已加载扩展及其复选框与至多一个
|
|
69
|
+
结论词,启用或禁用一个扩展,并用 `x` 清除项目级覆盖;`/` 过滤行,`!` 只保留
|
|
70
|
+
需要注意的行,`?` 显示全部按键。
|
|
71
|
+
- `/bytefly settings` 打开控制中心的 Settings 区:一次会话会改动的十二项设置按
|
|
72
|
+
Startup、Notifications、Session、Price 四组排列,值对齐在同一列;用
|
|
73
|
+
`Space`/`Enter` 修改一项,用 `s` 切换 Global/Project 作用域。其余键都是
|
|
74
|
+
`bytefly.json` 编辑,见配置参考。
|
|
71
75
|
- `/bytefly skills` 打开控制中心的 Skills 区:每个 Pi 技能一行,带启用复选框与
|
|
72
|
-
|
|
76
|
+
至多一个结论词,`SKILL.md` 声明的描述显示在旁边的区块中,用 `Space` 在当前
|
|
77
|
+
作用域开关它。
|
|
73
78
|
- `/bytefly doctor [extension] [refresh]` 打印 doctor 报告(`run_doctor` 的文本),
|
|
74
79
|
检查每个已启用扩展在运行时是否具备所需条件。
|
|
75
80
|
- `/bytefly update` 立即重跑包更新检查,报告可更新的包、本包版本与 release URL,
|
|
@@ -80,53 +85,57 @@ Windows、macOS 和 Linux 均可运行,完整检查套件在每个平台上都
|
|
|
80
85
|
还有一件包会自行做的事:每次交互式会话启动时,`bytefly` 询问 Pi 的包管理器
|
|
81
86
|
哪些已配置的包有更新,抑制 Pi 自己的启动更新块,并用主题化 notice 列出它们
|
|
82
87
|
和 `pi update --extensions`;Pi 自身的新版本也由它绘制,提示 `pi update` 与
|
|
83
|
-
changelog。新版本还会标在头部 —— 本包的与 Pi
|
|
84
|
-
|
|
88
|
+
changelog。新版本还会标在头部 —— 本包的与 Pi 自己的。不会发送任何会话内容:
|
|
89
|
+
Pi 自己的版本请求只是被重新绘制,本包的最新版本则来自一次固定的 npm
|
|
90
|
+
`latest` 请求,`PI_OFFLINE` 可跳过检查;信任边界见
|
|
85
91
|
[`docs/security.md`](./docs/security.md)。
|
|
86
92
|
|
|
87
93
|
## 包含内容
|
|
88
94
|
|
|
89
|
-
|
|
90
|
-
|
|
95
|
+
21 个扩展、4 个随包技能,以及 2 个主题,按 [路线图](./ROADMAP.md) 追踪的承诺分组;
|
|
96
|
+
[用户指南](./docs/user-guide/) 按章节讲述同样的内容。每个扩展在 `docs/extensions/`
|
|
97
|
+
下的页面提供完整的工具与命令说明,并以能力表开头。
|
|
91
98
|
|
|
92
99
|
### 规划与委派
|
|
93
100
|
|
|
94
101
|
| 扩展 | 工具与命令 | 说明 |
|
|
95
102
|
|---|---|---|
|
|
96
|
-
| [`plan`](./extensions/plan
|
|
97
|
-
| [`check`](./extensions/check
|
|
98
|
-
| [`subagent`](./extensions/subagent
|
|
99
|
-
| [`todo`](./extensions/todo
|
|
100
|
-
| [`goal`](./extensions/goal
|
|
101
|
-
| [`question`](./extensions/question
|
|
102
|
-
| [`job`](./extensions/job
|
|
103
|
-
| [`watch`](./extensions/watch
|
|
104
|
-
| [`session-bus`](./extensions/session-bus
|
|
105
|
-
| [`
|
|
103
|
+
| [`plan`](./docs/extensions/plan.md) | `enter_plan_mode`, `write_plan`, `exit_plan_mode`, `cancel_plan_mode`, `set_plan_steps`, `/plan`, `--plan` | 只读规划:模型先调研,把计划保存到 `~/.pi/agent/plans/<repo-key>` 下(每个仓库一份,各 worktree 共享),你在写入任何内容前先批准。可在 TUI 中审阅,或在浏览器中打开以留下行内评论:页面会跟随计划文件实时更新,你也可以给每位同事各一个审阅链接,各自以绑定的名义评论。`init` 技能复用同一审阅流程来创建或更新项目的 `AGENTS.md`。 |
|
|
104
|
+
| [`check`](./docs/extensions/check.md) | `run_check`, `/check` | 检测项目的测试、lint 或类型检查命令(或使用 `check.command`),在受监管的进程中运行,并把失败整理成可导航的 `file:line` 列表。 |
|
|
105
|
+
| [`subagent`](./docs/extensions/subagent.md) | `subagent`, `/agents` | 把任务委派给专职智能体(`explorer`、`planner`、`reviewer`、`worker`、`researcher`、`tester`、`debugger`、`documenter`),运行在它自己的 Pi 进程中 —— 单个、并行、链式或在后台运行;后台运行时在页脚显示数量,完成后发出提示。 |
|
|
106
|
+
| [`todo`](./docs/extensions/todo.md) | `todo`, `/todos` | 持久任务列表(`pending` / `in_progress` / `completed`),配一行式 widget。 |
|
|
107
|
+
| [`goal`](./docs/extensions/goal.md) | `goal`, `/goal` | 持久会话目标,保存在 widget 中,并在每个回合前重述。 |
|
|
108
|
+
| [`question`](./docs/extensions/question.md) | `ask_user_question` | 向你提出一个或多个结构化问题(带标签的选项外加自由填写的“其他”)并等待回答。 |
|
|
109
|
+
| [`job`](./docs/extensions/job.md) | `job`, `/jobs` | 在后台运行长时 shell 命令;查看日志、等待或结束它们。 |
|
|
110
|
+
| [`watch`](./docs/extensions/watch.md) | `watch`, `/watch` | 跟踪文件或命令输出,按模式匹配行,并提醒你或把匹配的行交给智能体。 |
|
|
111
|
+
| [`session-bus`](./docs/extensions/session-bus.md) | `session`, `/sessions`(屏幕) | 在同一仓库的多个 Pi 会话之间协调:发现彼此、交换简短消息/事件、读取收件箱、编辑前声明路径;`/sessions` 是显示对等会话、未读邮件和路径声明的实时面板。本地、默认拉取式;收件箱监视需会话自行开启,空闲时会唤起本会话的一轮,从不创建智能体。 |
|
|
112
|
+
| [`board`](./docs/extensions/board.md) | `board`、`/board` | 每个仓库一块共享看板:一张卡片代表一个 feature,任何 session 都可以认领、移动、编辑、加注、完成、归档——已完成的卡片会离开看板进入 `archive/`,其注记与落地 commit 仍可读,长历史不再拖累每次读取——同一个看板在浏览器里以 **Board** 和 **Team** 两个 tab 实时显示。页面只读——写入只走工具——并以固定席位 `team-lead` 对外服务,因此第二个 session 打开的是同一张页面,而不是另起一个;把卡片交给队友由 `team` 负责,因为只有它能给对端发消息。卡片可以带上优先级、声明自己在等待哪几张卡片。步骤留在 owner 的 plan 和 `todo` 里,卡片就是 feature、它的 owner,以及解释它的历史。在 `bytefly.json` 里设置 `board.port` 可以固定看板端口,收藏的地址在重启后依然有效。 |
|
|
113
|
+
| [`team`](./docs/extensions/team.md) | `team`、`/team` | 同一块看板上的 lead 轮次。`/team join <label>` 让一个 session 加入团队,lead 打开 `/board` 时则以 `team-lead` 自动加入;随后 `assign` 把一个 feature 交给运行中的 session,`offer` 交给谁有空谁接——广播而不写卡片,由第一个认领的人拿走——`reclaim` 把卡片收回 To do。结果会说明谁会因此被叫醒、谁会在下一轮才读到;`/team` 在终端里打印同一份轮次,不用开浏览器,也不启动任何进程。 |
|
|
114
|
+
| [`context`](./docs/extensions/context.md) | `/context` | 显示上下文窗口的去向 —— 系统提示、工具定义、按角色拆分的对话、注入的笔记 —— 并从报告中触发压缩,给出压缩前后的数字。 |
|
|
106
115
|
|
|
107
116
|
### 保护你的工作
|
|
108
117
|
|
|
109
118
|
| 扩展 | 工具与命令 | 说明 |
|
|
110
119
|
|---|---|---|
|
|
111
|
-
| [`worktree`](./extensions/worktree
|
|
112
|
-
| [`rewind`](./extensions/rewind
|
|
113
|
-
| [`memory`](./extensions/memory
|
|
120
|
+
| [`worktree`](./docs/extensions/worktree.md) | `enter_worktree`, `exit_worktree`, `prune_worktrees`, `list_worktrees`, `/worktree` (screen), `/worktree enter\|exit\|prune`, `--worktree` | 在隔离的 `git worktree` 里、在独立分支上工作;内置的 read/write/edit/bash 工具会跟随,清理时也不会丢弃工作。 |
|
|
121
|
+
| [`rewind`](./docs/extensions/rewind.md) | `/rewind`, `/review`, `↺ N` 状态标记 | 在每次提示的首次改动前于 `refs/pi/rewind` 下对仓库生成快照,可恢复代码、对话或两者,并在还原文件前审阅本轮改动。 |
|
|
122
|
+
| [`memory`](./docs/extensions/memory.md) | `memory`, `/memory` | 跨会话的持久笔记,以可人工编辑的 Markdown 保存,注入每次运行,并通过 `/memory` 选择器管理。 |
|
|
114
123
|
|
|
115
124
|
### 连通外部世界
|
|
116
125
|
|
|
117
126
|
| 扩展 | 工具与命令 | 说明 |
|
|
118
127
|
|---|---|---|
|
|
119
|
-
| [`web-access`](./extensions/web-access
|
|
120
|
-
| [`file-browse`](./extensions/file-browse
|
|
121
|
-
| [`file-read`](./extensions/file-read
|
|
122
|
-
| [`file-open`](./extensions/file-open
|
|
123
|
-
| [`wechat`](./extensions/wechat
|
|
128
|
+
| [`web-access`](./docs/extensions/web-access.md) | `web_search`, `web_fetch` | 搜索网络(默认无密钥的 DuckDuckGo,可选 SearXNG 或 Brave),并把页面抓取为可读文本,支持分页、`find`、逐跳 SSRF 检查、把 JSON/CSV/XML 正文渲染为表格或树状结构,以及可选的 PDF 支持。 |
|
|
129
|
+
| [`file-browse`](./docs/extensions/file-browse.md) | `/browse` | 启动一个以工作目录为根的本地回环、只读文件浏览器,带 Markdown 预览、模糊快速打开面板、从选区复制 `path:12-30` 引用、为常开页面提供的实时状态,以及所列目录变化时的重新加载提示。 |
|
|
130
|
+
| [`file-read`](./docs/extensions/file-read.md) | `read_doc` | 在进程内从本地 PDF、DOCX、DOC、ODT、RTF 或 XLSX 提取文本,支持分页。 |
|
|
131
|
+
| [`file-open`](./docs/extensions/file-open.md) | `/open`, `open_path` | 用操作系统原生应用打开或定位文件/目录。 |
|
|
132
|
+
| [`wechat`](./docs/extensions/wechat.md) | `/wechat`, `send_wechat` | 通过微信 iLink 机器人 API 把微信聊天桥接到实时会话;入站文本、图片和文件会变成回合。 |
|
|
124
133
|
|
|
125
134
|
### 界面与维护
|
|
126
135
|
|
|
127
136
|
| 扩展 | 工具与命令 | 说明 |
|
|
128
137
|
|---|---|---|
|
|
129
|
-
| [`bytefly`](./extensions/bytefly
|
|
138
|
+
| [`bytefly`](./docs/extensions/bytefly.md) | `/bytefly`(`doctor`、`settings`、`skills`、`update`、`upgrade` 子命令)、`run_doctor` | 可见的那一层:主题化头部配宽度自适应页脚,Pi 工作行上实时显示工具、调用次数与计时,转录中每个工具块以调用行为标题、结果正文挂在其下方。`/bytefly` 可开关扩展与技能,并集中存放精选设置;`/bytefly upgrade` 在确认后通过 Pi 自己的包管理器安装待更新版本;可选的 `notify` 会在一次运行、后台任务或待回答的问题需要你时发出系统通知,Pi 自己的启动更新块也会变成主题化 notice 与头部标记。`bytefly.json` 是每个扩展都会读取的配置文档。 |
|
|
130
139
|
|
|
131
140
|
### 技能
|
|
132
141
|
|
|
@@ -135,9 +144,8 @@ changelog。新版本还会标在头部 —— 本包的与 Pi 自己的。不
|
|
|
135
144
|
| 技能 | 说明 |
|
|
136
145
|
|---|---|
|
|
137
146
|
| [`init`](./skills/init/SKILL.md) | 通过内置的交互式访谈和计划审阅,基于仓库证据创建或更新 Pi 实际读取的指令文件(`AGENTS.md`;存在覆盖它的 `AGENTS.override.md` 时则是该文件),并从仓库推导命令、生成路径与包范围。 |
|
|
138
|
-
| [`refactor`](./skills/refactor/SKILL.md) |
|
|
139
|
-
| [`
|
|
140
|
-
| [`parallel-dev`](./skills/parallel-dev/SKILL.md) | 以“负责人加团队”的方式组织并行开发:负责人对契约、共享文件、合并顺序和绿色基线负责,同时自己承担一个工作流;每个互不重叠的工作流各有一名所有者,先做可运行的纵向骨架,声明路径,在每个回合的边界协作,并由他人独立验证。 |
|
|
147
|
+
| [`refactor`](./skills/refactor/SKILL.md) | 审计项目或路径中的重构机会:重复代码、过大的模块、耦合、结构漂移,以及测试薄弱且改动频繁的代码。随包的 `scripts/inventory.ts` 会量出体积、扇入、churn 和测试邻近度,让每条发现都带来源,排序清单附证据和验证命令;选定一个候选项后,它会把该重构带到不改行为地完成,而审计本身只读。 |
|
|
148
|
+
| [`project-docs`](./skills/project-docs/SKILL.md) | 让项目的四份文档如实描述代码:只读审计门面、路线图、贡献路径与 changelog,既对照代码树也互相对照;然后每个写入动作一个模式——在变更的同一次提交里记下 changelog 条目、按项目自己的规则整理发布段落、在已发布的路线图条目上删除并把其余重新编号、同步门面的目录、计数与示例。它先摸清各项目的类目名、范围拼写、条目形制与守卫,而不是套用模板;随包的 `scripts/state.ts` 会打印 changelog 的 tag、窗口与未发布类目。 |
|
|
141
149
|
| [`next`](./skills/next/SKILL.md) | 按优先级建议接下来的待办——未收尾的工作、已破坏或未兑现的承诺——会话已有工作时基于本次会话,仅当会话为空时才基于代码树;命令后的文字说明问什么、路径说明看哪里。只读,输出带证据和启动命令的简短编号清单。 |
|
|
142
150
|
|
|
143
151
|
### 主题
|
|
@@ -153,16 +161,16 @@ changelog。新版本还会标在头部 —— 本包的与 Pi 自己的。不
|
|
|
153
161
|
|
|
154
162
|
<table>
|
|
155
163
|
<tr>
|
|
156
|
-
<td width="50%"><img src="assets/todo.png" alt="/todos 屏幕:Todos 标题线、3/7 完成摘要,以及带对勾、进行中和圆圈字形的列表" width="100%"></td>
|
|
157
|
-
<td width="50%"><img src="assets/question.png" alt="ask_user_question 对话框:Auth 与 Scope 标签页、问题、四个带说明的编号选项,以及导航提示" width="100%"></td>
|
|
164
|
+
<td width="50%"><img src="assets/screens/todo.png" alt="/todos 屏幕:Todos 标题线、3/7 完成摘要,以及带对勾、进行中和圆圈字形的列表" width="100%"></td>
|
|
165
|
+
<td width="50%"><img src="assets/screens/question.png" alt="ask_user_question 对话框:Auth 与 Scope 标签页、问题、四个带说明的编号选项,以及导航提示" width="100%"></td>
|
|
158
166
|
</tr>
|
|
159
167
|
<tr>
|
|
160
|
-
<td width="50%"><img src="assets/job.png" alt="/jobs 屏幕:摘要行、带状态字形和耗时的任务行,以及焦点任务的命令、工作目录和最后一行输出" width="100%"></td>
|
|
161
|
-
<td width="50%"><img src="assets/rewind.png" alt="/rewind
|
|
168
|
+
<td width="50%"><img src="assets/screens/job.png" alt="/jobs 屏幕:摘要行、带状态字形和耗时的任务行,以及焦点任务的命令、工作目录和最后一行输出" width="100%"></td>
|
|
169
|
+
<td width="50%"><img src="assets/screens/rewind.png" alt="/rewind 屏幕:从新到旧的提示行、标记有代码快照的菱形,以及一行标明焦点提示所持快照的详情" width="100%"></td>
|
|
162
170
|
</tr>
|
|
163
171
|
<tr>
|
|
164
|
-
<td width="50%"><img src="assets/session.png" alt="/sessions 屏幕:计数摘要、带未读数和路径声明数的会话行、焦点会话的工作目录、声明和身份,以及 Tab 范围与监视提示" width="100%"></td>
|
|
165
|
-
<td width="50%"><img src="assets/watch.png" alt="/watch 屏幕:摘要行和带实时匹配数的监视行,以及焦点监视的模式与来源" width="100%"></td>
|
|
172
|
+
<td width="50%"><img src="assets/screens/session.png" alt="/sessions 屏幕:计数摘要、带未读数和路径声明数的会话行、焦点会话的工作目录、声明和身份,以及 Tab 范围与监视提示" width="100%"></td>
|
|
173
|
+
<td width="50%"><img src="assets/screens/watch.png" alt="/watch 屏幕:摘要行和带实时匹配数的监视行,以及焦点监视的模式与来源" width="100%"></td>
|
|
166
174
|
</tr>
|
|
167
175
|
</table>
|
|
168
176
|
|
|
@@ -173,7 +181,7 @@ changelog。新版本还会标在头部 —— 本包的与 Pi 自己的。不
|
|
|
173
181
|
(每个工具自身的渲染器或 bytefly 的通用回退)——用户铭牌与通知、Pi 内置工具,以及本包注册的每个工具。
|
|
174
182
|
侧栏字形由 `chrome.rail` 设置。
|
|
175
183
|
|
|
176
|
-

|
|
184
|
+

|
|
177
185
|
|
|
178
186
|
`bun run screenshot:tools` 重新生成它;`bun run screenshot:tool-pngs` 在
|
|
179
187
|
[`assets/tools/`](./assets/tools) 下为每个工具输出一张图。
|
|
@@ -183,9 +191,9 @@ changelog。新版本还会标在头部 —— 本包的与 Pi 自己的。不
|
|
|
183
191
|
|
|
184
192
|
## 配置
|
|
185
193
|
|
|
186
|
-
|
|
194
|
+
大多数扩展无需配置。所有扩展设置都在一个共享文档 `bytefly.json` 中,从
|
|
187
195
|
`<agent-dir>/bytefly.json` 读取,并与 `<cwd>/.pi/bytefly.json` 合并(项目优先),
|
|
188
|
-
位于一个以扩展名命名的顶层 section
|
|
196
|
+
位于一个以扩展名命名的顶层 section 下。每个扩展在 `docs/extensions/` 下的页面说明其键位的行为,
|
|
189
197
|
[`docs/configuration.md`](./docs/configuration.md) 则给出解析规则、设置界面操作方式,
|
|
190
198
|
以及每个 section 的键、类型、默认值和取值范围。
|
|
191
199
|
|
|
@@ -206,10 +214,12 @@ Pi 的 `--no-extensions`,或从你的设置中删除该包。
|
|
|
206
214
|
|---|---|
|
|
207
215
|
| [用户指南](./docs/user-guide/) | 分章手册:安装、每项功能、设置、故障排查与命令参考。 |
|
|
208
216
|
| [配置](./docs/configuration.md) | 解析规则、设置界面,以及 `bytefly.json` 每个键的默认值与取值范围。 |
|
|
209
|
-
| [架构](./docs/architecture.md) |
|
|
217
|
+
| [架构](./docs/architecture.md) | 目标形态:加载路径、扩展契约、一次回合、状态、分层、长生命周期,以及改动应放在哪里。 |
|
|
218
|
+
| [扩展文档](./docs/extensions/) | 每个扩展一页,以能力表开头:工具与命令面、集成契约,以及设计说明。 |
|
|
210
219
|
| [开发](./docs/development.md) | 本地设置、检查、测试、跨平台注意事项与发布流程。 |
|
|
211
220
|
| [安全](./docs/security.md) | 回环与远程界面的信任边界。 |
|
|
212
221
|
| [路线图](./ROADMAP.md) | 包的下一步方向,按 README 的承诺分组,并列出每条事项的依据。 |
|
|
222
|
+
| [文档索引](./docs/README.md) | 全部文档的地图:各份指南,以及它们背后的深度契约,按读者归类。 |
|
|
213
223
|
|
|
214
224
|
## 参与贡献
|
|
215
225
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Extension docs
|
|
2
|
+
|
|
3
|
+
One page per extension, in the order the
|
|
4
|
+
[catalog](../../README.md#what-you-get) lists them. Every page opens with its **Capabilities** table — one row per thing
|
|
5
|
+
the extension can do, the tool, command, or key that delivers it, and what you
|
|
6
|
+
get — then the Quickstart, the surface, the behaviour, and the contributor
|
|
7
|
+
sections behind them.
|
|
8
|
+
|
|
9
|
+
| Extension | What it is | Page |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `plan` | Read-only planning, saved to disk and reviewed in the TUI or a browser | [`plan.md`](./plan.md) |
|
|
12
|
+
| `check` | The project's test, lint, or typecheck command, run and parsed | [`check.md`](./check.md) |
|
|
13
|
+
| `subagent` | Delegation to a specialist agent in its own Pi process | [`subagent.md`](./subagent.md) |
|
|
14
|
+
| `todo` | A whole-list task tracker that follows the session branch | [`todo.md`](./todo.md) |
|
|
15
|
+
| `goal` | One persistent session objective, restated before each turn | [`goal.md`](./goal.md) |
|
|
16
|
+
| `question` | Structured questions with labelled options and a free-form answer | [`question.md`](./question.md) |
|
|
17
|
+
| `job` | Long-lived shell commands in the background, with logs and a wait | [`job.md`](./job.md) |
|
|
18
|
+
| `watch` | Tailing a file or command and matching new lines | [`watch.md`](./watch.md) |
|
|
19
|
+
| `session-bus` | Coordination between parallel Pi sessions on one repository | [`session-bus.md`](./session-bus.md) |
|
|
20
|
+
| `board` | One shared feature board per repository, written by the tools and shown by one page a lead serves | [`board.md`](./board.md) |
|
|
21
|
+
| `team` | The lead's round: hand a card to a running session, take one back, or print it with `/team` | [`team.md`](./team.md) |
|
|
22
|
+
| `context` | Where the context window went, and compacting from the report | [`context.md`](./context.md) |
|
|
23
|
+
| `worktree` | An isolated `git worktree` per task, and the built-in tools following it | [`worktree.md`](./worktree.md) |
|
|
24
|
+
| `rewind` | Prompt-anchored snapshots, restoring code, conversation, or both | [`rewind.md`](./rewind.md) |
|
|
25
|
+
| `memory` | Durable cross-session notes as human-editable markdown | [`memory.md`](./memory.md) |
|
|
26
|
+
| `web-access` | Searching the web and fetching a page as readable text | [`web-access.md`](./web-access.md) |
|
|
27
|
+
| `file-browse` | A loopback, read-only browser for the working directory | [`file-browse.md`](./file-browse.md) |
|
|
28
|
+
| `file-read` | Text out of a PDF, DOCX, DOC, ODT, RTF, or XLSX, in process | [`file-read.md`](./file-read.md) |
|
|
29
|
+
| `file-open` | Opening or revealing a path in the OS-native application | [`file-open.md`](./file-open.md) |
|
|
30
|
+
| `wechat` | A WeChat bridge with one Pi conversation per peer | [`wechat.md`](./wechat.md) |
|
|
31
|
+
| `bytefly` | The header, footer, turn rule, control center, notices, and update check | [`bytefly.md`](./bytefly.md) |
|
|
32
|
+
|
|
33
|
+
The template every page follows is
|
|
34
|
+
[`docs/development.md#one-doc-per-extension`](../development.md#one-doc-per-extension).
|