DeepSeek Harness 插件

haozheou/dsh-discipline-guard

Star 数 ★ 3 分类 用量与计费 收录于 2026-08-30

DSH Agent 纪律卫士:在 harness 边界强制四道闸门(循环熔断、Token 成本熔断、路由切换警示、计划审批卡),模型无法用文字绕过;🛡 芯片一键解除,daily 档对有缓存路由零打扰,把无缓存失控从每回合数百万 token 封顶到约 50 万。

安装

# Release 预构建包

dsh plugin --profile web add "https://github.com/haozheou/dsh-discipline-guard/releases/download/v1.0.0/dsh-discipline-guard-1.0.0.tgz"

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:haozheou/dsh-discipline-guard

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

你的 agent 曾在一场事故里 3 分钟烧穿整周 Token 配额,期间还礼貌地告诉你"快好了"。提示词里写一万遍"不要重复"都没用——因为模型可以无视文字。本插件挂在 harness 边界上,在工具派发之前、在模型请求发出之前拦截,没有商量余地。

四道闸门

# 闸门 默认 行为
① 循环门 开 同名工具+完全相同参数连续计数:第 2 次注入可见预警;第 4 次起调用直接派发被拒(连续失败 2 次更快熔断)。用户任何新消息即解除。
② 成本门 开·fail-closed 用每步真实 usage 计量:净计费输入、缓存命中率、回合累计。命中"无缓存全价重发"模式(token-plan 类端点)先预警要求汇报,同回合再犯直接掐停回合。回复「继续/放行/别停/照常」赦免本回合。
③ 路由门 开 会话中途切换模型端点且历史较长时,注入一次性警示:新端点可能把整个上下文按全价重发。
④ 计划门 关 可选:每个用户回合的首个写/执行类工具调用走原生审批卡,批准一次放行本回合。

所有监听器内部 fail-open:卫士自己有 bug 也绝不拖垮宿主;而烧钱类判定 fail-closed:宁可停下来等你。

操控入口

  • 主界面:会话标题区 🛡 芯片,一键武装/解除——逃生口永远一步可达。
  • 设置 → 纪律卫士:每道门独立开关与阈值,三档预设:
    • off 全关
    • daily(推荐):按有缓存路由(每步净输入 1~5K)零打扰校准,同时把无缓存失控封顶在每回合约 50 万 token
    • wild:只提示不打断,适合实验性重活
  • 设置存于 ~/.dsh/settings.yaml 的 discipline-guard 命名空间,热加载,装好后日常改阈值无需重启。

解锁梯子(谁说了算:你永远说了算)

熔断发生 → 你看一眼 → 值得干:回「继续」放行本回合 / 不值得:你已经省下了一整场火

设计要点:放行不累积、不永久。这次「继续」不代表下次宽容,这次掐停也不代表下次聒噪——每回合都是新账。唯一需要自觉的是:关了 🛡 总闸,干完活记得开回来。

安装

需要 web profile 的 DSH(客户端 UI 目前仅支持 web;宿主闸门通用)。

A. 插件市场(收录后)

DSH → 插件市场 → 搜 "discipline guard" → 一键安装。

B. 手动安装

编辑 ~/.dsh/profiles/<profile>/package.json:

{
  "dependencies": {
    "dsh-discipline-guard": "github:haozheou/dsh-discipline-guard"
  },
  "dsh": {
    "profile": {
      "bundles": [
        // ……已有 bundles……
        "dsh-discipline-guard"   // ← 加这一行
      ]
    }
  }
}

在 profile 目录执行 pnpm install,重启 DSH。插件自带的 cordis.patch.yml 会自动挂载组合行。

一开关切换"有缓存 / 无缓存"路由

成本门如何识别"无缓存全价重发",过去只看每步真实 usage 里的缓存命中率(auto 推断)。如果你知道自己当前用的是哪类端点,可直接告知卫士,判断更准、也不必靠命中率猜:

  • cached(有缓存):如 deepseek 官方等带提示缓存的端点。成本门不再因单步低缓存命中率误报(冷启动/长新话题也可能命中低),只保留回合计费预算硬顶。↓ 日常档对它"永远不响"。
  • nocache(无缓存):如 token-plan / 套餐类全价重发端点。成本门从严:只要单步净计费输入 ≥ costRequestInputMax 且上下文 ≥ costContextMin 即判定为全价重发模式,不再附加命中率下限条件。
  • auto(自动,默认):保持原行为,按缓存命中率高低推测。

设置在「设置 → 纪律卫士 → ② 成本门 → 当前路由缓存判定」,三档可一键切换,改动热加载,无需重启。

提醒:把 nocache 路由标成 cached 会失去全价重发的拦截保护(只剩回合预算兜底)。请按你实际在用的端点如实标注。

阈值怎么调

实测基线(每步净计费输入):

  • 有缓存路由(deepseek 类):1~5K,命中率 ~97% → 日常档永远不响
  • 无缓存"套餐"路由:整上下文每步全价重发 → 成本门就是为它存在的

事故回放:16 步 × 36 万 = 574 万 token / 3 分钟。daily 档下执行止步约 55 万——省 90%,且现场留痕(预警卡 + 回合掐停都有明确原因)。

已知限制

  • 客户端 UI 仅支持 web profile;桌面端只有宿主闸门(直接改 settings.yaml 配置)。
  • 计量按回合/会话进行;并行子代理的用量按 agent 各自计量,跨 agent 聚合留待 v2。
  • 与内置 repeat-tool-reminder 共存(它在 3/5/8 次提醒)。嫌两声提示吵可关掉内置那个。

致谢

  • 循环计数的参数规范化思路致敬 DSH 内置 repeat-tool-reminder。
  • 基于 Cordis / DeepSeek Harness 插件 API:tools/pre-execute、tools/post-execute、agent/pre-step、session/event、approval、dsh-settings。

MIT © haozheou

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。