前言¶
DeepSeek Harness(DSH)會把全局 AGENTS.md、工作區 AGENTS.md、技能(SKILL.md)和插件自帶提示一起送進模型上下文。單看每一份文件往往都合理,疊在一起卻可能出現互相矛盾的要求:一邊寫「先問用戶再動手」,一邊寫「直接執行」;一邊要求「回覆中文」,另一邊要求「回覆英文」。模型只能擇一執行,同一件事每次表現可能不一致,事後也很難對照是哪條規則在打架。
dsh-policy-linter(策略體檢)是社區插件,由 Yyhy110421 維護,歸類爲工作流。它在規則進入模型之前做只讀掃描,把衝突連同文件、行號、原文和修改建議列出來,不改動任何策略文件。
這是什麼¶
策略體檢是給 DSH 用的只讀規則檢查插件:掃描 AGENTS.md、SKILL.md 以及插件技能目錄中的 Markdown 規則,按嚴重程度分級報告問題。插件不聯網、不執行掃描到的命令,也不自動修改策略內容;最終是否改規則由人決定。
核心功能¶
工具 policy_lint¶
對話中可讓模型調用工具 policy_lint,對指定範圍掃描,按 error / warn / info 返回結果。默認示例如下:
{
"scope": "all",
"minSeverity": "warn",
"format": "text"
}
參數含義(摘自 README):
| 參數 | 類型 | 說明 |
|---|---|---|
scope |
all / global / workspace |
默認 all:全局 + 當前工作區 |
path |
string | 只掃該文件或目錄;指定後 scope 無效 |
minSeverity |
info / warn / error |
最低嚴重級別,默認 info |
includeSkills |
boolean | 是否掃技能目錄與插件 skills/,默認 true |
format |
text / json |
文本或結構化輸出 |
maxFindings |
number | 最多返回條數,1–200,默認 100 |
四類檢查¶
- 規則衝突:同一主題出現相反要求(先確認 vs 直接執行、提交 vs 不提交、中文 vs 英文、並行 vs 串行、完全權限 vs 只讀等)。
- 跨文件重複:同一句規則散落在多個文件,改一處易漏另一處。
- 模糊限定:含「儘量」「適當」「必要時」「as needed」等表述,模型只能猜測。
- 危險命令:如
rm -rf /、git push --force、DROP DATABASE、Invoke-Expression等,避免策略把危險操作寫成默認動作。
爲減少誤報:帶條件的前綴(如果 / 當 / if / when)視爲局部例外,不參與衝突判斷;不同技能文件不會同時加載,因此技能之間不做衝突判定。同文件內部、全局與工作區之間、以及全局/工作區對技能仍會比較。
設置界面¶
在 DSH 設置 → 策略體檢 中可調整掃描範圍、最低嚴重級別、額外路徑和忽略名單,並支持從設置頁觸發掃描。
安裝與啓用¶
DSH 生態理念是「一切皆插件」;社區目錄站點(如 SkillHub)與 DeepSeek / 幻方無官方從屬關係,安裝前請自行查看源碼與許可證(本插件爲 MIT © 2026 Yyhy110421)。插件以當前 DSH 進程權限運行,只讀本地文件。
在 DSH 中打開 設置 → 插件管理器,安裝下列任一來源(命令須與倉庫 README 一致):
github:Yyhy110421/dsh-policy-linter
file:<本倉庫的絕對路徑>
裝完後重啓 DSH 生效。
注意:file: 安裝是實體拷貝,改源碼後需卸載再裝纔會更新;update 僅支持 npm 註冊表插件,本插件不發佈到 npm。package.json 中版本爲 0.1.0,運行環境要求 Node ^22.19.0 || >=24.0.0。
配置與掃描範圍¶
配置文件路徑:$DSH_HOME/data/policy-linter.json(無 DSH_HOME 時使用 ~/.dsh)。
{
"scope": "all",
"minSeverity": "info",
"includeSkills": true,
"extraPaths": [],
"ignoreIds": [],
"workspacePath": ""
}
extraPaths:額外要掃的文件或目錄(目錄會遞歸查找.md)。ignoreIds:從報告中複製如conflict:confirm:xxxxxxxxxx的 ID,僅影響報告展示。workspacePath:設置頁「掃描一次」用的工作區;留空則用宿主進程當前目錄。對話裏的policy_lint仍使用會話自己的工作區。
掃描覆蓋:
- 全局:
DSH_HOME下的 AGENTS.md / CLAUDE.md / GEMINI.md、profile 的 AGENTS.md、DSH_HOME/skills、profile 的skills/,以及 profile 內插件包的skills/、bundled-skills/。 - 工作區:根目錄的 AGENTS.md / CLAUDE.md / GEMINI.md、
.dsh/AGENTS.md、.dsh/skills、skills/。
典型用法¶
- 安裝並重啓 DSH 後,在對話中說「檢查一下策略衝突」,模型會按需要調用
policy_lint。 - 需要只看工作區或全局時,將
scope設爲workspace或global。 - 臨時只掃某個目錄或文件時,傳入
path,並視情況調整minSeverity與format: "json"便於腳本處理。 - 對已知誤報,把報告中的 ID 寫入配置裏的
ignoreIds。
安全邊界與已知限制¶
安全邊界(README 原文要點):
- 只讀:僅使用
readFileSync/readdirSync/statSync。 - 不執行:報告中的危險命令不會運行。
- 不聯網。
- 有上限:最多約 600 個文件、單文件 512 KB、6000 條規則、100 條問題,超出會標記截斷。
- 跳過
.git、node_modules內普通文檔(插件skills/單獨收集)、緩存與會話目錄。
使用前應知曉:
- 檢查基於規則匹配,不是語義理解;換一種說法可能漏報。
- 主題表目前覆蓋約 10 類常見衝突,未覆蓋主題不報衝突。
- 衝突是否真矛盾需人結合上下文判斷;報告提供證據與候選,不是終審。
- 不同技能之間的差異故意不判衝突。
適合在持續維護 AGENTS.md、多套技能與工作區規則的團隊裏,在改規則後或發版前做一次體檢,減少「規則看起來都對、合在一起卻打架」的情況。
結尾¶
dsh-policy-linter 在策略進模型之前做只讀衝突與風險掃描,配合設置頁與 policy_lint 參數即可接入日常流程。更多信息見社區目錄頁與倉庫 README。
- 目錄頁:https://www.skillhub.cn/plugins/Yyhy110421/dsh-policy-linter
- GitHub:https://github.com/Yyhy110421/dsh-policy-linter