前言¶
在 DeepSeek Harness(DSH)裏做長會話編碼時,常見的問題不是「模型不會寫代碼」,而是行爲漂移:早期說好的約束幾十輪後被忘掉、改完就說「已完成」卻未在本輪跑構建或測試、三行改動被整文件替換並夾帶無關 diff、鏈接器或 ABI 類問題陷入猜改循環。這些失敗模式會實打實消耗時間。
dsh-coding-discipline 是社區維護者 339006900 發佈的 DSH 插件(GitHub:339006900/dsh-coding-discipline)。它不新增工具、也不二次調用模型,而是在每一步請求裏改寫模型被告知的「可接受工作標準」,並在任務需要時可加載更長的協議文檔。下面介紹它的定位、規則、安裝方式與效果觀測。
這是什麼¶
一句話:面向 DSH 的「始終開啓」編碼紀律層——通過 prompt 與可選 skill 影響智能體行爲,並附帶基於會話日誌的效果儀表盤。
維護與發佈:倉庫由 339006900 維護;npm 包名 dsh-coding-discipline,當前資料中的版本爲 0.1.0,許可證 MIT。社區目錄頁:https://www.skillhub.cn/plugins/339006900/dsh-coding-discipline(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。DSH 生態理念是「一切皆插件」,本插件即其一。
針對的失敗模式與規則¶
每條規則對應 README 中列出的一種長會話代價:
| 規則 id | 要防的失敗 |
|---|---|
ledger |
早期約束(如「別動公開 API」)在數十輪後被丟棄 |
proof |
本輪未跑構建或測試卻宣稱「已完成 / 應該沒問題」 |
smallest-diff |
小改動被整文件替換併產生無關 churn |
hypothesis |
鏈接器 / ABI / 運行時類問題靠猜改而非可區分實驗 |
no-invented-apis |
編造看似合理的 flag、簽名或配置鍵 |
finish-migration |
重構後仍留一處舊路徑調用 |
evidence-over-agreeing |
因用戶說「看起來不對」就改本來能工作的代碼 |
no-speculative-code |
未要求的抽象、參數與防禦分支 |
closing-shape |
收尾只慶祝成果,不說改了什麼、跑了什麼、什麼未驗證 |
規則以觸發式表述(如「第一次編輯前」「連續兩次 speculative 編輯」),README 說明這比泛泛的「美德」在長會話裏更不易被忽略——但這是 prompt 影響,不是強制 enforcement,模型仍可能違反規則。
核心能力¶
- 常駐 prompt 段:安裝並重啓後,
<coding_discipline>相關說明進入每次請求;composition 內所有 agent(含 subagent)都會收到。 - 可選 bundled skill:來自
SKILL.md的長協議(清單、配方、調試階梯),可通過配置只保留 prompt 或只保留 skill。 - 效果儀表盤:讀取持久化會話日誌(默認
~/.dsh/sessions/**/session.v4.jsonl.zstd),按 turn 統計是否含<coding_discipline>來區分「處理組 / 對照」——同一會話若在安裝前開始,安裝後的 turn 計入處理組;無隨機化,基線是你自己的歷史,頁面會說明這一點,回答的是「行爲是否變化」而非「模型是否更好」。
儀表盤指標(資料原文):
| 指標 | 計算方式 |
|---|---|
| 改動-驗證閉環率 | 含編輯/寫入工具調用且同 turn 內有驗證命令的 turn,佔所有編輯 turn 的比例 |
| 無證據的完成聲明 | 收尾聲稱完成但該 turn 未跑驗證命令的 turn |
| 代價 | 每 turn 工具調用數、回答字符數 |
- 本地 HTTP 路由:插件加載後可訪問
http://127.0.0.1:<dsh-port>/coding-discipline(需dashboard: true)。
安裝與啓用¶
三種方式均需 重啓 DSH。官方 npm 安裝命令如下(勿憑倉庫名自行拼接 github: 安裝串):
dsh plugin --profile desktop add dsh-coding-discipline
或在 DSH 內:Settings → Plugins → Plugin Market,搜索 dsh-coding-discipline,安裝後重啓。
本地 link 開發與通過 local plugin manager 指向目錄的方式見 GitHub README;本質是在 ~/.dsh/profiles/desktop/package.json 中 link 依賴並加入 dsh.profile.bundles,再執行 cd ~/.dsh/profiles/desktop && npx pnpm@11 install。
驗證是否加載(任選其一):
- 讓模型複述其
<coding_discipline>規則,應能引用; - 在插件目錄執行
node --test(22 個測試,無需啓動 DSH)。
若安裝後應用無法啓動,從 dsh.profile.bundles 刪除單獨一行 "dsh-coding-discipline" 後重啓即可回滾,README 稱不會改動其他項。
運行環境(package.json):DSH ^0.2.0-rc.1 || ^0.2.1-rc.1 || ^0.2.2-alpha.2;Node ^22.19.0 || >=24.0.0。
配置¶
在 ~/.dsh/profiles/desktop/cordis.patch.yml 中調整(字段以 README 爲準):
- id: coding-discipline
config:
enabled: true # false = 註銷全部貢獻
order: 9500 # prompt 順序;runtime context 在 10000+
promptSection: true # false = 僅保留 skill
skill: true # false = 僅保留 prompt 段
compact: false # true = 僅保留 proof / ledger / smallest-diff / hypothesis
extraRules: '' # 追加的部署行
dropRules: [] # 要 omit 的規則 id,如 ['closing-shape']
dashboard: true # false = 不提供 /coding-discipline
sessionsRoot: '' # '' = ~/.dsh/sessions;可指定路徑只統計某工作區
完整 prompt 段約 750 tokens/請求;compact: true 約 470 tokens。
典型用法¶
生成靜態儀表盤 HTML(不依賴 DSH 進程,直接讀會話日誌):
node scripts/dashboard.mjs
輸出:~/.dsh/plugin-data/dsh-coding-discipline/dashboard.html,可用瀏覽器從磁盤打開。
在 DSH 已加載插件時訪問託管路由:
open http://127.0.0.1:<dsh-port>/coding-discipline
將 <dsh-port> 換成本機 DSH 監聽端口。
需要長任務清單與調試流程時,依賴 bundled skill(SKILL.md);日常則靠每步注入的短規則約束驗證閉環、約束賬本與最小 diff 等。
適用場景與注意¶
適合:長期在 DSH desktop profile 裏做編碼 agent 工作、希望減少「口頭完成」與約束遺忘、並想用自有會話歷史對比安裝前後 turn 級行爲的人。
務必知曉:
- 插件以當前 DSH 進程權限運行;安裝前應閱讀倉庫源碼與 MIT 許可證,確認可接受其讀取
~/.dsh/sessions及可選sessionsRoot下的日誌。 - 它不會替你跑構建,只是把「未驗證就聲稱完成」顯式化。
- 儀表盤非 A/B 實驗,結論限於你本機歷史與 turn 分組邏輯。
倉庫佈局(便於二次開發):src/prompt.js(段文本與配置歸一化)、src/skill.js、src/index.js(cordis 接線)、src/sessions.js、src/analyze.js、src/report.js、src/route.js、scripts/dashboard.mjs、test/(22 個 node:test 用例)。
結尾¶
dsh-coding-discipline 用常駐 prompt(與可選 skill)把驗證閉環、約束賬本、最小 diff、假設優先調試等習慣寫進每一步,並提供基於會話日誌的效果頁,便於對照安裝前後是否更少「無證據完成聲明」。DeepSeek Harness 插件可按 npm 市場安裝,社區索引見目錄頁與 GitHub:
- 目錄頁:https://www.skillhub.cn/plugins/339006900/dsh-coding-discipline
- GitHub:https://github.com/339006900/dsh-coding-discipline