前言¶
在 DeepSeek Harness(DSH)裏用智能體寫代碼時,安全往往依賴提示詞或事後人工掃一眼,很難系統化對照一套固定規則,也很難在「任務算完成」之前攔住未達標的結果。社區插件 dsh-security-judge(代碼安全防禦規則評審判官)面向「正在寫代碼的會話」:自動識別代碼工作、按《代碼安全防禦架構規則》v1.0 做架構推薦與衝突檢查、對 A–J 規則做評審,並在用戶授權後把「評審未通過」與「會話完成」分開——不合格則繼續修復,直到 verdict=pass。維護者爲 youchen-yc,分類爲 admin-security;插件條目見 SkillHub 目錄頁,源碼與說明在 GitHub。
這是什麼¶
dsh-security-judge 是 DSH 的 Host 插件:權限 deliberately 低於用戶最高權限,只用於代碼安全防禦規則與架構評審。未授權時只讀觀察;用戶在 Web 面板「授權」卡兩次確認後,纔可向代碼會話注入提醒,並在選定模式下攔截未通過評審的代碼任務完成標記。
核心功能¶
下面按 README 已說明的能力逐項介紹。
自動識別代碼會話¶
插件掃描活躍會話,依據寫入/編輯代碼文件、構建或測試命令、項目特徵等判斷是否在「做代碼」。非代碼會話不參與評審。
架構推薦與衝突檢查¶
按技術棧(Android、服務端、Web、桌面、IoT、AI)與項目特徵,推薦該程序需要幾種核心架構(1 種 / 2 種 / 多種)、各屬哪一層及理由。對推薦架構、會話聲明的架構、代碼中的反模式做兩兩衝突檢查(硬衝突 / 重疊 / 張力),每條帶處理建議;未登記處理結論會阻斷評審。衝突矩陣來源爲《代碼安全防禦架構資料彙編》。
規則評審(A–J,72 條)¶
- A–I:與《代碼安全防禦架構規則》v1.0(2026-10-28)對齊,共 67 條安全規則(L1 強制 54、L2 基線 12、L3 建議 6)。
- J 組:分發與可遷移性 5 條交付規則,不計入 67 條安全規則總數;安全評審按 67 條計,交付評審另計 5 條。
評審方式:
- 代碼類規則:自動掃描本會話寫入/編輯過的代碼文本,命中即違規。
- 文件類規則:檢查本會話是否改動鎖文件、SBOM、混淆配置、簽名材料等對應文件。
- 其餘規則:要求會話 AI 在
security_judge工具中逐條提交證據。 - L1 不可豁免;L2/L3 可在面板登記豁免理由(180 天有效)。
- J 組:檢測到要產出安裝包時強制做真實分發自檢(包清單、入口、資源、bundle patch、絕對路徑、依賴可安裝性),邏輯詳見倉庫
lib/dist.js。
自動檢查爲啓發式匹配;測試/夾具路徑(含 test、spec、fixtures 等)會被跳過,避免測試樣本誤判。
提醒與門禁(需授權)¶
首次檢測到寫代碼時可注入評審提醒。默認模式 block:每個回合收尾時,代碼會話若不合格則攔截「算完成」,要求繼續修復或補齊架構並重新提交,直到 verdict=pass。默認重做上限 maxEnforcePerSession=0(合格爲止);可在設置中設保護閾值,或在面板「暫停強制重做」(暫停後結論仍不合格,僅暫停自動催辦)。模式還有 advisory(只記錄)、remind(注入提醒)。
Web 面板¶
側欄入口「代碼安全評審判官」,展示授權狀態、會話列表、推薦架構與「需要幾種」、架構衝突、規則進度、失敗/缺失項、規則目錄、架構目錄、衝突矩陣與設置。寫操作 POST 需同源頁面令牌 x-security-judge-token;只讀 GET 不要求令牌。
連續不合格後的教學模式¶
連續 2 次不合格後,回合攔截時會附帶教學單(修自動命中項、補證據、落地架構、登記衝突、分發自檢等),並給出可照抄的 submit 格式;也可調用 security_judge action=coach。教學不代替評審,改完仍須提交直至合格。
評審結論¶
- 通過:範圍內 L1 均通過;L2 滿足或已豁免;架構衝突均已登記。
- 不合格:L1 自動違規、缺證據、衝突未登記、或試圖豁免 L1;須重做並重新得到
verdict=pass。 - 失效:合格後又寫入新代碼,評審自動失效,需重新提交。
安裝與啓用¶
DSH 生態裏插件可通過市場、Release 包、源碼目錄、npm 或本地路徑安裝;以下命令與路徑均來自項目 README,請勿自行拼接未在文檔出現的 dsh plugin add 形式。
1. 插件市場(推薦)
在 DSH Plugins → Discover 搜索「代碼安全防禦規則評審判官」或 dsh-security-judge 一鍵安裝。條目數據位於 awesome-dsh-plugin 倉庫的 data/plugins/youchen-yc__dsh-security-judge.yml。
2. GitHub Release 預構建包
從 Releases 下載 dsh-security-judge-1.5.3.tgz,在 DSH 中用 plugin_manager 的 install_bundle 指向該 tarball。
3. 從 GitHub / Gitee 源碼
克隆倉庫後,用克隆目錄的絕對路徑作爲 install_bundle 的 target(README 示例):
git clone https://github.com/youchen-yc/dsh-security-judge
git clone https://gitee.com/youchen-yc/dsh-security-judge # Gitee 鏡像
plugin_manager install_bundle target: <克隆目錄的絕對路徑>
4. npm
npm 上文檔記載的最新版本爲 1.5.3(https://www.npmjs.com/package/dsh-security-judge);安裝示例:
plugin_manager install_bundle target: dsh-security-judge
5. 本地目錄
plugin_manager install_bundle target: F:\DSH1.0\security-judge
安裝後側欄出現「代碼安全評審判官」,插件列表中出現「代碼安全防禦規則評審判官」。運行要求:node >= 20,dsh >= 0.2.1-rc.1(見倉庫 package.json)。
啓用門禁前,在面板「授權」卡完成兩次確認;在設置中選擇 advisory / remind / block(默認 block)。
典型用法¶
口令觸發評審¶
在已有會話中對 AI 說:
檢查審覈評審該會話
也識別「評審這個會話的代碼」「代碼安全防禦評審」「review this session」等說法。評審判官會回看該會話最多 2000 條歷史事件(超過 24 小時的舊代碼工作也會納入),面板顯示「用戶已要求評審」;已授權時會注入受理通知。面板中每個會話的「評審該會話」按鈕邏輯相同。
security_judge 工具¶
會話 AI 通過 Host 提供的 security_judge 自檢與提交:
| action | 用途 |
|---|---|
status |
代碼識別、推薦架構、衝突、評審狀態 |
checklist |
適用規則逐條狀態 |
architectures |
需要幾種架構、有哪些衝突 |
submit |
提交證據,如 { architectures?, rules: { "A-02": { verdict:"pass", evidence:"…" } }, notes? } |
conflict-ack |
登記架構衝突處理結論 |
authority |
查看或請求用戶授權 |
coach |
獲取完整教學計劃(連續不合格或主動調用) |
適用場景與注意¶
適合誰:在 DSH 中長期用智能體改生產向代碼、希望對照《代碼安全防禦架構規則》做結構化評審,並可選地在任務完成前強制「先過審再收尾」的團隊或個人。
權限與信任:插件以當前 DSH 進程權限運行;安裝前應閱讀源碼與 MIT 許可證,自行評估是否納入環境。插件不能代替用戶改代碼或改配置;授權必須由用戶在面板完成。
數據:持久化僅授權狀態、設置、評審歷史(80 條),路徑爲 $DSH_PROFILE_DIR/security-judge-data/state.json(無 profile 時爲 ~/.dsh/security-judge-data/)。會話掃描與代碼片段爲內存態,不落盤。
已知邊界:面板主要展示正在運行或最近 30 分鐘內做過代碼的會話;分發自檢是靜態包結構檢查,不替代在另一臺機器真實安裝;Host 插件代碼更新需重啓 DSH 後加載新模塊。
結尾¶
dsh-security-judge 把「代碼安全防禦架構規則 + 架構衝突 + 可選完成門禁」收進 DSH 會話生命週期,適合作爲 admin-security 類插件與現有開發流程並列使用。目錄與說明:SkillHub - dsh-security-judge,GitHub - youchen-yc/dsh-security-judge。