前言¶
DSH 的 sandbox mode 會區分不同的文件訪問策略,例如 read-only、workspace-write、danger-full-access 和 auto。這些模式已經能處理只讀、工作區寫、完全訪問等權限,但有時還需要一個獨立開關:只要訪問工作目錄以外的文件,就先彈窗讓用戶確認。下面介紹 dsh-workspace-only-plugin。
這是什麼¶
dsh-workspace-only-plugin 由 CsBpRd 維護,MIT 許可。它爲 DeepSeek Harness(DSH)增加 “Workspace Only” 開關,把任意 sandbox mode 下工作區外的文件訪問收口到用戶確認。
GitHub 倉庫:
https://github.com/CsBpRd/dsh-workspace-only-plugin
核心功能¶
工作區外訪問統一確認¶
開啓開關後,以下模式都會受到同一規則約束:
read-only
workspace-write
danger-full-access
auto
當 DSH 訪問工作目錄以外的文件時,會派發用戶確認請求。用戶批准後,放行這一次調用;用戶拒絕或沒有可應答渠道時,拒絕該次調用。
Full access 下也會彈窗¶
確認請求通過以下通道派發:
approval/request
這會繞過審批策略閘門。即使當前會話是 Full access,審批策略爲 never,也不會靜默通過,而是彈出確認。
覆蓋的文件訪問調用¶
以下工具調用如果越出工作區,都會觸發確認:
read
write
edit
read_image
glob
grep
bash
pwsh
內嵌路徑也會被詞法掃描捕獲,例如:
node -e
python -c
這類字符串中如果出現絕對路徑,也會觸發彈窗。
與 auto 插件共存¶
如果同時使用以下插件:
@nanmicoder/dsh-auto-mode
它會照常運行,但會被本插件收編。工作區內的調用由它的分類器裁決;越出工作區的調用先經過本插件的用戶確認。
預設顯示名¶
插件會把 workspace-write 權限預設的顯示名永久改爲:
Write Only
這個改名與開關狀態無關。
全局開關¶
開關是全局設置,持久化到:
settings.yaml
設置頁和輸入欄各有一個開關。
安裝與啓用¶
一行安裝¶
先執行安裝命令:
curl -fsSL https://raw.githubusercontent.com/CsBpRd/dsh-workspace-only-plugin/main/install.sh | bash
腳本會自動把插件裝進 profile 的 bundle 層棧,打兩個必需核心補丁,並在檢測到運行中的 dsh web 時以原命令行重啓。
可用以下環境變量調整:
DSH_PROFILE
DSH_HOME
DSH_NO_RESTART=1
其中 DSH_PROFILE 默認值是:
web
手動安裝¶
如果不使用安裝腳本,先編輯 web profile 的依賴文件:
~/.dsh/profiles/web/package.json
在 dependencies 中增加:
"dsh-workspace-only-plugin": "github:CsBpRd/dsh-workspace-only-plugin"
然後在 dsh.profile.bundles 末尾追加:
dsh-workspace-only-plugin
接着安裝依賴:
cd ~/.dsh/profiles/web && pnpm install
最後重啓 dsh web 服務。
Node 與依賴¶
package.json 聲明的 Node 要求是:
^22.19.0 || >=24.0.0
package.json 中列出的 peerDependencies 均爲 optional。
核心補丁¶
核心補丁包括在以下組件的白名單中加入命名空間:
@deepseek-ai/dsh-host-apiproxy
白名單名爲:
WEB_SETTINGS_NAMESPACES
加入的值是:
workspace-only
另一處補丁是 auto 插件標籤補丁。
升級 DSH 後,重新執行:
node scripts/patch-core.mjs
即可重打核心補丁。
如果與 auto 插件共存,需要同步修改:
@nanmicoder/dsh-auto-mode
的:
lib/client.js
把:
REQUIRED_PERMISSION_LABELS
中的:
Workspace Write
改爲:
Write Only
典型用法¶
下面是一個可復現的啓用流程。
1、在設置頁或輸入欄打開 Workspace Only 開關。
2、在 DSH 會話中讓智能體讀取、搜索當前工作區內的文件。工作區內的調用按原有 sandbox mode 或 auto 插件策略執行。
3、讓智能體訪問工作區外的文件,例如越界讀取或寫入。插件會派發用戶確認請求。
4、用戶批准後,這一次調用被放行;用戶拒絕時,該次調用被拒絕。
5、在 danger-full-access 或 Full access 場景中,工作區外文件訪問仍會先經過這一步確認。
適用場景與注意¶
這個插件適合希望在 DSH 中保留現有 sandbox mode,同時把工作區外文件訪問統一交給用戶確認的場景。
注意以下幾點:
- 這是工具層閘門,核心是詞法路徑掃描,不是內核級隔離。完全動態計算的路徑仍是殘餘風險面。
- 在
Write Only(workspace-write)會話中,批准後的越界寫仍會被內核圍欄攔截,並按 DSH escalation 流程再次確認。相關流程名爲:
sandbox_permissions
- 寫操作始終需要用戶明確同意。
- 技能加載、會話持久化等 DSH 內部機制不受影響。
- 插件會隨當前 DSH 進程運行,安裝前應檢查源碼與 MIT 許可證。
鏈接¶
GitHub 倉庫:
https://github.com/CsBpRd/dsh-workspace-only-plugin