harness2-recursion
DiscoveredHarness² recursion: two auditable dsh plugins — task-level probe/compose evidence loop + harnessing-level experience library (frozen contract v4, 34/34 tests, real-session E2E)
harness2-recursion
Harness² 递归方案 —— 两个互相独立、可分别加载的 dsh 插件(第四轮冻结契约版本)。
| 包 | 职责 |
|---|---|
packages/harness2-task-recursion | 任务级递归:Propose → Probe → probe/completed → 确定性 Compose 门禁 → 账本 v3 → compose/applied/compose/rejected → 下一个 pre-step 应用 pendingPatch |
packages/harness2-meta-recursion | Harnessing 级递归:消费三事件 → 事后归因(edit 只取事实)→ 经验库 → 冻结只读门面 harness2Experience |
两个包的 src/index.ts 互不 import;src/constants.ts 逐字节相同。契约见 CONTRACT.md,验收见 SELF-CHECK.md。
目录
harness2-recursion/
├── CONTRACT.md # 第三轮冻结契约
├── SELF-CHECK.md # 第三轮 13 项验收清单逐项证据
├── README.md
├── package.json / tsconfig.base.json
├── test/loader-smoke.mjs # 真实 Cordis 装载/事件/卸载 smoke
├── e2e/ # 真实 headless 会话 E2E(安装/账本/applyMode/经验)
├── docs/ # 社区 Discussion 提案 + 发布清单
├── LICENSE · .gitignore
└── packages/
├── harness2-task-recursion/
│ ├── src/{index.ts, constants.ts}
│ ├── lib/ # tsc 产物(构建生成,不入库)
│ ├── cordis.patch.yml · locale/ · icon.svg
│ └── test/verify.mjs # 15 项契约自检
└── harness2-meta-recursion/ # 同上(13 项自检)
社区讨论
- 生态提案 Discussion(dsh 社区
Show Your Plugins!):https://github.com/deepseek-ai/deepseek-harness/discussions/10324 - 本仓库:https://github.com/HeliosLz/harness2-recursion
验证
要求 Node ≥ 24(node --test 直接 import src/index.ts,依赖类型剥离)。
npm install
npm run build # lib/index.js + lib/index.d.ts + lib/constants.js
npm run typecheck
npm run verify # task 15 + meta 14 + loader smoke 5 = 34 项
本次结果(2026-10-19):npm run verify 34/34 pass;typecheck/build exit 0;npm pack --dry-run 清单齐全;真实会话 E2E 通过(见下)。
第三轮新增(相对第二轮)
- 事件 schema:
TrialRecord三个候选元数据字段必填(Q1);ProbeMetrics.tokenCostSource(Q4);ComposeAppliedPayload.appliedEdits(R3-1);ComposeRejectedPayload.rejectedCandidateIds(Q3)。 - 账本 v3:
{version,id,previousSnapshotRef,ledgerEntryId,event,payload,recordedAt};只写 v3,readLedgerTail接受 v2|v3 并做内存映射、不重写 v2 文件(Q7)。 - 归因规则:反射必须带
edit.candidateId,且与来源事实严格一致;写入的 edit 字段永远取自来源载荷(R3-3/Q2);不一致 →onError('reflection-edit-mismatch')且拒绝写入。 - confidence v3:
base(0.6/0.5) × (0.5+0.5·min(1,trials/3)) × repeat(≤1.4) × sourcePenalty(estimated 0.9);trials=0 → 0且不写入(Q4/Q5)。 - 双注入阈值:positive 用
minConfidenceToInject,negative 用minNegativeConfidenceToInject(默认 0.3,Q6)。 - 组件表:
COMPONENT_NAMES八类冻结;7 项旧名迁移映射 +migratedFrom审计;未知组件跳过并onError('unknown-component');移除workflow-control回退(R3-7)。 - token 计量:Propose 用
usagechunk;Probe/baseline 用可选tokenMeter;否则字符数/4 估算;同一 metrics 单一来源。 - 第四轮增量:新增终态事件
propose/failed(R4-1,与 Probe/Compose 互斥、append→emit、账本 revision 探测跳过它);rejectedCandidateIds只取 trials 中出现的 id(R4-2 正式契约);outcome.tokenCostSource/migratedFrom正式纳入 entry schema(R4-3)。
第三轮如实偏差(详见 CONTRACT §9 / SELF-CHECK §三)
- 无逻辑偏差:第三轮 Q3 冲突已由
propose/failed独立终态解决(原TODO(ROUND3_PROPOSE_FAILURE)移除);预算早停的 rejected ids 与 entry 增量字段已追溯为正式契约。 - 环境依赖继续留 TODO/不验收:
pre-step-patch运行时 API(dsh 0.2.1 无)、Probe 工具沙箱、profile 安装(第四轮执行)。
第五轮:真实环境验证 + 社区材料
真实会话 E2E(已通过)
# 需要 dsh 0.2.1-rc.2 CLI 运行时(提取方式见 e2e/README.md)
E2E_CLI="<dsh-0.2.1-runtime>/dsh/node_modules/@deepseek-ai/dsh/lib/bin.js" node e2e/run.mjs
隔离 profile 内通过官方 dsh plugin add 安装两包,跑两次真实 headless 会话(假 provider:前 3 次主模型 500 → 触发 request-error 路径,随后延迟成功)。实测结果:
Ledger: 4 v3 records (2 probe/completed + 2 compose/applied)
applyMode: run1=noop-todo, run2=next-task-ledger
Revision anchor chain: null -> led-… -> led-… -> led-…
EXPERIENCE.md entries: 1 (confidence 0.50, measured tokens)
Sessions: 2 (exit 0)
- 首次
noop-todo是冻结语义(插件激活时尚无账本可读);第二次会话由readRevisionAnchor升级为next-task-ledger。 - 完整证据与复现步骤:
e2e/README.md、e2e/artifacts/RESULTS.md。 - 卸载残留:loader smoke 第 5 项验证真实 Cordis dispose 后 7 个监听器全部释放、不再写账本/经验文件。
社区材料
docs/discussion-proposal.md:Discussion 提案底稿(双插件契约、propose/failed独立终态、元知识只改进编辑器三个差异点 + 34/34 证据 + 缺口 + 讨论问题)。docs/publishing.md:Phase 1 原型仓库/npm/Plugin Directory 发布清单。LICENSE(MIT)、.gitignore已就绪;两包keywords含dsh-plugin(发布前移除private并改用可发布包名)。
安装(第四轮/第五轮)
cd harness2-recursion && npm install && npm run build
然后在 Harness Web 的 Plugins 页分别安装两个本地 bundle(target 指向各包目录)。默认 observeOnly: true:只取证、不应用 Compose。
Comments
Loading…
Similar plugins
by dongsheng123132
Evidence-first 2Origin state projection, diff and immutable freeze for DeepSeek Harness
★ 2
MIT
JavaScript
Oct 5, 2026
dsh plugin --profile web add dsh-2originby StvLi
The Deepseek Harness ROS 2 plugin can be used to efficiently diagnose issues and perform joint debugging.
★ 23
↓ 13/wk
MIT
TypeScript
Oct 15, 2026
dsh plugin --profile agent add dsh-ros2by Liu-Bot24
DeepSeek Harness(DSH)只读执行轨迹复盘插件,支持规则分析、独立模型解读、证据定位、任务概览与运行对比。
★ 5
MIT
JavaScript
Sep 26, 2026
dsh plugin --profile web add dsh-plugin-trace-insightby orangeofcarl0-sys
A contract-preserving context runtime for long-horizon agents on DeepSeek Harness
★ 6
MIT
TypeScript
Oct 8, 2026
dsh plugin --profile web add dsh-epistemic-foldby jingzhao-l
DeepSeek Harness (dsh) plugin that turns the iterate skill into an autonomous closed-loop code iteration — parallel reviews, deterministic dedup convergence, atomic fix + verify auto-stop, meta-review
★ 2
↓ 431/wk
MIT
TypeScript
Sep 12, 2026
dsh plugin --profile web add iterate-pluginby lkshjd
DeepSeek Harness multi-agent debate plugin: isolated research, cross-examination, judge convergence (background job + resume + parallel waves)
★ 0
TypeScript
Aug 17, 2026
dsh plugin --profile web add @sky_sun/dsh-debate