dsh-permission-gate:DSH 進程級訪問閘門與工具制動器

前言

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 一次,以便掃描客戶端列表。首次訪問頁面時,系統會要求設置密碼。

典型用法

  1. 統一登錄:在任意設備登錄一次,其他設備上打開的 DSH 頁面會在下一次輪詢時自動解鎖。
  2. 配合真實邊界:由於該插件不保護 HTTP API,必須將其與真實的網絡邊界配合使用(如 WireGuard VPN、Tailscale 或 TLS 反向代理),才能防止直接調用 API 繞過閘門。
  3. 密碼管理:使用 DSH 設置模塊中的“權限閘門”功能來修改密碼或禁用閘門。
  4. 重置密碼:忘記密碼時,刪除 ~/.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 鎖頁和工具制動器,解決了遠程運行和無人值守場景下的基礎安全風險。使用時請務必牢記其侷限性,並將其部署在真實的網絡邊界之後。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜