前言¶
DeepSeek Harness (DSH) 生態支持通過插件擴展功能。@MarvekG/dsh-plugins 是一個由 MarvekG 維護的 DSH 插件集合,包含兼容性修復和功能增強。它解決了智能體開發中常見的兩個具體問題:冗餘的沙箱權限請求報錯,以及在 Web 界面點擊文件路徑失敗的問題。
核心功能¶
本插件包含以下已覈實的能力:
1. 處理冗餘沙箱權限請求:當 session 權限已切換爲 danger-full-access,但重試請求仍攜帶窄於當前權限的 sandbox_permissions 和 justification 時,插件會自動清理這些冗餘字段,避免 DSH 報錯 sandbox escalation is not strictly wider。
2. 點擊路徑改爲彈出網頁查看器:將原生的文件打開請求(可能涉及 spawn powershell.exe)攔截並改爲在瀏覽器中打開,解決 WSL 環境下的路徑調用失敗問題。
3. 多入口結構:包含 sandbox-same-mode 和 path-viewer 兩個獨立入口,每個入口擁有獨立的 Cordis 生命週期。
4. 語法高亮:依賴 highlight.js 實現代碼語法高亮。
安裝與啓用¶
需要確保 dsh 命令行工具已安裝並運行正常。
從 GitHub 安裝¶
執行以下命令將插件安裝到 web profile(請根據實際情況替換 profile 名):
dsh plugin --profile web add github:MarvekG/dsh-plugins
安裝或更新後,必須重啓 DSH Web 才能生效。
從舊版本升級¶
本包已從 @MarvekG/dsh-bug-fix 重命名爲 @MarvekG/dsh-plugins。升級時必須先卸載舊包,再安裝新包,不能走更新流程。
dsh plugin --profile web remove @MarvekG/dsh-bug-fix
dsh plugin --profile web add github:MarvekG/dsh-plugins
dsh web
注意:卸載與重裝之間不要重啓 DSH Web,避免舊名缺失導致的裝配告警。
本地調試與測試¶
本地調試¶
克隆倉庫後,在根目錄執行:
dsh plugin --profile web add .
dsh web
運行測試¶
在插件目錄執行:
npm test
典型用法¶
沙箱權限處理¶
插件在工具註冊時包裝執行函數,覆蓋全局工具和 DSH Web 的 preset-scoped 工具。當滿足以下條件時,會刪除冗餘的升級字段並按當前權限執行:
1. sandbox_permissions 是工具 schema 明確公開的枚舉值;
2. justification 是非空字符串;
3. 請求權限不寬於當前調用、當前 session 的有效 sandbox 權限。
真正的權限升級和非法輸入仍按原流程處理。
路徑查看器¶
插件通過 cordis.patch.yml 單獨掛載了 dsh-plugins-path-viewer 入口。
* 查看路徑:訪問 GET /view?path=<絕對路徑>[&line=N]。文件會被渲染爲行號表格,目錄渲染爲可點擊的列表頁。
* 配置項:
* maxBytes:單次渲染字節上限。
* intercept:改道的 RPC 方法列表。
* 實現機制:通過 webserver/index-inject 向 GUI 頁面注入腳本,攔截 host.openPath 和 host.openTextFile RPC,改用 window.open('/view?path=…') 在新標籤頁展示。若被攔截,自動放行原始請求。
注意事項¶
- 安裝或更新後務必重啓 DSH Web。
- 插件不擴大工作區,也不修改
workspaceRoot,僅做路徑展示和權限清理。 - 插件基於 MIT 許可證開源。