dsh-continual-evolve 差距分析:对照 prime-agent /refine 与 penguin-harness

August 17, 2026 · View on GitHub

(2026-08-17 作为本项目交接文档采纳;配套源码级报告在工作区 research/prime-agent/REPORT.mdresearch/penguin-harness-capability-report.md

综合 2026-08-17 两份源码级报告:

  • research/prime-agent/REPORT.md(/refine 9 类 33 项能力 + 17 项借鉴候选 + 11 项缺失)
  • research/penguin-harness-capability-report.md(4 大自进化 Skill 全解 + 10 项候选) 对照基准:dsh-continual-evolve 已实现能力(design.md 全勾选 + 维护期增强:rubric ACL / 技能热挂载 / goal 轮次 / 轨迹接地 / 归档 / 日志)与实测源码(evaluate.ts / score.ts / benchmark.ts / inject.ts)。 结论先行:治理层(版本/回滚/门禁/审计/benchmark 闭环)已全面领先两个参照物(prime-agent 无审批/无 benchmark/无遗忘;penguin 纯软契约零硬校验)。真正欠缺集中在验证闭环的评分者分离、记忆生命周期、评估证据链三类,共 16 项,按价值排序如下。

A. 验证闭环的实质缺口(penguin 方向,价值最高)

A1 【强烈】评估执行者/评分者分离 —— 修复"自产自审"

  • 现状(已实测确认)src/evaluate.ts L133 把 rubric 明文注入"执行任务的同一子代理"提示词,指示 "Score your own execution strictly against the rubric"——即"跑任务 + 自评"同一模型,rubric 对被测者可见。这正是 dsh 自己研究报告中批判 penguin 的"自产自审"结构,我们原样继承了。
  • penguin 解法:Evaluator 用 CLI 启动被测者(只见 statement,看不到 rubric),再用私有 rubric 私下评分;workspace 隔离 + 四元组绑定根 Trace 实证。
  • 改法建议evaluate.ts 拆两段——① 被测子代理只收 statement、产出产物与原始证据(无 rubric);② 评分由独立 reviewer 子代理(注入解密 rubric,不见完成过程,只看产物+证据)或宿主确定性判定(机械项)执行。rubric 解密点移到 reviewer 分支,被测分支永不接触 rubric。
  • 收益:消除分数虚高与"模型自评不可信"(penguin 研究报告核心教训 + design.md §8 风险表中自己承认的风险)。

A2 失败格协议:失败≠零分 / 缺数据不作废 / 不因低分重跑

  • 现状(实测)evaluate.ts catch 路径返回 score: 0, passed: falsescore.ts aggregate 用 mean(all) 全量平均——失败格当 0 分拖低均值,一次子代理启动失败可能翻转 ACCEPT/REJECT。
  • penguin 协议:4 稳定失败码(invalid_request/benchmark_invalid/version_changed/evaluation_failed);错误/缺产物照常评分;cost 缺失不作废;聚合前显式排除失败格并计数。
  • 改法:CellScore 增加 status: "ok"|"failed";聚合排除 failed 格、report 显式列出失败格数与原因;决策规则 = "失败格 > 阈值即拒绝该轮"(而非当零分)。

A3 评估运行时实证校验(防版本/材料漂移)

  • 现状:评估运行时(provider/model)是配置层冻结,但单元格无实际运行时的实证回写;候选被改动/材料被改动无法检出。
  • penguin:evaluator 从根 Trace session_meta 读实际 provider/model 与请求比对;statement/rubric 启动前后快照对比检漂移;version_changed 失败码。
  • 改法:单元格 schema 增加 provider/model/thinkingLevel(宿主从子代理会话元数据实证写入)+ 候选/材料 hash;不匹配该格判 failed(带原因),对应 penguin 的 version_changed 语义。

A4 每单元格强制 Trace 证据指针(分数→轨迹可回放)

  • 现状(实测):CellScore 无 session 引用——分数无法下钻回放"这 90 分是哪次会话哪几步跑出来的"。
  • penguin:scoreboard 每 Run 带 session_id,评估中心可下钻 Trace。
  • 改法:单元格记录子代理会话 id(sessionId),/evolve benchmark 报告与 scoreboard 存盘带该字段;审计时按 id 回放事件(DSH 事件溯源天然支持)。

A5 校准 Pilot + Formal Baseline 生命周期 + Case 质量门禁

  • 现状:benchmark 有 case/rubric/run 结构,但无"设计→Pilot 单 Run 校准→冻结 Formal Baseline"流程,也无 case 质量检查(Capability Contract、捷径区分声明、leak check)。
  • penguin benchmark-design (v7):Capability Contract 先行 → 逐 Case 私下记录"预期行为/捷径/区分点" → Pilot 每 Case 单 Run 迭代校准(修复不耗预算)→ 冻结首个达标/最低分有效修订 → Formal Baseline 原样记录不回填;calibration_failed 仅当产不出有效修订;全公开文件 leak check。
  • 改法/evolve benchmark 增加 case 状态机(draft→calibrating→frozen)与 casecheck 子命令(对照 skillquality.ts 模式做 benchmark case 质检);doc 沉淀校准语义(分低≠基准坏)。

B. 记忆生命周期的缺失(prime-agent 论文方向,第二价值)

B1 条目使用率/引用统计(pull-rate 驱动清理)

  • 现状:注入有排序/新鲜度(rankEntries),但无每条目被注入/引用/使用次数记录
  • prime 论文:LONG-TERM MEMORY OVERVIEW + 实测 pull rate——"多数已写 memory 条目从未被引用";用使用统计驱动清理。
  • 改法:inject 渲染时对命中条目计数(落盘到 store 或独立 usage.jsonl);evolve_list 展示使用数;门禁/报告中暴露"零使用条目"建议归档。

B2 自动降权/遗忘/冲突消解

  • 现状:只有人工 archive/unarchive;无自动衰减(旧条目随版本/时间降权)、无"同名/同主题冲突消解"、无"过期提示"。
  • prime 论文:Refiner memory pass 显式 demote("areas the agent has moved past");refinement 单调累积是已知问题。
  • 改法:rankEntries 的 recencyScore 已有 30 天半衰期雏形——补"引用计数衰减 + 过期标记";门禁把"低用旧条目"列为归档候选(复用现有 archive 通道,见待办 #11 候选 c)。

B3 记忆目录分层:全量目录 + 按需取全文

  • 现状:注入 6 条/类封顶 + 排序——是"精选注入",无"免费目录(id+title 全量)+ 按需读全文"的分层检索面。
  • prime 论文:orchestrator 提示词列出全部 memory 的 id+title(目录零成本),模型按需取全文。
  • 改法evolve_list/注入侧加"目录视图"(全量 id+title 一行式,极低 token),与精选 6 条注入并存;模型可按 id 取全文(已有 evole_get/read 语义)。

C. 治理/成本/工程细节(prime-agent 方向,低成本可补)

C1 reviewer/refiner 模型分离

  • 现状:review 门禁与规划共用会话主模型(ctx.llm)。
  • prime:无分离(3.8 记为缺失);但"便宜模型把关、昂贵模型提案"是明确改进方向。
  • 改法:配置 reviewModel(可选),review 门禁走独立模型/预算档位。

C2 编辑影响范围(blast-radius)审计

  • 现状:无。
  • prime:触发/evidence/outcome 均无 scope 标注校验,"这条规则影响多广"无从推导(第三方点名批评)。
  • 改法:规划提示词强制每条 edit 声明"影响范围(通用战术/单项目/单会话)";review 校验声明合理性;audit 记录。我们已领先的天然优势:local/global scope + sourceSession/sourceSeqs 证据链,补一层"通用化 vs 个案"标注即可。

C3 cost/duration 进评估矩阵(ROI 护栏)

  • 现状(实测):CellScore 无 cost/duration;scoreboard 无预算信息。
  • penguin:scoreboard 每条 Evaluation 带 cost/duration_ms(缺数据不作废)。
  • 改法:宿主从子代理 usage 事件聚合 cost/duration 写入单元格;报告展示"提升 X 分花 Y token"。

C4 扩展事件面(refine_complete 语义)

  • 现状:dsh 插件无"进化完成"的对外事件。
  • primerefine_complete{id,summary,appliedEdits,scope} extension 事件,第三方可观察/拦截。
  • 改法:插件在对 DSH 可见的地方(日志/审计/notify)增加结构化"进化完成"记录(已有 notify.ts 雏形),供外部消费。

C5 种子演示 benchmark

  • 现状:无开箱 benchmark。
  • 改法examples/benchmark 带 1 个真实 case + 数据文件,README 直达(降低上手成本,非核心)。

C6 跨进程 mtime / 分支失效(按需评估)

  • 现状:乐观并发(baseline 比对)已覆盖多写者;DSH 单进程模型下"跨进程 mtime 同步"必要性低。
  • 改法:暂不实现,记入 FAQ 权衡;若多进程场景出现(多个 dsh web 实例同 baseDir)再做。

D. 论文级/远期(prime 论文方向)

D1 failure-signature 四遍式 Refiner

  • 按失败签名(导航循环/工具失败/目标停滞/漏探)分类驱动 prompt 重写 / subagent CRUD / 技能修复 / 记忆降权——当前我们的门禁是"单回合判定该不该沉淀",无"按失败类型路由处理策略"。
  • 2026-08-19 观察层已落地src/failures.ts + /evolve failures):把 reviews.jsonl 失败记录与 benchmark 失败格按确定性失败类聚合统计——分类规则与聚合是纯函数(有测试),为完整 Refiner 提供路由所需的数据层。完整 Refiner 仍属研究项,待观察数据出现"同一类失败重复发生"再工程化。

D2 bootstrap-updating 变体(harness 继承加速)

  • 实证"前一跑 refined harness 加速下一跑"——我们的 parentSession 链继承 + global 注入已有雏形(D 级研究项:把"继承效果"做成可度量 benchmark 指标)。
  • 2026-08-19 实验脚手架已建docs/experiment-bootstrap.md + scripts/benchmark-trend.sh):≤3 轮对照实验设计(固定 reference → 沉淀 harness 知识 → 候选评估,用 existing totalDurationMs/overall 判趋势)与趋势表提取脚本。仍属研究项:跑出数据前不做工程化度量。

D3 goal 轮次与进化耦合(反向)

  • 我们已实现 goal 轮次驱动(prime 无对应物),保持领先;goal blocked 连续 N 轮 → 自动触发 wrapup 评估(衔接待办 #11)。
  • 2026-08-19 已工程化runGoalBlockedFateauto.ts):goal 连续 goalBlockedWrapupTurns 次门禁运行(默认 3)处于 blocked → 触发一次 local-fate 评估(复用 fate 管线:审计→分类→征询→确定性应用);连胜非 blocked 即重置、触发后重置、被拒走 fate 冷却;goalBlockedWrapupTurns: 0 关闭。测试覆盖触发/重置/关闭/无服务四路径。

汇总表

优先级参照物现状状态
P0A1 评分者分离penguin #1两段式(执行者→评审者)✅ 完成(32d3341
P0A2 失败格协议penguin #4status ok/failed + 聚合排除✅ 完成(32d3341
P1A3 运行时实证校验penguin #5cell 带 provider/model/caseHash + 候选/参考材料漂移检测(score.flagMaterialDrift,不一致格判 failed)✅ 完成(379c67e + da8612d
P1A4 Trace 证据指针penguin #6cell 带 sessionId✅ 完成(P0 顺手)
P1B1 使用率统计prime #4.17usage.json + evolve_list 展示✅ 完成(ebc2797
P1B2 自动降权/过期prime #3.4/3.6staleness 信号 + LLM 优先归档✅ 完成(0827022
P2A5 校准 Pipeline + case 质检penguin #2/#3draft→calibrating→frozen + casecheck✅ 完成(f176562
P2B3 记忆目录分层prime #4.17全量 id+title 目录视图✅ 完成(f70077c
P2C1 review 模型分离prime #3.8reviewModel 配置项✅ 完成(b2475c8
P2C2 blast-radius 声明prime #3.2blastRadius general/project/session + 规划器强制声明 + 解析器验证 + apply 链 scope 一致性机械校验validateBlastRadiusScope✅ 完成(7fc84d4 + ffa6cbd
P2C3 cost/duration 入矩阵penguin #8durationMs per cell + 聚合✅ 完成(65f33eb
P3C4 扩展事件面prime #4.13evolve_complete 事件 → reviews.jsonl✅ 完成(4408e92
P3C5 种子 benchmarkpenguinexamples/ lint_convention case✅ 完成(d4896a2
P3C6 跨进程同步prime #4.10乐观并发已覆盖暂不实现
RD1 failure-signature Refinerprime #4.16观察层(/evolve failures 失败类聚合)已落地;完整 Refiner 待数据研究项→观察层 ✅
RD2/D3 继承度量 / goal-wrapupprime 论文D3 ✅ 工程化(runGoalBlockedFate);D2 实验脚手架已建D3 ✅ / D2 待实验

P0=强烈建议立即可做(修复结构弱点);P1=记忆层与证据链关键;P2=低成本治理增强;P3=锦上添花;R=远期研究。P0+P1+P2+P3 全部完成(2026-08-18);R 级中 D3 已工程化、D1 观察层与 D2 实验脚手架已落地(2026-08-19),剩 D1 完整 Refiner 与 D2 实验数据。