前言¶
在 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