前言¶
在 DeepSeek Harness (DSH, Cordis) 環境中,處理 API 密鑰(如 OpenRouter Key、Discord Bot Token)需要與 Git 憑據區分開的安全機制。dsh-wsl-cred 專注於 Git 推送/拉取的憑據提示,而本插件 (dsh-wsl-secret) 旨在處理應用層的 API 密鑰。它允許在 WSL/Linux 環境中安全地讀取 pass 和 age 格式的密鑰。
核心功能¶
- 安全讀取 pass/age 密鑰。
- 列出密鑰名稱。
- 檢查密鑰是否存在。
- 將密鑰加載到環境變量。
- 預覽密鑰值。
- 解密 age 密鑰。
- 通過
allowPrefixes配置白名單。 - 默認不自動顯示完整密鑰(
reveal: false)。
安裝與啓用¶
本插件運行在 WSL/Linux 環境中,且系統 PATH 中需包含 pass 和/或 age 工具。
- 安裝必要的命令行工具:
sudo apt install pass age
- 在 DSH profile 中啓用插件並配置白名單。編輯
cordis.patch.yml(例如路徑~/.dsh/profiles/web/cordis.patch.yml),添加以下內容:
plugins:
dsh-wsl-secret:
enabled: true
path: /path/to/dsh-wsl-secret
config:
allowPrefixes:
- dsh
reveal: false
timeoutMs: 15000
重啓或重載 profile 後生效。注意:如果不配置 `allowPrefixes`,`secret_status` 將返回 `ready=false`。
工具與用法¶
插件提供了以下命令:
secret_status:檢查 pass/age 工具是否就緒、白名單配置及整體狀態。secret_pass_list:列出所有 pass 密鑰的名稱。secret_pass_exists:檢查指定的 pass 密鑰是否存在。secret_to_env:將 pass 密鑰加載到環境變量(推薦使用)。secret_pass_get:預覽讀取 pass 密鑰內容(慎用,因爲默認reveal: false)。secret_age_to_env:將 age 密鑰加載到環境變量。secret_age_decrypt:解密 age 密鑰並預覽。
典型工作流¶
- 插入密鑰到 pass:
pass insert dsh/openrouter
pass insert dsh/discord-bot
- 在 DSH 中檢查狀態:
{ "name": "secret_status" }
- 將密鑰加載爲環境變量(推薦):
{ "name": "secret_to_env", "arguments": { "name": "dsh/openrouter", "envKey": "OPENROUTER_API_KEY" }}
同一 dsh 進程內的其他工具可以通過 `process.env.OPENROUTER_API_KEY` 訪問該值。
安全模型¶
- 白名單機制:必須顯式配置
allowPrefixes才能讀取密鑰。如果allowPrefixes爲空,則拒絕所有訪問。 - 默認隱藏:默認
reveal: false,除非在配置中顯式開啓,否則不會在聊天中返回完整的密鑰明文。 - 使用建議:優先使用
secret_to_env將密鑰注入環境變量,避免將明文密鑰直接貼入聊天上下文。
許可證¶
MIT License