dsh-approval-explainer:在 DSH 審批彈窗旁用模型推理解釋命令含義與風險

前言

在 DeepSeek Harness(dsh)裏,模型若要執行工作區外的操作,宿主會彈出審批對話框,通常只展示一行即將執行的命令。你要自己推斷它做什麼、會動哪些路徑、點「同意一次」或「拒絕」各意味着什麼;看不懂時,往往只能在盲目信任與盲目拒絕之間選。

社區插件 dsh-approval-explainer(維護者 ArisuYuuko,分類 admin-security)在同一彈窗裏追加一段由模型推理生成的註釋:代碼在做什麼、模型想達成什麼、風險等級及理由、對各按鈕含義的說明,便於帶着依據做決定。DSH 生態主張「一切皆插件」;插件目錄站 SkillHub 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

這是什麼

dsh-approval-explainer 是 DSH 審批彈窗的 AI 註釋器:僅在模型請求權限外操作、觸發真實審批時,利用會話中的 LLM 在後臺生成說明,並在瀏覽器側渲染到審批詳情區域。它不改寫審批策略,只觀察 approval/request 瀑布流並補充可讀信息。

核心功能

彈窗上的註釋內容

未安裝插件時,審批提示可能類似:

即將執行
& '<temp>\diagnose-windows-sandbox-acl.ps1' -Path 'D:\some-project' -AllowRewrite

安裝後,同一彈窗會額外出現結構化說明,例如風險等級、代碼作用、模型意圖、風險判定理由、建議,以及各選項的實際後果(文件是否真的會寫入、拒絕後模型會如何被通知等)。README 強調:註釋會說明「Approve once」不只是「命令會跑」,還包括文件是否落盤、同一次授權下其他寫入是否也被覆蓋等決策所需信息。

設計約束(與行爲相關)

要點 說明
僅真實審批 不對常規工具調用做註釋;README 舉例測量中 approval/request 2 次、tools/pre-execute 259 次,全量註釋等於沒有信號
不阻塞審批 後臺生成,彈窗立即出現;生成失敗或超時不影響你可批准的內容
失敗可見 生成失敗時在面板展示原因,而非靜默掛起
參數來自會話 approval/request 不帶工具參數,插件按 callId 在會話日誌中查找 tool/call,找不到則如實說明,不編造
提示注入防護 系統提示將代碼、路徑、命令視爲數據而非指令
不改策略 只觀察審批瀑布,不決定誰可被授權

審批歷史

每次真實 escalation 會記錄,可通過本地 Web 端口訪問:

http://127.0.0.1:<dsh-web-port>/dsh-approval/history

自 v0.9.0 起,瀏覽器半會在 Session 標題操作行(與 Conversation / Trajectory 同級,槽位 conversation.session.header.actions)增加 Approval history 按鈕,點擊在新標籤頁打開上述頁面。

安裝與啓用

桌面端使用的 profile 一般爲 desktop。安裝命令(來自倉庫 README):

dsh plugin --profile desktop add github:ArisuYuuko/dsh-approval-explainer

首次使用某 profile 會初始化該 profile。安裝後需完全退出並重新打開 DSH;僅刷新頁面不夠,宿主側(host half)只在進程啓動時加載。

驗證配置層是否生效:

dsh --profile desktop --dump-config

期望看到類似片段:

# == dsh-approval-explainer
- id: dsh-approval-explainer
  name: dsh-approval-explainer
  inject:
    - llm
    - approval

該插件爲純 JavaScript、無構建步驟,README 說明因此通常不需要爲 allowBuilds 額外授權 pnpm。

卸載(含配置層):

dsh plugin --profile desktop remove dsh-approval-explainer

package.json 聲明引擎要求爲 dsh 版本 >=0.2.0-rc.1 <0.3.0-0,許可證 MIT;當前資料中 npm 包版本爲 0.9.4。

典型用法

  1. 按上文命令爲 desktop profile 安裝插件並重啓 DSH。
  2. 在對話中讓模型執行需要工作區外權限的操作(例如寫工作區外路徑、申請 danger-full-access 等),觸發 DSH 標準審批彈窗。
  3. 在命令行下方閱讀插件生成的註釋(風險、意圖、按鈕含義),再選擇 Approve once 或 Deny。
  4. 需要回顧歷史 escalation 時,在 Session 頭點擊 Approval history,或訪問 http://127.0.0.1:<dsh-web-port>/dsh-approval/history。

註釋在後臺異步生成,彈窗會先出現;若 LLM 尚未返回,可稍等面板更新,或根據失敗提示排查(不影響你是否具備批准權限)。

實現要點(便於排查問題)

插件是 DSH bundle:npm 包攜帶 cordis.patch.yml,向 profile 貢獻一層配置;dsh plugin add 安裝包並追加到 dsh.profile.bundles。

  • lib/index.js(Node 宿主):監聽 approval/request,後臺調用 LLM 生成註釋、緩存,並提供 8 條 HTTP 路由。
  • lib/client.js(Web 瀏覽器):註冊 conversation.approval.detail 槽,渲染命令與註釋卡片;須以更低 priority(如 -1)覆蓋官方 UI 的 priority: 0。

README 列出兩條硬約束:宿主不得自行再注入 client 腳本(會導致 web 啓動失敗及 DSH 自愈清配置);宿主 apply() 不得拋錯,否則可能出現「安裝後 DSH 無法啓動」。

適用場景與注意

適合:經常在 DSH 裏批准 shell、文件、權限 escalation 的開發者;希望在 human-in-the-loop 環節看到可覈對的風險與意圖說明,而不是單行命令。

注意:

  • 插件以當前 dsh 進程權限運行,會向 LLM 發送與會話相關的上下文以生成註釋;安裝前應閱讀 源碼 與 MIT 許可證,確認符合你的安全策略。
  • 註釋是輔助信息,不能替代你對命令與路徑的審查;策略仍由 DSH 本體決定。
  • 社區目錄頁星標等統計以站點展示爲準;GitHub 倉庫當前資料中星標爲 0。

結尾

dsh-approval-explainer 把審批彈窗從「一行命令 + 兩個按鈕」擴展爲帶風險、意圖與選項含義的說明,且刻意不阻塞、不篡改審批結果。若你在桌面 DSH 中頻繁遇到權限外操作,可按 README 安裝到 desktop profile 並完全重啓後試用。

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

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

小夜