dsh-secrets:在 DSH 中通過安全表單收集密鑰,避免憑證進入模型上下文

前言

在 DeepSeek Harness(DSH)裏讓智能體使用 API Key、數據庫密碼或 Token 時,常見做法是把值寫進對話、貼進工具參數,或讓模型直接讀 .env。這些路徑都會增加憑證進入會話日誌、工具輸出或模型上下文的概率。社區插件 dsh-secrets(維護者 SiyuQian,分類 admin-security)換一種方式:智能體只聲明需要哪些變量名和用途,你在 Web 界面的密碼錶單裏填寫,值經認證 API 寫入工作區內的 dotenv 文件(權限 0600),模型側僅收到狀態與元數據,不接觸明文。

下面按定位、機制、安裝配置與使用注意說明該插件能做什麼、不能做什麼。

這是什麼

dsh-secrets 是 DeepSeek Harness 的 bundle 插件,當前 package 版本爲 0.1.0,許可證 MIT。它提供 request_secret 工具與配套 secrets skill,教智能體在何時、如何發起密鑰請求;界面與審批提示支持中英文,並跟隨 Harness 的 locale 設置(缺省爲英文)。

倉庫與目錄頁:

  • GitHub:https://github.com/SiyuQian/dsh-secrets
  • 社區目錄:https://www.skillhub.cn/plugins/SiyuQian/dsh-secrets

工作流程

典型一輪交互如下:

  1. 智能體調用 request_secret,傳入變量名、用途說明以及目標 dotenv 文件路徑。
  2. 聊天輸入框上方彈出密碼錶單並聚焦首字段;會話工作區摺疊時仍可從工具行看到請求狀態。
  3. 你輸入的值經已認證的 /api/dsh-secrets.* 路由直達 Host,不作爲工具參數、工具結果或會話事件傳給模型。
  4. 值寫入 dotenv,文件模式 0600;已有行、註釋與換行符儘量保留。
  5. 智能體只收到 { status, path, names, added, updated, unchanged, kept } 一類摘要。

子智能體與 run_code(PTC)程序無法打開該表單;若你在當前輪次取消請求,同名變量不能在同一輪再次申請。

三層防護與日誌策略

插件在「讀文件」「輸出泄露」「命令外帶」幾類風險上做了分層限制,摘要如下:

層級 機制 作用
L1 讀守衛 ctx.tools.guard() 拒絕對已管理文件的 read/edit/write/grep,以及 shell 中 cat、cp、source、python -c open(...) 等讀取行爲;其他插件不能覆蓋該拒絕。
L2 脫敏 tools/post-execute 在所有工具結果裏把已管理值替換爲 [REDACTED:NAME],覆蓋 base64、URL 編碼、JSON 轉義、十六進制等變體;脫敏失敗則 withhold 輸出。
L3 審批 tools/pre-execute → ask 使用已管理變量且涉及 curl、echo、printenv、ssh 等的 shell 命令會先徵求你同意。

此外,會話日誌只記錄變量名、路徑與計數;registry.json 存名稱、路徑與 8 字符指紋,不存明文值。默認要求 env_file 位於工作目錄內(可通過配置放寬)。

Settings → Secrets 以卡片列出各託管變量:完整路徑、指紋、更新時間及「停止託管 / 從文件刪除」等操作;長名稱與路徑在面板內換行,頁面不展示明文。

安裝與啓用

依賴 DeepSeek Harness 0.2.x 與 Node.js 22+。

在 Harness 會話中讓智能體安裝 bundle(命令須與官方 README 一致):

plugin_manager install_bundle  target: https://github.com/SiyuQian/dsh-secrets.git

安裝後刷新 Web GUI。插件以當前 DSH 進程權限運行,安裝前宜自行查看倉庫源碼與 MIT 許可證條款。

可選配置

在 profile 的 cordis.patch.yml 中可按需覆蓋:

- id: dsh-secrets
  name: dsh-secrets
  config:
    timeoutMs: 600000        # 表單超時,默認 10 分鐘
    dataDir: /abs/path       # registry 位置,默認 $DSH_HOME/plugins/dsh-secrets
    allowOutsideCwd: false   # 是否允許 env_file 在工作目錄外

典型用法(智能體側)

你無需手寫 HTTP;在對話中說明需要哪些環境變量、寫入哪個 .env,並啓用或已安裝本插件後,智能體應通過 skill 調用 request_secret。你在表單中填寫後,後續腳本或 CLI 可從 dotenv 讀取,而模型上下文與工具往返中不應出現明文。

若智能體要用到已託管變量執行帶外泄風險的命令,L3 會彈出審批;當前尚無「本會話始終允許」按鈕,審批按單次命令生效。

適用場景與已知限制

適合:本地或受信工作區內,需要讓 DSH 智能體配置第三方 API、數據庫連接等,又希望減少密鑰進入 LLM 與聊天日誌的場景。

需注意:

  • 若智能體自行寫程序讀文件並在發送前任意變換內容,可能繞過 L1–L3;應在受信工作區使用。這些機制提高門檻,不是沙箱。
  • 長度不足 6 字符的值無法脫敏,設置頁會標記。
  • 僅支持 dotenv 文件,不支持 Keychain 或直接向進程注入環境變量。

結尾

dsh-secrets 把「向用戶要密鑰」收口到認證表單與 Host 寫盤,並用讀守衛、輸出脫敏與命令審批降低誤讀、誤泄風險;適合你已使用 DSH 0.2.x、並希望憑證儘量少經模型與明文日誌傳遞時啓用。

  • 目錄頁:https://www.skillhub.cn/plugins/SiyuQian/dsh-secrets
  • 倉庫:https://github.com/SiyuQian/dsh-secrets
羽毛球分组比赛记分
小程序二维码

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

小夜