sillyspec 3.29.4 → 3.30.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/skills/sillyspec-auto/SKILL.md +54 -54
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +2 -2
- package/.claude/skills/sillyspec-commit/SKILL.md +1 -1
- package/.claude/skills/sillyspec-flow/SKILL.md +57 -0
- package/.claude/skills/sillyspec-quick/SKILL.md +18 -116
- package/AGENTS.md +38 -20
- package/SKILL.md +9 -3
- package/assets/command-cards/flow.md +32 -0
- package/assets/command-cards/run-archive.md +26 -0
- package/assets/command-cards/run-brainstorm.md +33 -0
- package/assets/command-cards/run-execute.md +29 -0
- package/assets/command-cards/run-plan.md +27 -0
- package/assets/command-cards/run-quick.md +17 -0
- package/assets/command-cards/run-verify.md +29 -0
- package/assets/command-cards/status.md +27 -0
- package/package.json +2 -1
- package/packages/dashboard/server/executor.js +2 -1
- package/packages/dashboard/server/parser.js +7 -7
- package/r7-test-env/README-R7-TEST.md +93 -0
- package/r7-test-env/demo-project/lib/calc.js +6 -0
- package/r7-test-env/demo-project/package.json +1 -0
- package/r7-test-env/demo-project/test.js +10 -0
- package/r7-test-env/prompt-R7-SMOKE.md +41 -0
- package/r7-test-env/sillyspec-r7.cmd +3 -0
- package/round4/account.mjs +98 -0
- package/round4/b1-analyze-task08.mjs +40 -0
- package/round4/b1-b1-target-validation.md +32 -0
- package/round4/b3a-prompt-audit-result.md +66 -0
- package/round4/b3a-prompt-audit.mjs +89 -0
- package/round4/brief-autocompact.md +34 -0
- package/round4/brief-session-replay.md +50 -0
- package/round4/deep-read-synthesis.md +38 -0
- package/round4/extract-full.mjs +38 -0
- package/round4/extract-timeline.mjs +43 -0
- package/round4/find-sessions.mjs +13 -0
- package/round4/full-r4-l.md +4707 -0
- package/round4/full-r4-o-l.md +4300 -0
- package/round4/full-r4-os.md +1681 -0
- package/round4/full-r4-sf.md +4255 -0
- package/round4/full-r4-sq.md +1734 -0
- package/round4/gate-audit-relay-receipt.md +30 -0
- package/round4/gate-value-audit.md +52 -0
- package/round4/optimization-plan.md +165 -0
- package/round4/prereg.md +67 -0
- package/round4/prompt-R4-L.md +63 -0
- package/round4/prompt-R4-O-L.md +59 -0
- package/round4/prompt-R4-O-S.md +56 -0
- package/round4/prompt-R4-S-F.md +60 -0
- package/round4/prompt-R4-S-Q.md +66 -0
- package/round4/r4-final-report.html +347 -0
- package/round4/r4-os-timeline.txt +297 -0
- package/round4/r4-sf-timeline.txt +738 -0
- package/round4/r4-sq-timeline.txt +322 -0
- package/round4/r4l-timeline.txt +793 -0
- package/round4/r4ol-timeline.txt +729 -0
- package/round4/r4sf-timeline.txt +852 -0
- package/round4/r5-scenario-matrix.md +46 -0
- package/round4/result-S.md +171 -0
- package/round4/result-final.md +46 -0
- package/round4/result-quality.md +63 -0
- package/src/change-list.js +9 -0
- package/src/classify-change.js +6 -0
- package/src/command-cards.js +74 -0
- package/src/commit-guard.js +2 -0
- package/src/config-schema.js +64 -12
- package/src/contract-matrix.js +26 -5
- package/src/db.js +35 -4
- package/src/decision-distill.js +9 -3
- package/src/diagnostic-codes.js +2 -1
- package/src/docs-check.js +1 -1
- package/src/doctor-diagnostics.js +44 -2
- package/src/flow-draft.js +748 -0
- package/src/flow-parity.js +236 -0
- package/src/flow-review.js +184 -0
- package/src/flow.js +1492 -0
- package/src/foreign-declared.js +17 -1
- package/src/fr-index.js +396 -22
- package/src/fs-atomic.js +5 -1
- package/src/git-helper.js +2 -2
- package/src/greenfield-bootstrap.js +98 -0
- package/src/handoff.js +120 -7
- package/src/hunk-attribution.js +191 -0
- package/src/index.js +602 -21
- package/src/init.js +25 -8
- package/src/knowledge-classify.js +47 -1
- package/src/knowledge-digest.js +162 -0
- package/src/knowledge-quicklog.js +246 -0
- package/src/machine-draft.js +128 -0
- package/src/machine-interface.js +194 -7
- package/src/mcp-server.js +1 -0
- package/src/module-impact.js +51 -22
- package/src/module-resolve.js +3 -1
- package/src/preview-progress.js +160 -0
- package/src/progress/change-registry.js +11 -3
- package/src/progress/shared.js +3 -2
- package/src/progress.js +56 -13
- package/src/quicklog.js +44 -6
- package/src/redomain.js +147 -0
- package/src/review-material-pack.js +204 -1
- package/src/run/archive-distill.js +4 -2
- package/src/run/bg-sync.js +67 -0
- package/src/run/command.js +127 -10
- package/src/run/complete-handlers.js +363 -73
- package/src/run/complete.js +356 -74
- package/src/run/gate-snapshot-ledger.js +213 -0
- package/src/run/gate-snapshot.js +260 -38
- package/src/run/gates.js +482 -268
- package/src/run/green-cache.js +123 -0
- package/src/run/junction-rm.js +70 -0
- package/src/run/next.js +14 -0
- package/src/run/prompt.js +185 -55
- package/src/run/quick-audit.js +213 -14
- package/src/run/shared.js +123 -4
- package/src/run/stage.js +182 -216
- package/src/run/test-ledger.js +264 -0
- package/src/run/verify-quality-scan.js +84 -7
- package/src/scope-audit.js +6 -1
- package/src/sentinel-assertions.js +114 -0
- package/src/setup.js +3 -3
- package/src/spec-sync.js +41 -1
- package/src/stage-contract.js +26 -8
- package/src/stage-review-checklist.js +2 -0
- package/src/stage-review.js +7 -2
- package/src/stage-templates.js +157 -0
- package/src/stages/archive.js +2 -0
- package/src/stages/brainstorm.js +24 -106
- package/src/stages/execute.js +222 -85
- package/src/stages/knowledge.js +74 -1
- package/src/stages/plan-postcheck.js +385 -20
- package/src/stages/plan.js +23 -1
- package/src/stages/quick.js +10 -2
- package/src/stages/verify.js +4 -2
- package/src/sync.js +81 -23
- package/src/task-done.js +181 -0
- package/src/task-review.js +8 -55
- package/src/taskcard-frontmatter.js +57 -0
- package/src/test-bindings.js +549 -0
- package/src/timeline.js +218 -0
- package/src/ui-visual.js +175 -0
- package/src/verify-draft.js +214 -0
- package/src/verify-postcheck.js +919 -159
- package/src/verify-probes.js +103 -25
- package/src/watcher.js +1031 -0
- package/src/worktree-apply.js +44 -4
- package/src/worktree-deps.js +22 -8
- package/src/worktree-policy.js +42 -0
- package/src/worktree.js +102 -15
- package/templates/agents-instruction.md +37 -18
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# 审计带话落地回执(2026-09-21,写给 gate-value-audit.md 作者)
|
|
2
|
+
|
|
3
|
+
对照 [gate-value-audit.md](gate-value-audit.md) 末尾「必须转达给改第 5 项会话」的三条,逐条回执:
|
|
4
|
+
|
|
5
|
+
## ① fail-fast 前置(死信检查挪到门禁前)——已落地(83d91cd4,先于本回执)
|
|
6
|
+
|
|
7
|
+
module-impact 死信探针 + 预填注清零 error 门整块移到 verify test/lint 实测门之前,纯排序零语义变化。补充实证:R4-S-F 会话 db 计数死信拦 1 次 + **lint 硬拦 7 次**(比「两轮」更惨,166min 形状大半是这两件叠加)。
|
|
8
|
+
|
|
9
|
+
## ② lint 范围化覆盖 verify 门——已落地(83d91cd4,与①同笔)
|
|
10
|
+
|
|
11
|
+
采用**归属鉴定降档**而非 `{files}` 占位符(multi-agent-platform 的 lint 是 `cd backend && ruff && mypy && cd ../frontend && pnpm lint` 链式命令,全局文件列表无法安全替换进各子命令;归属鉴定对任意命令形状成立):失败输出提及文件 × 变更文件集**零交集 = HEAD 存量债 → advisory 放行**;有交集 / 输出无可识别路径(unattributable,纯配置错误类)→ 维持硬拦保守。quick + verify 两门同接,你点名的 R4-S-F 两个 ruff 债文件场景在新规则下第一轮就是 advisory。
|
|
12
|
+
|
|
13
|
+
## ③ 模块粒度范围化 + 600s 超时帽——本笔回执(超时半已落码;模块半是「配置补全」不是「新建机制」)
|
|
14
|
+
|
|
15
|
+
**重要修正:模块粒度范围化机制早已存在**——`test_strategy: module` + `modules:` 块(inline flow `name: {path, test}`)自 v3.24 建成,v3.29.3 起 `modules:` 在场即缺省收窄到 module 子集(ql-20260920-010)。考古期 227 次全量跑的成因:当时模块映射只配了 16 个条目(注释可见 08-01/08-10/08-20/08-22 逐次补录史)+ 更早版本缺省 full。你的「文件粒度会漏、模块粒度保真拦」结论与已建成机制的语义一致(命中=触碰模块全套测试),无需新建设计。
|
|
16
|
+
|
|
17
|
+
已做的两件事:
|
|
18
|
+
1. **超时改判落码**(本笔提交):`isTimeoutOnlyTestFailure` 纯函数 + verify/quick 两门接线——纯超时(所有失败单元 reason 均超时、无任何挂测)→ advisory 降档带三路处置指引;任一真实挂测维持硬拦(你的 12 次真拦防线不动)。36 次假拦桶根治。
|
|
19
|
+
2. **平台仓 modules 块补全**(机器本地 local.yaml,不入库):22 个缺失 backend 模块 + be-core(backend/tests 核心套)补齐到 39 条目,`extractModules` 解析验证 backend/app/modules 全覆盖——消掉「改到未映射模块 → 0 命中跳测 / 混合命中漏跑」陷阱。沿用既有约定(`-q --no-cov -n auto`);脆弱用例处置(daemon fragile 三件套独跑等)原样保留。
|
|
20
|
+
|
|
21
|
+
## 剩余开放项(不抢跑,留给你/后续会话拍板)
|
|
22
|
+
|
|
23
|
+
- **尾截 46 次不可判**:工件只存 output_tail 的局限。模块子集启用后单模块输出短、尾部覆盖率天然升,预计大幅缓解;要不要再扩 output_tail 上限或落全量日志,等新数据说话。
|
|
24
|
+
- **真拦 12 次的反事实**(不拦会不会被 pre-commit/CI 兜住):同意你「拿不到」的判断,不追。
|
|
25
|
+
- **lint 台账明细滚动窗口太短**(真拦率算不了):小刀口,随批可修。
|
|
26
|
+
- **平台仓 local.yaml 的持久化**:modules 块在机器本地文件里,换机即丢——建议把 39 条目镜像进 local.yaml.example(入库)由仓主拍板。
|
|
27
|
+
|
|
28
|
+
## R4 终态通报
|
|
29
|
+
|
|
30
|
+
R4-S-F 已归档(22:14→01:00,~166min,db 硬账);R4-L / R4-O-L 状态未查(本会话聚焦修复)。全量核算收口 H1-H6 等你终态后出——判定线在 prereg.md,别忘 269min 对照臂是 Fork 续跑(混杂已声明)。
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# 门禁价值考古——测试门的真拦/假拦判读(2026-09-21)
|
|
2
|
+
|
|
3
|
+
> 数据源:multi-agent-platform 主仓 `.runtime/verify-runs/` 320 个运行工件(227 次有效 test 门运行)+ `verify-lint-tally.json` + 5 个 friction-tally + 2 次 R4 实测。
|
|
4
|
+
> 样本期:2026-07-22 → 2026-09-20(约 2 个月,49 个变更发生过失败)。
|
|
5
|
+
> 用途:回答「模块全量门禁在期望上拦过什么」,为 3.29.5 第 5 项(测试口径范围化)提供粒度决策依据。
|
|
6
|
+
|
|
7
|
+
## 测试门(227 跑 / 106 败 / 47% 失败率)
|
|
8
|
+
|
|
9
|
+
| 分桶 | 次数 | 占比 | 判定 |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| **real-test-fail(真拦)** | **12** | 11% | pytest/vitest 摘要行 failed>0——agent 声称完成但测试实测挂 |
|
|
12
|
+
| timeout(≥590s 或 exit 143) | 36 | 34% | 假拦(门禁 600s 上限杀) |
|
|
13
|
+
| 尾截不可判(尾部全 passed 但 exit 1) | 46 | 43% | 多模块串行跑、失败在尾部窗口外的模块——真/假不可判(工件只存 output_tail) |
|
|
14
|
+
| runner 崩溃(tinypool/heap) | 3 | 3% | 假拦(环境) |
|
|
15
|
+
| env/配置错(--no-cov 未装、模块路径不存在) | 2 | 2% | 假拦(环境) |
|
|
16
|
+
| fixture 装配错(16 errors) | 1 | 1% | 存疑 |
|
|
17
|
+
| unknown | 6 | 6% | — |
|
|
18
|
+
|
|
19
|
+
**真拦率区间:11%(下界 12/106)~ 55%(上界含尾截桶)**;确认假拦(超时+崩溃+环境)≥ 40%。
|
|
20
|
+
|
|
21
|
+
## lint 门(68 跑 / 19 败 / 28%)
|
|
22
|
+
|
|
23
|
+
滚动台账只留 3 条明细(2 超时 + 1 泛化),另有两个已知存量债拦截实例(R4-S-Q quick 门、R4-S-F verify 门)。明细留存不足,无法算真拦率。
|
|
24
|
+
|
|
25
|
+
## 关键抽验:真拦的「形态」决定范围化粒度
|
|
26
|
+
|
|
27
|
+
**案例 2026-09-02-changes-overview-card(2 次 verify 门真拦,各 10 个测试挂)**:
|
|
28
|
+
- 变更触碰面(apply-pathspec):`backend/app/modules/daemon/{model,router,runtime/service,service}.py` + 前端 + sillyhub-daemon 等 19 文件;
|
|
29
|
+
- 门禁挂点:`backend/app/modules/daemon/host_fs/tests/test_delegate_worktree.py`(9 个)+ `daemon/tests/test_worker_redispatch.py`(1 个)——**同模块、但不在变更自己的测试文件清单里**。
|
|
30
|
+
|
|
31
|
+
结论:
|
|
32
|
+
1. **文件粒度范围化(只跑 touched files 的测试)会漏掉这种真拦**——改模块代码弄挂了同模块相邻测试,agent 自己声明的测试面看不见它;
|
|
33
|
+
2. **模块粒度范围化(跑任何触碰模块的全套测试)能保住**——挂点全在 `app/modules/daemon` 触碰模块内;
|
|
34
|
+
3. 超时 36 次 + 尾截 46 次的噪声大头来自「跑所有模块」——范围化到触碰模块同时砍时长与假拦。
|
|
35
|
+
|
|
36
|
+
## 成本-收益账(供产品决策,不下结论)
|
|
37
|
+
|
|
38
|
+
- 227 次门禁 × 5–9min ≈ **19–34 小时门禁时间**,换 **≥12 次真拦**(每次都是「agent 说做完了但测试说没有」)≈ 1.6–2.8h/次真拦;
|
|
39
|
+
- 对照组(OpenSpec 无门禁):这 12 次会直接带病提交,靠 pre-commit/CI 或人工发现;
|
|
40
|
+
- CLAUDE.md 规则 0「只跑自己修改相关的测试」语义歧义(文件级还是模块级)——本数据支持**按模块级**解释。
|
|
41
|
+
|
|
42
|
+
## 给 3.29.5 第 5 项的落地建议(需转达)
|
|
43
|
+
|
|
44
|
+
- scope 取 **touched modules**(触碰模块的全套测试),不要 touched files;
|
|
45
|
+
- 超时帽 600s 需同步处理(36 次假拦的头号来源——范围化后模块内超时应大幅减少,但帽本身对 daemon/frontend 大模块仍可能杀);
|
|
46
|
+
|
|
47
|
+
## 本判读的局限
|
|
48
|
+
|
|
49
|
+
- 单仓样本(multi-agent-platform,测试密集型 monorepo);
|
|
50
|
+
- 46 条尾截不可判未深挖(需逐条对 git 历史判「修复提交是否紧随」才能定真伪);
|
|
51
|
+
- lint 门明细留存不足;
|
|
52
|
+
- 「真拦 = 有价值」仍是覆盖率视角,未追踪这 12 次如果不拦的实际损失(有无被 pre-commit/CI 兜住的反事实不可得)。
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# sillyspec 效率优化整体方案 v3(2026-09-21 整合版)
|
|
2
|
+
|
|
3
|
+
> 靶子(R4 实测,账单当量口径 = 新入 1× / 缓存 ~0.1× / 输出 3–5× 折算):
|
|
4
|
+
> **大任务账单当量 2.4×(8.04 当量差)= 缓存体量差 55%(4.45)+ 扇出冷启动 26%(2.09)+ 输出差 19%(1.50,其中 77% 是子代理代码/测试产出=交付厚度,不砍)**。
|
|
5
|
+
> 墙钟:大 2×、小 1.3×,差距全在非模型时间(门禁循环 + 编排等待)。
|
|
6
|
+
> 红线:**不动四道防线**(审查/门禁/核验/资产);不砍交付厚度(输出差是产品)。所有优化只打三样:冗余重读、冷启动、等待。
|
|
7
|
+
|
|
8
|
+
## 战线 A:已落地,待 R5 验收(不重规划)
|
|
9
|
+
|
|
10
|
+
| 项 | 状态 |
|
|
11
|
+
|---|---|
|
|
12
|
+
| 门禁四项:模块粒度范围化 / fail-fast 前置 / lint 归属降档两门 / 超时帽 | 已提交(83d91cd4 / 2eba595c,模块粒度 v3.24 在场) |
|
|
13
|
+
| ~~增量复用~~ | **正式摘出(2026-09-21 R5 准备核对)**:src/ROADMAP/终报/batch2 四处查无落码与定义,承办无着落;疑即 ROADMAP 延后项「探针增量缓存」(quick-4af1acc3 D②:失效面广需独立失效契约)——按延后项处理,不计入战线 A,R5 验收不背此项 |
|
|
14
|
+
| gate verify lint parity / module-impact 引号+多map / Wave 并发帽 ≤3 | 已提交 61995a32 |
|
|
15
|
+
| 缺陷 A/B(资产尾 export + --linked-changes 管道) | 已提交 954946ae |
|
|
16
|
+
|
|
17
|
+
**R5 前置核对(2026-09-21 落盘)**:①对撞仓基线 50736b6ef / 53c67e02a 经 git cat-file 实证均在(multi-agent-platform 主树干净);Temp 残留一批 prunable gate worktree——R5 跑前 `git worktree prune`。②account.mjs 已加三分+当量列(v2),基线钉死:R4-L 当量@3× 13.89M / R4-O-L 5.87M / **比值 2.37×**(@5× 口径 2.47×,复现终报 2.4×);R5 判定一律用同脚本同口径复算,不比绝对值。③**B-④ 接线缺口**:材料包机制已落地但 execute 主链未主动生成(task-02 接线最小化,仅 options.materials 传入时渲染)——R5 的 B-④ on/off 对照前需补接线(小 quick 一项,或并入 batch2 M3 派发分组落点)。
|
|
18
|
+
|
|
19
|
+
**R5 验收点**:门禁轮次 ≤2;模块粒度下真拦率不降(用 gate-value-audit 的 12 次真拦案例回归);大任务墙钟无额度事故(并发帽生效)。前置对账(v3.2):五项中四项已核已交(模块粒度 v3.24 在场 / fail-fast+lint 归属 83d91cd4 / 超时降档 2eba595c),「增量复用」src 与终报均无落码痕迹——详 v3.2 第 4 条,R5 前与承办会话对齐状态,勿按「已在办」默认计入。
|
|
20
|
+
|
|
21
|
+
## 战线 B:扇出账单治理(打 55%+26% 的差额)
|
|
22
|
+
|
|
23
|
+
### B-① 读取范围引导(打冷启动 + 重读体量)——**已验靶:不实,实现项砍(2026-09-21,详 round4/b1-b1-target-validation.md)**
|
|
24
|
+
- **前置验证(先做,30min)**:读 task-08 的 transcript,判定 8.6M 是越界读还是任务规模相称——**靶子不实不立项**。
|
|
25
|
+
- **验靶结论**:越界读零发生(62 次调用全在契约链内);8.6M = 58 轮 × 148K 轮均上下文的缓存重发(新鲜输入仅 186K);全扇出 19 子代理名义 41.77M 中新鲜仅 1.34M(3.2%)。读上界太小,读清单注入无钱可省——**第 2 批实现项下线**,allowed_paths 现状约束维持。
|
|
26
|
+
- 杠杆换位到 **B-⑥ 轮数纪律**(见下)与 B-④。
|
|
27
|
+
|
|
28
|
+
### B-② 调研摘要共享(打实现侧重读)
|
|
29
|
+
- **做法**:调研产出追加一份 CLI 盖章 digest(两页,**每条契约事实带 file:line 锚点 + 「关键契约回源核对」条款**);实现子代理读 digest 替代重读原始源码。
|
|
30
|
+
- **红线**:digest 转错一处 = 内部版错键正典(我们刚批判完的模式)——**走完整流程**,设计决策落盘(锚点格式 / 失效时机 / 回源义务)。
|
|
31
|
+
- 预期:实现侧重读降(调研段自身的 9.4M 压不动,靠 B-③ 摊)。
|
|
32
|
+
|
|
33
|
+
### B-③ batch 默认前置到 plan(打重复重建)
|
|
34
|
+
- **证据**:R4-S-F 5 任务 2 batch → execute 仅 6M/17min。
|
|
35
|
+
- **做法**:batch 粒度决策放 **plan 阶段**(文件正交 + 无契约链的任务默认并批,2–4/批);execute 不加推力——**保 Wave 内并发 ≥3 的墙钟亮点**,不拿墙钟换 token。
|
|
36
|
+
- 属性:提示词级 + plan-postcheck 可加机械提醒。
|
|
37
|
+
|
|
38
|
+
### B-④ 材料包机制扩展到 execute(打冷启动)
|
|
39
|
+
- 复用 `assembleStageReviewMaterials` 基建:实现子代理拿 CLI 裁好的合同摘录(design 相关节 + 接口签名 + 目标文件锚点),不自行通读全量文档。
|
|
40
|
+
- **加分机制**:统一材料包 = 统一前缀 → 缓存命中更稳(面值之外的真实账单收益)。
|
|
41
|
+
- **装配顺序契约(v3.2)**:跨任务稳定内容(design 通摘 / 接口签名)在前、任务专属内容(任务卡 / 变更面摘录)在后——统一前缀的缓存命中依赖稳定段先行,混排则任务差异打断前缀、面值收益折半。
|
|
42
|
+
- 可直接进(机制在,低风险)。
|
|
43
|
+
|
|
44
|
+
### B-⑤ 子代理模型分级(打单价,不动 token)
|
|
45
|
+
- **必须先 A/B**:同任务双档各跑——便宜档若多轮返工(turn↑→重发↑)token 反升,且核验行为可能弱化(错键正是核验拦的)。**审查/verify 保持旗舰档是红线**。
|
|
46
|
+
- 只在 A/B 证实「实现档返工率不升」后启用。
|
|
47
|
+
|
|
48
|
+
### B-⑥ 轮数纪律(打轮数乘数;B-① 验靶换位新增,2026-09-21)
|
|
49
|
+
- **证据**:扇出名义体量 = Σ(轮数 × 轮均上下文),新鲜内容仅 3.2%——轮数是另一半杠杆。task-08 的 58 轮里 Edit×7(相邻同文件逐个改)+ TodoWrite×4(每条占一轮重发全上下文)+ 测试 Bash 多次循环。
|
|
50
|
+
- **做法**(提示词级,execute 派发 prompt 两三行):① 相邻同文件的多个改动合并为一次 Edit 批量提交;② TodoWrite 降频(阶段边界用,不在实现中途连发);③ 测试验证合并跑(一次 Bash 串行多查),不逐文件跑。
|
|
51
|
+
- 属性:提示词级;R5 用子代理请求数验收(扇出 522req 基线)。
|
|
52
|
+
|
|
53
|
+
### 战线 B 预期(保守)
|
|
54
|
+
扇出段 42.3M → **28–32M**(上界 25M 需 ①②③ 全中且提示词被遵守);账单当量比 2.4× → **~1.7–1.9×**。到不了 parity 也不该到——剩余差额 = 上下文保险 + 独立审查 + 交付厚度的价格。
|
|
55
|
+
|
|
56
|
+
## 战线 C:编排会话上下文治理(打主会话 56.8M 的一部分)
|
|
57
|
+
|
|
58
|
+
### C-1(P1,quick 可落)
|
|
59
|
+
- **B1 子代理返回契约**:返回体 ≤25 行结构化摘要(verdict / 触碰文件数 / 测试一行 / 偏差),细节落盘按需 Read——真相由门禁对账,不靠返回体转述。
|
|
60
|
+
- **B2 审查回收瘦身**:verdict 回一行 + blockers + review.json 路径(稳定路径已在),主代理按需 Read 工件。
|
|
61
|
+
- **B3a prompt 审计先行**:只读脚本统计 R4 五份 transcript 各步 prompt 规则的「引用/遵守/从未触发」,产出瘦身候选——**测量完再删**(四律这轮刚实证有效,承重规则不动)。
|
|
62
|
+
|
|
63
|
+
### C-2(P2,CLI 小刀)
|
|
64
|
+
- **B4a `sillyspec handoff --change <名>`**:进度库机械生成 ≤80 行交接包(阶段/Wave 状态/blockers/决策 ID/下一步命令)——把「任务太大爆窗」从硬墙变成操作规程。零状态机改动。
|
|
65
|
+
- B3b 依据 B3a 审计瘦身步骤 prompt。
|
|
66
|
+
|
|
67
|
+
### C-3(P3,立项评估,勿直接开码)
|
|
68
|
+
- B4b 编排自动分段:先让 B4a 人工规程跑两个真实超大变更,再决定自动化。
|
|
69
|
+
- 目标:R4-L 量级任务主会话峰值 **377K → <250K**,>150K 请求占比 81% → <50%。
|
|
70
|
+
|
|
71
|
+
## 执行顺序(依赖排序)
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
第 1 批(并行,本周):
|
|
75
|
+
B-①前置验证(30min) ──不实则砍①
|
|
76
|
+
B-③ plan batch 默认(提示词+postcheck 提醒)
|
|
77
|
+
B-④ 材料包扩展(复用基建,含装配顺序契约)
|
|
78
|
+
C-1 B1/B2 返回契约+回收瘦身(提示词)
|
|
79
|
+
C-1 B3a prompt 审计(只读脚本)
|
|
80
|
+
R5 探针套件:错键类+审查钳用例(verify-probes 基建增量造)──防线回归硬门的判法依赖(v3.2)
|
|
81
|
+
第 2 批(依据第 1 批):
|
|
82
|
+
B-⑥ 轮数纪律(提示词,B-① 验靶换位顶替原「读清单注入」)
|
|
83
|
+
C-2 B4a handoff 命令
|
|
84
|
+
B-⑤ 模型分级 A/B
|
|
85
|
+
第 3 批(完整流程立项):
|
|
86
|
+
B-② 调研 digest(锚点/失效/回源契约设计)
|
|
87
|
+
C-2 B3b prompt 瘦身(依据审计)
|
|
88
|
+
C-3 自动分段评估
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## R5 验收协议(一等指标升级)
|
|
92
|
+
|
|
93
|
+
| 指标 | R4 基线 | 目标 | 判法 | 依赖批次 |
|
|
94
|
+
|---|---|---|---|---|
|
|
95
|
+
| **账单当量比(大任务)** | 2.4× | ≤1.8×(拉伸) | account.mjs 加折算列(三分已有查询) | ④ 机制 + ①②③ 概率 |
|
|
96
|
+
| 扇出段 tokens | 42.3M | ≤32M(硬门) | 子会话聚合 | ④ 机制 + ①③ 概率 |
|
|
97
|
+
| 门禁轮次 | 9(S-F 病理)/ 2(稳态) | ≤2(硬门) | 进度库 | 战线 A |
|
|
98
|
+
| 大任务墙钟·不劣化 | 156min | ≤156min(硬门) | 会话时间戳 | 全体——「不拿墙钟换 token」可检化 |
|
|
99
|
+
| 大任务墙钟·进取 | 156min | ≤120min(拉伸) | 会话时间戳 + **阶段级拆账** | ①④+C-1,概率项无机制保票 |
|
|
100
|
+
| 主会话峰值单请求 | 377K | <250K | MAX() 查询 | 第 3 批 B3b——R5 只记录不判罚 |
|
|
101
|
+
| >150K 请求占比 | 81% | <50% | 计数查询 | 第 3 批 B3b——R5 只记录不判罚 |
|
|
102
|
+
| 防线回归 | — | 错键类案例仍被拦;审查钳仍达标 | **探针套件(第 1 批交付)** + transcript | 第 1 批探针 |
|
|
103
|
+
|
|
104
|
+
场景:50736b6ef / 53c67e02a 同基线重放(两 SHA 是对撞仓 multi-agent-platform 的基线、非本仓对象——跑前核那边基线与 worktree 卫生),小 ×2 + 大 ×1,版本钉死首步回显。**R5 时点 = 第 1+2 批完成后**;250K / 50% 两行押第 3 批 B3b,R5 只记录不判罚,第 3 批后复测。**2 跑取分布,不外推;提示词级项不达标即升级机制化(路径:CLI 截断注入/机械组装)。** 墙钟 ≤120min 无 per-item 机制预算——R5 必须落盘阶段级墙钟拆账(调研 / plan / execute 扇出 / verify / 归档 / 门禁等待),作为 R6 的预算基线,先测后诺(同 B3a 纪律)。
|
|
105
|
+
|
|
106
|
+
## 诚实边界
|
|
107
|
+
|
|
108
|
+
- B-①②③⑤ 全含概率性或前提验证,百分比是方向估计,唯一承诺是 R5 可测;
|
|
109
|
+
- 55% 的缓存体量差不可能清零——隔离上下文的语义就是重读,治理目标是「去冗余」不是「去重读」;
|
|
110
|
+
- 剩余 ~1.7× 账单差 + 墙钟差里,含交付厚度(输出 19% 差额)与独立审查的固定成本——这部分是定价,不是缺陷,对外口径已按此表述。
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
# 评审修订 v3.1(2026-09-21,外部评审采纳记录)
|
|
115
|
+
|
|
116
|
+
## 采纳并修订的六处
|
|
117
|
+
|
|
118
|
+
1. **B4a 改为 enrich handoff(已验证属实)**:`src/handoff.js` 已存在(113 行,`buildHandoff`/`nextStageSuggestion`),现产出为 session 导出 + 下一阶段建议的瘦包。C-2 第 2 批工作量修正为「进度库多抽几段进现有 buildHandoff」(Wave 状态 / 未决 blockers / 决策 ID / 下一步命令行,≤80 行封顶),**不是新命令立项**。
|
|
119
|
+
2. **R5 验收拆硬门/拉伸**:
|
|
120
|
+
- **硬门**(不达标即失败):扇出 ≤32M · 门禁轮次 ≤2 · 防线回归(错键类仍被拦 + 审查钳达标)· 大任务墙钟 ≤120min(稳态口径)
|
|
121
|
+
- **拉伸**(①②全中才承诺):账单当量 ≤1.8×
|
|
122
|
+
- 对外口径维持 1.7–1.9×;不再把拉伸当硬门。
|
|
123
|
+
3. **墙钟基线钉死**:比较一律用**稳态 156min**(门禁单轮重构口径),毛墙钟 185min 仅作背景。「额度事故不再发生」是并发帽的验收项(R5 零事故),不从基线剔除。
|
|
124
|
+
4. **判定路径统一显式勾掉**:gate verify PASS vs verify --done FAIL 的口径矛盾**已修**(61995a32:runGate verify 补 verify-lint,与 --done 同引擎同归属降档);tail 截断→失败明细稳定路径**已修**(794529e5)。两项归战线 A 待 R5 验收,第 1 批不重开。
|
|
125
|
+
5. **B-③ 加并发护栏**:plan-postcheck 增机械提醒——**并批后单 Wave 在飞子代理数 ≥ min(3, 该 Wave 任务数)**;batch 决策只在 plan 定,execute 不加推力。外推边界写明:S-F 5→2 batch/6M 是小任务证据;大任务 12 实现代理并批**收益在 token、成本在墙钟**,R5 大任务跑单独归因。
|
|
126
|
+
6. **B-④ 预期收窄 + 升第 1 批必达**:材料包只压「design/合同文档通读」,压不动「要改的源码本身」——与 B-① 互补但**不得双重算账**。
|
|
127
|
+
|
|
128
|
+
## 优先级调换(接受)
|
|
129
|
+
|
|
130
|
+
**第 1 批必达改为:B-④ 材料包扩面 + C-1(B1 返回契约 / B2 回收瘦身 / B3a 审计)+ B-③(plan 默认 + postcheck 护栏)**——机制确定收益优先于又一条 hint。**B-① 降级为仅保留 30min 验靶**,验证属实再排实现。
|
|
131
|
+
|
|
132
|
+
## 新增纪律(三条,全部采纳)
|
|
133
|
+
|
|
134
|
+
- **prompt 注入上限**:每加一段注入必须写明「替换哪段旧文」或配 CLI 截断上限——防优化文案自己吃掉 377K→250K 指标。
|
|
135
|
+
- **互斥实验标签**:①②④ 都声称「少读」,R5 至少 B-④ on/off 同基线各一跑,归因可分。
|
|
136
|
+
- **A 先于 B**:R5 小任务两跑**先判门禁 ≤2**,再谈扇出 tokens——门禁稳态前账单优化会被墙钟噪声淹没。
|
|
137
|
+
|
|
138
|
+
## B-⑤ 验收补一维(采纳)
|
|
139
|
+
|
|
140
|
+
A/B 双档除返工率外,加测**事实核验类工具调用密度**(联网搜真名 / 读 SDK d.ts 的次数)——错键故事里「会不会核验」比「会不会写完」更关键;便宜档核验密度显著下降即否决。
|
|
141
|
+
|
|
142
|
+
## 对反馈的一处澄清(非驳回)
|
|
143
|
+
|
|
144
|
+
反馈第 4 条「第 1 批缺确定 ROI 墙钟项」的时态已过:判定路径统一与 tail 稳定路径在评审前已提交(61995a32 / 794529e5),本次修订将其从隐含改为显式勾掉(见上第 4 条)。其余五处修订 + 优先级调换 + 三条纪律全部接受。
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
# 评审修订 v3.2(2026-09-21,第二外部评审采纳记录——验收协议三硬伤修复)
|
|
149
|
+
|
|
150
|
+
前置:本轮评审先核事实后评方案,承重声明全部属实——handoff.js 113 行(buildHandoff/nextStageSuggestion,src/handoff.js:23/48)、assembleStageReviewMaterials 复用面(review-material-pack.js,plan/execute/brainstorm 三处引用)、account.mjs 三分查询 + db.model_usage 本有 cache_creation/cache_read 列(折算列是小改)、review.json 稳定路径(src/index.js:664)、gate-value-audit 12 真拦/36 超时 34%/227 门禁、42.3M/156min 在 r4-final-report.html 落盘、三提交号(61995a32/954946ae/794529e5)在。方案地基为实,三红线与三纪律不动。与 v3.1 的纯追加不同,本次对 R5 验收表与执行顺序**就地重写**(表是操作性章节,留旧表加补丁会迫使读者自行对账),修订记录在此。
|
|
151
|
+
|
|
152
|
+
## 三处验收协议修复
|
|
153
|
+
|
|
154
|
+
1. **墙钟 ≤120min 从硬门降为拉伸,换入「不劣化 ≤156min」硬门**。依据:基线 156 本是门禁单轮重构口径(v3.1 第 3 条),门禁收益已折入基线;B-③ 明确不拿墙钟换 token,B-①/④/C-1 全为概率项——120 无任何 per-item 机制保票,硬门失败时无法区分「方案失效」与「归一化基线乐观」。不劣化硬门把「不拿墙钟换 token」从口号变成可检承诺;R5 落盘阶段级墙钟拆账(六段),R6 才有真预算基线。**硬门集合相应改定:扇出 ≤32M · 门禁轮次 ≤2 · 防线回归 · 墙钟不劣化 ≤156min(另:并发帽 R5 零事故维持);拉伸:账单当量 ≤1.8× + 墙钟进取 ≤120min。**对外口径同步。
|
|
155
|
+
2. **防线探针套件排入第 1 批**。「探针 + transcript」判法依赖的用例集原先不在任何批次——12 次真拦来自两个月 227 次历史门禁,R5 三跑自然撞不到。基于 verify-probes 基建(src/verify-probes.js 在场)增量造错键类 + 审查钳用例,硬门才有可执行判法。错键形态以 r4-final-report「错键生产 no-op、测试全绿掩护」为准。
|
|
156
|
+
3. **验收表增「依赖批次」列 + R5 时点钉死**。377K→<250K、81%→<50% 实押第 3 批 B3b(B3a 只审计不删)——R5 时点定为第 1+2 批完成后,此两行只记录不判罚,第 3 批后复测;消除「表行达标承诺」与「批次排期」的错位。
|
|
157
|
+
|
|
158
|
+
## 两处状态对账(操作性,非方案缺陷)
|
|
159
|
+
|
|
160
|
+
4. **战线 A「增量复用」状态存疑**:五项中四项已核已交(模块粒度 v3.24 在场 / fail-fast+lint 归属 83d91cd4 / 超时降档 2eba595c),唯「增量复用」在 src 与 r4-final-report 均无落码/定义痕迹,changes/ 亦无活跃变更;ROADMAP 登记的延后项「探针增量缓存」(quick-4af1acc3 D②:失效面广需独立失效契约)疑为同物——若同物则已延后,应从战线 A 摘出重归属。R5 前与承办会话对齐,勿按「已在办」默认计入(已同步批注到战线 A 验收点)。
|
|
161
|
+
5. **重放基线在对撞仓**:50736b6ef / 53c67e02a 经 git cat-file 验证非本仓对象;worktree 路径实证基线在 multi-agent-platform 仓——R5 跑前核那边基线 SHA 与 worktree 卫生(防未来提交泄露规则沿用 R4 prompt 既有一套)。
|
|
162
|
+
|
|
163
|
+
## 一处实现注记
|
|
164
|
+
|
|
165
|
+
6. **B-④ 装配顺序契约**(已写入 B-④ 条目):统一前缀的缓存命中依赖稳定段先行——跨任务稳定内容(design 通摘/接口签名)在前、任务专属内容(任务卡/变更面摘录)在后;混排则任务差异打断前缀,面值收益折半。
|
package/round4/prereg.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# R4 对照实验·预注册(2026-09-20,跑前锁死)
|
|
2
|
+
|
|
3
|
+
## 目的
|
|
4
|
+
|
|
5
|
+
验证 3.29.1–3.29.4 效率修复栈(波次拓扑守卫 / 假红分诊去重 / 审查经济学四律 / 卡片直填 / 验证批处理 / quick 资产尾)在受控重放下的真实效果。
|
|
6
|
+
|
|
7
|
+
## 设计
|
|
8
|
+
|
|
9
|
+
**重放第 3 轮任务、同基线、只换工具版本**(当轮 ~3.28/3.29.0 → 3.29.4)。老版本数据直接作对照臂,不重跑;OpenSpec 侧不重跑(复用第 3 轮实测)。
|
|
10
|
+
|
|
11
|
+
## 运行矩阵
|
|
12
|
+
|
|
13
|
+
| 跑 | 任务 | 通道 | 工作树(platform 仓) | 基线 | 对照臂 |
|
|
14
|
+
|----|------|------|----------------------|------|--------|
|
|
15
|
+
| R4-L | session-replay 大任务 | 全流程 | `.sillyspec/.runtime/worktrees/2026-09-20-r4-session-replay` | 53c67e02a | 第 3 轮同基线重做 **269min**(本地 db 硬账:681 请求 / 104.13M tokens / 12 子代理;db 标题实证为 **Fork 续跑**) |
|
|
16
|
+
| R4-S-F | autocompact 小任务 | 全流程(钉死) | `.../2026-09-20-r4-autocompact-full` | 50736b6ef | 第 3 轮 sillyspec 全流程 **39.5min / 17.2M**(会话在平台服务器侧,本地 db 不可复核,取当轮分析值) |
|
|
17
|
+
| R4-S-Q | autocompact 小任务 | quick(钉死) | `.../2026-09-20-r4-autocompact-quick` | 50736b6ef | OpenSpec **25min / 33.3M**(产品级参照,同上来源) |
|
|
18
|
+
| R4-O-L | session-replay 大任务 | OpenSpec 1.13.1 | `.../2026-09-20-r4-openspec-large` | 53c67e02a | 第 3 轮 openspec 实测(**也是 Fork 续跑**:288 请求 / 80.03M / 跨度 177.8min)——重跑目的:剔除 fork 混杂的同条件横评 |
|
|
19
|
+
| R4-O-S | autocompact 小任务 | OpenSpec 1.13.1 | `.../2026-09-20-r4-openspec-small` | 50736b6ef | 第 3 轮 openspec **25min / 33.3M** |
|
|
20
|
+
| R4-L2 | 同 R4-L | 同 | 复用 | 同 | **条件跑**:仅当 R4-L 墙钟结论与机制证据矛盾时补 |
|
|
21
|
+
|
|
22
|
+
## 对比的三层结构(怎么比)
|
|
23
|
+
|
|
24
|
+
1. **纵向主判定**(修复有没有用):R4-L vs 269min、R4-S-F vs 39.5min——同任务同基线同 harness,唯一变量是 sillyspec 版本(3.28/3.29.0 → 3.29.4)。
|
|
25
|
+
2. **横向对撞**(跟 OpenSpec 拉平没有):R4-L vs R4-O-L、R4-S-Q vs R4-O-S——两侧都是全新会话、同基线、同时段,第 4 轮新增(第 3 轮两侧数据均带 fork 混杂,作参考不作判定)。
|
|
26
|
+
3. **机制点**(为什么):H2 五点二进制判定,横纵向解释力来源。
|
|
27
|
+
|
|
28
|
+
## 固定变量(防污染清单,逐条对应前几轮踩过的坑)
|
|
29
|
+
|
|
30
|
+
- 同机、同 harness(zcode 平台)、同模型、**全新会话**——禁 fork/继承续跑(第 2 轮最大 token 混杂源是分叉继承胖上下文)。
|
|
31
|
+
- 任务文本 = 归档 proposal verbatim(brief-autocompact.md / brief-session-replay.md)。
|
|
32
|
+
- 基线 commit 钉死(上表);npm 全局 3.29.4 钉死,会话首步回显 `sillyspec --version` 进 transcript 作证。
|
|
33
|
+
- `local.yaml` 三工作树同拷(主仓复制)——否则 quick --done 测试门禁静默跳过。
|
|
34
|
+
- 会话标题含 `R4-` 前缀(db 归账定位用)。
|
|
35
|
+
|
|
36
|
+
## 假设与判定线
|
|
37
|
+
|
|
38
|
+
| # | 假设 | 判定线 | 载体 |
|
|
39
|
+
|---|------|--------|------|
|
|
40
|
+
| H1 | 大任务墙钟量级下降 | R4-L ≤150min 通过(269 的 56%);≤100min 理想 | R4-L |
|
|
41
|
+
| H2 | 机制真实生效(非纸面) | 以下 5 点 ≥3 中:a 波次并发(同波 ≥2 任务窗口重叠≥1 次);b 无假红循环(同 gate 连续 FAIL≥3 计为循环);c verify 批量补完(缺口单轮批补非逐条多轮);d 审查请求钳 design≤12/plan≤10/QA≤15;e plan 零卡片填充子代理 | R4-L |
|
|
42
|
+
| H3 | 提示词级修复可靠性 | H2-d 不达标 ⇒ 结论「四律被 agent 无视,需机制化」,列入后续工作项 | R4-L |
|
|
43
|
+
| H4 | quick 资产尾 | R4-S-Q `--done` 后:`2026-09-20-r4-linked-parent` 被 lite-archive 且 FR/decisions 落盘 knowledge | R4-S-Q |
|
|
44
|
+
| H5 | 小任务全流程提速 | R4-S-F ≤30min(39.5 降 ≥24%)且无假红循环 | R4-S-F |
|
|
45
|
+
| H6 | 小任务轻通道对齐 | R4-S-Q ≤20min 且 --done 一次过 | R4-S-Q |
|
|
46
|
+
|
|
47
|
+
**量级原则**:单跑噪声大,结论只对量级跳变负责,不对 ±20% 负责;机制点(二进制可判)优先于墙钟均值。
|
|
48
|
+
|
|
49
|
+
## 已知混杂(事先声明,防事后找补)
|
|
50
|
+
|
|
51
|
+
1. 269min 对照会话**已确证为 Fork 续跑**(db 标题「新版 Fork of …」实证)——fork 继承胖上下文是第 2 轮实证的最大 token 混杂源,对照臂墙钟天然偏悲观;若 R4-L 大幅优于对照,墙钟结论保守表述,机制点为主证据。
|
|
52
|
+
2. brief 用归档 proposal 而非用户原始口语 prompt(信息量等价,措辞不同)。
|
|
53
|
+
3. 小任务基线含 redlines.yaml、大任务基线不含——各自忠实重放第 3 轮当侧条件,非失衡。
|
|
54
|
+
4. R4-S-Q 的 linked-parent 为手放 fixture(H4 机制验证用);其 requirements 为 3 条精简版,不超 proposal 已有信息。
|
|
55
|
+
5. R4-S-Q 钉 quick、R4-S-F 钉全流程——通道是实验变量,不是 agent 自选(路由行为不在本轮假设里)。
|
|
56
|
+
|
|
57
|
+
## 采集
|
|
58
|
+
|
|
59
|
+
- **R4 会话必须在本地 zcode 新建**(标题带 `R4-` 前缀)——本地 db 才能归账;第 3 轮小任务会话在平台服务器侧、本地 db 无痕,勿重蹈。若某跑必须在平台服务器执行,usage 从平台会话回放页读(回放功能已上线,正好自举)。
|
|
60
|
+
- **zcode db**(`round4/account.mjs`):按标题 `R4-` 定位主会话,`parent_id` 递归滚子会话;requests / tokens / model-time 汇总。`started_at` 一律数值 epoch-ms 比较(第 2/3 轮各踩过一次字符串比较静默错坑;`session.time_created` 同为数值 ms,本日已复核)。
|
|
61
|
+
- **transcript**:`analyze-transcript.cjs` 命令级重复/慢命令。
|
|
62
|
+
- **平台侧**:progress db 阶段时间戳、write-audit.jsonl。
|
|
63
|
+
- **机制点人工判**:波次并发=同波两任务执行窗口重叠;假红=gate FAIL 计数;审查钳=review 子会话请求数;批量补完=verify 轮次与补丁粒度。
|
|
64
|
+
|
|
65
|
+
## 执行顺序
|
|
66
|
+
|
|
67
|
+
R4-L 先开(主战场);R4-S-F / R4-S-Q 可与其并行(不同工作树互不干扰)。全部终态(archive / --done 落账)后叫核算。
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
【R4 对照实验·受试会话 R4-L:session-replay 大任务·sillyspec 全流程】
|
|
2
|
+
|
|
3
|
+
你是独立执行会话。请在指定工作树里,用 sillyspec(npm 全局 3.29.4)按完整流程完成下述变更,走完到归档。
|
|
4
|
+
|
|
5
|
+
## 工作树与身份(第 0 步必做,进 transcript 作证)
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
cd C:\Users\qinyi\IdeaProjects\multi-agent-platform\.sillyspec\.runtime\worktrees\2026-09-20-r4-session-replay
|
|
9
|
+
export SILLYSPEC_SESSION_ID=r4-large
|
|
10
|
+
sillyspec --version # 必须输出 3.29.4,不符立即停止并报告
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
变更名:`2026-09-20-r4-session-replay`(brainstorm 建卡时用此名)。
|
|
14
|
+
流程:完整 `brainstorm → plan → execute → verify → archive`(实验钉死全流程,勿降级 quick)。
|
|
15
|
+
|
|
16
|
+
## 防作弊铁律(违反即实验作废,比任务本身更重要)
|
|
17
|
+
|
|
18
|
+
1. **禁止从 git 对象库捞未来提交**:本任务此前已被实现过,对象库里存在答案提交(main / replay-redo 等分支上)。不得 `git log --all`、不得看 main/replay-redo/任何其他分支、不得 cherry-pick / checkout / diff 其他分支的提交。只在本工作树分支(sillyspec/2026-09-20-r4-session-replay,基于 53c67e02a)上工作。
|
|
19
|
+
2. **禁止读平台主仓工作区**(`C:\Users\qinyi\IdeaProjects\multi-agent-platform` 本体)与任何兄弟目录(*-openspec* / *-replay-redo* / .sillyspec/.runtime/worktrees/ 下非本目录)。
|
|
20
|
+
3. **禁止改 sillyspec 工具本身**(~\IdeaProjects\sillyspec 源码仓、npm 全局安装、node_modules 里的 sillyspec)。
|
|
21
|
+
4. 只在本工作树分支提交,**不 push**。
|
|
22
|
+
5. 工具流程正常注入的知识/文档可用(本基线时点它们不含本任务答案)。
|
|
23
|
+
|
|
24
|
+
## 任务简报(verbatim)
|
|
25
|
+
|
|
26
|
+
# 提案书(Proposal)— tool_report 会话回放
|
|
27
|
+
|
|
28
|
+
## 动机
|
|
29
|
+
|
|
30
|
+
SillySpec CLI 自动上报创建的会话(origin=tool_report 且未继续过对话)打开后看到的是**日志元数据卡列表**,不是用户预期的会话内容。用户明确要求:「应该直接按 会话样式展示,只是数据来源不一样而已」「token 信息也要能获取到」「不光 zcode 其他 agent 也要核对能正确获取与正确显示」。
|
|
31
|
+
|
|
32
|
+
## 关键问题
|
|
33
|
+
|
|
34
|
+
1. **形态错位**:对话内容藏在每条日志卡的「查看内容」320px 嵌套小窗里,主对话被埋在元数据与子代理日志中间(实证会话 137ddfff:1 主日志 + 5 条子代理日志),没有「会话」的样子。
|
|
35
|
+
2. **内容错位**:自主运行日志的 user 角色消息多为系统注入(task-notification),现渲染当用户气泡处理,直接「内容不对」;轮次边界(zcode turnId)与 token 用量(response.usage 五项)都在日志里但解析层全部丢弃。
|
|
36
|
+
3. **harness 覆盖断层**:claude-code 格式规整且含 usage 但无解析器(只能看原文);cursor-agent transcript 干净可解析但整条上报链路缺失;cursor IDE 二进制格式点开是 409 死胡同。
|
|
37
|
+
|
|
38
|
+
## 变更范围
|
|
39
|
+
|
|
40
|
+
- 前端:回放主体组件 AgentReplayBody(适配器 → TurnTimeline 真组件复用)、系统事件中性行、工作会话折叠条、不可用三态、token 徽标与累计显示。
|
|
41
|
+
- daemon:NormalizedLogMessage 扩展(usage/turnId/model/durationMs/sender)+ zcode 补字段 + 新增 claude-code、cursor-agent 两个解析器 + RPC totalUsage。
|
|
42
|
+
- backend:messages 端点 schema 可选新字段透传 + gen:types(零表结构改动)。
|
|
43
|
+
- docs:cursor-agent 上报链路跨仓跟进记录。
|
|
44
|
+
|
|
45
|
+
## 不在范围内(显式清单)
|
|
46
|
+
|
|
47
|
+
- 不做解析产物落库(L3 持久化,单独决策)
|
|
48
|
+
- 不做 cursor-agent 作为 provider 接入(运行时 token 捕获,另行立项)
|
|
49
|
+
- 不做 cursor IDE store.db 对话化(blob 库 + 无 token)
|
|
50
|
+
- 不动已激活 tool_report 会话路径与 chat 会话
|
|
51
|
+
- 不改 sillyspec 仓(cursor-agent 扫描上报仅记录跨仓跟进)
|
|
52
|
+
|
|
53
|
+
## 成功标准(可验证)
|
|
54
|
+
|
|
55
|
+
- 打开纯 tool_report 会话:主体即会话时间线(对话/全部视图可用),主日志为正文、子代理在「工作会话」折叠条,系统事件显示为中性行非用户气泡。
|
|
56
|
+
- zcode/claude-code 回放可见每轮 token(输入/输出/上下文)与会话累计;数据源无 token(cursor-agent)时显示「未知」。
|
|
57
|
+
- 老 daemon / 机器离线 / 格式不支持 / 文件缺失时回退到显式中文提示,不弹错框。
|
|
58
|
+
- 全量既有测试不受影响(activated 路径、查看内容语义、上报/归属链路零改动)。
|
|
59
|
+
|
|
60
|
+
## 终态自查(完成后在报告里给出)
|
|
61
|
+
|
|
62
|
+
- `sillyspec progress show --change 2026-09-20-r4-session-replay` 输出
|
|
63
|
+
- 各阶段大致起止时间(brainstorm/plan/execute 各任务/verify/archive)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
【R4 对照实验·受试会话 R4-O-L:session-replay 大任务·OpenSpec】
|
|
2
|
+
|
|
3
|
+
你是独立执行会话。请在指定工作树里,用 OpenSpec(CLI 1.13.1)走你的标准流程完成下述变更,走完到 archive。
|
|
4
|
+
|
|
5
|
+
## 工作树与身份(第 0 步必做,进 transcript 作证)
|
|
6
|
+
|
|
7
|
+
cd C:\Users\qinyi\IdeaProjects\multi-agent-platform\.sillyspec\.runtime\worktrees\2026-09-20-r4-openspec-large
|
|
8
|
+
openspec --version # 必须输出 1.13.1,不符立即停止并报告
|
|
9
|
+
|
|
10
|
+
工作树里若无 openspec/ 目录,先 `openspec init` 再开始。流程走完整:proposal(delta 规格)→ apply(实现+测试)→ archive(合入活规格库)。
|
|
11
|
+
|
|
12
|
+
## 防作弊铁律(违反即实验作废,比任务本身更重要)
|
|
13
|
+
|
|
14
|
+
1. **禁止从 git 对象库捞未来提交**:本任务此前已被实现过(main 上 4c628adaa 等、openspec/tool-report-session-replay 分支上 d7112d7f8/71219e1f9)。不得 `git log --all`、不得看 main / 任何其他分支、不得 cherry-pick / checkout / diff 其他分支的提交。只在本工作树分支(openspec/r4-session-replay,基于 53c67e02a)上工作。
|
|
15
|
+
2. **禁止读平台主仓工作区**(`C:\Users\qinyi\IdeaProjects\multi-agent-platform` 本体)与任何兄弟目录——特别是 `.sillyspec/.runtime/worktrees/` 下的 2026-09-20-r4-session-replay(sillyspec 侧受试会话正在进行,读了即双向污染)与 2026-09-20-r4-openspec-small。
|
|
16
|
+
3. **禁止改 OpenSpec 与 sillyspec 工具本身**(npm 全局安装、~\IdeaProjects\sillyspec 源码仓)。
|
|
17
|
+
4. 只在本工作树分支提交,**不 push**。
|
|
18
|
+
5. 工作树里的 `.sillyspec/` 目录是另一工具的存量数据,与本任务无关,不要读不要动。
|
|
19
|
+
|
|
20
|
+
## 任务简报(verbatim)
|
|
21
|
+
|
|
22
|
+
# 提案书(Proposal)— tool_report 会话回放
|
|
23
|
+
|
|
24
|
+
## 动机
|
|
25
|
+
|
|
26
|
+
SillySpec CLI 自动上报创建的会话(origin=tool_report 且未继续过对话)打开后看到的是**日志元数据卡列表**,不是用户预期的会话内容。用户明确要求:「应该直接按 会话样式展示,只是数据来源不一样而已」「token 信息也要能获取到」「不光 zcode 其他 agent 也要核对能正确获取与正确显示」。
|
|
27
|
+
|
|
28
|
+
## 关键问题
|
|
29
|
+
|
|
30
|
+
1. **形态错位**:对话内容藏在每条日志卡的「查看内容」320px 嵌套小窗里,主对话被埋在元数据与子代理日志中间(实证会话 137ddfff:1 主日志 + 5 条子代理日志),没有「会话」的样子。
|
|
31
|
+
2. **内容错位**:自主运行日志的 user 角色消息多为系统注入(task-notification),现渲染当用户气泡处理,直接「内容不对」;轮次边界(zcode turnId)与 token 用量(response.usage 五项)都在日志里但解析层全部丢弃。
|
|
32
|
+
3. **harness 覆盖断层**:claude-code 格式规整且含 usage 但无解析器(只能看原文);cursor-agent transcript 干净可解析但整条上报链路缺失;cursor IDE 二进制格式点开是 409 死胡同。
|
|
33
|
+
|
|
34
|
+
## 变更范围
|
|
35
|
+
|
|
36
|
+
- 前端:回放主体组件 AgentReplayBody(适配器 → TurnTimeline 真组件复用)、系统事件中性行、工作会话折叠条、不可用三态、token 徽标与累计显示。
|
|
37
|
+
- daemon:NormalizedLogMessage 扩展(usage/turnId/model/durationMs/sender)+ zcode 补字段 + 新增 claude-code、cursor-agent 两个解析器 + RPC totalUsage。
|
|
38
|
+
- backend:messages 端点 schema 可选新字段透传 + gen:types(零表结构改动)。
|
|
39
|
+
- docs:cursor-agent 上报链路跨仓跟进记录。
|
|
40
|
+
|
|
41
|
+
## 不在范围内(显式清单)
|
|
42
|
+
|
|
43
|
+
- 不做解析产物落库(L3 持久化,单独决策)
|
|
44
|
+
- 不做 cursor-agent 作为 provider 接入(运行时 token 捕获,另行立项)
|
|
45
|
+
- 不做 cursor IDE store.db 对话化(blob 库 + 无 token)
|
|
46
|
+
- 不动已激活 tool_report 会话路径与 chat 会话
|
|
47
|
+
- 不改 sillyspec 仓(cursor-agent 扫描上报仅记录跨仓跟进)
|
|
48
|
+
|
|
49
|
+
## 成功标准(可验证)
|
|
50
|
+
|
|
51
|
+
- 打开纯 tool_report 会话:主体即会话时间线(对话/全部视图可用),主日志为正文、子代理在「工作会话」折叠条,系统事件显示为中性行非用户气泡。
|
|
52
|
+
- zcode/claude-code 回放可见每轮 token(输入/输出/上下文)与会话累计;数据源无 token(cursor-agent)时显示「未知」。
|
|
53
|
+
- 老 daemon / 机器离线 / 格式不支持 / 文件缺失时回退到显式中文提示,不弹错框。
|
|
54
|
+
- 全量既有测试不受影响(activated 路径、查看内容语义、上报/归属链路零改动)。
|
|
55
|
+
|
|
56
|
+
## 终态自查(完成后在报告里给出)
|
|
57
|
+
|
|
58
|
+
- openspec archive 后的规格库状态(list)
|
|
59
|
+
- 各阶段大致起止时间(proposal / apply / archive)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
【R4 对照实验·受试会话 R4-O-S:autocompact 小任务·OpenSpec】
|
|
2
|
+
|
|
3
|
+
你是独立执行会话。请在指定工作树里,用 OpenSpec(CLI 1.13.1)走你的标准流程完成下述变更,走完到 archive。
|
|
4
|
+
|
|
5
|
+
## 工作树与身份(第 0 步必做,进 transcript 作证)
|
|
6
|
+
|
|
7
|
+
cd C:\Users\qinyi\IdeaProjects\multi-agent-platform\.sillyspec\.runtime\worktrees\2026-09-20-r4-openspec-small
|
|
8
|
+
openspec --version # 必须输出 1.13.1,不符立即停止并报告
|
|
9
|
+
|
|
10
|
+
工作树里若无 openspec/ 目录,先 `openspec init` 再开始。流程走完整:proposal(delta 规格)→ apply(实现+测试)→ archive(合入活规格库)。
|
|
11
|
+
|
|
12
|
+
## 防作弊铁律(违反即实验作废,比任务本身更重要)
|
|
13
|
+
|
|
14
|
+
1. **禁止从 git 对象库捞未来提交**:本任务此前已被实现过(main 上 2026-09-19 之后的提交、openspec/autocompact-config 分支上也有)。不得 `git log --all`、不得看 main / 任何其他分支、不得 cherry-pick / checkout / diff 其他分支的提交。只在本工作树分支(openspec/r4-autocompact,基于 50736b6ef)上工作。
|
|
15
|
+
2. **禁止读平台主仓工作区**(`C:\Users\qinyi\IdeaProjects\multi-agent-platform` 本体)与任何兄弟目录——特别是 `.sillyspec/.runtime/worktrees/` 下的 2026-09-20-r4-autocompact-full / -quick / -session-replay(sillyspec 侧受试会话正在进行,读了即双向污染)与 2026-09-20-r4-openspec-large。
|
|
16
|
+
3. **禁止改 OpenSpec 与 sillyspec 工具本身**(npm 全局安装、~\IdeaProjects\sillyspec 源码仓)。
|
|
17
|
+
4. 只在本工作树分支提交,**不 push**。
|
|
18
|
+
5. 工作树里的 `.sillyspec/` 目录是另一工具的存量数据,与本任务无关,不要读不要动。
|
|
19
|
+
|
|
20
|
+
## 任务简报(verbatim)
|
|
21
|
+
|
|
22
|
+
# 提案书(Proposal)— claude 引擎 autocompact 配置(provider 级)
|
|
23
|
+
|
|
24
|
+
## 动机
|
|
25
|
+
|
|
26
|
+
claude 引擎长会话在 ~160K tokens 触发引擎自动压缩(默认 believed limit 200K × ~80% 设计点),生产会话(6e213eb3,113 轮)频繁被压。平台无干预手段,用户希望按 provider 配置压缩行为(更晚压缩/关闭/预计算)。
|
|
27
|
+
|
|
28
|
+
## 关键问题
|
|
29
|
+
|
|
30
|
+
1. 平台管道已有 `settings_config → lease 透传 → claude-settings 白名单 → settings.json` 机制(attribution 等键先例),但白名单不含任何 autocompact 键——配置写了也不生效。
|
|
31
|
+
2. 前端 provider 表单无 autocompact 入口,用户只能手改数据库 JSON。
|
|
32
|
+
3. window 配置超过模型实际窗口会撞硬限报错而非压缩——需要风险提示承载(用户自担的配置面)。
|
|
33
|
+
|
|
34
|
+
## 变更范围
|
|
35
|
+
|
|
36
|
+
- daemon:claude-settings.ts 白名单加三键(值守护:window 正整数/两开关布尔)。
|
|
37
|
+
- 前端:llm-provider-form claude 分支「引擎自动压缩」区(三键 + 风险提示)。
|
|
38
|
+
- 文档:daemon.md 增量段。
|
|
39
|
+
|
|
40
|
+
## 不在范围内(显式清单)
|
|
41
|
+
|
|
42
|
+
- profile 级配置(D-001 否决)
|
|
43
|
+
- pi/codex 引擎压缩配置
|
|
44
|
+
- 阈值比例可配(SDK 无可写项)
|
|
45
|
+
|
|
46
|
+
## 成功标准(可验证)
|
|
47
|
+
|
|
48
|
+
- settings_config 配 `{"autoCompactWindow": 230000}` 的 claude provider 会话,daemon spawn 后 `$CLAUDE_CONFIG_DIR/settings.json` 含该键(单测断言)
|
|
49
|
+
- 三键值守护:window=0/负数/非整数、开关非布尔 → 不写入(单测)
|
|
50
|
+
- 前端表单 claude 分支渲染三键控件并正确提交进 settings_config;非 claude 不渲染(组件测试)
|
|
51
|
+
- 既有 attribution/env 白名单行为零回归(既有用例全绿)
|
|
52
|
+
|
|
53
|
+
## 终态自查(完成后在报告里给出)
|
|
54
|
+
|
|
55
|
+
- openspec archive 后的规格库状态(list)
|
|
56
|
+
- 各阶段大致起止时间(proposal / apply / archive)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
【R4 对照实验·受试会话 R4-S-F:autocompact 小任务·sillyspec 全流程】
|
|
2
|
+
|
|
3
|
+
你是独立执行会话。请在指定工作树里,用 sillyspec(npm 全局 3.29.4)按完整流程完成下述变更,走完到归档。
|
|
4
|
+
|
|
5
|
+
## 工作树与身份(第 0 步必做,进 transcript 作证)
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
cd C:\Users\qinyi\IdeaProjects\multi-agent-platform\.sillyspec\.runtime\worktrees\2026-09-20-r4-autocompact-full
|
|
9
|
+
export SILLYSPEC_SESSION_ID=r4-small-full
|
|
10
|
+
sillyspec --version # 必须输出 3.29.4,不符立即停止并报告
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
变更名:`2026-09-20-r4-autocompact-full`(brainstorm 建卡时用此名)。
|
|
14
|
+
流程:完整 `brainstorm → plan → execute → verify → archive`(实验钉死全流程——虽然此规模按 AGENTS.md 第 6 条可走 quick,但本跑测的就是全流程通道,勿改道)。
|
|
15
|
+
|
|
16
|
+
## 防作弊铁律(违反即实验作废,比任务本身更重要)
|
|
17
|
+
|
|
18
|
+
1. **禁止从 git 对象库捞未来提交**:本任务此前已被实现过(main 上 2026-09-19 之后的提交)。不得 `git log --all`、不得看 main / 任何其他分支、不得 cherry-pick / checkout / diff 其他分支的提交。只在本工作树分支(sillyspec/2026-09-20-r4-autocompact-full,基于 50736b6ef)上工作。
|
|
19
|
+
2. **禁止读平台主仓工作区**(`C:\Users\qinyi\IdeaProjects\multi-agent-platform` 本体)与任何兄弟目录(*-openspec* / .sillyspec/.runtime/worktrees/ 下非本目录——特别是 2026-09-20-r4-autocompact-quick 与 2026-09-20-r4-session-replay)。
|
|
20
|
+
3. **禁止改 sillyspec 工具本身**(~\IdeaProjects\sillyspec 源码仓、npm 全局安装、node_modules 里的 sillyspec)。
|
|
21
|
+
4. 只在本工作树分支提交,**不 push**。
|
|
22
|
+
5. 工具流程正常注入的知识/文档可用(本基线时点它们不含本任务答案)。
|
|
23
|
+
|
|
24
|
+
## 任务简报(verbatim)
|
|
25
|
+
|
|
26
|
+
# 提案书(Proposal)— claude 引擎 autocompact 配置(provider 级)
|
|
27
|
+
|
|
28
|
+
## 动机
|
|
29
|
+
|
|
30
|
+
claude 引擎长会话在 ~160K tokens 触发引擎自动压缩(默认 believed limit 200K × ~80% 设计点),生产会话(6e213eb3,113 轮)频繁被压。平台无干预手段,用户希望按 provider 配置压缩行为(更晚压缩/关闭/预计算)。
|
|
31
|
+
|
|
32
|
+
## 关键问题
|
|
33
|
+
|
|
34
|
+
1. 平台管道已有 `settings_config → lease 透传 → claude-settings 白名单 → settings.json` 机制(attribution 等键先例),但白名单不含任何 autocompact 键——配置写了也不生效。
|
|
35
|
+
2. 前端 provider 表单无 autocompact 入口,用户只能手改数据库 JSON。
|
|
36
|
+
3. window 配置超过模型实际窗口会撞硬限报错而非压缩——需要风险提示承载(用户自担的配置面)。
|
|
37
|
+
|
|
38
|
+
## 变更范围
|
|
39
|
+
|
|
40
|
+
- daemon:claude-settings.ts 白名单加三键(值守护:window 正整数/两开关布尔)。
|
|
41
|
+
- 前端:llm-provider-form claude 分支「引擎自动压缩」区(三键 + 风险提示)。
|
|
42
|
+
- 文档:daemon.md 增量段。
|
|
43
|
+
|
|
44
|
+
## 不在范围内(显式清单)
|
|
45
|
+
|
|
46
|
+
- profile 级配置(D-001 否决)
|
|
47
|
+
- pi/codex 引擎压缩配置
|
|
48
|
+
- 阈值比例可配(SDK 无可写项)
|
|
49
|
+
|
|
50
|
+
## 成功标准(可验证)
|
|
51
|
+
|
|
52
|
+
- settings_config 配 `{"autoCompactWindow": 230000}` 的 claude provider 会话,daemon spawn 后 `$CLAUDE_CONFIG_DIR/settings.json` 含该键(单测断言)
|
|
53
|
+
- 三键值守护:window=0/负数/非整数、开关非布尔 → 不写入(单测)
|
|
54
|
+
- 前端表单 claude 分支渲染三键控件并正确提交进 settings_config;非 claude 不渲染(组件测试)
|
|
55
|
+
- 既有 attribution/env 白名单行为零回归(既有用例全绿)
|
|
56
|
+
|
|
57
|
+
## 终态自查(完成后在报告里给出)
|
|
58
|
+
|
|
59
|
+
- `sillyspec progress show --change 2026-09-20-r4-autocompact-full` 输出
|
|
60
|
+
- 各阶段大致起止时间
|