wezard 2.3.0 → 2.4.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/CLAUDE.md +3 -3
- package/README.md +5 -5
- package/config.example.jsonc +12 -0
- package/dist/daemon/approval.js +84 -2
- package/dist/daemon/approval.js.map +1 -1
- package/dist/daemon/chat-name.js +15 -0
- package/dist/daemon/chat-name.js.map +1 -1
- package/dist/daemon/config-api.js +265 -70
- package/dist/daemon/config-api.js.map +1 -1
- package/dist/daemon/danger.js +5 -7
- package/dist/daemon/danger.js.map +1 -1
- package/dist/daemon/detail.js +10 -2
- package/dist/daemon/detail.js.map +1 -1
- package/dist/daemon/handoff.js +4 -3
- package/dist/daemon/handoff.js.map +1 -1
- package/dist/daemon/idle-nudge.js +55 -0
- package/dist/daemon/idle-nudge.js.map +1 -0
- package/dist/daemon/inbound.js +10 -10
- package/dist/daemon/inbound.js.map +1 -1
- package/dist/daemon/index.js +872 -214
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/jobs.js +122 -13
- package/dist/daemon/jobs.js.map +1 -1
- package/dist/daemon/mirror-bridge.js +95 -83
- package/dist/daemon/mirror-bridge.js.map +1 -1
- package/dist/daemon/model-select.js +3 -0
- package/dist/daemon/model-select.js.map +1 -1
- package/dist/daemon/notices.js +145 -33
- package/dist/daemon/notices.js.map +1 -1
- package/dist/daemon/peers.js +88 -74
- package/dist/daemon/peers.js.map +1 -1
- package/dist/daemon/pending-items.js +171 -0
- package/dist/daemon/pending-items.js.map +1 -0
- package/dist/daemon/receipts.js +54 -20
- package/dist/daemon/receipts.js.map +1 -1
- package/dist/daemon/route.js +76 -15
- package/dist/daemon/route.js.map +1 -1
- package/dist/daemon/spawn-tmux.js +2 -2
- package/dist/daemon/spawn-tmux.js.map +1 -1
- package/dist/daemon/steward-guard.js +32 -0
- package/dist/daemon/steward-guard.js.map +1 -0
- package/dist/daemon/wizard.js +104 -61
- package/dist/daemon/wizard.js.map +1 -1
- package/dist/mcp/server.js +75 -25
- package/dist/mcp/server.js.map +1 -1
- package/dist/shared/chat-http.js +8 -8
- package/dist/shared/chat-http.js.map +1 -1
- package/dist/shared/config-meta.js +91 -0
- package/dist/shared/config-meta.js.map +1 -0
- package/dist/shared/config-writer.js +5 -6
- package/dist/shared/config-writer.js.map +1 -1
- package/dist/shared/config.js +269 -294
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/detail-render.js +121 -32
- package/dist/shared/detail-render.js.map +1 -1
- package/dist/shared/detail-store.js.map +1 -1
- package/dist/shared/keepalive.js +5 -5
- package/dist/shared/keepalive.js.map +1 -1
- package/dist/shared/role-render.js +49 -11
- package/dist/shared/role-render.js.map +1 -1
- package/dist/shared/role-view.js +18 -4
- package/dist/shared/role-view.js.map +1 -1
- package/dist/shared/world.js +82 -13
- package/dist/shared/world.js.map +1 -1
- package/hooks/pre-tool-use.sh +5 -6
- package/package.json +1 -1
- package/web/chat.css +57 -37
- package/web/chat.js +454 -227
package/dist/daemon/wizard.js
CHANGED
|
@@ -143,6 +143,11 @@ export const ancestorsOf = (all, target) => {
|
|
|
143
143
|
return walk(byTarget.get(target)?.parent, []);
|
|
144
144
|
};
|
|
145
145
|
const bullet = (xs) => xs.map((x) => `- ${x}`).join("\n");
|
|
146
|
+
// 档位行: 各档由轻到重排开, 常用的三档挂一个词说用途; 两头的 mini / ultra 靠位置自明。
|
|
147
|
+
const TIER_HINT = { light: "跑腿", standard: "常规", hard: "要判断" };
|
|
148
|
+
const tierLine = (tiers) => tiers.length
|
|
149
|
+
? `按难度给 \`tier\`, 轻→重: ${tiers.map((t) => [t, TIER_HINT[t.split("=")[0]]].filter(Boolean).join(" ")).join(" / ")}`
|
|
150
|
+
: "按难度给 `tier`";
|
|
146
151
|
export const addr = (b) => `.${b.address || b.name || "?"}`;
|
|
147
152
|
const nameLine = (b) => `\`${addr(b)}\`${b.description ? ` · ${b.description}` : ""}${b.cwd ? ` · ${b.cwd}` : ""}`;
|
|
148
153
|
/** 出生名册最多点名几个。名册是出生快照, 只会越来越旧 (真相在 wizard_roster),
|
|
@@ -173,15 +178,18 @@ const CONTEXT_WINDOWS = [
|
|
|
173
178
|
[/deepseek|gpt-4o|kimi|glm/i, 128_000],
|
|
174
179
|
];
|
|
175
180
|
export const contextWindowOf = (model) => CONTEXT_WINDOWS.find(([re]) => re.test(model))?.[1] ?? 200_000;
|
|
176
|
-
//
|
|
177
|
-
//
|
|
181
|
+
// 「先记」的线按窗口算 (六成), 它防的是自动压缩: 20 万窗口 = 12 万, 1M 窗口 = 60 万。
|
|
182
|
+
// 交接线见 handoffAt —— 1M 窗口下它远早于压缩, 交接的提醒里自己带着「先记」。
|
|
178
183
|
/** 「先 wizard_remember」的提醒线。 */
|
|
179
184
|
export const memoryNudgeAt = (model) => Math.round(contextWindowOf(model) * 0.6);
|
|
180
185
|
/** 所有模型里最低的那条提醒线 —— 不到它就不必去读模型。 */
|
|
181
186
|
export const MEMORY_NUDGE_FLOOR = Math.round(Math.min(...CONTEXT_WINDOWS.map(([, w]) => w)) * 0.6);
|
|
182
|
-
|
|
187
|
+
// 交接不是压缩: 不等快满, 到 20 万就该开始判断 —— 手上这摊告一段落、或往后的活不再依赖
|
|
188
|
+
// 前面那大段材料, 背着它每轮都在付钱。小窗口 (20 万) 的模型等不到 20 万, 退回七成。
|
|
189
|
+
export const HANDOFF_CHECK = 200_000;
|
|
190
|
+
/** 该判断要不要交接的线 (whoami 的 handoffSuggested、越线那一次的提醒) —— 提示而已,
|
|
183
191
|
* 决定权在 wizard 自己。 */
|
|
184
|
-
export const handoffAt = (model) => Math.round(contextWindowOf(model) * 0.7);
|
|
192
|
+
export const handoffAt = (model) => Math.min(HANDOFF_CHECK, Math.round(contextWindowOf(model) * 0.7));
|
|
185
193
|
// 名册只报事实, 不替管家判「太满」: 值不值得接着用这段上下文是经济账, 由它自己算。
|
|
186
194
|
export const ctxOf = (n = 0) => (n ? `ctx ${Math.round(n / 1000)}k` : "");
|
|
187
195
|
export const agoOf = (ms, now) => {
|
|
@@ -212,10 +220,49 @@ const rosterEntry = (r, now, home) => {
|
|
|
212
220
|
// 冷会话的摘要是很久以前的话, 不值得占一行; 要读就 peek_peer。
|
|
213
221
|
...(r.alive && !r.self && r.summary ? [` 最近: ${r.summary}`] : []),
|
|
214
222
|
...(r.turns ? [` ${r.turns}`] : []),
|
|
223
|
+
...(r.duty ? [` 任职: ${r.duty}`] : []),
|
|
215
224
|
];
|
|
216
225
|
};
|
|
217
226
|
/** `home` = 用户主目录, 路径里的它缩成 `~`。 */
|
|
218
227
|
export const renderRoster = (rows, now, home = "") => rows.flatMap((r) => rosterEntry(r, now, home)).join("\n");
|
|
228
|
+
/** lead 在金字塔里的位置 —— 被派为 lead 的 wizard 宪章里这一节 (层级规矩, 不含组队打法)。
|
|
229
|
+
* 根单的活一律私聊 (带 job): 不论群开没开顶层模式, lead 都不对人说话, 终句只回派它的那个。
|
|
230
|
+
* `pointer` = 出生宪章里多一句「打法随信封」; 信封版 (已有 wizard 当 lead) 不需要这句。 */
|
|
231
|
+
export const renderLeadRules = (pointer = false) => [
|
|
232
|
+
"## 我是这件活的 lead",
|
|
233
|
+
"派你的 (管家或上级 lead) 把**整件**活交给了你, 你对结果负责, 过程自己组织; 只和相邻层说话:",
|
|
234
|
+
bullet([
|
|
235
|
+
"**对上**: 终句 `RESULT:` (做成了什么 · commit · `ARTIFACT` 指针, **单列「取舍 / 遗留」一段**) 或 `NEED:`; 先自己判断, 答不了的才以 `NEED:` 上冒。你不对人说话, 由派你的那个代你对人交代",
|
|
236
|
+
"**对下**: 带 `job` 的 task 只发给自己这张单的成员; 成员之间只许 `ask` / `fyi`, 不越级、不碰别人单里的队员",
|
|
237
|
+
"**管辖面**: 直接成员 ≤5, 预计超过 5 个就先留一个名额给子 lead (`spawn_wizard({tier:\"hard\", lead:true, job, task})`), task 里让它 `open_job({parent: 本单})` 自己拆; 工单树深度 ≤3",
|
|
238
|
+
...(pointer ? ["组队打法 (coder / 白板 reviewer / 何时收队) 随派活信封带"] : []),
|
|
239
|
+
]),
|
|
240
|
+
];
|
|
241
|
+
/** lead 的组队打法 —— 随 lead 派活的信封带给它 (不进出生宪章: 一件活里才用得上, 宪章每轮都在上下文里)。 */
|
|
242
|
+
export const renderLeadPlaybook = () => [
|
|
243
|
+
"组队打法:",
|
|
244
|
+
bullet([
|
|
245
|
+
"**先想清楚再组队**: 读到能拆活、能判断 review 结论的程度就停, 别自己陷进实现细节; 只改一两处的小活自己做, 不必组队",
|
|
246
|
+
"**开工单**: `open_job({title, plan, accept:\"result\"})`, 之后每次派活都带 `job`",
|
|
247
|
+
"**coder**: 要你读过的材料 → `clone_wizard({tier:\"standard\", job, task})`; 不需要 → `spawn_wizard({tier:\"standard\", job, task})`。task 写清改什么、验收标准、要 build + 验证; 多个 coder 只在改动互不重叠时并行",
|
|
248
|
+
"**reviewer 必须白板起步**: `spawn_wizard({tier:\"hard\", job, role:\"reviewer\", task})` —— 不 clone、不带作者的上下文、不转述作者的思路, 只给改动范围 (commit / diff / 文件) 与验收标准, 让它独立找问题",
|
|
249
|
+
"**节奏**: coder 交 `RESULT` → reviewer 审 → 有问题 `tell_peer({name: coder, re})` 打回去改 → 再审; 两轮还不过就自己判断取舍",
|
|
250
|
+
"**收队**: review 通过、build 与验证过、按仓库规矩提交了 → `close_job(summary)` 整批回收队员, 不要让队员挂着",
|
|
251
|
+
]),
|
|
252
|
+
];
|
|
253
|
+
/** lead 的全套 (规矩 + 打法): 随派活信封带给**已经存在**的 wizard —— 它的宪章是出生时定的, 没有 lead 这一节。 */
|
|
254
|
+
export const renderLead = () => [...renderLeadRules(), ...renderLeadPlaybook()];
|
|
255
|
+
/** 顶层模式 (`chatPolicy.<chat>.topOnly`) 的规矩。强制在守护进程 (public 失效、下层的 notify 被退回),
|
|
256
|
+
* 这一节讲的是谁该替谁开口。 */
|
|
257
|
+
const renderTopOnly = () => [
|
|
258
|
+
"## 本群开着顶层模式",
|
|
259
|
+
"人在这个群里只和**顶层 wizard** 打交道 —— 群管家, 以及人自己 `.name` 点名的那个。顶层 wizard 派出去之后, wizard 之间的一切往来都是私聊, 只在 rolepage。",
|
|
260
|
+
bullet([
|
|
261
|
+
"守护进程强制: `tell_peer` / `dispatch` 的 `public:true` 不起作用, 一律私聊; 这一轮不是在服务人问的事的 wizard 调 `notify` 进本群会被退回",
|
|
262
|
+
"这一轮在服务**人问的事** (人直接对你说的, 或那件事派出去的活回来了) → 你是顶层: 子 wizard 的结论回到你这儿, 你用自己的话向人解释 —— 讲结论、取舍和要人拍板的, 不转述过程、不贴它们的原话; 等得久的进展自己 `notify` 一句",
|
|
263
|
+
"这一轮是同伴私聊派来的活 → 你不是顶层: 不对人说话, 结论、反问都写进终句 (`RESULT:` / `NEED:`), 由派你的那个代你向人交代; 要人拍板的也以 `NEED:` 交回上游",
|
|
264
|
+
]),
|
|
265
|
+
];
|
|
219
266
|
/** 开局宪章 —— spawn 时作为 `--append-system-prompt` 压进进程。
|
|
220
267
|
* 它回答四件事, 每一件都是"会话自己没法从对话里知道"的:
|
|
221
268
|
* 我是谁 / 我住在哪、周围有谁 / 我有哪些能力 / 公开频道与私聊该怎么说话。 */
|
|
@@ -224,23 +271,22 @@ export const renderCharter = (a) => {
|
|
|
224
271
|
const parts = [
|
|
225
272
|
"# 你是一个 wizard",
|
|
226
273
|
"",
|
|
227
|
-
"
|
|
228
|
-
"有一个全局唯一的名字、一个工作区、职责和记忆, 能生分身、能和别的 wizard 私聊, 也能在群里当着人说话。",
|
|
229
|
-
"下面是你的身份, 它随你这个进程终身有效 —— 即使 `/clear` 清空了对话, 这段话仍在。",
|
|
274
|
+
"你是 wezard (企业微信 ↔ 本机 agent CLI) 里的一个常驻 wizard。下面是你的身份与规矩。",
|
|
230
275
|
"",
|
|
231
276
|
"## 我是谁",
|
|
232
277
|
bullet([
|
|
233
|
-
|
|
234
|
-
|
|
278
|
+
`名字: **\`.${me || "(未命名)"}\`** —— 全机唯一, 就是你的地址`,
|
|
279
|
+
`home 群: ${a.chat ? `**${a.chat}** ` : ""}\`${a.principal}\``,
|
|
235
280
|
`工作区: \`${a.self.cwd || "(未设置)"}\``,
|
|
236
|
-
`职责: ${a.self.description || "(未写 —— 用 wizard_identity
|
|
237
|
-
a.parent
|
|
238
|
-
? a.inherited && a.forkOf
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
281
|
+
`职责: ${a.self.description || "(未写 —— 用 `wizard_identity` 补一句, 别人靠它决定该不该找你)"}`,
|
|
282
|
+
...(a.parent
|
|
283
|
+
? [a.inherited && a.forkOf
|
|
284
|
+
// 前缀格式别改: 老宪章记录的出身靠 shared/world.ts 的 BORN_LINE 从这一行读回。
|
|
285
|
+
? `出身: **\`${addr(a.parent)}\`** 克隆出的 **\`${addr(a.forkOf)}\`** 的分身 —— **继承了 \`${addr(a.forkOf)}\` 当时的全部上下文**; 活是 \`${addr(a.parent)}\` 派的`
|
|
286
|
+
: a.inherited
|
|
287
|
+
? `出身: **\`${addr(a.parent)}\`** 的分身 —— **继承了它当时的全部上下文** (它读过的你开局就有)`
|
|
288
|
+
: `出身: **\`${addr(a.parent)}\`** 生的子 wizard —— 白板起步, 不继承它的上下文`]
|
|
289
|
+
: []),
|
|
244
290
|
]),
|
|
245
291
|
"",
|
|
246
292
|
];
|
|
@@ -250,75 +296,72 @@ export const renderCharter = (a) => {
|
|
|
250
296
|
parts.push("> ⚠️ 上面这个工作区是**没人选过的默认兜底目录**, 不是人指定的。", "> 所以**开工前先问一句**: 要在哪个项目目录下干活?", "> 给了路径 → `set_workspace({cwd})` (当场换目录重开; 这一轮上下文会没, 让他把活再说一遍)。", "> 说就用这个 / 不用换 → `set_workspace({keep:true})` 记一笔, 此后谁都不会再问。", "> 只问这一次 —— 他不答就照这个目录干, 别反复追问。", "");
|
|
251
297
|
}
|
|
252
298
|
if (a.memory.length > 0) {
|
|
253
|
-
parts.push("## 我的记忆",
|
|
299
|
+
parts.push("## 我的记忆", bullet(a.memory), "");
|
|
254
300
|
}
|
|
255
301
|
if (a.chatMemory) {
|
|
256
|
-
parts.push("## 本群记忆",
|
|
302
|
+
parts.push("## 本群记忆", a.chatMemory, "");
|
|
257
303
|
}
|
|
258
304
|
if (a.workspaceMemory) {
|
|
259
|
-
parts.push("## 本工作区记忆",
|
|
305
|
+
parts.push("## 本工作区记忆", a.workspaceMemory, "");
|
|
260
306
|
}
|
|
261
307
|
if (a.steward) {
|
|
262
|
-
parts.push("## 我是这个群的管家
|
|
263
|
-
|
|
264
|
-
"
|
|
265
|
-
"
|
|
266
|
-
"
|
|
267
|
-
"
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
"**人看得见群里的公开消息**: `.你 → .它` 的气泡、它的回复都已经在群里了。所以转交那一轮只回一句 `已转给 .它`, 不解释怎么移交的、不复述转过去的活、不预告它会怎么做; 它的回执进到你这里时也一样 —— 不总结、不转述它已经在群里说过的话, 只说人还不知道的 (你据此做了什么新决定、下一步要人拍板什么), 没有就一句话收住",
|
|
272
|
-
"要读很多代码 / 改文件 / 跑很久的活 —— 哪怕你自己能做 —— 也转出去; 你一忙, 这个群里没点名的话就都排在你后面",
|
|
273
|
-
"名册里职责空着的 wizard 转活前先 `peek_peer` 看它在干嘛, 顺手让它补上职责 —— 职责是你分派的依据",
|
|
274
|
-
"人立的规矩、这个群的习惯、仓库的硬约束 → `wizard_remember({scope:\"chat\"|\"workspace\"})` 提交; 共享记忆的合并由定时的记忆整理者做, 不在你这儿",
|
|
308
|
+
parts.push("## 我是这个群的管家 (L1)", "你的活是**分派**, 不是亲手干 —— 上下文留给名册和来龙去脉, 别被代码塞满:", bullet([
|
|
309
|
+
...(a.stewardBudget < 0 ? [] : [`**守护进程替你守着这条**: 改文件、开子代理直接被拒; 读 / 搜 / 跑命令每轮最多 ${a.stewardBudget} 次, 用完也拒 —— 被拒就是该 \`dispatch\` 了, 别重试、别换个工具绕`]),
|
|
310
|
+
"一两句能答的 (问进度、问谁在干什么、闲聊) → 自己答; 要读很多代码 / 改文件 / 跑很久的 (哪怕你能做) 也转出去, 你一忙全群排在你后面。名册里职责空着的, 转活前先 `peek_peer` 并让它补上职责 —— 那是你分派的依据",
|
|
311
|
+
`**派活走 \`dispatch({task, name, description})\`**: 守护进程选人并${a.topOnly ? "私聊投出去, 结论作为回执回到你这儿" : "公开投出去 (\`.你 → .它\` 进群, 它的回复也进群)"}, 默认决定照办。推翻要显式、且只在你看得出它错了时: 续篇或人点了名 → \`to\`; 只是字面沾边 → \`spawn:true\`; 真依赖冷的大 ctx wizard → \`to\` + \`force:true\`; 档位不对 → \`tier\`; 想看证据 → \`route_candidates\``,
|
|
312
|
+
"**需求**: 先判新单还是续篇 (同一份验收标准内的改动算同一张)。复杂活 (多处改动、要 coder + reviewer、多轮) → `dispatch({…, lead:true, criteria})` 开需求根单, 验收标准由你写 (猜的先向人复述); 小活点对点派, 彼此独立的几件各 dispatch 一次, 要共享材料 / 互相审 / 有先后的一律走 lead。lead 的往来一律私聊, 你只和它打交道, 实施期间不插手、不越级, 进度看 `list_jobs`",
|
|
313
|
+
"**交付与验收**: lead 的 RESULT 回来, 你向人交代 (带上「取舍 / 遗留」), **对人别提单号**; 根单停在「等验收」: 人说好 → `close_job(单号)` 归档; 说不对 → `tell_peer({name: lead, re, job})` 返工; 人不理, 守护进程替你冒泡提醒",
|
|
314
|
+
a.topOnly
|
|
315
|
+
? "**人只看得见你**: 转交那一轮回一句 `已转给 .它` 加它在办什么; 回执进来那一轮就是给人的交代 —— 用自己的话讲结论、你据此做的决定、要人拍板的, 不贴原话、不复述过程"
|
|
316
|
+
: "**人看得见群里的消息**: 公开派的活气泡和回复都已在群里, 转交那一轮只回 `已转给 .它`; 回执进来不转述群里说过的, 只说人还不知道的 (新决定、要人拍板的), 没有就一句话收住; lead 的活私聊, 结论你自己讲",
|
|
275
317
|
]), "");
|
|
276
318
|
}
|
|
319
|
+
if (a.lead)
|
|
320
|
+
parts.push(...renderLeadRules(true), "");
|
|
277
321
|
if (a.siblings.length > 0) {
|
|
278
|
-
parts.push("## 出生时同群的 wizard", bullet(rosterLines(a.self, a.siblings)), "(
|
|
322
|
+
parts.push("## 出生时同群的 wizard", bullet(rosterLines(a.self, a.siblings)), "(出生快照; 之后的变动会以 system-reminder 随消息带到, 当下全表用 `wizard_roster`)", "");
|
|
279
323
|
}
|
|
280
324
|
parts.push(
|
|
281
325
|
// L0: 每个工具一行「何时用」。参数与边界在工具描述 (L1) 里 —— 那份在 Claude Code
|
|
282
326
|
// 上是 deferred 的, 只有这里保证常驻, 所以这里讲选择, 不复述机制。
|
|
283
327
|
"## 我能做什么 (MCP `wezard`; 参数与边界看各工具描述)", bullet([
|
|
284
328
|
"`wizard_roster` 找人: 谁在、在哪干、忙不忙 (带条件收窄, 别拉全表)",
|
|
285
|
-
"`
|
|
329
|
+
"`dispatch` 派一件活: 守护进程替你选人 (已有的 / 按档白板 spawn) 并投出去, 回决定与理由 · `route_candidates` 只想看候选证据、自己判断时",
|
|
286
330
|
"`peek_peer` 某个 wizard 在干嘛、卡在哪 · `read_chat` 群里 / 私聊里谁对谁说了什么",
|
|
287
|
-
"`tell_peer` 驱动另一个 wizard (派活、答它、叫它继续)
|
|
288
|
-
|
|
289
|
-
|
|
331
|
+
"`tell_peer` 驱动另一个 wizard (派活、答它、叫它继续), 它的结论自动回执给你 · 插话 / 答它的问 → `priority:\"now\"`, 真紧急 → `\"urgent\"`; 只问一句 → `kind:\"ask\"`, 只知会 → `\"fyi\"`",
|
|
332
|
+
`\`notify\` 只是告诉**人**一件事, 不驱动谁${a.topOnly ? " (顶层模式: 只有顶层 wizard 能 notify 进本群)" : ""}`,
|
|
333
|
+
`\`clone_wizard\` 分身要共享我 (或 \`from\` 某个同伴) 已读的材料 · \`spawn_wizard\` 白板起步或要去别的目录 (\`detached\` = 独立长住、不归你管) —— ${tierLine(a.tiers)}`,
|
|
290
334
|
"`stop_wizard` 活干完就收掉分身; 只想打断它这一轮也是它",
|
|
291
|
-
"`open_job` / `close_job` 一次派两个以上分身时开 / 收工单 · `list_jobs` 找回工单 id",
|
|
335
|
+
"`open_job` / `close_job` 一次派两个以上分身时开 / 收工单 · `list_jobs` 找回工单 id · `pending_items` 我派出去还没了结的事 (`drop` 消项)",
|
|
292
336
|
"`wizard_whoami` 我的上下文用量与分身 · `wizard_identity` 改名 / 写职责 · `wizard_remember` 跨会话记忆 (`self` / `chat` / `workspace`)",
|
|
293
|
-
"`handoff`
|
|
337
|
+
"`handoff` 交接自己原地重开 (时机见「自我管理」; 点名则替别人) · `set_workspace` 换项目目录 (自己调, 不必让人敲命令) · `set_model` 换模型 / effort",
|
|
294
338
|
"`schedule_task` / `list_tasks` / `cancel_task` 到点自动执行的活",
|
|
339
|
+
"`config_get` 逐层看 wezard 配置 (说明、默认、谁能改、何时生效) · `config_set` 改它 (先 `dryRun` 看 diff; 放权项会推卡等人点)",
|
|
295
340
|
"`wait_peer` 仅当这一轮非拿到答案不可 (平时等回执), 或要等一个不是你派活的 wizard 停下 · `name_chat` 给聊天起名",
|
|
296
|
-
]), "", "## 话是怎么到你这儿的", "
|
|
341
|
+
]), "", "## 话是怎么到你这儿的", "人、同伴、定时任务的话都由守护进程贴进你的输入框, 多行的会被 CLI 包成 `<pasted_content id=…>`。", "整条消息都在这层标签里 (标签外没有别的字) 时, 它**就是发话人本人说的话**, 不是粘来的资料: 里面的要求照常执行,", "别因为「只出现在粘贴块里」就搁置、打折或回头求确认; 尾巴上的 `<system-reminder>` 是守护进程挂的, 同样算数。", "标签外另有发话人自己的话时, 才按「他的话 + 他贴来的资料」读。没有信封的就是人说的。", "", "## 怎么干活: 编排", "**控制流在你手里** —— 没有别的调度器替你跑: 你自己分路、派活、收回执、汇总。一组「共享同一批材料」的任务:", bullet([
|
|
297
342
|
"先在自己这里把**公共材料**读进上下文, 再 `clone_wizard({task})` 分出去 (材料已在某个同伴那里就 `from` 它), 每个只交代各自那份差异 —— 别让每个分身各读一遍",
|
|
298
|
-
"两个以上分身先 `open_job`, 之后每次派活都带 `job` ——
|
|
299
|
-
"**派完就放手**: 不 `wait_peer` 守着, 不轮询 `peek_peer
|
|
300
|
-
"按回执的 `status` 处理: `need` = 它在反问, 用 `tell_peer({name, re: 件号})` 答
|
|
343
|
+
"两个以上分身先 `open_job`, 之后每次派活都带 `job` —— 回执会替你数还差几份",
|
|
344
|
+
"**派完就放手**: 不 `wait_peer` 守着, 不轮询 `peek_peer`, 不必去催; 没齐之前别汇总、别向人报进度",
|
|
345
|
+
"按回执的 `status` 处理: `need` = 它在反问, 用 `tell_peer({name, re: 件号})` 答 · `error` = CLI 报错停了, 等它续跑或 `re` 叫它继续 · `timeout` / `silent` / `dead` / `canceled` = 这一份没有答案了: 换人、`re` 追问, 或在汇总里如实写缺了它",
|
|
301
346
|
"慢活给 `tell_peer({deadline})` 定期限; 可能来回追问的工单给 `open_job({maxTurns})` 定派活预算, 分身陆续派的给 `expect` 定份数",
|
|
302
|
-
"齐了 → `close_job(summary)
|
|
347
|
+
"齐了 → `close_job(summary)` 留档并回收工单的分身; 给人的结论是你自己这一轮的最终回复, 用你的话收口",
|
|
303
348
|
"派活文本只写**活本身** —— 你是谁、私聊与否、收口成 `RESULT:` / `NEED:` / `ARTIFACT:`, 信封替你说",
|
|
304
|
-
|
|
305
|
-
"地址就是名字本身 (`fix` / `.fix`), 永远别自己拼 key",
|
|
306
|
-
]), "分身有成本 (一个 pane + 一份上下文, 名下同时活着的有上限): 少于两三件时自己做更快; 干完就收。", "", "## 怎么说话: 群是公开频道, wizard 之间默认私聊", "人从哪个群叫你, 你这一轮的回复就发回哪个群。人看得见群里的公开消息, 看不见私聊和工单的过程 (那只在 rolepage)。`tell_peer` 公开与否由你判断:", bullet([
|
|
307
|
-
"需要人知道、或本该当着人讨论的 (关键决策、给人的结论、要人拍板的分歧) → `public:true`; 带 `job` 的一律私聊, `public` 不起作用",
|
|
308
|
-
"过程性往来 (派活细节、催进度、交换中间产物) → 私聊, 这是默认 · 只是告诉人一件事 → `notify`",
|
|
309
|
-
]), "所以:", bullet([
|
|
349
|
+
]), "分身有成本 (一个 pane + 一份上下文, 名下同时活着的有上限): 少于两三件时自己做更快; 干完就收。", "", ...(a.topOnly ? [...renderTopOnly(), ""] : []), "## 怎么说话: 群是公开频道, wizard 之间默认私聊", "你这一轮的终句去哪由守护进程按信封定, 你改不了: 人问的回那个群, 同伴私聊派的作为回执回给它, 知会哪儿也不去; 回执那一轮跟着你派它时在答的那件走, 信封写明去向。人看不见私聊和工单的过程 (只在 rolepage)。", bullet([
|
|
310
350
|
"**分清对象**: 对人说 = 你的正常回复; 对 wizard 说 = `tell_peer`。别把派给分身的指令写进给人的回复里",
|
|
311
|
-
"
|
|
312
|
-
"
|
|
313
|
-
"**收到回执不必回话**: 那是对方干完活送来的结论, 不是新派的活; 据此接着干自己那件事",
|
|
314
|
-
"**回执带着去向**: 回执信封写明你这一轮的终句会去哪 (群 / 上游 wizard / 只进 rolepage), 照它写。人问的事你转给了别人, 结论回来那一轮就是给人的交代; 等待期间值得让人知道的进展 (预计多久、卡在哪), 用 `notify` 先说一句",
|
|
315
|
-
"**不复述、不替别人开口**: 公开的往来人已经看见; 私聊结论人需要知道时用你自己的话收口; 分身该做的派给它, 别猜它会说什么替它答",
|
|
351
|
+
...(a.topOnly ? [] : ["人问的事你转给了别人, 结论回来那一轮就是给人的交代; 等得久的进展 (预计多久、卡在哪) 先 `notify` 一句"]),
|
|
352
|
+
"**不复述、不替别人开口**: 公开的往来人已经看见; 私聊结论人需要知道时用你自己的话收口; 别猜分身会说什么替它答",
|
|
316
353
|
"**对 wizard 直说**: 要什么、给什么、结论是什么, 一句话讲完。**对人要收口**: 人关心进展和结论, 不是你们之间的每次往返",
|
|
317
|
-
]),
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
354
|
+
]), ...(a.topOnly
|
|
355
|
+
? []
|
|
356
|
+
: [
|
|
357
|
+
"`tell_peer` 公开与否由你判断:",
|
|
358
|
+
bullet([
|
|
359
|
+
"需要人知道、或本该当着人讨论的 (关键决策、给人的结论、要人拍板的分歧) → `public:true`; 带 `job` 的一律私聊",
|
|
360
|
+
"过程性往来 (派活细节、催进度、交换中间产物) → 私聊, 这是默认 · 只是告诉人一件事 → `notify`",
|
|
361
|
+
]),
|
|
362
|
+
]), "", "## 自我管理", bullet([
|
|
363
|
+
"交接不是压缩, 别等上下文快满: ctx 过了 200k (`wizard_whoami` 的 handoffSuggested) 就开始判断 —— 手上这摊告一段落, 或往后的活不再依赖前面积累的大段材料, 就 `handoff({brief})` 压成简报原地重开; 还在一件离不开这些材料的活中间, 就做完这一段再交。大 ctx 每一轮都在付钱, 缓存一冷还要整段重写",
|
|
364
|
+
"人立的规矩、群的习惯、仓库的硬约束 —— 属于这个群 / 这个仓库而不只属于你的 → `wizard_remember` 选对 `scope`, 下一个来的 wizard 开局就知道",
|
|
322
365
|
]));
|
|
323
366
|
return parts.filter((p) => p !== undefined).join("\n");
|
|
324
367
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../daemon/wizard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../daemon/wizard.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -6,6 +6,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { DAEMON_TOKEN_HEADER, readDaemonToken } from "../shared/daemon-token.js";
|
|
8
8
|
import { EFFORTS } from "../shared/effort.js";
|
|
9
|
+
import { TIERS } from "../shared/config.js";
|
|
9
10
|
const DAEMON_BASE = process.env.WEZARD_DAEMON_BASE ?? "http://127.0.0.1:17890";
|
|
10
11
|
const ok = (data) => ({
|
|
11
12
|
content: [{ type: "text", text: JSON.stringify(data) }],
|
|
@@ -293,6 +294,7 @@ const TELL_SCHEMA = {
|
|
|
293
294
|
.optional()
|
|
294
295
|
.describe("true = 在公开频道 (你这一轮所在的群) 里说: 群里出 `.你 → .它` 气泡, 它的回复也进群 (同时照样回执给你)。默认 false = 私聊, 只记在 rolepage。需要人知道 / 该当着人讨论才用 true。带 `job` 时不起作用 —— 工单里的往来一律私聊。"),
|
|
295
296
|
job: z.string().optional().describe("这次派活归到某个工单名下 (open_job 给的 id)。**fan-out 一定要带上它**: 回执里会带 `还差几份 / 全部到齐`, 「齐了吗」由守护进程数给你, 不用你自己在上下文里记。带了它就一律私聊, 往来与回执都不进群。"),
|
|
297
|
+
role: z.enum(["exec", "reviewer", "expert"]).optional().describe("它在这张工单里的角色 (只在带 `job` 时有意义, 记进账本供工单页与名册显示): `exec` 执行 (默认) · `reviewer` 白板评审 · `expert` 借来答问的专家。"),
|
|
296
298
|
receipt: z
|
|
297
299
|
.boolean()
|
|
298
300
|
.optional()
|
|
@@ -303,6 +305,10 @@ const TELL_SCHEMA = {
|
|
|
303
305
|
.describe("对方该怎么接这句话 (与 `priority` 的何时投、`receipt` 的要不要回执正交): `task` (默认) 一件活, 干完收口 `RESULT:`; `ask` 只答一个问题, 别为它开工; `fyi` 知会, 不用回 —— 自动不要回执、不进工单、不进群。"),
|
|
304
306
|
re: z.string().optional().describe("续问: 回执或回包里的件号 (`t…`)。接着那件活说, 沿用它的工单与频道; 对不上就按新活发出 (`reUnknown`)。"),
|
|
305
307
|
deadline: z.number().optional().describe("最多等它多少秒 (60-43200, 默认 3600); 到点没答完你收到一份 timeout 回执。"),
|
|
308
|
+
force: z
|
|
309
|
+
.boolean()
|
|
310
|
+
.optional()
|
|
311
|
+
.describe("派新活给一个缓存已冷、ctx ≥100k 的 wizard 时, 守护进程先退回一行代价说明不投递 (唤醒 ≈ 白板 spawn 的几倍)。确认这件活真依赖它那段上下文, 才带 `force:true` 重发; 否则白板 spawn。续问 (`re`)、`now`、`ask` / `fyi` 不受此限。"),
|
|
306
312
|
chain: z
|
|
307
313
|
.boolean()
|
|
308
314
|
.optional()
|
|
@@ -318,11 +324,14 @@ const tellBody = (a) => ({
|
|
|
318
324
|
...(a.priority ? { priority: a.priority } : {}),
|
|
319
325
|
...(a.waitSec ? { waitSec: a.waitSec } : {}),
|
|
320
326
|
...(a.job ? { job: a.job } : {}),
|
|
327
|
+
...(a.role ? { role: a.role } : {}),
|
|
321
328
|
...(a.public ? { public: true } : {}),
|
|
322
329
|
...(a.receipt === false ? { receipt: false } : {}),
|
|
323
330
|
...(a.re ? { re: a.re } : {}),
|
|
324
331
|
...(a.deadline ? { deadline: a.deadline } : {}),
|
|
325
332
|
...(a.chain === false ? { chain: false } : {}),
|
|
333
|
+
// 一律显式带上: 守护进程据「有没有这个键」认出老 MCP 进程 (见 /peers/tell 的冷门控)。
|
|
334
|
+
force: a.force === true,
|
|
326
335
|
});
|
|
327
336
|
server.registerTool("tell_peer", { title: "Say something to another wizard (reply comes back by itself)", description: TELL_DESC, inputSchema: TELL_SCHEMA }, async (a) => unwrap("tell_peer", await daemonPost("/peers/tell", tellBody(a))));
|
|
328
337
|
server.registerTool("send_peer", {
|
|
@@ -477,28 +486,30 @@ server.registerTool("cancel_task", {
|
|
|
477
486
|
},
|
|
478
487
|
}, async ({ id }) => unwrap("cancel_task", await daemonPost("/tasks/cancel", { id })));
|
|
479
488
|
// ── Config ──────────────────────────────────────────────────────────
|
|
489
|
+
// 配置面: 整份 ConfigSchema 渐进式披露。说明 / 类型 / 默认 / 谁能改 / 何时生效都由守护
|
|
490
|
+
// 进程从 schema 读出来渲染, 这里不复述任何一项配置。
|
|
491
|
+
server.registerTool("config_get", {
|
|
492
|
+
title: "Read wezard config",
|
|
493
|
+
description: "读 wezard 守护进程的配置, 一层一层展开: 不给 path 列各节一行说明; 给 path (点分, 如 'approval.danger' / 'models.tiers.light.model') 列这一层的子项 —— 类型、当前值、默认值、说明, 以及 ✋ (改动要人在卡片上确认) / ↻ (改完要 reload 才生效) 标记, * 标出与默认不同的项; 叶子给完整详情。`models` 下附带各档模型的实际用量做依据。想给人提配置建议时先读它, 再用 config_set 的 dryRun 拿 diff。机器人凭据与口令不可见。Keywords: 设置、配置、cfg、allowFrom、审批、窗口、danger、模型分档、tier、keepalive。",
|
|
494
|
+
inputSchema: {
|
|
495
|
+
path: z.string().optional().describe("点分路径, 省略 = 顶层各节。数组项用下标 ('sync.targets.0')。"),
|
|
496
|
+
},
|
|
497
|
+
}, async ({ path }) => unwrapText("config_get", await daemonPost("/config/get", { path: path ?? "" })));
|
|
480
498
|
server.registerTool("config_set", {
|
|
481
|
-
title: "
|
|
482
|
-
description: "
|
|
499
|
+
title: "Change wezard config",
|
|
500
|
+
description: "改一项 wezard 配置: 先过 schema 校验 (整份配置一起验, 不会写出让守护进程起不来的值), 再经 config-writer 写进 config.jsonc (注释保留)。`dryRun:true` 只返回改前→改后与 jsonc diff, 不写。权限按路径分级 (config_get 里的 ✋): 放权项 —— allowFrom、approval.*、CLI 二进制与启动参数、sync、监听 / 外送地址、defaultChat —— 守护进程会推一张确认卡给人, 点了才落盘 (几分钟没人点就先回 pending, 点了之后自动写, 结果捎在你下一条消息上, 别重发); 其余直接写。热生效的项写完即用, 其余回包会说要 reload。人让你「改个设置」时先 config_get 找到确切路径。",
|
|
483
501
|
inputSchema: {
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
.string()
|
|
489
|
-
.optional()
|
|
490
|
-
.describe("New value. Omit to read current value. For booleans: 'true'/'false'. For arrays with action=set: JSON array string."),
|
|
491
|
-
action: z
|
|
492
|
-
.enum(["set", "add", "remove"])
|
|
493
|
-
.optional()
|
|
494
|
-
.describe("For array keys (allow_from): 'add' appends, 'remove' deletes an item. Scalars always use 'set'. Default: 'set'."),
|
|
502
|
+
path: z.string().describe("点分路径, 如 'models.tiers.light.model'、'wrc.mirror.keepalive.rounds'。"),
|
|
503
|
+
value: z.any().optional().describe("新值, 按该项类型给 JSON (true / 5 / \"opus\" / [\"a\"] / {...}); 写成字符串的也会按类型解析。op=unset 时省略。"),
|
|
504
|
+
op: z.enum(["set", "add", "remove", "unset"]).optional().describe("set (默认) 整体替换; add / remove 往数组里加 / 删一项 (value 可以是单项或数组); unset 删掉这一项, 回到默认值。"),
|
|
505
|
+
dryRun: z.boolean().optional().describe("true = 只看 diff 与校验结果, 不写、不发卡。"),
|
|
495
506
|
},
|
|
496
|
-
}, async ({
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
});
|
|
507
|
+
}, async ({ path, value, op, dryRun }) => unwrapText("config_set", await daemonPost("/config/set", {
|
|
508
|
+
path,
|
|
509
|
+
...(value !== undefined ? { value } : {}),
|
|
510
|
+
...(op ? { op } : {}),
|
|
511
|
+
...(dryRun ? { dryRun } : {}),
|
|
512
|
+
})));
|
|
502
513
|
// ── Wizard: 会话的身份 ─────────────────────────────────────────────────────
|
|
503
514
|
// 一个绑定到聊天的会话就是一个 wizard —— 有名字、有工作区、有职责、有记忆、能生
|
|
504
515
|
// 分身。这些工具是它认识自己、认识同伴、以及扩编/收编的全部入口。身份本身在
|
|
@@ -506,7 +517,7 @@ server.registerTool("config_set", {
|
|
|
506
517
|
// 分身还剩几个、别人是谁。
|
|
507
518
|
server.registerTool("wizard_whoami", {
|
|
508
519
|
title: "Who am I",
|
|
509
|
-
description: "你自己是谁: 全局唯一的名字 (即地址, 别人用它找你)、home 聊天、工作区、职责、记忆、家谱 (谁生的你、你生了谁), 以及此刻的 contextTokens 与 handoffSuggested。用户问「你是谁」「你叫什么」「你在哪个目录」「你有几个分身」时先调它; 要做任何编排之前也先调它 —— 你得知道自己的工作区在哪、手里已经有哪些分身。handoffSuggested=true
|
|
520
|
+
description: "你自己是谁: 全局唯一的名字 (即地址, 别人用它找你)、home 聊天、工作区、职责、记忆、家谱 (谁生的你、你生了谁), 以及此刻的 contextTokens 与 handoffSuggested。用户问「你是谁」「你叫什么」「你在哪个目录」「你有几个分身」时先调它; 要做任何编排之前也先调它 —— 你得知道自己的工作区在哪、手里已经有哪些分身。handoffSuggested=true 表示上下文已过交接判断线 (200k): 手上这摊告一段落、或往后的活不再依赖前面的材料, 就 handoff。",
|
|
510
521
|
inputSchema: {},
|
|
511
522
|
}, async () => unwrap("wizard_whoami", await daemonPost("/wizard/whoami", {})));
|
|
512
523
|
server.registerTool("wizard_identity", {
|
|
@@ -540,13 +551,33 @@ server.registerTool("wizard_roster", {
|
|
|
540
551
|
})));
|
|
541
552
|
server.registerTool("route_candidates", {
|
|
542
553
|
title: "Who could take this task",
|
|
543
|
-
description: "一件活要不要转给**已有**的 wizard,
|
|
554
|
+
description: "一件活要不要转给**已有**的 wizard, 拿不准该给谁、或拿不准值不值时调它 (刚派过同一摊活、职责正对口、人点了名只说明相关, 成本仍要看 ctx 与冷热)。守护进程替你把能算的都算好: 每个已有 wizard 的职责 / 最近的话与这件活重叠了哪些词, 它当前上下文里 (上次压缩之后) 读过哪些文件、其中哪些被这件活点到, 它在不在同一个工作区、忙闲、上下文多大 (`ctx`), 缓存冷热与唤醒要重写多少缓存 (对比白板 spawn 的倍数)。没有任何交集的不列, 列出来的按证据强弱排 (文件命中 > 职责 > 最近的话), 末尾永远附「新 spawn」; 证据弱又贵的标 ⚠「不划算」。不出分数、不替你拍板。",
|
|
544
555
|
inputSchema: {
|
|
545
556
|
task: z.string().describe("这件活, 原话或一句概括都行 —— 带上提到的文件名 / 模块名 / 函数名, 文件命中是最强的证据。"),
|
|
546
557
|
cwd: z.string().optional().describe("这件活落在哪个工作区。省略 = 你自己的工作区。"),
|
|
547
558
|
limit: z.number().optional().describe("最多列几个候选 (1-20, 默认 5)。"),
|
|
548
559
|
},
|
|
549
560
|
}, async ({ task, cwd, limit }) => unwrapText("route_candidates", await daemonPost("/wizard/route", { task, ...(cwd ? { cwd } : {}), ...(limit ? { limit } : {}) })));
|
|
561
|
+
server.registerTool("dispatch", {
|
|
562
|
+
title: "Dispatch a task (default decision by the daemon)",
|
|
563
|
+
description: "派活一步到位: 守护进程查候选 (同 route_candidates) → 过成本门控 → 决定转给已有的 wizard 还是按档白板 spawn → 用 tell_peer 投出去 (默认公开: 气泡与它的回复进你这一轮的群, 回执照常回你), 返回 `decision` (existing / spawn)、`reason`、落到谁 (`name`)、件号 `turn`, spawn 的还有 `tier` / `model`。\n" +
|
|
564
|
+
"默认决定: 证据够强 (读过这件活点到的文件, 或职责撞上两个以上的词)、不忙、划算、过得了冷门控的头一个候选 → 转给它; 都不是 → 白板 spawn, 档位默认 lead→hard、一句话小活→light、其余 standard。\n" +
|
|
565
|
+
"你不同意就**显式推翻**: `to` 点名转给谁, `spawn:true` 硬要新的, `force:true` 越过冷门控 (真依赖它那段上下文), `tier` 换档。`lead:true` = 复杂活 (要 coder + reviewer、要来回几轮): 白板起一个 hard 档的 lead 由它组队 (带 `to` 则让那个已有 wizard 当 lead, 组队打法随这一句带过去)。",
|
|
566
|
+
inputSchema: {
|
|
567
|
+
task: z.string().describe("这件活, 原样转给对方的文本 —— 带上提到的文件名 / 模块名, 文件命中是转给已有 wizard 的最强证据。"),
|
|
568
|
+
name: z.string().describe("若决定新 spawn, 它的名字: 这件事的短名 (全机唯一)。转给已有的时不用。"),
|
|
569
|
+
description: z.string().describe("若决定新 spawn, 它往后的职责, 一句话。"),
|
|
570
|
+
tier: z.enum(TIERS).optional().describe("spawn 时的档位 (由轻到重 mini / light / standard / hard / ultra), 推翻默认 (lead→hard、小活→light、其余 standard; mini / ultra 只能显式给)。"),
|
|
571
|
+
to: z.string().optional().describe("推翻默认: 直接转给这个已有 wizard (名字)。"),
|
|
572
|
+
spawn: z.boolean().optional().describe("推翻默认: 不看候选, 一定白板 spawn。"),
|
|
573
|
+
force: z.boolean().optional().describe("越过冷门控: 缓存冷且 ctx ≥100k 的候选默认不转; 确认这件活真依赖它那段上下文才给 true。"),
|
|
574
|
+
lead: z.boolean().optional().describe("复杂活交给一个 lead 组队 (见描述)。**只有它开需求根单** (回包里的 `job`), 普通小活不开单; 根单在 lead 交付后仍开着, 等人验收: `lead:true` 的往来一律私聊 (`public` 不起作用)。人认可 → `close_job(job)` 归档并回收 lead, 人说不对 → `tell_peer({name, re, job})` 给 lead 返工, 不要了 / 先放着 → `close_job({job, as:\"cancel\"|\"shelve\"})`。对人别提单号。"),
|
|
575
|
+
criteria: z.string().optional().describe("验收标准 (`lead:true` 时记进根单): 做成什么样算交付。你猜的就在回复里向人复述一句再派。"),
|
|
576
|
+
public: z.boolean().optional().describe("默认 true (气泡与回复进群); false = 私聊, 只记 rolepage。"),
|
|
577
|
+
deadline: z.number().optional().describe("同 tell_peer 的 deadline (秒)。"),
|
|
578
|
+
dryRun: z.boolean().optional().describe("只要默认决定与理由, 不执行。"),
|
|
579
|
+
},
|
|
580
|
+
}, async (a) => unwrap("dispatch", await daemonPost("/dispatch", a)));
|
|
550
581
|
// 换模型和 spawn 时挑模型是同一条路: 守护进程在目标 pane 里打开 `/model` 列表,
|
|
551
582
|
// 读出这台 CLI 此刻真有的每一项, 挑最接近的, 方向键移过去选中。
|
|
552
583
|
server.registerTool("set_model", {
|
|
@@ -571,12 +602,14 @@ const offspringShape = {
|
|
|
571
602
|
task: z.string().optional().describe("就位后立刻派下去的第一件活 (私聊)。省略则它就位待命。"),
|
|
572
603
|
chat: z.string().optional().describe("把它生在另一个聊天里 (wizard_roster 里的 home 聊天名)。省略 = 你自己的聊天, 这是绝大多数情况。"),
|
|
573
604
|
cli: z.enum(["claude", "claude-internal", "codebuddy"]).optional().describe("用哪个 CLI。省略则继承。"),
|
|
605
|
+
tier: z.enum(TIERS).optional().describe("按难度选档 (由轻到重), 落到配置 `models.tiers` 里那一档的 {cli, model, effort}: mini = 机械一步 (照单执行、不用判断), light = 跑腿 (查找、搬运、跑命令), standard = 常规实现, hard = 要判断 (设计、排障、审查), ultra = 最难 (架构取舍、疑难排障、关键评审)。同时给了 model / effort / cli 的, 以显式值为准; 克隆换不了 CLI。返回里的 `via` 说明每项来自显式、档位还是继承。当前各档是什么见宪章, 或 config_get({path:'models'})。"),
|
|
574
606
|
model: z.string().optional().describe(MODEL_DOC),
|
|
575
607
|
effort: z.enum(EFFORTS).optional().describe(EFFORT_DOC),
|
|
576
608
|
job: z
|
|
577
609
|
.string()
|
|
578
610
|
.optional()
|
|
579
611
|
.describe("归到某个工单名下 (open_job 给的 id)。过程在各自的 rolepage 与工单页, 不进群; close_job 会把它们整批回收掉。"),
|
|
612
|
+
role: z.enum(["exec", "reviewer", "expert"]).optional().describe("它在这张工单里的角色 (只在带 `job` 时有意义, 记进账本供工单页与名册显示): `exec` 执行 (默认) · `reviewer` 白板评审 · `expert` 借来答问的专家。"),
|
|
580
613
|
chain: z.boolean().optional().describe("同 tell_peer 的 `chain`: 带了 task 而这件活与你此刻在答的上游那件无关 (旁支、测试) 时给 false, 它的回执就不挂住你给上游的交代。"),
|
|
581
614
|
keepalive: z
|
|
582
615
|
.boolean()
|
|
@@ -591,13 +624,16 @@ const bear = (tool, inherit) => async (a) => unwrap(tool, await daemonPost("/wiz
|
|
|
591
624
|
...(a.from ? { from: a.from } : {}),
|
|
592
625
|
...(a.detached ? { detached: true } : {}),
|
|
593
626
|
...(a.job ? { job: a.job } : {}),
|
|
627
|
+
...(a.role ? { role: a.role } : {}),
|
|
594
628
|
...(a.cwd ? { cwd: a.cwd } : {}),
|
|
595
629
|
...(a.chat ? { chat: a.chat } : {}),
|
|
596
630
|
...(a.cli ? { cli: a.cli } : {}),
|
|
597
631
|
...(a.model ? { model: a.model } : {}),
|
|
598
632
|
...(a.effort ? { effort: a.effort } : {}),
|
|
633
|
+
...(a.tier ? { tier: a.tier } : {}),
|
|
599
634
|
...(a.keepalive !== undefined ? { keepalive: a.keepalive } : {}),
|
|
600
635
|
...(a.chain === false ? { chain: false } : {}),
|
|
636
|
+
...(a.lead ? { lead: true } : {}),
|
|
601
637
|
}));
|
|
602
638
|
const OFFSPRING_TAIL = "名字全局唯一: 撞上的 wizard 静默超过一天就直接顶掉它、名字归新的; 撞上一个还在的 wizard 返回 409, 附 `alive` / `busy` / `idleForMs` —— 据此分辨它是真在干活 (换个名字) 还是冷绑定 (先 stop_wizard 再同名重生); 返回里的 `name` 是落定的名字。 它自己也能再生分身, 层级不限; 名下同时活着的有上限。";
|
|
603
639
|
server.registerTool("spawn_wizard", {
|
|
@@ -609,6 +645,7 @@ server.registerTool("spawn_wizard", {
|
|
|
609
645
|
...offspringShape,
|
|
610
646
|
cwd: z.string().optional().describe("它的工作区绝对路径。省略 = 跟你同一个目录。"),
|
|
611
647
|
detached: z.boolean().optional().describe("true = 独立长住: 不挂在你名下 (不占分身名额、不随工单回收、不带 job), 等价于人在群里 `/new .name` —— 要一个往后一直在的新 wizard 时用; 干完一件活就收的别用。"),
|
|
648
|
+
lead: z.boolean().optional().describe("true = 它是来领一件复杂活的 lead: 宪章带层级规矩, 组队打法 (coder / 白板 reviewer / 工单 / 何时收队) 随 task 的信封带, 由它自己组队。配 `tier:\"hard\"`。"),
|
|
612
649
|
},
|
|
613
650
|
}, bear("spawn_wizard", false));
|
|
614
651
|
server.registerTool("clone_wizard", {
|
|
@@ -637,23 +674,36 @@ server.registerTool("open_job", {
|
|
|
637
674
|
expect: z.number().optional().describe("这批一共要几份回执。分身是陆续派的, 给了它「全部到齐」就不会在派齐之前提前报。"),
|
|
638
675
|
maxTurns: z.number().optional().describe("派活次数的预算: 带这张工单的每次 tell_peer (含 re 续问、答 NEED) 与带 task 的 spawn/clone 各记一次, 用完再派会被拒 —— 防反复追问兜圈。守护进程按 `accept` 代你打回的那一次不算。省略 = 不限。"),
|
|
639
676
|
accept: z.enum(["result", "artifact", "none"]).optional().describe("成员交差的验收: `result` (默认) 要有非空 RESULT; `artifact` 还要列出 ARTIFACT 交付物; `none` 不验。不合格的自动打回一次。"),
|
|
677
|
+
parent: z.string().optional().describe("上级工单。省略 = 自动取你作为成员领活的那张最近的开着的单 (被 dispatch 派来当 lead 的, 子单自动挂在根单下); 显式传的要求你是它的成员或开单者。工单树最深 3 层、每张单直接成员 ≤5 个: 超了就把子活交给现有成员, 让它开子单。"),
|
|
678
|
+
criteria: z.string().optional().describe("这张单的验收标准 (做成什么样算数), 记进账本。"),
|
|
640
679
|
},
|
|
641
|
-
}, async ({ title, plan, expect, maxTurns, accept }) => unwrap("open_job", await daemonPost("/jobs/open", { title, ...(plan ? { plan } : {}), ...(expect ? { expect } : {}), ...(maxTurns ? { maxTurns } : {}), ...(accept ? { accept } : {}) })));
|
|
680
|
+
}, async ({ title, plan, expect, maxTurns, accept, parent, criteria }) => unwrap("open_job", await daemonPost("/jobs/open", { title, ...(plan ? { plan } : {}), ...(expect ? { expect } : {}), ...(maxTurns ? { maxTurns } : {}), ...(accept ? { accept } : {}), ...(parent ? { parent } : {}), ...(criteria ? { criteria } : {}) })));
|
|
642
681
|
server.registerTool("close_job", {
|
|
643
682
|
title: "Close a job and recycle its clones",
|
|
644
683
|
description: "收工: 把汇总结论连同成员与各自那段活**留档** (情景记忆, 不发群), 并**把为这个工单生出来的分身整批回收**。被拉来帮忙的长期 wizard 不在回收之列, 你自己也不会被收。\n" +
|
|
645
|
-
"汇总完就调它。给人的结论写在你自己这一轮的最终回复里 —— 人在群里问的, 那条回复就进群。`stop:false` 只结账不回收 (那些分身后面还有用)
|
|
684
|
+
"汇总完就调它。给人的结论写在你自己这一轮的最终回复里 —— 人在群里问的, 那条回复就进群。`stop:false` 只结账不回收 (那些分身后面还有用)。需求根单做完交付后, 守护进程会隔 4h / 1 天 / 2 天… 以你的名义往原群提醒人验收 (不带单号, 同时往你的信箱挂一行带单号的); 人认可 → `as:\"accept\"`, 说不要了 → `as:\"cancel\"`, 说先放着 → `as:\"shelve\"`。",
|
|
646
685
|
inputSchema: {
|
|
647
686
|
job: z.string().describe("open_job 返回的工单 id。"),
|
|
648
687
|
summary: z.string().optional().describe("汇总结论, 留档 (不发群): 做成了什么、有什么没做成。"),
|
|
649
688
|
stop: z.boolean().optional().describe("是否回收为这个工单生出来的分身。默认 true。"),
|
|
689
|
+
as: z.enum(["accept", "cancel", "shelve", "resume"]).optional().describe("怎么收 (多是需求根单, 管家用)。`accept` (默认) 收工 / 归档 —— 根单即人验收通过 (G3); `cancel` 取消: 关单、整棵子树回收, 留档标「取消」; `shelve` 搁置: **不关单**, 停止「等验收」的提醒冒泡, 账本留着; `resume` 恢复搁置 (给 lead `re` 或带 `job` 派话会自动恢复)。shelve / resume 只对需求根单有效。"),
|
|
650
690
|
},
|
|
651
|
-
}, async ({ job, summary, stop }) => unwrap("close_job", await daemonPost("/jobs/close", { job, ...(summary ? { summary } : {}), ...(stop === false ? { stop: false } : {}) })));
|
|
691
|
+
}, async ({ job, summary, stop, as }) => unwrap("close_job", await daemonPost("/jobs/close", { job, ...(summary ? { summary } : {}), ...(stop === false ? { stop: false } : {}), ...(as ? { as } : {}) })));
|
|
652
692
|
server.registerTool("list_jobs", {
|
|
653
693
|
title: "Open jobs in this chat",
|
|
654
|
-
description: "
|
|
694
|
+
description: "这个聊天里还开着的工单, 按树排 (根在前, 子单跟在父后; `depth` / `parent`): id、标题、现算阶段 `stage` (plan / build / review / clarify / deliver / closed)、验收标准、谁开的、成员 (含角色 `role`) 和各自那段活。用来回答「那批分身在干什么」「上次那个活收了没」, 以及在继续派活前拿回工单 id。",
|
|
655
695
|
inputSchema: {},
|
|
656
696
|
}, async () => unwrap("list_jobs", await daemonPost("/jobs/list", {})));
|
|
697
|
+
server.registerTool("pending_items", {
|
|
698
|
+
title: "What I dispatched and is still open",
|
|
699
|
+
description: "挂起事项全表: 你派出去 (tell_peer / 带 task 的 spawn) 还没了结的每一件 —— 件号、对象、一句话题、为谁派的, 状态由守护进程按回执算 (在飞 / 等人拍板 / 人已回话 / 它在反问 / 没结论)。回执 done 了的、同一对改派了的、工单收了的自动消掉; 没结论的留着, 直到你改派、`re` 追问, 或用 `drop` 显式消掉。\n" +
|
|
700
|
+
"管家平时只会在注入尾巴上收到必要的一行增量, 快忘的时候 (交接 / 压缩后、隔了很多轮) 收到一次全表; 其余时候想看就调它。",
|
|
701
|
+
inputSchema: {
|
|
702
|
+
drop: z.array(z.string()).optional().describe("要消掉的件号 (`t...`): 不再需要、或已经另行处理了。"),
|
|
703
|
+
why: z.string().optional().describe("消掉的理由, 一句话 (记进账本)。"),
|
|
704
|
+
name: z.string().optional().describe("看别人的挂起事项 (只读)。省略 = 你自己的。"),
|
|
705
|
+
},
|
|
706
|
+
}, async ({ drop, why, name }) => unwrapText("pending_items", await daemonPost("/pending", { ...(drop?.length ? { drop } : {}), ...(why ? { why } : {}), ...(name ? { name } : {}) })));
|
|
657
707
|
server.registerTool("stop_wizard", {
|
|
658
708
|
title: "Interrupt or end another wizard",
|
|
659
709
|
description: "收掉一个 wizard/分身。mode='interrupt' 只打断它当前这一轮 (等价于群里的 /stop, 它还活着, 可以继续派活); mode='end' 结束它并回收 tmux pane (等价于 /kill, 之后再找它会重新长出一个空白会话)。加 forget=true 连它的身份记录一起抹掉 (名字、职责、记忆), 只在它彻底不会再回来时用。用户说「让 .x 停下」「把那些分身收了」时调它。终结自己也是合法的 (分身干完活自我了结), 只是这次调用不会返回 (这类生命周期事件不进群, 记录在 rolepage)。",
|