YuXuanLiang-dev / dsh-plugin-adaptive-agent-policy

Listed

面向 DeepSeek Harness 的自适应任务路由、循环预算与渐进式裁剪插件

mainOther View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:YuXuanLiang-dev/dsh-plugin-adaptive-agent-policy

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 387fc36Synced Aug 18, 2026

DSH Adaptive Agent Policy

中文 | English

一个可独立发布的非官方 DeepSeek Harness 插件:根据任务类别动态控制提示词、输出上限、软硬步骤预算与 工具结果裁剪,在保持用户所选模型和工具展示方式稳定的前提下,减少大型任务中的无效循环。

状态:0.1.0-rc.3 发布候选。DeepSeek Harness 仍处于开发者预览阶段,插件以公开的 0.1.0-rc.6 包 API 构建;升级 DSH 时应先重新运行测试。

出处与声明

项目精确版本用途许可证
DeepSeek Harness47f943859b基础架构、Agent Loop、事件日志与插件接口MIT
OpenCodee23586af26模型提示词、最后一步、工具输出限界与压缩策略参考MIT
本插件本仓库按 DSH 事件与插件约定重新实现的自适应策略MIT

OpenCode 是设计参考,不是运行时依赖。具体参考文件包括 session/system.tssession/prompt.tstool/truncate.tssession/compaction.ts。 完整来源声明见 NOTICE.md。本项目不代表 DeepSeek 或 OpenCode 官方立场,也不宣称获得上游背书。

增加的能力

  • 无模型调用的多语言任务路由:readsmallfrontendlargebatch
  • 第二层风险路由:只在软检查点从九类风险中选择一个高置信度、尚未覆盖的检查;
  • 每个任务类别独立的最大输出 token、软检查步骤与纯文本硬终步;
  • 策略状态使用非持久化 system section;同阶段内容稳定,且不再把逐轮通知追加到会话历史;
  • 根据步骤数或上下文压力选择 moderatetightcritical 裁剪等级;
  • 保护近期工具结果、设置最小总节省量、保留可安全回放的事件;
  • 对外仅一个插件配置项,包内增强裁剪器使用独立服务名,不与 DSH 上游静态裁剪器冲突。

插件不会更改用户选择的提供方、模型、推理强度、权限、沙箱或 Native/Code 工具展示方式。

设计思路

flowchart LR
  U["Human request"] --> R["Deterministic task router"]
  R --> P["Task profile"]
  P --> L["Non-persistent phase section and output cap"]
  L --> S{"Step or context pressure"}
  S -->|Normal| L
  S -->|Prune| C["Replay-safe result pruning"]
  C --> L
  S -->|Soft| V["Bounded risk router"]
  V --> Q{"One uncovered high-confidence risk?"}
  Q -->|Yes| T["One targeted existing check"]
  Q -->|No| F
  T --> L
  S -->|Hard| F["Text-only final step"]

核心原则:

  1. 按任务比例施加控制。 只读分析不应承担跨模块重构的循环成本。
  2. 尽量保持缓存前缀稳定。 不热切换模型或工具 schema;插件的 system section 在同阶段完全一致,仅在软检查点、 硬终步或新任务切换时变化。
  3. 高置信度才增加检查。 风险路由器每轮最多选择一个尚未覆盖的风险;证据不足时不制造验证工作。
  4. 只在有收益时裁剪。 未达到大小和总节省阈值时完全不改写历史。
  5. 状态不写入会话。 当前策略在每次请求组装时提供一个紧凑 system section,不产生 user/context 历史消息, 因此策略文本的输入占用是常量而不是随步骤累积。
  6. 一切仍是插件。 路由策略与裁剪服务边界独立,可通过普通 Cordis 生命周期替换。

安装

dsh plugin --profile web add dsh-plugin-adaptive-agent-policy@next

安装命令会把包加入 web Profile 的依赖和 dsh.profile.bundles,无需修改 settings.yaml 或手动编辑 cordis.patch.yml。检查组合结果后启动:

dsh --profile web --dump-config
dsh web

从源码开发或使用自定义 Cordis 根配置时,也可以直接加入:

- id: adaptive-agent-policy
  name: dsh-plugin-adaptive-agent-policy
  config: {}

插件会自动安装包内的增强裁剪服务。无需另外安装或配置 DSH 上游的 @deepseek-ai/dsh-compaction-tool-result-pruner

第二层路由器默认无需配置。若需要调整保守程度,在 Profile 的 cordis.patch.yml 中覆盖本插件行; 这属于组合配置,不写入 settings.yaml

- id: adaptive-agent-policy
  config:
    riskRouter:
      enabled: true
      minimumScore: 4
      maxRequestChars: 4096
      maxEvidenceChars: 8192
      skipCovered: true

默认参数

任务配置

类别最大输出 token软检查步骤纯文本硬终步
read16,38448
small32,76859
frontend32,768814
large65,5361018
batch65,5361020

最大输出仅在 Agent 没有明确 maxTokens 时生效;更严格的调用方或提供方上限始终优先。

渐进式裁剪

等级步骤压力结果阈值保留头/尾保护近期步骤最小节省量
moderate645%16,384 chars12,288 / 2,04828,192 chars
tight1065%8,192 chars4,096 / 1,02414,096 chars
critical1475%4,096 chars2,048 / 1,02412,048 chars

步骤或压力条件任一满足即可进入该等级。没有模型上下文窗口元数据时,压力路由关闭,步骤路由继续。

风险路由器

候选风险为 boundaryretryconcurrencypersistencesecuritycompatibilityfrontendresourcebatch-integrity。路由器只在每轮第一次到达软检查点时运行一次,最多读取 4,096 个请求字符和 8,192 个近期工具结果字符,不发起 LLM 请求。只读任务、纯文档改动、低置信度匹配和 近期输出已经明确通过的风险都会跳过;命中时也只要求一个现有检查或最小复现。

基准测试

以下 2026-08-15 的受控对比对应 rc.2 策略,使用相同 deepseek-v4-pro High 路由、凭据来源、提示词、种子工作区、可见测试与 隔离会话目录。隐藏检查不在模型工作区内。每行仅运行一次,不是统计平均值。

任务版本步骤总 token用时缓存命中质量结果
小型重试修复原版659,89144.2s84.1%5/5;隐藏边界通过
小型重试修复最终自适应版666,83049.5s85.2%5/5;隐藏边界通过
前端仪表盘原版9174,022180.4s93.2%5/5;390 px 溢出
前端仪表盘最终自适应版7162,141194.0s92.7%5/5;390 px 无溢出,主题持久化
跨模块队列原版8207,525355.5s93.4%7/7;隐藏转换 2/2
跨模块队列最终自适应版6158,420255.0s91.4%7/7;隐藏转换 2/2
汇总原版最终自适应版差异
总 token441,438387,391-12.2%
总耗时580.2s498.6s-14.1%

大型任务 token 减少 23.7%、用时减少 28.3%,质量持平;小型任务为保留交互边界多用了 11.6% token; 前端少用 6.8% token,但为修复移动端溢出多耗时 7.5%。正常基准中裁剪替换次数为零,因为没有符合条件的 陈旧大型工具结果;裁剪的三个等级由单元与集成测试单独覆盖。

早期宽泛提示词版本曾把前端任务诱导到自建 CDP 验证器,膨胀到 30 步、1.316M token、675.7 秒。rc.2 因此使用确定性分类、一次类别专属检查、有界前端验证和纯文本终步,而不继续堆叠通用提示词。

一份第三方单次测试报告了另一项重要反例:原版输入约 72 万 token,PTC 模式约 117 万,标准模式约 105 万;虽然输出从约 45 万降至 25 万/14 万,标准模式总量约与原版持平,PTC 总量反而约高 22%。 该报告未附可复跑的原始日志,因此仅作为外部观察,不与上表合并。它揭示了 rc.2 将策略通知写入会话历史的 输入累积问题,并直接促成 rc.3 改用非持久化阶段 section。rc.3 的真实模型 token 收益仍需用相同任务重新实测。

该载体的缓存取舍是可预测的:同一阶段内插件 section 字节完全稳定;进入软检查点或硬终步时会改变一次 system header,可能让该次请求失去旧前缀缓存。插件接受每轮最多两次阶段切换的有限成本,以避免每步都向历史 追加策略消息造成的持续输入增长。

这些都是非确定性模型的单次样本,只能支持优化方向,不能证明普遍或统计显著的性能优势。

开发与独立发布

pnpm install
pnpm run check
npm login
npm publish --tag next

已知边界

  • 文本路由可能保守地误判含糊任务;它有意不增加路由模型调用。
  • 风险路由器是启发式证据选择器,不是完整静态分析或安全审计;低置信度时刻意不触发。
  • rc.2 及更早版本写入的旧策略通知仍存在于原会话历史;rc.3 不再产生新的策略历史消息。
  • 阶段切换会改变 system header,可能造成该次请求的缓存前缀失配;同阶段内 header 保持稳定。
  • 字符裁剪不等于精确 token 裁剪,也不会理解被裁剪内容的语义重要性。
  • 纯文本硬终步能限制失控循环,也可能截断确实需要更多工具步骤的任务,应依据重复测试调参。
  • DSH 仍在快速迭代;该插件目前把 0.1.0-rc.6 作为兼容边界。

许可证

MIT。再分发时请同时保留 NOTICE.md 中的出处声明。

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected

Repository information

Language
TypeScript
License
MIT
Last updated
Aug 15, 2026, 4:57 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.