前言¶
在 DeepSeek Harness(DSH)里改代码,常见两类需求并不相同:一类是提交前把 diff 收干净,但不改语义;另一类是专门针对当前改动找 correctness 问题,并且希望报告里的每一条都经过独立验证,而不是模型一次性「扫一眼」就列清单。通用聊天里的「帮我 review」往往混在这两种目标里,范围也不固定。
下面介绍社区插件 dsh-plugin-code-quality(维护者 Hope-Phenom,npm 包名 @hope_phenom/dsh-plugin-code-quality)。它在 DSH 的 / 菜单 skills 分组下注册 /simplify、/code-review,以及 /review(与 /code-review 行为相同)。实现方式是把完整指令文档注册为 user-invocable skill,而不是 host command,以便你输入的目标参数原样进入模型上下文。
这是什么¶
dsh-plugin-code-quality 是一个 DSH 插件:无 client 半部、无 tools、无 HTTP 服务;入口 lib/index.js 仅向 ctx.skills 注册若干 skill。设计思路是对齐主流 code review 工具链里已经收敛的做法,并适配 DSH 的工具、指令文件布局与 subagent 模型。
| 命令 | 作用概要 | 谁可以调用 |
|---|---|---|
/simplify [target] |
对改动做行为不变的清理:复用已有 helper、减复杂度、减无效工作、把放错层级的改动归位;不是找 bug | 你 和 模型 |
/code-review [level] [--fix] [target] |
多角度在 diff 上找真实正确性缺陷,每条候选经独立 verifier,按严重度排序输出 | 仅你 |
/review … |
/code-review 别名 |
仅你 |
插件当前版本 0.1.1,许可证 MIT,依赖与 peer 均为空,仅通过宿主传入的 ctx 交互。
核心功能¶
/simplify:行为不变的 diff 清理¶
作用范围按顺序解析:你指定的 target → git diff '@{upstream}...HEAD' → main...HEAD(回退 origin/main、master)→ HEAD~1。工作区未提交改动与未跟踪文件会一并纳入,便于 commit 前使用;若无改动则直接说明并结束。
四个独立 reviewer 维度为 Reuse、Simplification、Efficiency、Altitude。只有能给出具体替换方案的发现才会保留(例如应调用的现有 helper、更简单写法、更省资源的替代、应并入的通用机制)。保留项去重后直接应用;若修复会改变预期行为或需 diff 外改动,则跳过并在结果中标记为 skipped。
/code-review:多角度审查 + 独立验证¶
级别从你消息中的单词读取,无单独参数解析器。默认 medium。
| Level | 正确性角度数 | 清理角度数 | 每个 finder 候选上限 | 报告上限 | 验证倾向 |
|---|---|---|---|---|---|
low |
3 | 0 | 4 | 5 | 仅保留 CONFIRMED |
medium(默认) |
5 | 2 | 6 | 8 | 平衡 |
high |
6 | 4 | 8 | 12 | 保留 PLAUSIBLE |
max |
6 | 4 + sweep | 8 | 20 | 保留 PLAUSIBLE |
六个正确性角度(C1–C6)涵盖逐行 hunk、删除行为审计、跨文件契约、语言/框架陷阱、异步与资源生命周期、错误路径与边界等;级别决定实际运行几个角度。每个候选由独立 verifier 尝试反驳,结论为 CONFIRMED、PLAUSIBLE 或 REFUTED。high 与 max 另有 sweep reviewer 查遗漏。截断报告时,正确性问题优先于清理、层级与风格类发现。
输出一行一条,例如:
src/parser.ts:118 — the retry loop resets `attempts` inside the loop; a persistent 503 retries forever
若无项通过验证,单行说明,不凑数。加 --fix 时在报告后应用通过项;不加则不改文件。
为何用 skill 而不是 ctx.commands¶
ctx.commands.register() 注册的是 host command,默认不向模型投递消息,需自行合成 user message。ctx.skills.register() 且 userInvocable: true 时,composer 会把你的输入(含 /simplify 等 token)原样发送,并在 pre-step 边界附加 <skill_content> 指令块——与本插件「整份文档即指令」的需求一致。
simplify 注册为 modelInvocable: true, userInvocable: true;code-review 与 review 为 modelInvocable: false, userInvocable: true,仅出现在你的 / 菜单,模型目录中不可自调用。
安装与启用¶
环境要求:
- DSH 已 compose
@deepseek-ai/dsh-skill与@deepseek-ai/dsh-client-ui-skill(标准 preset 通常已包含)。 - Node.js ≥ 20。
在 PowerShell 中安装(将 <your-profile> 换成你的 profile 名):
dsh plugin --profile <your-profile> add @hope_phenom/dsh-plugin-code-quality
重启 profile(或等待 HMR)后,在 composer 输入 /,skills 分组下应出现 simplify、code-review、review。
本地开发可对 checkout 路径执行:
dsh plugin --profile <your-profile> add F:\path\to\dsh-plugin-code-quality
升级: 再次执行 bare 包名的 add 不会自动升到新版本(caret 范围与 lock 行为)。需显式版本或先移除再添加,例如:
dsh plugin --profile <your-profile> add @hope_phenom/dsh-plugin-code-quality@0.1.1
然后完全重启 profile(已加载包的替换需要新 module generation,HMR 不覆盖已加载 bundle)。镜像滞后时可指定上游 registry:
dsh plugin --profile <your-profile> add @hope_phenom/dsh-plugin-code-quality@0.1.1 --registry=https://registry.npmjs.org
典型用法¶
/simplify¶
/simplify # 清理相对 upstream 分支以来的全部改动
/simplify src/parser.ts # 限定单一路径
/simplify 421 # 审查指定 PR,而非本地 diff
/code-review¶
/code-review # 默认 medium 级别
/code-review high # 更多角度、更高上限、验证偏 recall
/code-review max --fix # 最广扫描,报告后自动应用
/code-review high src/parser.ts # 级别 + 路径
/review 与 /code-review 等价,参数写法相同。
适用场景与注意¶
适合: 已在 DSH 标准 skill 栈上日常写代码、希望在同一套 / 菜单里区分「提交前 simplify」与「仅人工触发的严格 code-review」的开发者。
注意:
- 插件以当前 DSH 进程权限运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。
/code-review与/review不会进入模型 skill 目录,避免 agent 自行发起全量审查;需要模型主动做行为不变整理时,可使用/simplify或依赖其modelInvocable注册策略。- 社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,包发布在 npm
@hope_phenomscope。
结尾¶
dsh-plugin-code-quality 把 /simplify(可人机共用、行为不变清理)和 /code-review / /review(仅用户、多角度 + verifier)接到 DSH skills 机制上,diff 范围与级别在 README 中有明确规则。若要浏览分类信息或跳转源码,可使用目录页与 GitHub:
- 目录页:https://www.skillhub.cn/plugins/Hope-Phenom/dsh-plugin-code-quality
- GitHub:https://github.com/Hope-Phenom/dsh-plugin-code-quality