前言¶
DeepSeek Harness(DSH)裏的智能體可以讀文件、跑命令、按沙箱規則拉 URL。能力越大,誤操作或越界調用的成本越高。常見做法是依賴沙箱邊界或事後審計,但無法在「即將執行」這一刻給出可讀的二次判斷。
dsh-ollama-tool-guard 在每次工具調用真正執行前,用本機 Ollama 上的決策模型打分;普通調用靜默放行,高風險調用變成需要你確認的審批提示;若模型不可達,則全部拒絕(fail closed),不會在無審查的情況下放行。
這是什麼¶
維護者 Yersi88,npm 包名 dsh-ollama-tool-guard,社區分類爲 admin-security。插件通過 Cordis patch 掛在 DSH 工具調用鏈上,對每一次 harness 發起的 tool call 請求本地決策模型,再按閾值與效果類別決定是否彈出審批。
與「只靠沙箱默認策略」相比,多了一層可配置的語義判斷和顯式確認;與把調用內容發到雲端審查相比,默認本地模型路徑下,審查請求只發往本機 Ollama。
核心功能¶
逐調用審查¶
每個 tool call 都會先經過 guard。模型認爲風險可接受時,調用照常進行;需要人工介入時,界面會出現一行結構化說明,例如:
tool-guard · DELETING · outside workspace · hard to undo · bash · rm -rf /srv/data
從左到右依次是:模型推斷的操作類型(READING、WRITING、MODIFYING、DELETING、SYSTEM CHANGE)、是否在工作區內、用 plain words 說明的標記原因、工具名與簡短摘要。審批通過才執行,拒絕則阻斷;提示打開期間不會執行任何調用。
Fail closed¶
Ollama 或配置的模型無法連接時,工具調用不會被悄悄放行。README 中說明:此時會出現「每次調用都被拒絕」類現象,拒絕信息會指出模型名與修復方向(例如確認 ollama list 已拉取模型、檢查 Settings 中的 endpoint)。
運行時可調¶
在 Settings → Plugins → Tool guard 中可調整層級、閾值、連接、模型調用方式,並查看近期決策;修改對下一次調用生效,無需重啓 harness(插件代碼變更除外,見下文故障表)。
模型與隱私邊界¶
評判模型由本機 Ollama 提供,默認推薦 clef-flash(約 9B、磁盤約 6 GB)。也可選用 clef(更大、更謹慎)或 clef:cloud(經 Ollama 提供商,每次審查的調用會離開本機)。默認本地模型下,審查請求不離開本機;審計日誌記錄決策結果,不記錄調用正文。細節見倉庫 SECURITY.md。
配置與審計位置¶
| 用途 | 路徑 |
|---|---|
| 配置文件 | ~/.dsh/tool-guard.json(每次調用重讀,改文件即生效) |
| 審計日誌 | ~/.dsh/tool-guard-audit.jsonl(每次調用一行) |
| 圖形設置 | Settings → Plugins → Tool guard |
Connection 頁提供 Test saved config,發送探測問題並報告延遲或錯誤信息。
環境與依賴¶
- DeepSeek Harness 0.2.x
- Ollama 0.35.1 或更新(使用
:cloud模型時需 0.40.6+),插件使用其 System One decision API - 默認模型約需 6 GB 磁盤
當前 package 版本爲 0.5.1,許可證 MIT,Node.js >= 20。
安裝與啓用¶
先做模型拉取(一次性,約 6 GB):
ollama pull clef-flash
再安裝插件:
dsh plugin --profile web add dsh-ollama-tool-guard
然後重啓 dsh web,並打開 Settings → Plugins → Tool guard。
若 Settings 裏看不到插件,說明「安裝 npm 包」與「註冊 bundle」是兩步:在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 中加入 "dsh-ollama-tool-guard",再次重啓 dsh web。
典型用法與界面行爲¶
- 按上一節完成安裝並在 Settings 中確認連接與模型(必要時點 Test saved config)。
- 正常使用 DSH Web 智能體;當某次 tool call 觸發規則,會出現上述格式的審批句。
- 對誤報:在 Settings 中提高對應閾值,或取消勾選相應 effect class;提示中會說明是哪條規則觸發。
- 無人值守或 headless、無審批界面時,可能出現
the user rejected tool "…"且你從未被詢問——會話沒有 approval surface。此類場景應使用skip或enabled: false(見 README 故障表)。
插件 client 面向 web profile,並注入 @deepseek-ai/dsh-client-ui-settings-plugins 以提供設置頁。
適用場景與注意¶
適合誰: 在本機跑 DSH Web、希望每次工具調用多一道本地語義門禁、且能接受延遲與 Ollama 運維成本的開發者或管理員。
權限與安全: 插件以當前 dsh 進程權限運行,與 harness 同等信任邊界。安裝前應在 GitHub 倉庫 閱讀源碼、SECURITY.md 與 MIT 許可證,瞭解保護範圍與已知缺口。
故障速查(摘自 README):
| 現象 | 原因與處理 |
|---|---|
| 每次 tool call 都被拒 | guard 連不上模型;檢查 ollama list 與 Settings endpoint |
| 顯示用戶拒絕但從未彈窗 | 無審批界面; unattended 時關閉 guard 或使用 skip |
| 無害操作也頻繁彈窗 | 調閾值或 effect class |
| 改插件代碼不生效 | 宿主緩存模塊;重啓 dsh web |
DSH 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
延伸閱讀¶
倉庫內 ARCHITECTURE.md 說明分層、提問方式與閾值設定;CONTRIBUTING.md 覆蓋開發、測試與發佈。更多背景與鏈接:
- 目錄頁:https://www.skillhub.cn/plugins/Yersi88/dsh-ollama-tool-guard
- GitHub:https://github.com/Yersi88/dsh-ollama-tool-guard
經過上面的步驟,你可以在保持調用數據默認留在本機的前提下,爲 DSH 智能體的每一次工具調用增加可審計、可配置的本地二次意見。