标准实验组
实验:dsh
Experiment · 标准实验组deepseek-harness
EXPERIMENT
实验记录:DeepSeek Harness (dsh v0.2.1-alpha.2) — 标准实验组
场景1
场景1 正常模式(基线)
关键证据
- 装配:
packages/bundle/base/cordis.patch.yml(v0.1.1-rc.2 口径:76 核心插件;0.2.1 口径:95 条- id:装配行) - 执行:
packages/core/tools的 pre-execute→execute→post-execute 三瀑布 - 控制论:设定值 r 由 plan-mode/goal/todo 生成,T 环三瀑布执行
场景2
场景2 故障注入 — 工具超时(T 环看门狗,可逆注入点)
注入点
packages/guard/timeout-policy/src/index.ts工具声明timeoutMs,接exec.signal,超时映射为TOOL_TIMEOUT。
源码证据
触发行为
- 工具超时 → 返回
TOOL_TIMEOUT结构化结果(不是抛错)→ 回灌模型(R 环纠偏)。
控制论
- KT-ctrl-034 饱和/看门狗——协作式超时,非竞速硬杀。
回滚
- 延长
timeoutMs即恢复。
场景3
场景3 上下文污染(M 环信息滤波,可逆注入点)
注入点
packages/llm/token-meter(回放感知 token 计量)+packages/compaction/compaction-basic(压力压缩)+tool-result-pruner(裁剪)。
触发行为
- token 压力超阈值 →
agent/pre-step触发压缩 → 先裁工具结果,再 LLM 摘要(复用 KV 前缀缓存),CONTEXT_WINDOW_EXCEEDED时溢出恢复。
控制论
- KT-ctrl-011 卡尔曼更新 + KT-ctrl-014 信息降维——只保留增量信息。
回滚
- 调低压力阈值即恢复。
场景4
场景4 超长循环(R 环软 D 项,可逆注入点)
注入点
packages/guard/repeat-tool-reminder,阈值 3/5/8(连续同参调用同一工具),只 enrich 注入提醒,不 veto(软 D)。
触发行为
- 同工具同参连续超阈值 → 注入提醒到提示词(趋势预警)。
控制论
- KT-ctrl-023 微分 D(趋势预判)——但只提醒不硬停。
回滚
- 改回阈值或移除插件。 > 口径:仅新增/变化的注入点;不改动上述 1–4 号既有场景的观测数据。全部为源码级定位,未实机运行。
- | # | 场景 | 可逆注入点(源码路径) | 触发行为 | 控制论环节 | 回滚方式 |
- |---|------|---------------------|---------|-----------|---------|
- | 5 | PTC 运行时切换 |
packages/core/tools/src/index.ts:672(ToolPresentationMode = 'native' \| 'ptc')+:812(union 仅二者,both被拒);运行时 providerpackages/ptc-runtime/ptc-runtime-node(ctx.ptcRuntimeseam) | 由native切到ptc:原生工具 schema 从请求中消失,模型只见run_code+ SDK 说明;每次调用起受管 Node 进程,宿主函数以 async binding 注入,受同一套平台沙箱策略约束(deadline / 输出上限 / V8 heap limit) | T 环跨语言执行(KT-ctrl-030/034) | 把mode改回native;或卸载ctx.ptcRuntime实现(ptc模式缺运行时会装配期报错,非静默降级) | - | 6 | sandbox fail-closed |
packages/sandbox/sandbox-local/README.md:71(runner 链:linuxbwrap→Landlock /darwinSeatbelt /win32ACL restricted-token;另有sandbox-ssh)+docs/subsystems/permission-presets.md:73(preset 打包 sandbox+approval) | 平台无 runner 链、或链上所有探针失败 ⇒ provider 不可用,在confine()fail-closed;请求受限模式而无法建立约束 ⇒SANDBOX_UNAVAILABLE。⚠️ 本机 bubblewrap/Landlock 均不可用 ⇒ 本机实际走此分支(环境事实) | T 环鲁棒稳定(KT-ctrl-031)+ 限幅(KT-ctrl-034) | 恢复可用后端即恢复;或以permission preset降/升档(log-onlypermission/preset事件 + 两个 knob 事件) | - | 7 | auto-review opt-in |
packages/experimental/auto-review/src/index.ts:684-714(挂tools/pre-execute,仅当 preset ==AUTO_PRESET时介入,:689)+:41-62(REVIEW_POLICY);base bundle 未装配 | 装配后:单个待执行工具调用交独立 LLM 审查器做 low/medium/high 风险分级 + allow/deny;allow 替代人工审批并立即以完整主机权限执行;high恒 deny 且不可被人类/父级指令降级;deny 时若approval.overrideOf === 'never'直接denied| E 环(局部闭环的审批传感器,评「可授权性」而非「目标达成度」) | 从装配中移除该包即回到默认审批路径;零残留(不写上下文、不改历史) | - | 8 | repeat-output-guard cancel |
packages/guard/repeat-output-guard/;base bundle 默认启用:packages/bundle/base/cordis.patch.yml:454-461(mode: cancel、windowLines: 400、ngram: 5、minCount: 8、minChars: 2000) | 实时输出流中一段短行序列在滑动窗口内重复达阈值 ⇒agent.cancel({kind:'hook'}),在塌缩早期中止该次尝试(而非烧完输出预算);KV cache 无影响(不写上下文) | R 环锐化 D 项(检测—停机,非「算误差—修正」) |mode: observe(只记日志不取消)或调高minCount/windowLines/minChars;⚠️ README:136 明写 "Stops, never repairs"——已持久化的退化文本仍在历史中并被重放,清除需适配侧重放策略或压缩触发,本包不实现 |
0.2.1 增量结论
- 新增注入点呈现两条清晰趋势——(a) 执行器侧从「配置开关」扩展到「执行面选择」(
native|ptc是语义级切换,且缺运行时即装配期失败,属 fail-fast 而非静默降级);(b) 安全侧统一走 fail-closed(sandbox 不可用即拒绝),而 E 环的独立审查器仍是 opt-in、R 环新增的 guard 是 cancel-only(只停机不修复)。⇒ 可逆注入点的模块化容错性(改配置即注入扰动、回滚即恢复)在本轮继续成立,且新增点的回滚成本全部为「改回配置/移除插件」量级,无不可逆副作用。 - | 场景 | 控制论环节 | 可逆注入点 | 行为 | 强弱项 |
- |------|-----------|-----------|------|-------|
- | 1 正常 | 设定值+执行 | 默认装配 | 三瀑布执行 | 基线 |
- | 2 超时故障 | T 环看门狗 | timeout-policy | TOOL_TIMEOUT 回灌 | 强(协作式超时) |
- | 3 上下文污染 | M 环信息滤波 | token-meter+compaction | 压力压缩 | 强(只留增量) |
- | 4 超长循环 | R 环软 D | repeat-tool-reminder | 注入提醒 | 弱(只提醒不否决) |
- | 5 PTC 切换(0.2.1 新) | T 环跨语言执行 |
toolsmode +ctx.ptcRuntime| schema 收敛为run_code;受管进程执行 | 强(fail-fast:缺运行时装配期报错) | - | 6 沙箱不可用(0.2.1 新) | T 环鲁棒稳定 | sandbox-local runner 链 |
confine()fail-closed /SANDBOX_UNAVAILABLE| 强(不可用即拒绝,不静默降级) | - | 7 auto-review(0.2.1 新) | E 环审批传感器 |
experimental/auto-review(opt-in) | 单动作风险分级 → allow 替代人工审批 / deny | 中(真独立 LLM 审查器,但评授权非评达标,且默认关闭) | - | 8 输出塌缩(0.2.1 新) | R 环锐化 D | repeat-output-guard(默认启用) |
agent.cancel({kind:'hook'})早期停机 | 中(只停机不修复,已落历史文本仍重放) |
整体控制论结论(0.2.1 口径)
- dsh 的可逆注入点设计优秀——把看门狗/限幅/压缩/提醒/沙箱/输出塌缩全部沉淀为 guard 或独立插件,实现"改插件配置即注入扰动、回滚即恢复"。这体现了模块化的容错性。本轮该性质继续成立并扩展:新增注入点全部支持配置级回滚,其中 PTC 与 sandbox 均fail-fast/fail-closed(宁可拒绝也不静默降级)。但 E 环仍无「目标达成度」的独立 validator——
experimental/auto-review是真正的独立 LLM 审查器,却评的是动作可授权性且默认未装配;R 环新增的 repeat-output-guard 是 cancel-only。⇒ R 环仍只能对「感知到的失败」纠偏,放大的是错误信号而非误差信号。印证 phase3 画像:T 环最强(本轮领先幅度扩大)、E 环最弱(判定记为「部分修正」,实质结论不变)。 > 保留原因:本节逐字保留 2026-09-07 在v0.1.1-rc.2口径下完成的实验记录与观测数据(未重跑、未改写),供跨版本对照;不得静默删除。上方 1–4 号场景即该期原始观测,此处汇总其结论原文。
旧整体控制论结论(原文)
- dsh 的可逆注入点设计优秀——把看门狗/限幅/压缩/提醒全部沉淀为 guard 目录的独立插件,实现"改插件配置即注入扰动、回滚即恢复"。这体现了模块化的容错性。但 E 环无独立 validator(全库 grep 无 critic),R 环只能对「感知到的失败」纠偏,放大的是错误信号而非误差信号。印证 phase3 画像:T 环最强、E 环最弱。
旧场景结论表(原文)
| 场景 | 控制论环节 | 可逆注入点 | 行为 | 强弱项 |旧装配口径(原文)
packages/bundle/base/cordis.patch.yml(76 核心插件)——⚠️ 与 0.2.1 的「95 条- id:装配行」口径不同,不可直接相减(旧为 base 与 seam 分列统计)。 > ⚠️ 契约遵守确认(两期一致):本次实验为纯源码分析(未实机运行、未修改任何源码/配置文件、无破坏)。可逆注入点为理论定位,实际注入需在隔离环境执行且可回滚。