前言¶
用 DSH 做編碼任務時,最常出現的情形是:Agent 說做完了,但你看不到它到底跑了什麼、結果是什麼。信號是一句 done,代價是一次人工複覈。dsh-done-check 針對的是這個環節:把任務約定好的檢查項寫成 done-check.yaml,插件通過 DSH 真的把命令跑一遍,記錄退出碼、輸出、耗時和文件指紋;代碼一變,舊結果自動標記爲需要重驗。沒有執行記錄的「通過」不算通過。
下面介紹這個插件的來源、安裝、用法和結果語義。
這是什麼¶
dsh-done-check 是一個 DSH 插件,由 BeforeLanding 維護,屬於工作流類。它把驗收清單變成可執行、可追溯的對象:
- 清單寫在項目的 git 根目錄
done-check.yaml。 - 插件通過 DSH 的 shell 工具執行清單裏的命令,記錄命令和結果。
- 清單確認、人工項結論必須由你來做,Agent 不能代替。
- 被監控的文件變化後,舊結果失效並提示重新檢查。
倉庫地址:https://github.com/BeforeLanding/dsh-done-check ,目錄頁:https://www.skillhub.cn/plugins/BeforeLanding/dsh-done-check ,npm 包 dsh-done-check。
安裝與啓用¶
要求 DSH >=0.1.5-rc.1 <0.3.0、Node.js >=22.19,並且項目是一個 git 項目。
安裝命令來自 README:
dsh plugin --profile web add dsh-done-check
使用其他由 CLI 管理的 profile 時,把 web 換成對應名稱。裝完按宿主提示重新加載或重啓。
需要留意一點:初始化與英文輸出是 v0.2.1 源碼中的新功能,npm 尚未發佈該版本,所以當前要按源碼安裝方式體驗。項目 development 狀態標註爲 v0.2.1 源碼,npm 待發布。
快速開始¶
下面三步復現一遍完整流程。
第一步,在 git 根目錄生成清單草稿。 在 DSH 對話裏依次發送:
/done-check lang en
/done-check init
第一條把當前會話輸出切到英文;第二條讓 Agent 探測項目腳本並起草 done-check.yaml。初始化不會執行命令、不會確認清單,也不會覆蓋已有的清單文件。你也可以直接讓 Agent 起草:
Draft and save done-check.yaml for this task. Use the project’s actual test commands and name what each one verifies. Add a manual item with instructions for anything I need to inspect myself.
第二步,預覽、確認、執行。 分三條消息發送:
/done-check
/done-check confirm
/done-check
第一次只展示清單和將要執行的命令,不運行任何東西。confirm 記錄你接受的是剛預覽的那份內容。再發一次 /done-check 才真正執行自動檢查項。
第三步,按結果處理。 測試失敗時查看 Agent 給出的報告,讓它修復後重跑 /done-check。人工項由你自己按說明驗證,然後記錄結論:
/done-check ok [n]
/done-check no [n] [note]
只有一項待人工確認時可以省略 n。
默認輸出是中文,用 /done-check lang en 或 /done-check lang zh 切換當前會話。命令接受中英文別名,例如 確認 / confirm、詳情 / details。
試用示例¶
倉庫裏的 CSV 導出示例包含一個故意留了缺陷的導出函數、兩項自動檢查、一項人工檢查和一份現成修復。運行測試只需 Node.js 和 git,不需要安裝依賴或配置 API key。setup 命令會新生成一個獨立 git 目錄:
git clone https://github.com/BeforeLanding/dsh-done-check.git
cd dsh-done-check
node examples/csv-export/demo.mjs setup
在生成的目錄打開 DSH 會話,按示例 README 可以復現 失敗 → 修復 → 通過 → 過期 的完整鏈路。
結果說明了什麼¶
插件把結果分成四類,這四類是判斷能不能相信報告的關鍵:
- 通過或失敗:命令真的執行了,退出碼、輸出、耗時和文件內容指紋一起記錄。
- 沒能運行:權限拒絕、超時或執行器問題導致沒有可用結果。它既不算通過也不算失敗。
- 等待你確認:人工項需要你的結論,Agent 不能確認清單或記錄人工決定。
- 需要重新檢查:被監控的文件已不同於保存結果時的版本;修改檢查定義或清單結構則需要重新確認。
有一點要說清楚:通過只代表約定的檢查通過了,不代表需求的每一部分都被覆蓋。插件不提供完成度百分比,也不做需求追蹤。
文件指紋的範圍分兩種情況。不寫 watch 時,指紋覆蓋已跟蹤和未被忽略的未跟蹤文件,清單本身除外;寫了 watch,就只覆蓋聲明匹配到的文件。相關的配置和鎖文件要自己納入,插件不會推斷依賴。
命令參考¶
常用命令如下:
/done-check status # 只看當前狀態,不運行檢查
/done-check details [n] # 查看命令、輸出和變化的文件
/done-check run # 強制重跑全部已確認的自動項,包括內容未變的失敗項
/done-check init # 起草清單,不執行、不覆蓋
/done-check confirm # 記錄你接受剛預覽的清單
/done-check ok [n] # 記錄人工項結論爲通過
/done-check no [n] [note] # 記錄人工項結論爲不通過
適用場景與注意¶
適合的場景:單個任務的驗收邊界明確,有真實可跑的測試命令,且你願意把「約定檢查」寫成清單。它本質上是對既有測試的封存和留痕,不是替代測試框架,也不是需求管理工具。
使用前要注意:
- 插件在當前 dsh 進程權限下運行,檢查經由已註冊的 shell 工具執行,本地執行器不提供隔離。確認清單不會繞過 DSH 命令權限。
- 它防的是隨手修改檢查和結論,不防擁有不受限 shell 的 Agent。
- 安裝第三方插件前,應打開倉庫覈對源碼與許可證。本項目許可證爲 MIT。
- 項目較新,GitHub 倉庫創建於 2026-11-04,當前 star 爲 0,README 標註 npm 尚未發佈 v0.2.1。在升級前建議先看 changelog 和設計文檔。
小結¶
dsh-done-check 的價值在於把「做完了」變成可覈對的證據:每一項檢查都有實際執行記錄,代碼變化後舊結果自動失配。它不替開發者判斷需求覆蓋度,只忠實報告約定檢查的結果。
目錄頁:https://www.skillhub.cn/plugins/BeforeLanding/dsh-done-check
GitHub:https://github.com/BeforeLanding/dsh-done-check