wezard 1.3.23 → 1.4.1
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/CLAUDE.md +16 -4
- package/README.md +82 -41
- package/dist/cli/init.js +1 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/daemon/approval.js +0 -6
- package/dist/daemon/approval.js.map +1 -1
- package/dist/daemon/cc-bridge.js +1 -22
- package/dist/daemon/cc-bridge.js.map +1 -1
- package/dist/daemon/cfg-sync.js +3 -6
- package/dist/daemon/cfg-sync.js.map +1 -1
- package/dist/daemon/chat-name.js +65 -2
- package/dist/daemon/chat-name.js.map +1 -1
- package/dist/daemon/config-api.js +0 -1
- package/dist/daemon/config-api.js.map +1 -1
- package/dist/daemon/detail.js +7 -0
- package/dist/daemon/detail.js.map +1 -1
- package/dist/daemon/graph.js +27 -9
- package/dist/daemon/graph.js.map +1 -1
- package/dist/daemon/inbound.js +116 -60
- package/dist/daemon/inbound.js.map +1 -1
- package/dist/daemon/index.js +774 -142
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/jobs.js +73 -0
- package/dist/daemon/jobs.js.map +1 -0
- package/dist/daemon/mirror-bridge.js +378 -190
- package/dist/daemon/mirror-bridge.js.map +1 -1
- package/dist/daemon/mirror-store.js +2 -33
- package/dist/daemon/mirror-store.js.map +1 -1
- package/dist/daemon/notices.js +70 -0
- package/dist/daemon/notices.js.map +1 -0
- package/dist/daemon/peers.js +93 -61
- package/dist/daemon/peers.js.map +1 -1
- package/dist/daemon/quota.js +1 -1
- package/dist/daemon/quota.js.map +1 -1
- package/dist/daemon/session-cache.js +0 -1
- package/dist/daemon/session-cache.js.map +1 -1
- package/dist/daemon/session-scan.js +4 -22
- package/dist/daemon/session-scan.js.map +1 -1
- package/dist/daemon/sessions.js +2 -33
- package/dist/daemon/sessions.js.map +1 -1
- package/dist/daemon/spawn-tmux.js +48 -14
- package/dist/daemon/spawn-tmux.js.map +1 -1
- package/dist/daemon/subagent-tail.js +2 -2
- package/dist/daemon/subagent-tail.js.map +1 -1
- package/dist/daemon/tasks.js +90 -0
- package/dist/daemon/tasks.js.map +1 -0
- package/dist/daemon/wizard.js +128 -0
- package/dist/daemon/wizard.js.map +1 -0
- package/dist/mcp/server.js +267 -156
- package/dist/mcp/server.js.map +1 -1
- package/dist/shared/cli-backends.js +10 -11
- package/dist/shared/cli-backends.js.map +1 -1
- package/dist/shared/config.js +50 -14
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/detail-render.js +6 -5
- package/dist/shared/detail-render.js.map +1 -1
- package/dist/shared/detail-store.js.map +1 -1
- package/dist/shared/exec-path.js +21 -0
- package/dist/shared/exec-path.js.map +1 -0
- package/dist/shared/json-map-store.js +41 -0
- package/dist/shared/json-map-store.js.map +1 -0
- package/dist/shared/schedule-spec.js +240 -0
- package/dist/shared/schedule-spec.js.map +1 -0
- package/dist/shared/session-label.js +8 -4
- package/dist/shared/session-label.js.map +1 -1
- package/dist/shared/std.js +9 -0
- package/dist/shared/std.js.map +1 -0
- package/package.json +1 -1
- package/dist/daemon/topics.js +0 -106
- package/dist/daemon/topics.js.map +0 -1
package/CLAUDE.md
CHANGED
|
@@ -56,24 +56,36 @@ Three processes, all coordinating via 127.0.0.1:17890 and `~/.wezard/`:
|
|
|
56
56
|
- `cc-bridge.ts` (mode=headless) spawns `claude -p --output-format stream-json --verbose`, parses `assistant`/`stream_event` lines, and pumps text via `client.replyStream`. Per-principal queue serializes turns; session id is captured from the `system/init` line and persisted to `~/.wezard/sessions.json` for `--resume`.
|
|
57
57
|
- `mirror-bridge.ts` (mode=mirror) tails `<projectsDir>/<encoded(cwd)>/<sid>.jsonl` and pushes new `assistant` content to a chat — but only for turns the chat itself started: a turn opened by a human's CLI keystroke is recorded to the turn store (chat-detail page) and kept out of the chat (`wrc.mirror.chatOriginOnly`, brief mode only); approval/askq cards and `[mirror]` notices bypass that gate. Inbound injection is either `claude --resume <sid> -p` (writes a turn into the same jsonl) or `tmux paste-buffer` against a live TTY (only path that makes WeCom messages visible in the user's CLI window). `recentInjects` ring buffer suppresses the WeCom→CLI echo when tailing.
|
|
58
58
|
- `claim.ts` is a single-shot bootstrap: an exact-match magic phrase from any sender bypasses `allowFrom`, writes that principal as `defaultChat`, and appends to `allowFrom`. This is the **only** legitimate ingress for first-time setup.
|
|
59
|
-
- `peers.ts` is the read side of multi-agent awareness
|
|
59
|
+
- `peers.ts` is the read side of multi-agent awareness — "who else is working in this chat, and are they busy". The wizards of one chat are exactly the target keys sharing a base principal (`baseOfKey`): the untagged default plus every `#tag`. Pure parsing only — bounded transcript-tail reads (`tailTurns` / `lastAssistantText` / `summarizeTail`, shared with `session-scan.ts`) and pane classification (`paneIsBusy`). Identity (name / job / memory / lineage) lives in `wizard.ts`, not here. **Busy detection matches the TUI spinner footer** (`… (12m 31s · …)` on current versions, `esc to interrupt` on older ones) in the last 8 non-blank rows — transcript mtime is useless here, it goes quiet during long tool calls.
|
|
60
|
+
- `wizard.ts` is the identity layer over those sessions: a target key plus a name (the chat's name; a tagged session reads `chat#tag`), a one-line job description, a long-term `memory` list, and a `parent` link that makes a session a CLONE of another. The registry is a write-through json (`~/.wezard/wizards.json`, `wrc.mirror.wizardsFile`) bound process-wide via `bindWizardStore` so the IM side can read it too; everything else in the module is a pure renderer. **Identity travels as a system prompt, never as a message**: `renderCharter` builds the wizard's charter (who it is, its workspace, its clones, its memory, the tool roster, the orchestration playbook, the etiquette of talking where a human is watching) and `spawn-tmux` presses it in with `--append-system-prompt "$(cat <file>)"` — so it survives `/clear`, costs no turn, and never shows in chat. Every spawn path (`/new`, a dead-pane respawn, a clone) pulls it from `MirrorBridge.setCharterProvider`, installed in `index.ts`. Backends with no such flag (codebuddy) spawn without a charter rather than with a rejected flag.
|
|
61
|
+
- **Cloning is a context fork**: `MirrorBridge.cloneSession` spawns `--resume <parent sid> --fork-session`, so the child starts holding everything the parent had read while the parent is untouched — that is what makes "load the shared material once, then fan out" work. Two invariants: `--fork-session` is mandatory (without it a second pane appends to the parent's jsonl and two chats cross-wire), and the forked transcript only appears when that pane takes its FIRST message — so the clone's opening line is the trigger, and the attach waits for the fork; if it never appears the pane is killed rather than bound to the parent's sid.
|
|
62
|
+
- `jobs.ts` is the ledger for one fan-out: which wizards belong to a job, which of them were spawned *for* it (only those get recycled on `close_job` — a long-lived wizard pulled in to help is not), and the two bubbles the chat sees. It holds no control flow on purpose: that stays in the initiating wizard's context, so a reload costs one retry instead of a resurrected state machine. Closed rows older than 24h are dropped on the next write.
|
|
63
|
+
- `notices.ts` is the other half of awareness. A charter's roster is a spawn-time snapshot and only gets staler; a variation (a birth, a `stop_wizard`, a changed job description, a chat getting named) posts one line into each affected wizard's in-memory box, and the next text injected into that pane — from a human, a peer or a scheduled task — carries it along as a `<system-reminder>`. No extra turn, no bubble, no transcript. Delivery clears the box: a notice is a hint, the truth is always `wizard_roster`.
|
|
64
|
+
- `chat-name.ts` turns a chat's unreadable `chat:wr…` id into a writable address, and auto-fills one from the workspace basename when nobody named it. The fill happens wherever a name is about to be handed to a model — including `renderCharter`, since a system prompt outlives the process that read it. Fill-only; a human-chosen name is never overwritten.
|
|
65
|
+
- `tasks.ts` fires a scheduled prompt into a target wizard's session — exactly equivalent to someone saying it in the chat at that moment. Lives in the daemon, not in a session, so a CLI restart / `/clear` / session end can't carry it away; the spec is persisted to `config.jsonc`'s `schedules`.
|
|
60
66
|
- `graph.ts` is the loop-graph runner: `nodes` = tagged sessions (own cli/model/cwd), `steps` = an ordered pipeline walked `rounds` times, each step injecting a prompt, waiting for that agent to go idle, then feeding its reply forward as `{{last}}` / `{{<tag>}}`. Stops early on the `until` sentinel. All effects go through injected deps backed by `mirror-bridge`, so a step is exactly what a human typing `#tag …` would do. Runs are **in-memory only** — a reload cancels them (panes survive).
|
|
61
67
|
|
|
62
68
|
**Configuration** (`shared/config.ts`):
|
|
63
69
|
- Loaded by every binary via `loadConfig()`. Resolution order: explicit arg → `$WEZARD_CONFIG` → `~/.wezard/config.jsonc` → `~/.wezard/config.json`.
|
|
64
70
|
- Secrets (`bot.botId`, `bot.secret`) live in `~/.wezard/secrets.json` and are deep-merged on top of the main config — keeps secrets out of dotfile repos.
|
|
65
71
|
- Schema is zod (`ConfigSchema`); shape mismatches throw with a path-pointed error.
|
|
66
|
-
- `shared/config-writer.ts` is the only sanctioned way to mutate the on-disk jsonc — it preserves comments via `jsonc-parser` edits. `cli/init.ts` and `daemon/
|
|
72
|
+
- `shared/config-writer.ts` is the only sanctioned way to mutate the on-disk jsonc — it preserves comments via `jsonc-parser` edits. `cli/init.ts`, `daemon/claim.ts` and `daemon/chat-name.ts` use it.
|
|
73
|
+
|
|
74
|
+
**Shared primitives** — reach for these before writing a local copy:
|
|
75
|
+
- `shared/json-map-store.ts` (`loadJsonMap`) is the write-through keyed-JSON file behind `sessions.ts`, `mirror-store.ts`, `wizard.ts` and `jobs.ts`. Tolerant at both ends by design: a corrupt file reads as empty, a failed write is swallowed — everything it holds is recovery state, so losing it must cost a re-attach, never a live session. `gc` runs just before each write (jobs expires closed rows that way).
|
|
76
|
+
- `shared/exec-path.ts` (`augmentedPath`) — PATH widening for every daemon-side spawn.
|
|
77
|
+
- `shared/std.ts` — `sleep`, `truncate`, `truncateWithCount` (`…(+N)`), `clipLine` (collapse whitespace, then cut).
|
|
78
|
+
- `shared/paths.ts` (`expandHome`, `sanitizeId`), `shared/session-label.ts` (`tagOfKey` / `baseOfKey` / `withTagHeader` — use these names, don't re-alias them locally).
|
|
67
79
|
|
|
68
80
|
**Hook + sync**:
|
|
69
81
|
- `hooks/hooks.json` is registered automatically by Claude Code when the plugin is installed (uses `${CLAUDE_PLUGIN_ROOT:-${CODEBUDDY_PLUGIN_ROOT}}` so the same file works under CodeBuddy's plugin loader if ever published there).
|
|
70
82
|
- For non-plugin installs (`claude-internal` wrapper), `cli/sync.ts` writes the MCP server entry + `WEZARD_DAEMON_BASE` env into target `settings.json`s listed in `config.sync.targets`. **It deliberately strips legacy hook entries** for `kind:"claude"` targets — registering both the plugin's `hooks.json` AND a settings.json hook fires the hook twice per tool call (= duplicate cards). For `kind:"codebuddy"` targets, since the wezard plugin is not published to CodeBuddy's marketplace, sync **writes the hook directly into `~/.codebuddy/settings.json`** with an absolute path to `hooks/pre-tool-use.sh` — this is the only registration path for CodeBuddy. `~/.wezard/sync.lock.json` tracks what was written so `--remove` is reversible.
|
|
71
83
|
|
|
72
|
-
**MCP server** (`mcp/server.ts`): stdio transport, completely stateless w.r.t. WeCom. Every tool just `POST`s to the daemon. Add a tool here AND a route handler in `daemon/`. The
|
|
84
|
+
**MCP server** (`mcp/server.ts`): stdio transport, completely stateless w.r.t. WeCom. Every tool just `POST`s to the daemon. Add a tool here AND a route handler in `daemon/`. The collaboration tools (`wizard_whoami` / `wizard_identity` / `wizard_roster` / `spawn_clone` / `stop_wizard` / `wizard_remember` / `wizard_handoff_self`, plus the older `list_peers` / `peek_peer` / `send_peer` / `wait_peer` / `run_agent_graph` / `graph_status` / `stop_graph`) all send `selfRef()` = `{sessionId, tmuxPane}` so the daemon can resolve *which* session is asking — env sessionId goes stale after a `/clear`, pane id doesn't. Their descriptions are the whole discovery mechanism for wizard↔wizard collaboration: a wizard only realizes it can clone itself, or drive `#fix`, because the tool descriptions say so. Tool NAMES stayed on the older `peer` vocabulary on purpose — a name is an address, and renaming would break every hint, doc and habit pointing at it; the descriptions carry the wizard/clone vocabulary.
|
|
73
85
|
|
|
74
86
|
## Important patterns / pitfalls
|
|
75
87
|
|
|
76
|
-
- **PATH for spawn**:
|
|
88
|
+
- **PATH for spawn**: anything the daemon spawns must go through `shared/exec-path.ts`'s `augmentedPath(process.env.PATH)` — launchd/systemd start it with a stripped PATH that often lacks nvm/homebrew, so a new spawn ENOENTs in production while working fine under `npm run dev:daemon`. Callers needing more dirs pass them as the second arg (`session-scan` adds `/usr/sbin` for `lsof`).
|
|
77
89
|
- **launchd respawn**: `KeepAlive.SuccessfulExit=false`. `wezard reload` does `POST /shutdown` AND `launchctl kickstart`; just hitting `/shutdown` won't bounce the binary.
|
|
78
90
|
- **Uninstall order**: `wezard uninstall` *before* `npm uninstall -g wezard`. Otherwise launchd repeatedly tries to relaunch a deleted binary. State at `~/.wezard/` is intentionally preserved.
|
|
79
91
|
- **Card update has a 5s window**: `client.updateTemplateCard` only works within 5s of the click event — `installApprovalEventListener` does the rewrite synchronously inside the event handler.
|
package/README.md
CHANGED
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
| 📡 **MCP 主动推送** | Agent 通过 `wecom__send_markdown` / `wecom__send_card` / `wecom__ask_user` 主动汇报或问询。 |
|
|
30
30
|
| 📄 **文档读写** | Agent 通过 `wecom_doc_list_tools` / `wecom_doc_call` 直接调企业微信智能机器人的 doc / smartsheet / smartpage MCP,新建在线文档、写 Markdown、读链接、操作智能表格——全程在内网,不需要 corp access_token。 |
|
|
31
31
|
| 🗂 **多会话发现/切换** | Agent 通过 `list_claude_sessions` / `switch_claude_session` / `new_claude_session` 列出本机 tmux 内所有在跑的会话(带摘要 + 稳定动物 emoji 标签)、切换 IM 镜像、或在指定路径新开会话。审批卡标题也带同一枚 emoji,多会话兜底到同一 IM 时一眼区分。 |
|
|
32
|
+
| 🧙 **多 wizard 协同** | 一个聊天里住着多个有名字、有职责、有记忆的 wizard(`#tag` 寻址)。`spawn_clone` fork 上下文出分身,`open_job` / `wait_peer({tags})` / `close_job` 把一次 fan-out 收成群里两条气泡,干完整批回收。 |
|
|
32
33
|
| 🔄 **重启即续** | 电脑重启 / tmux 全没了 / daemon 崩了都不掉档:IM ↔ 会话绑定持久化在 `~/.wezard/mirror-attachments.json`,下一条 IM 消息自动 `claude --resume` 拉起新 tmux pane,历史完整继承;`tmux attach -t wezard` 接管即可。 |
|
|
33
34
|
|
|
34
35
|
<details>
|
|
@@ -38,8 +39,9 @@
|
|
|
38
39
|
- [镜像模式](#镜像模式)
|
|
39
40
|
- [体验是什么样](#体验是什么样)
|
|
40
41
|
- [文档 / 智能表格 / 智能文档](#文档--智能表格--智能文档)
|
|
41
|
-
- [
|
|
42
|
-
- [
|
|
42
|
+
- [定时任务 / 跨群通知](#定时任务--跨群通知)
|
|
43
|
+
- [一个聊天里住着多个 wizard(`#tag` 路由)](#一个聊天里住着多个-wizardtag-路由)
|
|
44
|
+
- [编排:读完材料才知道要分几路](#编排读完材料才知道要分几路)
|
|
43
45
|
- [跨聊天:给聊天命名](#跨聊天给聊天命名)
|
|
44
46
|
- [多 CLI 后端](#多-cli-后端claude--claude-internal--codebuddy)
|
|
45
47
|
- [Prompt-cache 保活(省钱心跳)](#prompt-cache-保活省钱心跳)
|
|
@@ -128,81 +130,118 @@ IM 里发 `/new` 直接开新 tmux 窗口 + 新 Agent 会话;`/clear` 清当
|
|
|
128
130
|
|
|
129
131
|
---
|
|
130
132
|
|
|
131
|
-
##
|
|
133
|
+
## 定时任务 / 跨群通知
|
|
132
134
|
|
|
133
|
-
|
|
135
|
+
**定时任务**:到点把一句话说给某个 wizard 听——等价于那一刻有人在群里对它说了这句话,所以它**真的会去干活**,产出照常落在群里。守护进程级,跨 CLI 重启、会话结束仍在;目标 pane 死了会被自动拉起来,不要求那台机器上一直开着窗口。定时表持久化到 `~/.wezard/config.jsonc` 的 `schedules`,`wezard reload` 后自动恢复。
|
|
134
136
|
|
|
135
|
-
|
|
137
|
+
`when` 用人话说就行,不用翻译成 cron:
|
|
136
138
|
|
|
137
139
|
| 说 | 工具 | 干什么 |
|
|
138
140
|
| --- | --- | --- |
|
|
139
|
-
|
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
| 「每天 8 点广播 sync-daily:…」 | `schedule_broadcast(topic, hour, minute, content)` | 注册每日定时广播 |
|
|
143
|
-
| 「取消 sync-daily 的定时」 | `cancel_broadcast(topic)` | 删掉该 topic 的所有定时 |
|
|
144
|
-
| 「我订了什么 / 有哪些定时」 | `list_topics()` | 列出本聊天订阅 + 全部定时 |
|
|
141
|
+
| 「每个工作日晚上 9:30 跑一遍回归」 | `schedule_task(when, prompt, tag?)` | 排给某个 wizard(省略 `tag` = 排给自己) |
|
|
142
|
+
| 「我设了什么定时」 | `list_tasks()` | 列出 id / 人话回显的 when / 下次触发时刻 / 目标 |
|
|
143
|
+
| 「取消那个定时」 | `cancel_task(id)` | 按 id 删 |
|
|
145
144
|
|
|
146
|
-
|
|
145
|
+
认得的说法:`每天 8:00`、`每个工作日晚上9:30`、`每周三下午3点`、`每隔两小时`、`每 30 分钟`、`20 分钟后`、`明早 9 点`。
|
|
147
146
|
|
|
148
|
-
|
|
147
|
+
**跨群通知**:`notify(to?, markdown)` 把一段 markdown 贴进指定聊天**给人看**——和 `send_peer` 正好相反,它不驱动任何 agent、不触发一轮对话。`to` 写聊天名(见[给聊天命名](#跨聊天给聊天命名)),省略就是自己所在的群。跨群时气泡头自动写成 `源聊天#你` 并挂上 chat 详情页链接,那边的人一眼知道是谁从哪说过来的。
|
|
149
148
|
|
|
150
|
-
|
|
151
|
-
curl -sS -X POST http://127.0.0.1:17890/publish \
|
|
152
|
-
-H 'content-type: application/json' \
|
|
153
|
-
-d '{"topic":"ci-fail","markdown":"🔴 build #1234 failed on main"}'
|
|
154
|
-
```
|
|
149
|
+
典型用法:一个长活在 `build` 群跑完,`notify(["ops"], "🔴 回归挂了 3 例…")` 把结论送到该看的人那里;或者 `schedule_task` 到点跑完,由那个 wizard 自己 `notify` 播报。
|
|
155
150
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
---
|
|
151
|
+
## 一个聊天里住着多个 wizard(`#tag` 路由)
|
|
159
152
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
同一个 WeCom 聊天里可以同时挂多个并行 Agent session,靠消息里的 `#tag` 前缀路由。不带 tag 就是默认 session,与旧行为一致。
|
|
153
|
+
一个绑定了聊天的会话,在 wezard 里叫一个 **wizard**:它有自己的终端、工作区、名字和职责,知道群里还有谁,也叫得动它们。同一个 WeCom 聊天里可以同时住着多个 wizard,靠消息里的 `#tag` 路由。不带 tag 就是默认那个,与旧行为一致。
|
|
163
154
|
|
|
164
155
|

|
|
165
156
|
|
|
166
157
|
**创建 & 切换**
|
|
167
158
|
|
|
168
159
|
```
|
|
169
|
-
/new #docs
|
|
170
|
-
/new #api
|
|
171
|
-
/new
|
|
160
|
+
/new #docs 让一个叫 docs 的 wizard 就位(tmux 窗口名也叫 docs)
|
|
161
|
+
/new #api 再来一个,与 #docs 完全独立(独立 sessionId / jsonl / cwd)
|
|
162
|
+
/new 默认那个,老玩法
|
|
172
163
|
```
|
|
173
164
|
|
|
174
165
|
**消息路由**
|
|
175
166
|
|
|
176
|
-
只要消息文本里任意位置带 `#tag`(空白/句首/句尾分隔),就路由到那个
|
|
167
|
+
只要消息文本里任意位置带 `#tag`(空白/句首/句尾分隔),就路由到那个 wizard:
|
|
177
168
|
|
|
178
169
|
```
|
|
179
170
|
#docs 帮我把 README 的目录补一下
|
|
180
171
|
帮我看下这个报错 #api
|
|
181
|
-
/pwd #docs → 只看 docs
|
|
182
|
-
/stop #api → 只打断 api
|
|
183
|
-
/clear #docs → 只清 docs
|
|
172
|
+
/pwd #docs → 只看 docs 的工作区
|
|
173
|
+
/stop #api → 只打断 api
|
|
174
|
+
/clear #docs → 只清 docs 的上下文
|
|
184
175
|
```
|
|
185
176
|
|
|
186
|
-
不带 tag
|
|
177
|
+
不带 tag 的消息始终落到默认那个。消息里**第二个**及之后的 `#tag` 不参与路由,但守护进程会在消息尾部挂一条不可见的提示,告诉收信的 wizard「`#b` 是一个活着的同类,去叫它,别替它回答」。
|
|
187
178
|
|
|
188
179
|
**回复标识**
|
|
189
180
|
|
|
190
|
-
|
|
181
|
+
带 tag 的 wizard 每条回复自带 `emoji #tag` 前缀(emoji 由 tag 名 hash 决定,稳定),一眼分辨是谁在说话——在群里引用它的气泡,就等于跟它说话:
|
|
191
182
|
|
|
192
183
|
```
|
|
193
184
|
🦊 `#docs`
|
|
194
185
|
|
|
195
|
-
(这里是 docs
|
|
186
|
+
(这里是 docs 这个 wizard 的回复……)
|
|
196
187
|
```
|
|
197
188
|
|
|
198
189
|
默认 session 无前缀,视觉上保持简洁。
|
|
199
190
|
|
|
200
191
|
**tag 语法**:`[\p{L}\p{N}_-]{1,32}`,支持中英文数字与 `_`、`-`;一条消息里只识别**第一个** `#tag`,后续的 `#foo` 原样透传给 Agent(不会误伤代码里的 `#include` 或 issue 引用)。
|
|
201
192
|
|
|
193
|
+
**身份、记忆与分身**
|
|
194
|
+
|
|
195
|
+
每个 wizard 的身份(名字、工作区、职责、记忆、家谱)在它启动时以**系统提示**的形式压进进程——不占一轮对话、群里看不见、`/clear` 也抹不掉。所以它一睁眼就知道自己是谁、群里还有谁、自己能做什么:
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
你叫什么 / 你负责什么 → 它调 wizard_whoami
|
|
199
|
+
以后你就叫 sanitizer → wizard_identity,默认会话会连带给聊天起名
|
|
200
|
+
记住:发版前必须更新 CHANGELOG → wizard_remember,跨 /clear 活着,每次重开重新入场
|
|
201
|
+
还有谁在跑 / 谁在弄那个项目 → wizard_roster(名字、职责、忙闲、谁是谁的分身)
|
|
202
|
+
分个身去把这三个目录都扫一遍 → spawn_clone ×3,干完 stop_wizard 收掉
|
|
203
|
+
上下文快满了 → 它自己 wizard_handoff_self:写简报、原地重开、把简报贴回去
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**分身(clone)默认继承上下文**:`spawn_clone({inherit:true})` 用 `--resume <父> --fork-session` 起 pane,CLI 把父亲的 transcript 复制一份再继续写——分身开局就带着父亲读过的材料,父亲毫发无损。于是「先把公共文档读进一个基座,再从它分出 N 个干活的」成立:材料只读一遍,却进了 N 份上下文。要白纸一张就传 `inherit:false`(那时才能顺便换工作区)。分身自己也能再分身,层级不限;名下同时活着的分身有上限(`wrc.mirror.cloneMax`,默认 8)——分身能递归生分身,一次跑飞的编排足以把 fd 吃光。
|
|
207
|
+
|
|
208
|
+
**模型是 wizard 的一个属性**,不是 spawn 那一瞬的开关:`/new [cli] [model]`、`new_claude_session({model})`、`spawn_clone({model})`、`run_agent_graph` 的节点都能挑,挑了就写进绑定记录——pane 死了自愈重生仍在那个模型上,名册每一行也看得见谁跑在什么模型上。要判断的给 opus、跑腿的给 haiku,这句话得看得见才执行得了。
|
|
209
|
+
|
|
210
|
+
它们之间的**关键往返**(派活、分身出生、收尾、跨群结论)会以 `A → B` 的气泡留在群里,中间的催促只落进 chat 详情页——人看得见谁派了什么活、谁给了什么结论,不会被每一次「收到」刷屏。
|
|
211
|
+
|
|
212
|
+
**名册会自己更新,不必去问**:charter 里那份「出生时群里有谁」只是快照,只会越来越假。群里谁出生、谁收工、谁改了职责,会以一行 `<system-reminder>` 挂在**下一次**进到它的任何文本尾巴上——不占一轮、不进气泡、不进 transcript。感知 = spawn 时的快照 + turn 时的增量,两者都不花额外轮次。要当下完整的名册仍然是 `wizard_roster`(服务端按 `query` / `cwd` / `chat` / `alive` 过滤——「谁在这个目录里干活」是可以直接问出来的)。
|
|
213
|
+
|
|
202
214
|
**cwd 是聊天级的,不是 session 级**:同一聊天里所有 tagged / 默认 session **共用**一个 cwd。`/new #foo` 会在**当前聊天绑定的 cwd** 下起 pane;换项目直接对 AI 说「切到 /path/to/proj」,它调 `set_workspace` MCP **一步到位**——杀掉当前 pane、在新 cwd 重开新会话,聊天里以新会话的 📂 项目回执为准,上下文不延续。这样多 session 天然对齐到同一个项目根,切换 tag 时不用重新指路径。
|
|
203
215
|
|
|
204
216
|
---
|
|
205
217
|
|
|
218
|
+
## 编排:读完材料才知道要分几路
|
|
219
|
+
|
|
220
|
+
点对点(`send_peer` + `wait_peer`)和静态流水线(`run_agent_graph`)之间空着的,正是「读完材料才知道有 5 个模块要改」的那一种活——分几路是**想出来**的,不是声明出来的。
|
|
221
|
+
|
|
222
|
+
**控制流留在发起的那个 wizard 手里**:它自己分路、自己派、自己等、自己汇总;守护进程只做账本与执行器。剧本是固定的五步:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
open_job("补全 5 个模块的错误处理", plan) → 拿一个工单 id,群里出一条「开工」
|
|
226
|
+
spawn_clone({inherit:true, task, job}) ×5 → 分身开局就带着我已读的材料,活写进 task 省一次往返
|
|
227
|
+
(派活时要求它用一行 RESULT: … 收口)
|
|
228
|
+
wait_peer({tags:[…], need}) → 一次把 5 个一起等回来
|
|
229
|
+
close_job(summary) → 群里出一条「收工」,并整批回收为它生出来的分身
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
每一步存在的理由:
|
|
233
|
+
|
|
234
|
+
| 原语 | 它解决的问题 |
|
|
235
|
+
| --- | --- |
|
|
236
|
+
| **工单** `open_job` / `close_job` / `list_jobs` | 五路 fan-out 原本要刷十条交叉气泡,人从里面读不出结构。带 `job` 的派活只在群里留「开工 / 收工」两条,过程照旧在各自的 chat 详情页;收工那条把成员(各挂自己的详情链接)与各自那段活一并交代。`close_job` 还把**为这个工单生出来的**分身整批回收——忘记收是常态,而每个分身都占一个 pane 和一份上下文。 |
|
|
237
|
+
| **一次等一组** `wait_peer({tags, need})` | 分身本来就在并行干活。一个一个等,墙钟是所有人之和;一起等只花最慢那一个的时间。`need` 决定满几个就返回(`1` = 谁先完事就先处理谁),法定人数一满剩下的等待立刻撤掉,它们照常继续干。 |
|
|
238
|
+
| **收口行** `RESULT: …` | join 的载荷本来是「对方最后一条 assistant 文本」,而那句可能是「好的我开始了」,也可能是八百字散文——两种都没法直接汇总。`wait_peer` 从回复里摘最后一个 `RESULT:`(或「结论:」)那一行单独放进 `result`,摘不到就是空串,照旧读 `lastText`。改不了 CLI 的输出格式,就在派活的提示里要求收口。 |
|
|
239
|
+
| **投递时机** `send_peer({when:"idle"})` | 两个 wizard 同时找第三个时,两段文本会挤进同一个输入框被当成一轮读掉——这在协同网络里不是边角情况而是常态。`idle` 先等对方闲下来再投;「回答它的提问」「打断它」仍然用默认的 `now`。返回一律带 `wasBusy`。 |
|
|
240
|
+
|
|
241
|
+
要「几个 agent 互相评审、迭代到收敛」这种**预先就声明得出来**的循环,用 `run_agent_graph`:`nodes` 是参与的 wizard,`steps` 是有序管线,整张表走 `rounds` 遍,`{{last}}` / `{{<tag>}}` / `{{round}}` 把上一步的产出喂给下一步,某个回复里出现 `until` 哨兵就提前收工。`graph_status` 查、`stop_graph` 停。注意图只活在守护进程内存里,`reload` 会把它清掉(wizard 本身还活着)。
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
206
245
|
## 跨聊天:给聊天命名
|
|
207
246
|
|
|
208
247
|
一个 WeCom 聊天的身份是 `chat:wrkS…` 这种既读不出也打不进去的 id。所以在给聊天起名之前,跨聊天叫人只有一条路:**赌 tag 全局唯一**——两个群各有一个 `#fix`,就谁也叫不动谁,唯一的出路是回去改别人的 tag。
|
|
@@ -213,7 +252,7 @@ tagged session 的每条回复自带 `emoji #tag` 前缀(emoji 由 tag 名 has
|
|
|
213
252
|
/name daily 给本聊天起名为 daily
|
|
214
253
|
/name 查看当前名字
|
|
215
254
|
/name - 取消命名
|
|
216
|
-
/chats
|
|
255
|
+
/chats 列出所有已知聊天、各自跑着哪些 wizard(名字 / 职责 / 工作区)
|
|
217
256
|
```
|
|
218
257
|
|
|
219
258
|
**名字规则**:1–32 个字符,字母 / 数字 / `_` / `-`(不能有空格、`#`、`/`、`:`)。全机唯一、大小写不敏感,重名会被拒;改名即覆盖,一个聊天只留一个名字。名字写在 `~/.wezard/config.jsonc` 的 `chats` 里,手改也行。
|
|
@@ -225,7 +264,7 @@ tagged session 的每条回复自带 `emoji #tag` 前缀(emoji 由 tag 名 has
|
|
|
225
264
|
| `fix` | 本聊天的 `#fix`;本聊天没有,才回退去找全机唯一的 `#fix` |
|
|
226
265
|
| `daily#fix` | daily 这个聊天的 `#fix`——不问 tag 全不全局唯一 |
|
|
227
266
|
| `daily#` | daily 的默认(无 tag)会话 |
|
|
228
|
-
| `chat:wr…#fix` | 全量 key,`/chats`、`
|
|
267
|
+
| `chat:wr…#fix` | 全量 key,`/chats`、`wizard_roster` 吐出来的原样也能用 |
|
|
229
268
|
|
|
230
269
|
起完名之后,在**别的群**里直接说人话即可:
|
|
231
270
|
|
|
@@ -235,9 +274,11 @@ tagged session 的每条回复自带 `emoji #tag` 前缀(emoji 由 tag 名 has
|
|
|
235
274
|
别的群还有谁在跑 → AI 调 list_chats
|
|
236
275
|
```
|
|
237
276
|
|
|
238
|
-
|
|
277
|
+
最后一块是**跨群造 wizard**:`new_claude_session` 的 `chat` 参数可以直接在另一个已命名的聊天里让一个 wizard 就位,「要找的那个还不存在」不再需要拉个人去那边手打 `/new`。跨群派活时两边聊天都会收到 relay 气泡——被叫的那侧不会莫名其妙冒出一句话;它的回答则只推回给**问的人**那个群(它自己群里那条回复本来就在)。
|
|
278
|
+
|
|
279
|
+
**没名字的聊天会自动补一个**。名字就是地址,而「等人想起来去 `/name`」是等不到的。每个聊天本来就带着一个可读的标识——它在干哪个项目,于是 `~/develop/Guxi11/weclaude` → `weclaude`,撞名加序号(`lisct` / `lisct-2`),非法字符折成 `-`。补名发生在「**要把名字交给模型**」的那一刻(`wizard_roster` / `list_chats` / `list_peers` / `wizard_whoami` / `notify` 收件解析,以及渲染 charter 时——后者最要紧:系统提示随进程终身,一个在聊天还没名字时出生的 wizard 会一辈子以为自己住在「(未命名)」的地方)。只填空,**永不覆盖你起过的名字**;工作区为空推不出名字的原样留着——宁可没名字,也不造一个同样不可读的 `chat-wr4`。
|
|
239
280
|
|
|
240
|
-
>
|
|
281
|
+
> 自动命名只是兜底。名字是写进别人消息里的地址,你自己起的那个永远比目录名好读——想让某个群被准确叫到,在那个群里发一次 `/name`。
|
|
241
282
|
|
|
242
283
|
---
|
|
243
284
|
|
|
@@ -273,7 +314,7 @@ daemon 同时挂载所有已安装的 CLI,不是二选一:你可以一个 tm
|
|
|
273
314
|
|
|
274
315
|
## Prompt-cache 保活(省钱心跳)
|
|
275
316
|
|
|
276
|
-
Anthropic 的 prompt cache 只活 ~5 分钟,且**写缓存 1.25x、读缓存 0.1x**。一个 pane 一旦空闲(
|
|
317
|
+
Anthropic 的 prompt cache 只活 ~5 分钟,且**写缓存 1.25x、读缓存 0.1x**。一个 pane 一旦空闲(wizard 在等同伴回话、或后台任务在跑),整份上下文就会掉出缓存——下一轮真实对话得按 1.25x 把整个上下文重写一遍。保活机制会在缓存**即将过期前**往 pane 注入一次极小的 ping,逼模型发起一次廉价请求(命中缓存前缀走 0.1x 读)并把 5 分钟 TTL 往前滑,真实那轮就只需写增量。
|
|
277
318
|
|
|
278
319
|
- **锚定「真实活动」,不自我续命**:整套调度以**最后一次真实(非 ping)对话**为锚——保活自己的 ping **不会**刷新这个锚点。空闲落在 `[ttlSec - marginSec, ttlSec)`(缓存快过期)才 ping;一旦**真实空闲超过 `maxIdleSec`(默认 = TTL 5min)就彻底停手**,让缓存自然冷掉。这正是关键:老会话不会因为「ping 把 mtime 刷新了」而被误判成活跃,从而无限保活。
|
|
279
320
|
- **两道成本保险**:① 缓存已冷(距上次任何触碰 ≥ TTL)绝不 ping——否则就是为 no-op 付整份冷写;② 真实工作太老(≥ `maxIdleSec`)直接放弃。daemon reload 后,会先看 transcript 最后一轮是不是自己的 ping,是就把锚点当成「早已空闲」,**不会**把一个搁置很久的大会话重新烧热。
|
|
@@ -302,8 +343,8 @@ IM 里发 `/help` 可随时拉出完整命令表;每次 `/new`、`/clear` 之
|
|
|
302
343
|
```
|
|
303
344
|
/new · /clear · /stop · /n 会话控制
|
|
304
345
|
/sessions [emoji|id] 列出 / 切换 live 会话
|
|
305
|
-
/new <cli> [#tag]
|
|
306
|
-
/peers
|
|
346
|
+
/new <cli> [model] [#tag] 切换 CLI 后端 / 挑模型 / 开并行会话
|
|
347
|
+
/peers · /wizards 本聊天的 wizard:名字、职责、忙闲、家谱
|
|
307
348
|
/name [名字|-] · /chats 给本聊天起名 / 跨聊天目录
|
|
308
349
|
/id · /pwd · /usage · /cost · /audit 信息查询(免授权)
|
|
309
350
|
/help 全部命令
|
package/dist/cli/init.js
CHANGED
|
@@ -19,6 +19,7 @@ import { mapClaudePermissions, readClaudePermissions } from "../shared/claude-pe
|
|
|
19
19
|
import { expandHome } from "../shared/paths.js";
|
|
20
20
|
import { resolvePublicHost } from "../shared/lan-ip.js";
|
|
21
21
|
import { loadOrCreateSvrToken } from "../shared/svr-token.js";
|
|
22
|
+
import { sleep } from "../shared/std.js";
|
|
22
23
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
23
24
|
const REPO = pathResolve(here, "..", "..");
|
|
24
25
|
const CONFIG = "~/.wezard/config.jsonc";
|
|
@@ -72,7 +73,6 @@ const post = async (p, body) => {
|
|
|
72
73
|
});
|
|
73
74
|
return r.json().catch(() => ({}));
|
|
74
75
|
};
|
|
75
|
-
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
76
76
|
const readBotCreds = () => {
|
|
77
77
|
const p = expandHome(SECRETS);
|
|
78
78
|
if (!existsSync(p))
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../cli/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../cli/init.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/approval.js
CHANGED
|
@@ -156,8 +156,6 @@ const commandOf = (toolName, toolInput) => {
|
|
|
156
156
|
const i = toolInput;
|
|
157
157
|
return i && typeof i.command === "string" ? i.command : "";
|
|
158
158
|
};
|
|
159
|
-
const MAIN_DESC_MAX = 30;
|
|
160
|
-
const mainTitle = (title, desc) => desc ? { title, desc: TRUNC(desc, MAIN_DESC_MAX) } : { title };
|
|
161
159
|
const dirName = (cwd) => cwd.replace(/^.*\//, "") || cwd;
|
|
162
160
|
// quote_area 弃用后, jump_list 是卡上唯一的 PC 跳转位 (13 字上限)。
|
|
163
161
|
const detailJumpList = (url) => url ? [{ type: 1, title: "🔍 完整命令 · 详情", url }] : undefined;
|
|
@@ -1273,10 +1271,6 @@ const handleAskUserQuestion = async ({ cfg, log, client, body, getMirrorTarget,
|
|
|
1273
1271
|
const total = questions.length;
|
|
1274
1272
|
const answers = [];
|
|
1275
1273
|
const flowStart = Date.now();
|
|
1276
|
-
// hook 客户端断开后整个流程只是往死管道灌数据 — 记标志, 循环内 race、
|
|
1277
|
-
// 循环后回执都以它止血。正常完成时 clientGone 永不 resolve, 无副作用。
|
|
1278
|
-
let gone = false;
|
|
1279
|
-
void clientGone?.then(() => { gone = true; });
|
|
1280
1274
|
for (let i = 0; i < total; i++) {
|
|
1281
1275
|
const q = questions[i];
|
|
1282
1276
|
// 剩余预算: N 题共享一份 longPollSec。若每题都给整份, 多题总时长上限是
|