前言¶
用 DeepSeek Harness(DSH)跑 Coding Agent 時,權限模式往往是個兩難選擇:只開「可寫入工作區」,Agent 裝依賴、跑測試、改文件時頻繁彈窗,開發節奏被打斷;切換到 Full access(完全權限),審批又徹底消失,一旦 Agent 誤刪文件或訪問敏感路徑,後果很難挽回。
社區維護者 NanmiCoder 推出的 dsh-auto-mode(npm 包名 @nanmicoder/dsh-auto-mode)試圖補上這塊空白:在官方 workspace-write 沙箱之上新增 Auto / 自動審批 模式——日常項目操作儘量自動放行,沙箱覆蓋不了的語義風險交給分類器審查,真正危險的動作在執行前直接拒絕。該插件在 SkillHub 插件庫分類爲 admin-security,GitHub 約 123 stars,採用 MIT 許可證,已針對 DeepSeek Harness 0.1.0-rc.6 測試。
需要說明的是:SkillHub(https://www.skillhub.cn/plugins)是面向中國用戶的 DSH 插件社區目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 本身遵循「一切皆插件」理念,權限策略同樣可以通過社區插件擴展。
這是什麼¶
dsh-auto-mode 的定位可以用一句話概括:Safe automatic permissions for DeepSeek Harness——爲 Harness 提供「沙箱優先、語義審查、最小越權」的自動權限策略。
它不自行實現操作系統級沙箱,而是讓 Auto 模式常駐 DSH 官方的 workspace-write 文件沙箱,並在此基礎上補充三類能力:
- 對沙箱內可預期的日常操作(構建、測試、常規依賴安裝等)自動放行;
- 對沙箱邊界之外的語義風險(敏感讀取、網絡外傳、刪除 Session 前已有文件等)調用當前 Session 的 DSH 模型做分類;
- 對根目錄、Home、DSH_HOME、憑據路徑等關鍵目標無條件拒絕。
中文 Web UI 中,該模式顯示爲 「自動審批」;英文界面保留 Auto 產品名。
核心功能與亮點¶
四種權限模式對照¶
安裝插件後,權限菜單在「可寫入工作區」與「完全權限」之間多出一檔 Auto:
| 模式 | 文件沙箱 | 審批 | Auto 策略 |
|---|---|---|---|
| Read Only | read-only |
ask | 不啓用 |
| Workspace Write | workspace-write |
ask | 不啓用 |
| 自動審批(Auto) | workspace-write |
ask | 啓用 |
| Full access | danger-full-access |
never | 不啓用 |
Auto 的普通讀寫仍限制在 Workspace Write 邊界內;只有明確的一次性越權請求,纔可能被自動批准。
四類決策:放行、分類、問一次、拒絕¶
插件對待執行的每個工具調用,大致落入以下策略(詳見倉庫 DESIGN.md):
| 決策 | 典型效果 |
|---|---|
| 自動放行 | 沙箱內的 Bash/PowerShell、常規 npm/pnpm/yarn/bun/pip/Cargo 安裝、本地 Git commit、構建、測試、類型檢查、已審計的 DSH 協作工具 |
| 後臺分類 | Session 前已有數據刪除、npx/bunx 等臨時下載執行、遠程 Git/數據庫/服務變更、敏感讀取、網絡傳輸、外部系統寫入 |
| 詢問一次 | 效果或授權確實不明確,或分類器連續失敗三次後轉人工;越權時複用官方那一次精確審批,避免雙彈窗 |
| 直接拒絕 | 根目錄、Home、DSH_HOME、系統破壞、權限繞過、憑據外傳、隱藏動態刪除,以及風險操作前兩次連續分類器故障 |
分類器不是授權來源:它只能識別直接用戶 Session 消息中的授權。倉庫 README、工具輸出、Assistant 回覆、Skill、插件或子 Agent 的文本不能替用戶授權。
Shell 與刪除的細粒度策略¶
Auto 不再維護不斷膨脹的命令白名單。字面量未知命令、管道、重定向等默認進入官方 workspace-write 沙箱,工作區外寫入由操作系統拒絕。只有可執行文件名被變量或 glob 隱藏時,纔會後臺拒絕並要求 Agent 改寫成可見命令。
刪除規則比普通寫入更嚴:當前 Session 新建且身份未變的單個文件可自動清理;刪除 Session 前已存在的文件,需用戶在對話中精確點名該目標;多目標、glob、管道刪除一律拒絕;根目錄與憑據關鍵路徑無條件拒絕。
當任務確實需要寫到工作區外,Agent 可通過官方 sandbox_permissions: danger-full-access 加 justification 重試,Reviewer 最多返回一次 allowed-once,不改變 Session 常駐權限。
子 Agent 與多 Agent 協作¶
官方進程內 Subagent、Workflow agent()、Ralph spawn worker、AgentTeams 成員通過 parentSession 鏈繼承 Auto 與 workspace 邊界,但每次文件/Shell 調用仍單獨檢查。子 Agent 使用 approval: never,不能自行申請 danger-full-access,需向父 Agent 報告阻塞。Codex、ACP、dsh-sdk 等進程外 Provider 的內部工具權限不在本插件註冊表邊界內。
安裝與啓用¶
使用前請確保已安裝 DeepSeek Harness。
通過 npm 安裝(推薦)¶
SkillHub 目錄頁與 GitHub README 給出的安裝命令一致:
dsh plugin --profile web add @nanmicoder/dsh-auto-mode
若你實際使用的是其他 Profile,將 web 替換爲對應名稱即可。
從源碼構建¶
git clone https://github.com/NanmiCoder/dsh-auto-mode.git
cd dsh-auto-mode
pnpm install
pnpm build
dsh plugin --profile web add .
修改源碼後需重新 pnpm build;本地安裝會保持與當前 checkout 的鏈接關係。
驗證配置並啓動¶
dsh --profile web --dump-config
dsh web
刷新 Web UI,在「可寫入工作區」與「完全權限」之間選擇 自動審批,閱讀並確認風險提示後即可使用。
典型用法示例¶
日常開發:Auto 模式下的自動流轉¶
在 Auto 模式下,Agent 執行以下操作時通常無需反覆點批准:
- 在項目目錄內運行
pnpm install、npm test、cargo build等; - 使用官方字符串替換編輯器修改源碼;
- 對當前 Session 內新建的臨時文件做清理。
以下臨時 runner 仍會進入審查(因其會下載並執行未納入項目依賴的包):
npx、bunx、pnpm dlx、yarn dlx、npm exec
可選:爲分類器固定模型路由¶
默認情況下,Auto 使用當前 Session 的 DSH Provider 與模型,無需額外 API Key。若希望在受信任的 Profile 中固定專用分類路由,可在插件配置中寫入:
- id: auto-permission-mode
config:
classifierProvider: deepseek-official
classifierModel: deepseek-v4-flash
classifierTimeoutMs: 30000
classifierMaxOutputTokens: 1024
完整決策順序、威脅模型與 Windows 路徑處理見倉庫 DESIGN.md。
適用場景與注意事項¶
適合誰用:
- 日常用 DSH Web UI 做項目開發,希望減少「裝依賴 / 跑測試 / 改代碼」時的審批打斷;
- 需要比 Full access 更安全、又比純 Workspace Write 更順暢的權限中間層;
- 關注 admin-security 類插件、願意閱讀源碼後再安裝的團隊。
務必知曉的邊界:
- 插件以當前 dsh 進程權限運行。安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的安全要求。
- 文件沙箱不限制讀取、網絡與外部服務;Windows ACL 後端存在文檔化的
partialenforcement 邊界。Auto 是語義層補充,不是萬能防火牆。 - 插件無法攔截加載前執行的包生命週期腳本、繞過
ctx.tools的 Node 直接調用、被攻破的 Harness Runtime,或在 Harness 外部啓動的命令。 - Full access 仍是用戶明確選擇的無沙箱、免審批模式,本插件不能把它變安全;設計目標是讓絕大多數任務留在沙箱內,僅在業務必要時借出一次最小權限。
- 已測試版本爲 DSH 0.1.0-rc.6;升級 Harness 主版本後建議重新驗證插件行爲。
結尾¶
如果你正在 DSH 上長期跑 Coding Agent,又在「頻繁點批准」和「完全放權」之間反覆橫跳,dsh-auto-mode 值得試一次:它把 Auto 模式嵌回官方沙箱,用分類器兜住沙箱外的語義風險,用硬規則守住系統與憑據底線。
- 插件目錄頁:https://www.skillhub.cn/plugins/NanmiCoder/dsh-auto-mode
- GitHub 倉庫:https://github.com/NanmiCoder/dsh-auto-mode
- npm 包:https://www.npmjs.com/package/@nanmicoder/dsh-auto-mode