dsh-security-judge:按《代碼安全防禦架構規則》做會話級評審與門禁

前言

在 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜