dsh-wsl-secret: DeepSeek Harness WSL 插件

前言

在 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 工具。

  1. 安装必要的命令行工具:
    sudo apt install pass age
  1. 在 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 密钥并预览。

典型工作流

  1. 插入密钥到 pass:
    pass insert dsh/openrouter
    pass insert dsh/discord-bot
  1. 在 DSH 中检查状态:
    { "name": "secret_status" }
  1. 将密钥加载为环境变量(推荐):
    { "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

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

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

小夜