dsh-trajectory-governor:为 DeepSeek Harness 提供闭环 Agent 轨迹控制

前言

在 DeepSeek Harness(DSH)里跑 Agent,常见做法是靠 system prompt 约束行为,或在会话层面切换 spec / react 等模式。这类手段能影响模型「怎么说」,却难以围绕真实工具事件流做闭环:一次 write 之后有没有 readback,性能改动有没有完整 benchmark,重复调用是否带来新信息,往往仍靠模型自觉。

dsh-trajectory-governor(维护者 chunsi-w)走的是另一条路:在 Harness 事件流上维护任务阶段、验证债务与完成门槛,把轨迹策略做成可配置的 control plane。它是 dsh-mode-boost 的 clean-sheet 重构,不依赖 preset fork,也不依赖 super-injector。项目在 GitHub 上约 9 stars,SkillHub 分类为「工作流」。

这是什么

一句话定位:面向 DeepSeek Harness 的闭环 Agent 轨迹控制平面(Closed-loop trajectory policy plane)。

插件监听 inbox 消息、工具调用与 Code Mode 子调用,在同一请求内追加可重建的近场 policy message,并维护:

  • Task Episode 与连续性关系(new / continuation / extension / correction / review 等);
  • 当前工作阶段与结构化信息增益;
  • workspace revision 与验证债务(Verification Debt);
  • benchmark 证据与同规格、带容差的性能回归判断;
  • scoped 工具能力面(必要时暂时隐藏 write / edit);
  • 显式 finish 与自然结束的完成门;
  • 可选自适应 reasoning effort;
  • 本地、非模型可见的决策账本。

闭环如何工作

README 给出的主路径如下:

真人消息被 inbox claim
  -> 在第一次 prompt assembly 前建立 Task Contract
  -> 判断 new / continuation / extension / correction / review / conversation
  -> 必要时通过 agent.ctx.tools.restrict() 暂时隐藏 write/edit
  -> agent/pre-step 在同一个请求内追加可重建的近场 policy message
  -> Native tool 或 Code Mode SDK 子调用产生 durable 事件
  -> 计算 observation novelty / mutation / verification
  -> 修改产生 Verification Debt
  -> readback + test/build/check 清偿当前 revision 的债务
  -> 可选 benchmark gate 只接受当前 revision 的完整、可解析结果
  -> 同 query count / concurrency / warmup 才比较 QPS,容差内不误判噪声
  -> finish guard 与 turn-stopping 阻止无证据结束
  -> 有限续步耗尽后要求模型明确报告 blocker

下面分几块说明各模块在做什么。

Task Episode 与关系判断

当前确定性 relation 包括:new-objectivecontinuationextensioncorrectionclarificationreviewconversation。判断综合指代词、文件名与 artifact 重合、与上一 objective 的词面相似度,以及 fix/build/review 语义。第一条消息若是寒暄,不会永久关闭插件;下一条真实任务会建立新的 objective。

能力面控制

当前版本把明确的 writeedit 视为专用 mutation 工具。str_replace_editor 是读写混合工具,只有在仍有独立 read 时才会被暂时隐藏,避免 Minimal preset 失去观察能力。Code Mode 下 restriction 会改变生成的 TypeScript SDK,但不会删除 run_code transport。

bash / pwsh 仍是混合读写工具。对 apply_patch、重定向、sed -igit apply、包管理安装等常见写入签名,Governor 会保守标记为 mutation risk:成功后递增 workspace revision 并创建需要命令验证的债务。需要明确:Governor 是轨迹策略,不是安全边界;真正权限仍由官方 sandbox / approval 执行。

Verification Debt

成功的 write / edit / str_replace_editor mutation 或高风险 shell 写入会创建验证债务,并绑定创建时的 workspace revision;后续修改会使旧 readback / test 证据失效。

  • 源代码:需要 readback + test / build / check;
  • 文档:需要 readback;
  • 未知 artifact:需要可执行验证。

以下 shell 命令会被识别为 verification:

npm/pnpm/yarn/bun test|build|lint|typecheck|check
pytest / vitest / jest / mocha / tsc
cargo test / go test / dotnet test / mvn test / gradle test / make test

bash 文本里出现非零 [exit code: N] 时也会被视为失败。债务未清时,Governor 最多按配置追加有限验证步;到达上限后追加一次仅用于报告 blocker 的步骤,不会无限循环,也不会静默放行。

Benchmark-aware Stop Controller

实验型性能任务可显式打开 benchmark gate,不影响普通开发任务。规则是确定性的:

  • 只有 total_queries >= fullBenchmarkMinQueriesrecall >= fullBenchmarkMinRecall 才能通过当前 revision;无法解析的结果明确成为 blocker。
  • QPS 只和相同 total_queriesconcurrencywarmup 的 best record 比较。
  • 同规格下降未超过 benchmarkScoreTolerancePercent 时保留为可接受噪声。
  • 每次已识别 mutation 或高风险 shell 写入都会使先前 benchmark 失效。

benchmark 工具应在 meta 或模型可见文本中返回完整命名指标,JSON 最可靠,例如:

{
  "total_queries": 10000,
  "recall": 0.98,
  "qps": 1250.5,
  "concurrency": 8,
  "warmup": 500
}

Governor 只保留 benchmark best record 与状态,不直接写用户工作区,因此不会伪造「自动 rollback」。

Native 与 Code Mode

Governor 同时观察 Native 的 tool/call / tool/result,以及 Code Mode 的 tool/code-dispatch-start / tool/code-dispatchrun_code 内部的 read / write / edit 也会更新信息增益、释放 restriction、创建并清偿验证债务。

状态工具与决策账本

只读工具 trajectory_policy_status 返回当前 Agent 的 episode、relation / phase / risk、artifacts、restriction、verification debt、benchmark 状态、ledger 状态与 assembly hash 等。实现严格使用 exec.agent,不会读取其他会话。

决策账本默认写入:

$DSH_HOME/trajectory-governor/decisions.jsonl

账本保存 session / message id、原消息 SHA-256(不保存原文)、relation / phase / risk、tool effect、open verification debt、request assembly hash、turn stop reason 等。账本失败不会改变官方 Agent 执行流,但会通过 console.errortrajectory_policy_status 暴露原因。

安装与启用

环境要求

  • Node.js ^22.19.0 || >=24.0.0
  • DeepSeek Harness 0.1.0-rc.7(开发与集成测试基线);peer range 兼容 0.1.0-rc.5<0.2.0

从 npm 安装(推荐)

当前包名为 @chunsi-m/dsh-trajectory-governor,版本 0.2.0,MIT 许可证。安装命令:

dsh plugin --profile web add @chunsi-m/dsh-trajectory-governor
dsh --profile web --dump-config

如需固定版本:

dsh plugin --profile web add @chunsi-m/dsh-trajectory-governor@0.2.0

包已声明 cordis.patch.yml bundle patch,dsh plugin --profile web add ... 会把它加入 web profile 的 bundle 层,而不是只安装成普通依赖。

从源码或 tarball 安装

从当前目录:

npm run build
dsh plugin --profile web add .
dsh --profile web --dump-config

安装 tarball:

npm run pack:release
dsh plugin --profile web add ./chunsi-m-dsh-trajectory-governor-0.2.0.tgz

配置与推荐上线顺序

cordis.patch.yml 默认配置节选:

- insert:
    - id: trajectory-governor
      name: '@chunsi-m/dsh-trajectory-governor'
      config:
        mode: active
        adaptiveReasoning: false
        restrictBeforeEvidence: true
        autoVerify: true
        maxAutomaticContinuations: 1
        exposeStatusTool: true
        ledger: true
        maxLedgerBytes: 10485760
        benchmarkRequired: false
        benchmarkToolNames: [run_benchmark]
        verificationToolNames: [build_project, run_correctness_test]
        finishToolNames: [finish]
        fullBenchmarkMinQueries: 10000
        fullBenchmarkMinRecall: 0.95
        benchmarkScoreTolerancePercent: 2
        maxActionsWithoutBenchmark: 8
        maxStagnantFullBenchmarks: 2
        stopRetryOnDeterministicErrors: true

常用字段含义:

字段 默认 说明
mode active off / shadow / active;shadow 只决策和记账,不改请求
restrictBeforeEvidence true fix / continuation 等任务在观察前临时隐藏已知专用写工具
autoVerify true 有完成 blocker 时允许 agent/turn-stopping 追加有限验证步骤
maxAutomaticContinuations 1 每个 turn 的自动验证续步上限
benchmarkRequired false 为性能任务强制当前 revision 的完整 benchmark
ledger true 写入本地 policy ledger,不进入模型历史

先做 shadow 观察决策是否符合真实会话:

mode: shadow
ledger: true

确认 relation / phase 判断合理后,再切换为 activeadaptiveReasoning 默认关闭,因为改变 reasoning effort 会改变 request header 与缓存形状;应在具体 provider / model 上完成校准后再启用。

性能任务示例配置:

benchmarkRequired: true
benchmarkToolNames: [run_benchmark]
verificationToolNames: [build_project, run_correctness_test]
finishToolNames: [finish]
fullBenchmarkMinQueries: 10000
fullBenchmarkMinRecall: 0.95
benchmarkScoreTolerancePercent: 2

适用场景与注意

适合谁

  • 已在 DSH 上跑长链路 Agent,希望用事件流而非纯 prompt 约束「先观察再改、改完要验证、性能改动要有完整 benchmark」的团队;
  • 需要 Task Episode 连续性判断、验证债务与 finish gate 的工作流场景;
  • 使用 Native tools 或 Code Mode,且工具名可按 harness 配置(benchmarkToolNamesverificationToolNamesfinishToolNames)。

注意事项

  • 插件以当前 dsh 进程权限运行,安装前应阅读 源码 与 MIT 许可证,确认 bundle patch 与默认配置符合你的环境。
  • Governor 是轨迹策略层,不能替代 sandbox 与人工 approval;高风险 shell 写入只会创建验证债务,不会单独充当安全边界。
  • SkillHub(目录页)是社区插件目录,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件是其中一条工作流向的补充。

结尾

dsh-trajectory-governor 把 Task Episode、验证债务、benchmark gate 与完成门槛接到 Harness 真实事件流上,让 Agent 轨迹从「靠 prompt 自律」变成可配置、可记账、可逐步上线的闭环策略。建议先用 shadow 模式对照 ledger,再切 active;性能类任务再单独打开 benchmarkRequired

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜