dsh-quality-gate:回合收口的质量门禁

前言

智能体在编辑代码或配置后,往往需要知道当前修改是否符合项目既定的质量标准。传统的 CI 检查在提交时运行,与当前正在进行的对话过程割裂;如果在对话中运行,又容易打断上下文或消耗过多 token。

DSH(DeepSeek Harness)提供了「一切皆插件」的扩展能力。dsh-quality-gate 作为一个 turn-end quality gate,在每回合编辑完成、进入收口阶段时,自动运行项目声明的检查,将失败注入为修复指令,继续下一轮对话。

这是什么

dsh-quality-gate 是一个 DSH 插件,由 JayYuen666 维护。它将质量检查集成到 DSH 的 agent/turn-stopping 事件中,根据项目声明的白名单命令执行检查(pnpm check、cargo check、ruff check、tsc),并将结果作为修复指令注入下一轮对话。

它解决的问题是:在对话过程中,让 AI 按照项目规范持续验证代码,而不是等到对话结束才去跑一次 CI。

核心功能

回合收口触发

插件的钩子位于 DSH 的 agent/turn-stopping 事件。在回合即将结束时,它会读取本次会话中所有「成功」的文件编辑,向上遍历到最近的 manifest root,检测是否存在质量门禁声明,如果存在则执行。

三种结果

一次检查只有三种结果:

  • pass:命令真正完成且退出码为 0
  • code-failure:命令运行并报告了代码错误
  • not-run:命令从未运行(通常是因为项目未声明该命令)

未真正完成的检查永远不会被记录为通过;”无法运行”也不会与”代码错误”混淆——前者会注入”请手动确认”的提示,不写入记忆,也不会作为 gate-failure 发送到 lesson bus。

白名单命令

每个根目录只能声明四种命令之一:pnpm check、cargo check、ruff check、tsc。如果没有声明,该目录不会收到门禁。宁可没有门禁,也不要使用一个会确定性失败的命令。

runaway protection

修复指令的注入受到配额限制:

  • 每个会话按回合分配配额,用完即止
  • 达到配额上限后,会注入一条用户可见的说明,并停止自动修复
  • 整个门禁执行有时间总预算,超时会注入失败而不是静默通过

不做的边界

  • 不编辑代码
  • 不阻止危险命令(那是 danger-guard 插件的职责)
  • 不写入任何文件

安装与启用

安装命令如下:

dsh plugin --profile web add @jayyuen66/dsh-quality-gate

移除时使用:

dsh plugin --profile web remove @jayyuen66/dsh-quality-gate

安装前需要满足以下条件:

  • Node.js >= 22.12
  • DSH 版本 >= 0.2.1-rc.3
  • 运行时依赖 @jayyuen66/dsh-plugin-shared 已在同一个 registry 中安装

启用方式

  1. 确认层已挂载:dsh --profile web --dump-config 的输出末尾应出现 # == @jayyuen66/dsh-quality-gate 以及 - id: quality-gate。该命令会重写配置文件的根 assembly,需同时检查 stdout 和 stderr。
  2. 在设置页面的插件列表中,找到 “quality-gate turn-end quality gate” 卡片,修改任意值并保存,将其从禁用状态切换为启用。

配置项

插件提供以下设置项(在 DSH 设置页面配置):

  • quality-gate.enabled:是否启用该插件
  • quality-gate.sessionQuota:每个会话的修复配额(次数)
  • quality-gate.sessionBudget:每个会话的总时间预算(秒)

适用场景与注意

适合在需要持续验证代码质量的项目中使用,特别是使用 pnpm、Cargo、Ruff 或 TypeScript 的项目。

使用前建议:

  • 检查插件源码,确认符合安全要求
  • 确认项目已正确声明要运行的命令
  • 了解 DSH 的运行权限范围,避免因权限不足导致检查失败

短结尾

dsh-quality-gate 将 CI 检查融入对话流程,在回合收口时自动运行项目声明的质量门禁,将失败转化为修复指令,帮助智能体在对话中持续交付可用的代码。

插件目录:https://www.skillhub.cn/plugins/JayYuen666/dsh-quality-gate
GitHub:https://github.com/JayYuen666/dsh-quality-gate

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

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

Xiaoye