前言¶
在 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