DeepSeek Harness Hub
← 返回列表

ArmyWas/dsh-subagent-contract

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

DeepSeek Harness 子代理的确定性、运行后契约检查器。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/18 · 已提供中文文档

DeepSeek Harness 子代理的运行后契约验证器和持久化 SDK 金丝雀。

综合分
29.8
GitHub 分
29.8
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add ArmyWas/dsh-subagent-contract
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-subagent-contract

DeepSeek Harness 子代理的确定性、运行后契约检查器。

这是独立社区项目,不由 DeepSeek 维护,也未获得 DeepSeek 官方背书或支持。

验证器读取 dsh-eval 引入的公开运行产物结构,在 Harness 进程结束后重新读取父、
子会话日志,保留各自 header,验证被聚合指标抹平的跨会话关系;它不复制评测框架。

开发预览:验证器与确定性 fixture 已可工作;有资源边界的持久 SDK 实验也已在
0.1.2-alpha.2 上完成真实四场景 4/4,四个场景都在第一次尝试通过。runner 仍是只随源码提供的
实验路径;积累重复稳定性数据并完成 Linux 全量真实矩阵前,不发布 npm。dsh-eval@0.3.0 路线还有两个独立问题:tarball
遗漏运行时模块;一次性 headless 又会在后台生命周期结算前退出。

English

它解决什么问题

父任务最终文本看起来正确,并不能证明多代理记录正确。真实风险包括:子会话指向
错误父级、深度异常、拒绝启动后留下“幽灵子会话”、续聊落到另一个会话、完成通知
记到错误子代理名下,或把子代理主动 report 与运行时结算通知混成一类。

本工具把这些问题变成稳定的错误码、结构化报告和可复现证据,适合作为版本 Canary
或官方讨论中的最小复现附件。

当前开发验证

需要 Node.js 22.19+ 或 24+:

npm install
npm test
npm run check
npm run pack:check

如果维护者已经通过修复后的源码 checkout 生成运行产物,可以直接调用离线 CLI;
验证过程不会调用模型:

node bin/dsh-subagent-contract.js verify artifacts/subagent-run.json
node bin/dsh-subagent-contract.js verify artifacts/subagent-run.json --format json

上游运行器重新发布后,正确入口应是 dsh --profile eval run ...;当前 Harness 并不
支持 dsh eval run ... 这个别名。仅重新发包仍不能可靠覆盖两个后台场景;运行时必须
一直存活到子代理结算完成。

当前持久化证明位于 experiments/sdk-runner:它固定
预发布 SDK client,在隔离 home 中运行原样四场景,并生成验证器可读的多会话产物。
它仍是实验,不是正式安装入口。

runner 会记录每次尝试的结构摘要;只有离线验证器仅报告明确的
S00_SCENARIO_NOT_EXERCISED 模型遵从性缺口时,才允许最多三次隔离尝试。生命周期、权限、
trace、token 上限、清理、兼容性或契约失败都会立即终止,不能被后续重试“洗绿”。仓库内的
Windows 证据四个场景都只运行了一次,没有使用重试。

dsh-eval 为每个 trial 创建隔离的 DSH_HOME,Provider 凭据因此必须来自启动进程
环境。仅保存在日常 Web Profile 的密钥不会进入 trial home。切勿把密钥写入 benchmark
或提交到仓库的产物。实验会移除继承的 DEEPSEEK_BASE_URL,固定到 DeepSeek 公共端点,
并检查每个父、子请求的持久化 header 均不超过 4,096 输出 token。

离线验证器本身跨平台。上游运行器目前还存在 Windows .cmd 启动易用性问题,因此
这里不发布未经完整验证的 shell wrapper 方案。

真实运行会调用模型,四场景可能持续数分钟并产生费用。隔离 home 与原始会话日志会
保留作为证据,其中包含 prompt 和模型输出,不会自动删除;产物中的 tracePaths 是
绝对路径,不搬迁对应日志就不能跨机器直接使用。

未来 CI 的稳定输出形式为:

npx dsh-subagent-contract verify artifacts/subagent-run.json --format json

v0.1 的七条契约

| ID | 契约 | 验证内容 |
| --- | --- | --- |
| C01 | 父子图 | 唯一根、会话 id 唯一、父级可解析、深度递增、无环。 |
| C02 | 自有 descriptor | 只检查 fork seed 之后的自有事件;每个子会话恰有一个 descriptor,并在首个请求前出现。 |
| C03 | 准入数量 | 每次调用恰有一个结果。前台错误可能发生在孩子创建前或创建后;后台错误表示准入被拒绝。所有孩子都必须能归因。 |
| C04 | 前台结果 | 完成且成功时父结果等于孩子最终输出;未完成错误必须保留部分输出;完成却返回错误时标为无法定论。 |
| C05 | 续聊身份与顺序 | 后台返回 id 指向同一个可续聊会话;成功的 send_message 按顺序进入,来源是直接父级。 |
| C06 | 结算来源 | 每条系统通知都能解析到正确的直接可续聊孩子;固定 Canary 还检查提示中要求的结算边界。 |
| C07 | report 来源 | 孩子主动发出的 report 与结算通知保持两条不同来源的记录;二者顺序只由固定 report 用例约束。 |

完整规则见 docs/CONTRACTS.md。

兼容与隐私边界

- v0.1 的支持承诺仅覆盖“完整运行原样随包提供的四用例基准”:
foreground-success、two-admissions、continuable-fifo 和
continuable-report。四个固定 case 都必须存在并提供完整 tracePaths;部分、导入或
自定义产物不能得到完整的受支持结论。
- 识别 dsh-eval 0.3.0 中观察到的公开产物形状,不导入私有源码模块;这不代表损坏的
0.3.0 npm tarball 可作为运行器使用。
- 同时读取纯 JSONL 与 Harness 默认的多帧 Zstandard 日志。
- 支持 descriptor v2(实测 rc.7 与 npm rc.2),以及 2026-08-31 本地
0.1.2-alpha.1 源码修订 caec78de20 和持久 0.1.2-alpha.2 SDK 矩阵产生的
descriptor v3。遇到未知版本返回退出码 2,不会靠猜测给出“通过”。
- 尊重 header.seedLength,不会把 fork 继承的祖先 descriptor 当成当前子级的重复项。
- 结构化诊断不包含提示词、模型回复、工具参数、原始 trial error 或子代理 description;
CLI 层输入/读取错误仍可能带操作系统路径,分享前应检查。
- 运行产物只按可信本地文件处理。加载器拒绝远程/设备路径,并限制 trace 数量、压缩输入
与解压输出;普通本地绝对 tracePaths 仍会使用当前用户本身拥有的文件权限。
- 不修改 Harness 配置或会话。init 仅创建用户指定的基准文件,且拒绝覆盖。

真实 trace 探针与本地验证均在 Windows 完成。仓库已配置 Windows Node.js 24 与 Linux
Node.js 22/24 的三组 verifier,以及 Windows/Linux 两组 SDK 初始化 smoke;首次推送后
必须看到五组检查全部通过,才会作发布声明。

报告中的 source.kind 只是描述,不是来源认证:sdk-runner-claim 来自产物自报字段,
dsh-eval-compatible 仅表示结构兼容。公开的证据哈希同样属于维护者自证,并非第三方签名。

退出码

| 退出码 | 含义 |
| --- | --- |
| 0 | 所有可验证契约通过。 |
| 1 | 发现至少一条行为契约违例。 |
| 2 | 输入或 descriptor 版本不兼容,无法可靠判断。 |

JSON 输出遵循 schemas/report.schema.json。

明确不做的事情

- 正式验证器包不运行 Harness case、不管理密钥、不评最终答案、不统计 token 或费用;
当前由独立 SDK 实验提供持久四场景 runner。
- 不复制官方进程内 subagent/start / subagent/end invariant;本工具检查进程退出后的
持久化证据。
- 不再发明 YAML 断言语言、重试器、baseline gate 或 LLM judge。
- 固定基准首先是 Canary。模型存在非确定性,在积累特定 Profile 的稳定数据前,不应直接
作为阻断发布的硬门禁。

真实证据

解析器和契约已通过确定性 fixture,并实际验证 rc.7、npm rc.2、本地
0.1.2-alpha.1 与完整持久 0.1.2-alpha.2 SDK 矩阵。后者四场景全部 exercised、
验证器退出 0;11 个持久化请求 header 都带有 4,096-token 上限;从最早持久会话创建到
产物写入的派生区间为 49.533 秒。含自证哈希的脱敏结构摘要见
evidence/alpha2-sdk-summary.json。证据边界与复现过程见
docs/RESEARCH_EVIDENCE.md。

开发

npm test
npm run check
npm run pack:check

项目没有运行时依赖。新增诊断必须同时添加脱敏、确定性的 fixture。

许可证

MIT。多帧 Zstandard 容器读取逻辑参考了 MIT 许可的 dsh-eval-harness;详情见
THIRD_PARTY_NOTICES.md。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群