前言¶
DeepSeek Harness (DSH) 默認不提供 HTTP 層面的認證機制。在遠程運行或無人值守的場景下,這會導致瀏覽器頁面可能被訪問,同時智能體工具仍可調用。爲了解決這兩個問題,插件 dsh-permission-gate 提供了 UI 級別的全屏鎖頁,以及進程級別的工具制動。
簡介¶
該插件由 Juntiantan 維護,開源協議爲 MIT。它不替代真實的邊界認證,而是作爲 DSH 進程內的訪問控制層,防止在未登錄狀態下執行敏感操作。
核心功能¶
1. UI 級別訪問控制¶
插件會在每次 DSH 頁面加載時注入一個全屏鎖頁。只有在登錄狀態下,頁面纔會解鎖。這種機制防止了未授權人員直接在瀏覽器中查看或操作 DSH 的界面。
2. 進程級工具制動¶
這是該插件最關鍵的安全特性。當沒有用戶登錄時,插件會通過 ctx.tools.guard 攔截所有智能體工具的調用。這意味着鎖定的狀態下,智能體無法讀取文件、運行命令、打開網絡連接或生成新的子智能體。
3. 會話與憑證管理¶
- 共享會話:一次登錄即可解鎖所有打開的 DSH 頁面。會話在內存中保持 60 分鐘的嚴格空閒鎖定,超時後所有頁面將強制返回登錄頁。
- 密碼存儲:憑證使用 scrypt 加密算法和隨機鹽存儲在
~/.dsh/permission-gate目錄下。會話本身僅存在於內存中,重啓 DSH 進程後需要重新登錄,但密碼不會被重置。 - 管理模塊:DSH 原生設置模塊中集成了“權限閘門”配置頁面,可用於啓用、禁用或修改密碼。
4. 逃生通道與狀態監控¶
- 服務器端逃生口:提供
/gate路徑的純 HTML 登錄頁,即使瀏覽器注入腳本失效或被緩存,仍可通過直接訪問該路徑登錄。 - 狀態芯片:UI 右側提供可摺疊的狀態芯片,實時顯示剩餘有效時間。
安裝與啓用¶
該插件聲明瞭 dsh.bundle,屬於 profile layer。安裝過程由 DSH 自動處理,無需手動編輯補丁文件。
dsh plugin --profile web add dsh-permission-gate
安裝後需要重啓 DSH 一次,以便掃描客戶端列表。首次訪問頁面時,系統會要求設置密碼。
典型用法¶
- 統一登錄:在任意設備登錄一次,其他設備上打開的 DSH 頁面會在下一次輪詢時自動解鎖。
- 配合真實邊界:由於該插件不保護 HTTP API,必須將其與真實的網絡邊界配合使用(如 WireGuard VPN、Tailscale 或 TLS 反向代理),才能防止直接調用 API 繞過閘門。
- 密碼管理:使用 DSH 設置模塊中的“權限閘門”功能來修改密碼或禁用閘門。
- 重置密碼:忘記密碼時,刪除
~/.dsh/permission-gate文件,重啓 DSH 後再次訪問頁面即可重新設置。
適用場景與注意¶
- 不是 HTTP 認證:該插件僅保護瀏覽器頁面和進程內的工具調用,不保護 DSH 的 HTTP API 接口。任何能夠訪問 DSH 端口的客戶端都可以直接調用 API 繞過此插件。
- 必須配置邊界:部署時必須綁定在 loopback 地址,或通過 VPN/反向代理進行訪問,否則安全性將低於未安裝狀態。
- 會話內存化:會話僅存在於內存中,重啓 DSH 進程會清除會話狀態,需重新登錄。
- 工具豁免:爲了允許鎖定的智能體進行基本的狀態彙報和賬本維護,
get_goal、update_goal和todo_write三個工具在鎖定狀態下仍保持可調用。
總結¶
dsh-permission-gate 是一個針對 DeepSeek Harness 進程安全的實用插件。它通過 UI 鎖頁和工具制動器,解決了遠程運行和無人值守場景下的基礎安全風險。使用時請務必牢記其侷限性,並將其部署在真實的網絡邊界之後。