wezard 2.7.7 → 2.8.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.
@@ -13,8 +13,10 @@
13
13
  // 打上「不划算」—— 默认偏向省钱, 但仍只是标记, 拍板的还是管家。
14
14
  //
15
15
  // 全是纯函数: 候选的原料 (文件集 / 最近的话 / ctx) 由调用方从 transcript 读好送进来。
16
- import { resolve, basename } from "node:path";
16
+ import { resolve, basename, dirname, isAbsolute } from "node:path";
17
17
  import { addr, agoOf, ctxOf } from "./wizard.js";
18
+ import { fileURLToPath } from "node:url";
19
+ import { homedir } from "node:os";
18
20
  // 这类词两边都常见, 撞上了也说明不了是同一件事。
19
21
  const STOP = new Set([
20
22
  "the", "and", "for", "with", "this", "that", "from", "into", "src", "lib", "dist", "index",
@@ -35,9 +37,6 @@ export const termsOf = (text) => {
35
37
  const GUIDANCE = new Set(["agents", "claude", "readme", "contributing", "code_of_conduct", "changelog", "license", "copilot-instructions", "gemini"]);
36
38
  const withoutGuidance = (text) => text.replace(/[A-Za-z0-9_][A-Za-z0-9_.\-/]{2,}/g, (w) => GUIDANCE.has(stemOf(w).toLowerCase()) ? " " : w);
37
39
  const fileRefs = (text) => text.match(/(?:\/|\.\/|\.\.\/)?[A-Za-z0-9_][A-Za-z0-9_.\/-]*\.[A-Za-z][A-Za-z0-9]*(?![A-Za-z0-9_.\/-])/g) ?? [];
38
- const CONTINUE_RE = /继续|接着|续篇|上一轮|上次|刚才|此前|follow[ -]?up|continue|previous (?:task|change)|your (?:change|patch)/i;
39
- // 独立验收与否定续篇优先; 历史背景里提到「刚才」不能把新活变成续篇。
40
- const SEPARATE_RE = /(?:不要|别|无需|不再|不是|并非|不用|不能|不应).{0,8}(?:继续|接着|续篇|上一轮|上次)|独立(?:的)?(?:新)?(?:任务|问题|事项|核查|核实|检查)|新(?:的)?(?:任务|问题)|(?:do not|don't|never|not)\s+(?:continue|resume|follow[ -]?up)|(?:independent|unrelated|separate|new)\s+(?:task|question|check)/i;
41
40
  const UNSETTLED = new Set(["working", "blocked", "needs-input", "deferred", "errored", "queued"]);
42
41
  /** 没开工单的任务也占用: 接入的欠着, 派出的在等; spinner 闲不代表已交差。 */
43
42
  export const routeReceiptDutiesOf = (inflight, target) => inflight
@@ -65,45 +64,242 @@ const near = (a, b) => !!a && !!b && (a === b || a.startsWith(`${b}/`) || b.star
65
64
  const stemsOf = (text) => new Set((text.match(/[A-Za-z0-9_][A-Za-z0-9_.\-/]{2,}/g) ?? []).map((w) => stemOf(w).toLowerCase()).filter((w) => w.length >= 3 && !STOP.has(w)));
66
65
  /** 同名文件可能是不同任务的材料, 只去除重复路径。 */
67
66
  const uniqueFiles = (files) => [...new Set(files)];
68
- /** 公共文件: 池子里不少候选都读过的文件名 (web/chat.js、shared/role-view.ts 这类) —— 谁都读过, 不构成选人理由。
67
+ /** 公共文件: 按规范化完整路径、每候选一次统计 (web/chat.js、shared/role-view.ts 这类) —— 谁都读过, 不构成选人理由。
69
68
  * 统计类至少 3 个候选读过且占到池子的三成; 项目指引在任何池子里固定降权。 */
69
+ const fullPath = (cwd, path) => {
70
+ try {
71
+ const p = path.startsWith("file://") ? fileURLToPath(path) : path.startsWith("~/") ? resolve(homedir(), path.slice(2)) : path;
72
+ return cwd || isAbsolute(p) ? resolve(cwd, p) : "";
73
+ }
74
+ catch {
75
+ return "";
76
+ }
77
+ };
70
78
  export const commonStems = (rows) => {
71
79
  const need = Math.max(3, Math.ceil(rows.length * 0.3));
72
- const tally = rows.flatMap((r) => [...new Set(r.files.map((f) => stemOf(f).toLowerCase()))])
73
- .reduce((m, s) => m.set(s, (m.get(s) ?? 0) + 1), new Map());
74
- return new Set([...GUIDANCE, ...[...tally].filter(([, n]) => n >= need).map(([s]) => s)]);
80
+ const tally = rows.flatMap((r) => [...new Set((r.materials ?? []).filter((m) => m.confirmed).map((m) => fullPath(r.cwd, m.path)))])
81
+ .reduce((m, p) => m.set(p, (m.get(p) ?? 0) + 1), new Map());
82
+ return new Set([...tally].filter(([, n]) => n >= need).map(([p]) => p));
83
+ };
84
+ // Strong targets use a small affirmative instruction grammar, not arbitrary prose.
85
+ // Negated/conditional/reference clauses and unsupported sentence shapes stay unknown.
86
+ const TARGET_ACTION = /^(?:(?:请|只读|独立|本次|这次|现在|直接|继续|先|再|负责|帮我|协助|需要|实际|只|已|已经)\s*)*(?:检查|核查|核实|查看|查明|查找|读取|读|扫描|审查|审阅|评审|修复|实现|完善|优化|修改|调整|维护|验证|确认|迁移|移动|移除|卸载|删除|定位|排查|搜索|查验|找出|找到|更新|完成|交付|check\b|verify\b|inspect\b|read\b|scan\b|audit\b|review\b|fix\b|implement\b|update\b|move\b|remove\b|uninstall\b|delete\b|locate\b|find\b|search\b)/i;
87
+ const targetText = (text) => text.split(/[。;;\n,,]/).map((clause) => clause.trim()
88
+ .replace(/^(?:(?:用户(?:原话|要求|问)|任务|目标|需求|RESULT)\s*[::]\s*)+/i, "")
89
+ .replace(/^[『「“"'`]+/, "")).filter((clause) => !/[不别勿未无非()()\[\]【】{}]|依据|基于|根据|参照|借助|对照|用作|作为|例如|比如|否定|否认|禁止|停止|取消|省略|免于|避免|排除|忽略|之外|以外|背景|历史|刚才|此前|上次|上一轮|已知|已确证|已有核查|归档副本|当前上下文|来源路径|另有|参考|示例|假设|假如|如果|\b(?:no|not|never|without|except|exclude|skip|avoid|ignore|omit|stop|cancel|background|previous|unless|if)\b/i.test(clause)
90
+ && !/(?:使用|用 |应用|遵循|请读取|先.*读|use |using |apply ).*(?:skill|技能|SKILL\.md)/i.test(clause)
91
+ && TARGET_ACTION.test(clause)).filter((clause) => {
92
+ const paths = refsOf(clause, "/");
93
+ if (paths.size !== 1)
94
+ return paths.size === 0;
95
+ const object = clause.replace(TARGET_ACTION, "").trim().replace(/^(?:文件|目录|技能|模块|代码文件|路径|对)\s*/, "");
96
+ const first = /^(?:[`"']([^`"']+)[`"']|(\S+))/.exec(object);
97
+ // A path must be the instruction's direct object, not an incidental reference later
98
+ // in an otherwise positive sentence. Multiple/unknown path roles remain ambiguous.
99
+ return !!first && paths.has(fullPath("/", first[1] ?? first[2]));
100
+ }).join("\n");
101
+ // Match a whole token once, including ~/ and its trailing slash. Searching separately
102
+ // for absolute/relative fragments invented extra paths inside the same operand.
103
+ const pathTokensOf = (text, cwd) => {
104
+ const local = text.replace(/\b(?!file:)[a-z][a-z0-9+.-]*:\/\/[^\s`"',。;;<>]+/gi, (url) => " ".repeat(url.length));
105
+ return [...local.matchAll(/[`"']([^`"'\n]+)[`"']|(?<![A-Za-z0-9_./~%+:一-鿿-])((?:file:\/\/)?[A-Za-z0-9_./~%+-]+)/g)].flatMap((m) => {
106
+ const raw = m[1] ?? m[2];
107
+ if (!raw.includes("/") && !/\.[a-z][a-z0-9]*$/i.test(raw))
108
+ return [];
109
+ if (!m[1] && raw.endsWith("/") && /[^\s,。;;、::))\]]/.test(local[m.index + m[0].length] ?? ""))
110
+ return [];
111
+ const path = fullPath(cwd, raw);
112
+ return path ? [{ path, start: m.index, end: m.index + m[0].length }] : [];
113
+ });
114
+ };
115
+ const refsOf = (text, cwd) => new Set(pathTokensOf(text, cwd).map((p) => p.path));
116
+ const roleClauses = (text) => text.split(/[。;;\n,,]/).map((s) => s.trim().replace(/^RESULT\s*[::]\s*/i, "")).filter(Boolean);
117
+ const NEGATIVE_ROLE = /[不别勿未无非]|否认|否定|禁止|停止|取消|省略|免于|避免|排除|忽略|之外|以外|假设|假如|如果|\b(?:no|not|never|without|except|exclude|skip|avoid|ignore|omit|stop|cancel|unless|if)\b/i;
118
+ /** Only a label followed by exactly one path can assert a snapshot/authority location. */
119
+ const labeledLocations = (text, cwd, label) => new Set(roleClauses(text).flatMap((clause) => {
120
+ if (NEGATIVE_ROLE.test(clause) || TARGET_ACTION.test(clause))
121
+ return [];
122
+ const value = label.exec(clause)?.[1]?.trim();
123
+ if (!value)
124
+ return [];
125
+ const paths = pathTokensOf(value, cwd);
126
+ return paths.length === 1 && paths[0].start === 0 && !value.slice(paths[0].end).trim() ? [paths[0].path] : [];
127
+ }));
128
+ /** A delivered location list states where the objects are, without claiming any file read. */
129
+ const deliveredLocations = (text, cwd) => new Set(roleClauses(text).flatMap((clause) => {
130
+ if (NEGATIVE_ROLE.test(clause) || /背景|示例|参考|假设/.test(clause))
131
+ return [];
132
+ const value = /^(?:[一-鿿A-Za-z -]{0,24})(?:目录|路径|位置)(?:是|为|[::])\s*(.+)$/.exec(clause)?.[1];
133
+ if (!value)
134
+ return [];
135
+ const paths = pathTokensOf(value, cwd);
136
+ const remainder = paths.reduceRight((v, p) => v.slice(0, p.start) + v.slice(p.end), value);
137
+ return paths.length && /^(?:\s|和|及|以及|and|、)*$/i.test(remainder) ? paths.map((p) => p.path) : [];
138
+ }));
139
+ /** Unknown operation suffixes cannot confirm a source, even without repeating its path. */
140
+ const affirmativeOperationTail = (tail) => {
141
+ const bare = "[~./A-Za-z0-9_<>-][A-Za-z0-9_<>./~-]*/[A-Za-z0-9_<>./~-]*";
142
+ const path = `(?:${[bare, ...["`", '"', "'"].map((q) => `${q}${bare}${q}`)].join("|")})`;
143
+ const location = new RegExp(`^(?:${path}|(?:扫描|原)路径之外的(?:带时间戳)?备份目录)$`);
144
+ const suggestions = new RegExp(`^建议\\s*${path}(?:\\s*(?:和|及|以及|、|and)\\s*${path})*$`);
145
+ const [destination, ...constraints] = tail.split(/[,,]/).map((c) => c.trim());
146
+ const target = /^(?:到|至|进|出|回)\s*(.+)$/.exec(destination ?? "")?.[1];
147
+ return (!destination || !!target && location.test(target)) && constraints.every((c) => suggestions.test(c) || /^保留(?:各自|原有)?来源层级$/.test(c) || /^不覆盖(?:已有|现有)?备份$/.test(c));
148
+ };
149
+ /** Operation roles are closed: unclassified qualifications retract prior sources. */
150
+ const allowsOperationSource = (clause, sources, cwd) => {
151
+ const paths = pathTokensOf(clause, cwd);
152
+ // Only a complete direct instruction can prove that a path names another object.
153
+ if (paths.length === 1 && sources.every((p) => !near(p, paths[0].path))
154
+ && /^(?:不|不要|别|勿|无需|不需要)?(?:检查|核查|扫描|读取|移动|迁移|删除|复制|备份|操作)\s*$/.test(clause.slice(0, paths[0].start))
155
+ && !clause.slice(paths[0].end).trim())
156
+ return true;
157
+ if (paths.length === 1 && /^(?:检查|核查|扫描|读取|验证|确认)\s*$/.test(clause.slice(0, paths[0].start))
158
+ && !clause.slice(paths[0].end).trim())
159
+ return true;
160
+ if (/^(?:保留(?:各自|原有)?来源层级|不覆盖(?:已有|现有)?备份|(?:移动|迁移)链接本身|(?:勿|不要|不)操作链接目标)$/.test(clause))
161
+ return true;
162
+ if (/^(?:验证|检查|核查|确认)(?:移动|迁移|复制|备份)(?:结果|完整性|数量|项完整|是否完成|成功)$/.test(clause)
163
+ || /^验证备份项完整(?:、原扫描路径(?:用户)?(?:技能|文件|目录|资源|对象)已移出)?$/.test(clause)
164
+ || /^(?:交付|报告)(?:确切)?备份(?:绝对)?路径(?:、(?:移动|迁移|复制|备份)数量(?:与原目录状态)?)?$/.test(clause)
165
+ || /^(?:移动|迁移|复制|备份)数量(?:与原目录状态)?$/.test(clause)
166
+ || /^先核查当前实物后(?:移动|迁移|移除|复制|备份)所有(?:该范围)?(?:用户)?(?:技能|文件|目录|资源|对象)$/.test(clause)
167
+ || /^(?:此为|这是)?用户(?:明确)?授权的可逆(?:移动|迁移|复制|备份)$/.test(clause))
168
+ return true;
169
+ // Resource inventories are data-only lists, not free-form background prose.
170
+ if (/^(?:已知\s+)?[A-Za-z0-9_-]+\s+有\s+[A-Za-z0-9_.-]+(?:、[A-Za-z0-9_.-]+)*$/.test(clause))
171
+ return true;
172
+ if (paths.length === 1 && /^明确排除\s*$/.test(clause.slice(0, paths[0].start))
173
+ && /^(?:系统技能|系统文件|系统目录)(?:、插件缓存和 [A-Za-z0-9_-]+ 内容存储)?$/.test(clause.slice(paths[0].end).trim()))
174
+ return true;
175
+ if (/^(?:包括(?:目录|文件)(?:或符号链接)?|无需再次确认|不要自动重启会话)$/.test(clause)
176
+ || /^不(?:改|修改)(?:任何)?(?:配置真源|配置|锁文件|项目文档)(?:、(?:配置真源|配置|锁文件|项目文档))*(?:或(?:配置真源|配置|锁文件|项目文档))?$/.test(clause)
177
+ || /^说明(?:当前)?会话启动快照(?:仍)?可能显示旧清单(?:即可)?$/.test(clause))
178
+ return true;
179
+ // Every later clause needs a complete known role. Unrecognized wording is not
180
+ // evidence that the operation still stands, regardless of nouns or pronouns.
181
+ return false;
182
+ };
183
+ /** A supported 将/把 source list and its complete operation must be affirmative. */
184
+ const operationSources = (text, cwd) => {
185
+ const denied = new Set(roleClauses(text).filter((c) => NEGATIVE_ROLE.test(c)).flatMap((c) => [...refsOf(c, cwd)]));
186
+ const sentences = text.split(/[。;;\n]/);
187
+ return new Set(sentences.flatMap((sentence, index) => {
188
+ const operation = /^(?:请\s*)?(?:将|把)\s+(.+?)\s*(?:实际|统一|全部)?(?:移动|迁移|移除|删除|复制|搬移|备份)(?=到|至|进|出|回|[,,]|$)/.exec(sentence.trim());
189
+ const source = operation?.[1];
190
+ if (!source || NEGATIVE_ROLE.test(source) || !affirmativeOperationTail(sentence.trim().slice(operation[0].length)))
191
+ return [];
192
+ const entries = source.replace(/[,,]\s*$/, "").split(/[,,]\s*(?:以及|和|及|and)?\s*|\s+and\s+/i);
193
+ const paths = entries.map((entry) => {
194
+ const value = entry.trim(), tokens = pathTokensOf(value, cwd);
195
+ if (tokens.length !== 1 || tokens[0].start !== 0)
196
+ return "";
197
+ const selector = value.slice(tokens[0].end).trim();
198
+ return !selector || /^下(?:的)?[一-鿿A-Za-z0-9_ -]{0,32}(?:技能|文件|目录|资源|对象)$/.test(selector) ? tokens[0].path : "";
199
+ });
200
+ const later = roleClauses(sentences.slice(index + 1).join("。").replace(/[()()]/g, ","));
201
+ const objects = [...paths, ...refsOf(sentence, cwd)];
202
+ return paths.length && paths.every(Boolean) && later.every((c) => allowsOperationSource(c, objects, cwd))
203
+ ? paths.filter((p) => !denied.has(p)) : [];
204
+ }));
75
205
  };
76
- const evidenceOf = (text, task, stems, common, taskCwd) => (row) => {
77
- // 文件只认整个文件名被点到: 目录名 (daemon/、web/) 几乎每个文件都带, 文件名里的
78
- // 半截词 (role-render 的 render) 又太常见 —— 撞上它们说明不了读过这一个。
79
- const hit = uniqueFiles(row.files.map((f) => resolve(row.cwd, f)).filter((f) => stems.has(stemOf(f).toLowerCase())));
80
- const isCommon = (f) => common.has(stemOf(f).toLowerCase());
81
- // 词面/同名文件只供人看。连续性还要有明确续篇、精确路径和近期任务里的同一文件。
82
- const paths = new Set(fileRefs(text).map((f) => resolve(taskCwd, f)));
83
- const files = hit.filter((f) => !isCommon(f) && !!taskCwd && paths.has(resolve(f)));
84
- const recent = new Set(row.asks.flatMap(fileRefs).map((f) => resolve(row.cwd, f)));
206
+ const mentions = (text, object) => object.length >= 4 && !["skills", "plugins", "cache", "tree", ".system"].includes(object)
207
+ && new RegExp(`(?<![A-Za-z0-9_-])${object.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}(?![A-Za-z0-9_-])`, "i").test(text);
208
+ const evidenceOf = (text, task, stems, common, taskCwd, now) => (row) => {
209
+ const active = targetText(text);
210
+ const positions = refsOf(text, taskCwd);
211
+ const sources = operationSources(text, taskCwd);
212
+ const targets = new Set([...refsOf(active, taskCwd), ...sources]);
213
+ const clauses = roleClauses(text);
214
+ const denied = new Set(clauses.filter((c) => NEGATIVE_ROLE.test(c)).flatMap((c) => [...refsOf(c, taskCwd)]));
215
+ const referenceObjects = clauses.flatMap((c) => {
216
+ if (NEGATIVE_ROLE.test(c))
217
+ return [];
218
+ const ref = /^指(?:刚刚|刚)?(?:找到|查到|发现|确认)的\s*[`"']?([A-Za-z0-9_][A-Za-z0-9_.-]*)[`"']?(?:\s*[((][^()()]*[))])?$/.exec(c);
219
+ return ref ? [ref[1]] : [];
220
+ });
221
+ const identityQuery = active.split("\n").some((c) => /^(?:其|该技能的?|该对象的?|它的|这个技能的?)(?:上游)?(?:来源|身份|出处|作者|仓库|元数据)/.test(c.replace(TARGET_ACTION, "").trim()));
222
+ const snapshots = labeledLocations(text, taskCwd, /^(?:已知)?本地快照\s*[::]?\s*(.+)$/);
223
+ const archives = labeledLocations(text, taskCwd, /^(?:[A-Za-z0-9_.-]+\s+)?归档副本\s*[::]?\s*(.+)$/);
224
+ const materials = row.materials ?? [];
225
+ const hit = uniqueFiles(row.files.map((f) => fullPath(row.cwd, f)).filter((f) => stems.has(stemOf(f).toLowerCase())));
226
+ const isCommon = (f) => GUIDANCE.has(stemOf(f).toLowerCase()) || common.has(f);
227
+ const current = materials.filter((m) => m.confirmed && m.task && m.taskAt > 0 && m.at >= m.taskAt
228
+ && now >= m.at && now - m.taskAt <= 3_600_000 && now - m.at <= 3_600_000
229
+ && (!row.sessionId || m.session === row.sessionId));
230
+ const related = current.filter((m) => {
231
+ const path = fullPath(row.cwd, m.path);
232
+ if (isCommon(path))
233
+ return false;
234
+ const object = basename(dirname(path));
235
+ const skill = basename(path).toLowerCase() === "skill.md";
236
+ // A helper's skill read is not expertise. The skill itself must be the delivered object.
237
+ if (skill) {
238
+ if (m.kind !== "read")
239
+ return false;
240
+ const instance = dirname(path);
241
+ // Explicit child files constrain the instance too. Unknown/negative positions cannot
242
+ // be recovered through a same-name fallback, even when that costs a valid reuse.
243
+ const discovered = refsOf(m.reply ?? "", m.cwd).has(path) && (m.reply ?? "").split(/[。;;\n]/).some((clause) => !NEGATIVE_ROLE.test(clause) && mentions(clause, object) && /最匹配|找到|找出|发现|\bfound\b|\bidentified\b|\bmatch\b/i.test(clause));
244
+ const authority = labeledLocations(m.reply ?? "", m.cwd, /^(?:权威源文件|源文件|技能文件|技能路径)\s*[::]\s*(.+)$/);
245
+ const excluded = [...denied].some((p) => p === instance || p.startsWith(`${instance}/`));
246
+ const archiveQuery = clauses.some((c) => /归档副本/.test(c)
247
+ && !labeledLocations(c, taskCwd, /^(?:[A-Za-z0-9_.-]+\s+)?归档副本\s*[::]?\s*(.+)$/).size);
248
+ const deliveredObjects = roleClauses(m.reply ?? "").flatMap((c) => {
249
+ if (NEGATIVE_ROLE.test(c))
250
+ return [];
251
+ const name = /^(?:最匹配的是|找到的(?:技能|对象)是|发现的(?:技能|对象)是|已找到|已确认)\s*([A-Za-z0-9_][A-Za-z0-9_.-]*)$/.exec(c.replace(/[*`"']/g, ""))?.[1];
252
+ return name ? [name] : [];
253
+ });
254
+ const sameObject = (name) => name.toLowerCase() === object.toLowerCase();
255
+ const referenced = !excluded && identityQuery && referenceObjects.some(sameObject) && referenceObjects.every(sameObject)
256
+ && deliveredObjects.some(sameObject) && deliveredObjects.every(sameObject)
257
+ && snapshots.size === 1 && snapshots.has(path) && authority.size === 1 && authority.has(path) && discovered;
258
+ const compatible = [...positions].every((p) => referenced && (snapshots.has(p) || archives.has(p) && !targets.has(p) && !archiveQuery)
259
+ || targets.has(p) && (p === instance || p.startsWith(`${instance}/`)));
260
+ if (!compatible)
261
+ return false;
262
+ const helper = m.task.split(/[。;;\n,,]/).some((clause) => mentions(clause, object)
263
+ && /(?:使用|应用|遵循|用(?!户|途)|\buse\b|\busing\b|\bapply\b)/i.test(clause));
264
+ if (helper || !mentions(m.reply ?? "", object))
265
+ return false;
266
+ const originalTarget = refsOf(targetText(m.task), m.cwd).has(path);
267
+ return (originalTarget || discovered) && (referenced || targets.has(path)
268
+ || active.split("\n").some((clause) => /skill|技能/i.test(clause) && mentions(clause, object)));
269
+ }
270
+ if (m.kind === "scan" && [fullPath(row.cwd, "."), "/", homedir()].includes(path))
271
+ return false;
272
+ // Scans match that exact directory only; they never claim files under it were read.
273
+ return targets.has(path) && (refsOf(targetText(m.task), m.cwd).has(path) || refsOf(targetText(m.reply ?? ""), m.cwd).has(path) || deliveredLocations(m.reply ?? "", m.cwd).has(path));
274
+ });
275
+ const files = uniqueFiles(related.filter((m) => m.kind === "read").map((m) => fullPath(row.cwd, m.path)));
85
276
  return {
86
- row,
87
- continuity: !SEPARATE_RE.test(text) && CONTINUE_RE.test(text) && files.some((f) => recent.has(resolve(f))),
277
+ row, continuity: related.length > 0, matched: related,
278
+ targetRoles: { direct: [...refsOf(active, taskCwd)], operationSources: [...sources], referenceObjects,
279
+ snapshots: [...snapshots], archiveBackground: [...archives] },
280
+ objects: [...new Set(related.map((m) => basename(m.path).toLowerCase() === "skill.md" ? basename(dirname(m.path)) : m.path))],
281
+ materialIssues: [
282
+ ...(materials.some((m) => !m.confirmed) ? ["未确认的工具形状仅作线索, 不计材料"] : []),
283
+ ...(!materials.length ? ["无确认材料 (缺失、尾部截断或最新轮无可识别读取)"] : []),
284
+ ...(materials.some((m) => m.truncated) ? ["仅取 compact 后 1MB 尾部, 更早证据未知"] : []),
285
+ ...(materials.length && !current.length ? ["材料不属已知当前任务/session 或已超过 1 小时"] : []),
286
+ ],
88
287
  clues: hit.filter((f) => !isCommon(f) && !files.includes(f)),
89
- desc: shared(task, row.description),
90
- exp: shared(task, row.expertise ?? ""),
91
- asks: [...new Set(row.asks.flatMap((a) => shared(task, a)))],
92
- files,
93
- common: hit.filter(isCommon),
288
+ desc: shared(task, row.description), exp: shared(task, row.expertise ?? ""),
289
+ asks: [...new Set(row.asks.flatMap((a) => shared(task, a)))], files,
290
+ common: uniqueFiles([...hit, ...materials.map((m) => fullPath(row.cwd, m.path))].filter(isCommon)),
94
291
  sameCwd: near(row.cwd, taskCwd),
95
292
  };
96
293
  };
97
294
  // 排序只是让最有证据的先被看到: 文件命中 (它真读过) > 职责 > 最近的话; 同工作区只用来打破平手。
98
295
  // 专长是它自己声明的「熟哪块」, 与职责同权。
99
- const weight = (e) => e.files.length * 3 + e.clues.length + (e.desc.length + e.exp.length) * 2 + e.asks.length;
296
+ const weight = (e) => e.matched.length * 3 + e.clues.length + (e.desc.length + e.exp.length) * 2 + e.asks.length;
100
297
  /** 有交集的候选, 证据最强的在前。 */
101
298
  export const rankCandidates = (task, taskCwd, rows, hot) => {
102
299
  // 平手时缓存热的优先 (同一把尺 wakeCostOf: 没冷 = 唤醒只读缓存); 不给 hot 就不分。
103
300
  const warm = (r) => (hot && !wakeCostOf(r.contextTokens, touchOf(r), hot.now, r.cacheTtlMs ?? hot.ttlMs).cold ? 1 : 0);
104
301
  return rows
105
- .map(evidenceOf(task, termsOf(withoutGuidance(task)), stemsOf(task), commonStems(rows), taskCwd))
106
- .filter((e) => weight(e) > 0 || e.common.length > 0)
302
+ .map(evidenceOf(task, termsOf(withoutGuidance(task)), stemsOf(task), commonStems(rows), taskCwd, hot?.now ?? Date.now()))
107
303
  .sort((x, y) => weight(y) - weight(x) || Number(y.sameCwd) - Number(x.sameCwd) || warm(y.row) - warm(x.row) || y.row.lastActivity - x.row.lastActivity);
108
304
  };
109
305
  // 白板 spawn 的起步 ctx: CLI 自带 system prompt + charter (~2.6k) + 工具定义 (~18k)。
@@ -144,6 +340,17 @@ const SMALL_RE = /改(?:名|文案|颜色|字号|字体|间距|边距|圆角)|
144
340
  const FILE_CHECK_RE = /(?:核实|确认|检查|查一下|查看|check|verify).*(?:存在|加载|路径|exists?|load|path)/i;
145
341
  export const isSmallTask = (task) => task.length <= 160 && !COMPLEX_RE.test(withoutGuidance(task))
146
342
  && (SMALL_RE.test(task) || (fileRefs(task).length > 0 && FILE_CHECK_RE.test(task)));
343
+ const CODING_RE = /(?:实现|编写|新增|添加|修改|修复|调整|删除|迁移|更新|重构|(?<![A-Za-z0-9_])(?:implement|write|add|create|change|modify|fix|update|remove|refactor)(?![A-Za-z0-9_]))/i;
344
+ const CODE_TARGET_RE = /(?:\b[\w./-]+\.(?:ts|tsx|js|jsx|mjs|cjs|py|go|rs|java|kt|swift|vue|svelte|css|scss|html|sql|rb|php|c|h|cpp)\b|(?:登录|提交|保存|确认|取消|搜索|发送|解析|认证|用户|订单|支付)(?:函数|接口|按钮|方法|组件|路由)|(?:函数|接口|按钮|方法|组件|路由)(?:的)?(?:逻辑|定义|返回值|参数|点击|校验|空字符串|空值|回调|状态|错误处理)|\b(?:login|submit|save|confirm|cancel|search|send|parse|auth|user|order|payment)[ -](?:function|interface|button|method|component|route|class|endpoint)\b)/i;
345
+ const CODE_SYMBOL_RE = /(?<![A-Za-z0-9_])[a-z][A-Za-z0-9]*[A-Z][A-Za-z0-9]*(?![A-Za-z0-9_])/;
346
+ const CODE_CONTEXT_RE = /函数|方法|参数|返回(?:值)?|空字符串|空输入|空值|回调|调用|校验|处理|点击|function|parameter|argument|return|empty (?:string|input)|callback|handler/i;
347
+ const CODING_RISK_RE = /并发|竞态|死锁|安全|权限|认证|授权|隐私|加密|漏洞|支付|扣款|幂等|事务|回滚|迁移|(?<![A-Za-z0-9_])(?:security|concurren(?:cy|t)|race|deadlock|auth(?:entication|orization)?|permissions?|privacy|crypt(?:o|graph)|vulnerabilit(?:y|ies)|exploit|payment|charge|idempotenc\w*|transaction|rollback|migration)(?![A-Za-z0-9_])/i;
348
+ const GLOBAL_SCOPE_RE = /全部|所有|整个|全局|全量|各个模块|跨(?:多个)?模块|跨项目|(?<![A-Za-z0-9_])(?:all|entire|across)(?![A-Za-z0-9_])/i;
349
+ const isCodingTask = (task) => !CODING_RISK_RE.test(task)
350
+ && !COMPLEX_RE.test(withoutGuidance(task))
351
+ && CODING_RE.test(withoutGuidance(task))
352
+ && (CODE_TARGET_RE.test(withoutGuidance(task))
353
+ || (CODE_SYMBOL_RE.test(withoutGuidance(task)) && CODE_CONTEXT_RE.test(withoutGuidance(task))));
147
354
  const smallFor = (task, tier) => tier ? tier === "mini" || tier === "light" : isSmallTask(task);
148
355
  /** 证据弱 (没碰过这件活点到的文件; 小活则少于 3 个) 又贵 (冷且 ≥60k, 或热但 ≥150k) → 不划算。 */
149
356
  const notWorth = (e, w, small, ctx) => (e.files.length === 0 || (small && e.files.length < 3)) && ctx >= (w.cold ? BIG_COLD : BIG_WARM);
@@ -164,7 +371,7 @@ const costLines = (e, c) => {
164
371
  const w = wakeCostOf(ctx, touchOf(e.row), c.now, ttlMs);
165
372
  const ttl = `${Math.round(ttlMs / 60_000)} 分钟`;
166
373
  const wake = w.cold
167
- ? `缓存冷 (超过 TTL ${ttl}) · 唤醒要重写 ~${k(w.write)} 缓存 ≈ 白板 spawn 的 ${w.times} 倍${ctx >= BIG_COLD ? " · 大 ctx 已冷, 默认不转" : ""}`
374
+ ? `缓存冷 (超过 TTL ${ttl}) · 唤醒要重写 ~${k(w.write)} 缓存 ≈ 白板 spawn 的 ${w.times} 倍${ctx >= BIG_COLD ? c.force ? " · force 已越过冷成本门槛" : " · 大 ctx 已冷, 默认不转" : ""}`
168
375
  : `缓存热 (TTL ${ttl}内) · 唤醒只读缓存`;
169
376
  const need = e.files.length
170
377
  ? `这件活点到它读过的 ${e.files.length}/${e.row.files.length} 个文件`
@@ -186,7 +393,7 @@ const renderOne = (e, c) => {
186
393
  e.common.length ? `降权的公共文件 ${e.common.slice(-4).map((f) => relTo(r.cwd, f)).join(" ")}${e.common.length > 4 ? ` +${e.common.length - 4}` : ""} (公共指引或多人读过, 不计证据)` : "",
187
394
  ].filter(Boolean);
188
395
  return [
189
- [`\`${addr(r)}\` ${r.busy ? "忙" : r.alive ? "闲" : "冷"}`, where, ctxOf(r.contextTokens) || "ctx ?", agoOf(r.lastActivity, now)]
396
+ [`\`${addr(r)}\` ${r.busy ? "忙" : r.alive ? "闲" : "冷"}`, where, ctxOf(r.contextTokens) || "ctx ?", r.model || "model ?", agoOf(r.lastActivity, now)]
190
397
  .filter(Boolean).join(" · "),
191
398
  ...(r.description ? [` 职责: ${r.description}`] : []),
192
399
  ...(r.expertise ? [` 专长: ${r.expertise}`] : []),
@@ -194,16 +401,17 @@ const renderOne = (e, c) => {
194
401
  ...(e.clues.length ? [` 同名文件线索: ${e.clues.map((f) => basename(f)).join(" ")} (路径未对上, 不证明连续性)`] : []),
195
402
  ...(r.lead ? [" 占用: lead 身份"] : []),
196
403
  ...(r.duties?.length ? [` 占用: ${r.duties.join(" · ")}`] : []),
197
- ` 连续性: ${e.continuity ? "续篇点到近期任务的同一文件" : "未证实; 文件/职责/问话的词面匹配仅是线索"}`,
198
- ` 自动复用: ${vetoOf(e, now, c.ttlMs, c.small, false) || "可选; 真实续篇优先 tell_peer re"}`,
404
+ ` 材料关联: ${e.continuity ? e.matched.map((m) => `${m.kind} ${m.path} · ${m.source} · ${agoOf(m.at, now)}`).join("; ") : "未证实"}`,
405
+ ...e.materialIssues.map((x) => ` 证据范围: ${x}`),
406
+ ` 自动复用: ${vetoOf(e, now, c.ttlMs, c.small, c.force) || "可选; 真实续篇优先 tell_peer re"}`,
199
407
  ...(r.files.length ? [` 上下文: 读过 ${r.files.length} 个文件 (${spread(r.cwd, r.files)})`] : []),
200
408
  ...costLines(e, c),
201
409
  ...(r.summary ? [` 最近: ${r.summary}`] : []),
202
410
  ];
203
411
  };
204
412
  /** 给管家读的候选表。末尾永远留着「新 spawn」这一项 —— 它是没有好候选时的默认。 */
205
- export const renderCandidates = (task, cands, now, ttlMs, home = "") => {
206
- const c = { now, home, ttlMs, small: isSmallTask(task) };
413
+ export const renderCandidates = (task, cands, now, ttlMs, home = "", options = {}) => {
414
+ const c = { now, home, ttlMs, small: smallFor(task, options.tier), force: options.force === true };
207
415
  return [
208
416
  cands.length
209
417
  ? `和这件活有交集的已有 wizard ${cands.length} 个, 证据强的在前 (文件命中 = 它真读过; 词面重叠只是线索):`
@@ -216,26 +424,43 @@ export const renderCandidates = (task, cands, now, ttlMs, home = "") => {
216
424
  ].join("\n");
217
425
  };
218
426
  /** 一个候选为什么不转给它; "" = 可以转。 */
219
- const vetoOf = (e, now, ttlMs, small, force) => {
220
- const r = e.row;
221
- const ctx = r.contextTokens;
427
+ const vetoesOf = (e, now, ttlMs, small, force) => {
428
+ const r = e.row, ctx = r.contextTokens;
222
429
  const w = wakeCostOf(ctx, touchOf(r), now, r.cacheTtlMs ?? ttlMs);
223
- return r.lead ? "lead 身份, 独立任务不自动复用 (续篇用 tell_peer re)"
224
- : r.duties?.length ? `任务占用 (${r.duties.join(" · ")})`
225
- : !r.alive ? "不在线"
226
- : r.busy ? "正忙"
227
- : !e.continuity ? "未证实实质上下文连续性 (词面/文件交集只是线索; 续篇用 tell_peer re)"
228
- : notWorth(e, w, small, ctx) ? `不划算 (${small ? "小活" : "证据弱"}却要${w.cold ? "整段重写" : "一直背着"} ${k(ctx)})`
229
- : w.cold && ctx >= BIG_COLD && !force ? `缓存冷且 ctx ${k(ctx)} (大 ctx 已冷默认不转; 活真依赖它的上下文就 to+force)`
230
- : "";
430
+ return [
431
+ ...(small && r.budgetModel && r.model?.trim().toLowerCase() !== r.budgetModel.trim().toLowerCase()
432
+ ? [`轻任务模型不符 (当前 ${r.model || "未知"}, 本次 ${r.budgetModel}); 按本次档位白板执行`] : []),
433
+ ...(r.lead ? ["lead 身份, 独立任务不自动复用 (续篇用 tell_peer re)"] : []),
434
+ ...(r.duties?.length ? [`任务占用 (${r.duties.join(" · ")})`] : []),
435
+ ...(!r.alive ? ["不在线"] : []), ...(r.busy ? ["正忙"] : []),
436
+ ...(!(ctx > 0 && Number.isFinite(ctx)) ? ["ctx 未知, 不能按免费上下文复用"] : []),
437
+ ...(!e.continuity ? ["未证实近期真实任务的实际材料关联"] : []),
438
+ ...(notWorth(e, w, small, ctx) ? [`不划算 (${small ? "小活" : "证据弱"}却要${w.cold ? "整段重写" : "一直背着"} ${k(ctx)})`] : []),
439
+ ...(w.cold && ctx >= BIG_COLD && !force ? [`缓存冷且 ctx ${k(ctx)} (大 ctx 已冷默认不转; 活真依赖它的上下文就 to+force)`] : []),
440
+ ];
231
441
  };
442
+ const vetoOf = (e, now, ttlMs, small, force) => vetoesOf(e, now, ttlMs, small, force).join("; ");
443
+ export const routeDiagnostics = (task, cands, now, ttlMs, force = false, tier) => ({
444
+ total: cands.length, shown: cands.length, truncated: false,
445
+ scope: "current session, latest real task, compact boundary / 1MB tail, <=1h",
446
+ candidates: cands.map((e) => ({
447
+ name: e.row.address || e.row.name, sessionId: e.row.sessionId, model: e.row.model || "unknown",
448
+ targetRoles: e.targetRoles,
449
+ matchedPaths: e.matched.map((m) => m.path), objects: e.objects, materials: e.matched,
450
+ observed: (e.row.materials ?? []).map(({ path, kind, source, at, taskAt, turn, session, confirmed }) => ({ path, kind, source, at, taskAt, turn, session, confirmed })),
451
+ common: e.common, issues: e.materialIssues, contextTokens: e.row.contextTokens || null, contextKnown: e.row.contextTokens > 0,
452
+ cache: wakeCostOf(e.row.contextTokens, touchOf(e.row), now, e.row.cacheTtlMs ?? ttlMs),
453
+ veto: vetoOf(e, now, ttlMs, smallFor(task, tier), force),
454
+ vetoes: vetoesOf(e, now, ttlMs, smallFor(task, tier), force),
455
+ })),
456
+ });
232
457
  const evidenceLine = (e) => [
233
- e.files.length ? `读过点到的 ${e.files.length} 个文件` : "",
458
+ e.matched.length ? `实际材料 ${e.matched.map((m) => `${m.kind} ${m.path}`).join(", ")}` : "",
234
459
  e.desc.length ? `职责${quoted(e.desc, 3)}` : "",
235
460
  e.exp.length ? `专长${quoted(e.exp, 3)}` : "",
236
461
  e.row.contextTokens ? ctxOf(e.row.contextTokens) : "",
237
462
  ].filter(Boolean).join(" · ");
238
- /** 默认决定: 候选按证据排好 (rankCandidates), 取头一个没被否决的; 一个都没有 → spawn, 理由写前几个为什么不行。 */
463
+ /** 默认决定: 候选按证据排好 (rankCandidates), 取头一个没被否决的; 一个都没有 → spawn, 理由保留全部候选的否决。 */
239
464
  export const decide = (task, cands, now, ttlMs, force = false, tier) => {
240
465
  const small = smallFor(task, tier);
241
466
  const vetoes = cands.map((e) => ({ e, veto: vetoOf(e, now, ttlMs, small, force) }));
@@ -245,13 +470,13 @@ export const decide = (task, cands, now, ttlMs, force = false, tier) => {
245
470
  return {
246
471
  kind: "spawn",
247
472
  why: vetoes.length
248
- ? `白板 spawn —— ${vetoes.slice(0, 3).map((v) => `${addr(v.e.row)} ${v.veto}`).join("; ")}`
473
+ ? `白板 spawn —— ${vetoes.map((v) => `${addr(v.e.row)} ${v.veto}`).join("; ")}`
249
474
  : "白板 spawn —— 没有哪个已有 wizard 和这件活有交集",
250
475
  };
251
476
  };
252
- /** spawn 时的默认档: 明确简单动作 → light; 其余 standard —— 默认不上 hard。
477
+ /** spawn 时的默认档: 明确简单动作或有可识别代码对象的普通实现 → light; 其余 standard —— 默认不上 hard。
253
478
  * 以前按 COMPLEX_RE 把「设计 / 排障 / 审查」这类措辞自动升到 hard, 而这些词在真活里太常见,
254
479
  * 于是几乎每个派出去的活都落 opus; 现在 hard / ultra 只由调用方显式给 (`tier:"hard"`),
255
480
  * lead 是唯一的例外 (它本来就是「要判断」的那一档)。 */
256
- export const tierFor = (task, lead) => lead ? "hard" : isSmallTask(task) ? "light" : "standard";
481
+ export const tierFor = (task, lead) => lead ? "hard" : CODING_RISK_RE.test(task) || GLOBAL_SCOPE_RE.test(task) ? "standard" : isSmallTask(task) || isCodingTask(task) ? "light" : "standard";
257
482
  //# sourceMappingURL=route.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../daemon/route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../daemon/route.ts"],"names":[],"mappings":"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"}
@@ -40,8 +40,7 @@ import { activateBackend, resolveCliBackend } from "../shared/cli-backends.js";
40
40
  import { selectModel } from "./model-select.js";
41
41
  import { hasRegistry, sessionOnPane } from "./wezard-session.js";
42
42
  import { startupConfirmation, workspaceTrustPrompt, workspaceTrustConfig } from "../shared/workspace-trust.js";
43
- // Every new pane uses the configured backend, including resume and fork panes.
44
- // `cli` is retained on SpawnArgs only to identify a resumed transcript's owner.
43
+ // New sessions follow configuration; resumed transcripts retain their backend.
45
44
  export const backendFor = (cfg) => {
46
45
  const backend = resolveCliBackend(cfg.wrc);
47
46
  activateBackend(backend);
@@ -386,10 +385,10 @@ const charterArg = (cfg, backend, sessionId, charter, log) => {
386
385
  }
387
386
  };
388
387
  export const spawnTmuxClaude = async ({ cfg, log, resumeSessionId, sessionId: freshSessionId, windowName, cwdOverride, cli, model, effort, systemPrompt, forkSession }) => {
389
- const backend = backendFor(cfg);
390
- if (resumeSessionId && cli && cli !== backend.name) {
391
- return { ok: false, reason: `会话属于 ${cli}, 当前配置后端是 ${backend.name}, 无法跨后端恢复或克隆。请用 /new 新建会话。` };
392
- }
388
+ const backend = resumeSessionId && cli
389
+ ? resolveCliBackend({ ...cfg.wrc, defaultCli: cli })
390
+ : backendFor(cfg);
391
+ activateBackend(backend);
393
392
  const cwd = expandHome((cwdOverride ?? "").trim() || cfg.wrc.cwd);
394
393
  const projectDir = join(expandHome(backend.projectsDir), backend.encodeProjectDir(cwd));
395
394
  let sessionId = resumeSessionId ?? freshSessionId ?? randomUUID();
@@ -434,7 +433,7 @@ export const spawnTmuxClaude = async ({ cfg, log, resumeSessionId, sessionId: fr
434
433
  if (backend.name === "codex") {
435
434
  const conflict = sandboxDisabled ? codexSandboxArgConflict(cfg.wrc.extraArgs) : undefined;
436
435
  if (conflict)
437
- return { ok: false, reason: `Codex extraArgs ${conflict} conflicts with wrc.cliBackends.codex.disableSandbox; remove the shortcut and use the sandbox config` };
436
+ return { ok: false, retryable: false, reason: `Codex extraArgs ${conflict} conflicts with wrc.cliBackends.codex.disableSandbox; remove the shortcut and use the sandbox config` };
438
437
  const hookEntry = fileURLToPath(new URL("../cli/codex-hook.js", import.meta.url));
439
438
  const command = codexHookCommand(loadConfig().sourcePath, `http://127.0.0.1:${cfg.daemon.port}`, hookEntry);
440
439
  try {