🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

密钥池管理 btspoony/dsh-keys-manager

DeepSeek Harnessv0.2.11
btspoony8 天前有提交已提供中文文档扫描:含敏感能力

把单个服务商 API key 变成托管池的 DSH 插件,还内置更多 LLM 服务商

35.7/100
综合分
1
GitHub 星标
1,360
npm 周下载
—/5
用户评分

数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-keys-manager
npm 源 · dsh-keys-manager 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-keys-manager @ 0.2.11
✓Node 引擎要求 ^22.19 || >=24 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 11:54:21

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 14 处,展示前 12 条)
  • 读取本地文件
    lib/store.js:206
    stats = statSync(file);
  • 读取本地文件
    lib/store.js:226
    text = readFileSync(file, 'utf8');
  • 写入本地文件
    lib/store.js:246
    renameSync(file, backup);
  • 写入本地文件
    lib/store.js:372
    await mkdir(dirname(file), { recursive: true, mode: 0o700 });
  • 写入本地文件
    lib/store.js:374
    await writeFile(temp, snapshot, { mode: 0o600 });
  • 写入本地文件
    lib/store.js:375
    await rename(temp, file);
  • 写入本地文件
    lib/store.js:377
    await chmod(file, 0o600);
  • 读取本地文件
    lib/store.js:419
    statSync(file);
  • 写入本地文件
    lib/store.js:427
    mkdirSync(dirname(file), { recursive: true, mode: 0o700 });
  • 写入本地文件
    lib/omp-oauth/oauth.mjs:86
    await writeFile(destination, bytes);
  • 发起网络请求
    lib/omp-oauth/oauth.mjs:1438
    response = await context.fetch(url, {
  • 发起网络请求
    lib/omp-oauth/oauth.mjs:1477
    const response = await context.fetch(template(userinfo.url, vars), {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-plugin-manager@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-models@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-credentials@deepseek-ai/dsh-llm@deepseek-ai/dsh-settings@deepseek-ai/dsh-typert-registry
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
v0.2.112026-10-28
· [0.2.11] - 2026-10-28 · 变更 · 没有用量探测的路由现在会显示「此路由不显示用量」,不再让套餐用量那一行看起来像读取失败。
v0.2.102026-10-26
· [0.2.10] - 2026-10-26 · 新增 · 密钥池路由现在优先选择套餐配额最早重置的账号(先看周窗口,再看已用低于 90% 的会话窗口),让剩余配额在过期前先用掉;没有用量数据、排名相同的账号仍按原有游标轮转。 · 现在可以读取 Factory Droid 传输路由的套餐用量:宿主解析该路由只读的 llm-omp-transports/factory-droid 授权并探测其计费限额,五小时窗口和周窗口因此可见,全程不轮转、不写入凭据。 · 修复 · 一直不返回的套餐用量读取现在会在有限等待后放弃,并报告「未上报」(按慢速节奏重试),迟到的应答直接丢弃,不再覆盖更新的读数。 · 套餐用量读取现在最多同时探测四个账号,命中缓存的账号完全跳过凭据查询,宽密钥池每次刷新不再为每个密钥发一次厂商请求。 · 删除密钥或释放服务商时会清除失效的缓存条目,展示的快照也不会再被调用方改动。 · 套餐用量标签现在以实际所用凭据的过期时间为准,过期的账号行时间戳既不能掩盖真实的拒绝,也不能伪造出过期账号。 · 过期的用量读数改为按慢速(十分钟)节奏重新检查,不再一直卡到卡片重新挂载。 · 套餐用量刷新被拒时现在显示本地化的「未上报」状态,并按十分钟慢速节奏重试,不再让账号行在卡片整个会话期间一直挂起。 · 凭据存储读取短暂失败会重试一次,然后报告为临时失败,瞬时抖动不再看起来像凭据被拒或过期(保留最后已知数字,也不提示登录)。 · 存储的 OAuth 凭据过期后,套餐用量不再要求你重新登录:卡片改为提示该账号由 DSH 托管,因为只有模型请求才会刷新该 token。 · 未上报的套餐用量状态现在按十分钟节奏刷新(刷新期间保留最后已知标签),不再一直卡到卡片重新挂载。
v0.2.92026-10-25
· [0.2.9] - 2026-10-25 · 修复 · 从真正服务该路由的凭证读取服务商卡片的套餐用量:DSH 原生管理的 OAuth 账号不再显示「重新登录」(登录成功后也不再反复提示),凭证读不出来时该行显示「由 DSH 管理」,不再假装服务商没有上报用量。 · 变更 · 套餐用量改为在每个密钥或账号行底部用一行浅色文字显示(W 61% · 5h 32% · 3 天后重置),不再单独占一块,服务商卡片也不会再多出一个用量区。 · 无法上报用量的路由什么都不显示——没有区块、没有文字、没有占位符;OAuth 账号的授权需要续期时,仍保留「重新登录」提示。 · 用量覆盖范围新增 Command Code、xAI SuperGrok 和 Cline,与 Claude、Codex、Z.AI、Kimi、MiniMax 和 OpenCode Go 并列。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
DSH Keys Manager DSH Keys Manager 是一个 DeepSeek Harness 插件,把一个提供商 API key 变成托管密钥池。它扩展而非替换 Models 页面:提供商、模型和模型选择器都在原处,只有 API key 来源移到管理器之后。 功能 密钥池与路由 - 每个提供商可配多把 key,每把有别名和健康状态。 - 一把 key 粘滞绑定到会话,新会话按轮询选择;请求失败先在同一把 key 上重试,再换到另一把。 - 指数升级的冷却恢复,上限七天。 账户与登录 - 七家 pi-ai OAuth 提供商可以以账户身份入池,而不必粘贴 key。 - 另有两条通过本插件自带的登录客户端入池:Kilo 与 Z.AI Coding Plan。 - 随附七条传输路由,服务随附 pi-ai 无法支持的提供商:Cursor、Devin、两条 Google 路由、Factory Droid 与两条 GitLab Duo 路由。 界面 - 插件详情页上提供可搜索的 Keys Manager 页面。 - 既有 Models 提供商卡片内出现"由 Keys Manager 托管"徽标。 - 额外内置提供商以普通 llm-pi-ai 路由安装——共 35 个,清单见提供商覆盖。
展开完整文档(README 剩余 1 节)
DSH Keys Manager

DSH Keys Manager 是一个 DeepSeek Harness 插件,把一个提供商 API key 变成托管密钥池。它扩展而非替换 Models 页面:提供商、模型和模型选择器都在原处,只有 API key 来源移到管理器之后。

功能

密钥池与路由

- 每个提供商可配多把 key,每把有别名和健康状态。
- 一把 key 粘滞绑定到会话,新会话按轮询选择;请求失败先在同一把 key 上重试,再换到另一把。
- 指数升级的冷却恢复,上限七天。

账户与登录

- 七家 pi-ai OAuth 提供商可以以账户身份入池,而不必粘贴 key。
- 另有两条通过本插件自带的登录客户端入池:Kilo 与 Z.AI Coding Plan。
- 随附七条传输路由,服务随附 pi-ai 无法支持的提供商:Cursor、Devin、两条 Google 路由、Factory Droid 与两条 GitLab Duo 路由。

界面

- 插件详情页上提供可搜索的 Keys Manager 页面。
- 既有 Models 提供商卡片内出现"由 Keys Manager 托管"徽标。
- 额外内置提供商以普通 llm-pi-ai 路由安装——共 35 个,清单见提供商覆盖。

快速开始

安装

桌面版或 Web 版打开 插件 → 添加插件,填入 dsh-keys-manager 并点击 安装,然后选择 立即启用。这与下面的 CLI 路径装的是同一个已发布包,包内已含构建好的产物。

dsh plugin --profile web add dsh-keys-manager

一次安装得到两个 bundle:dsh-keys-manager 与 llm-omp-transports;两者都要启用——管理器负责凭据与路由,传输组件负责七条路由的线协议。安装后刷新 Web 页面,让浏览器侧代码被取到。

从本地检出安装

git clone https://github.com/btspoony/dsh-keys-manager
cd dsh-keys-manager
pnpm i
dsh plugin --profile web link .

add 安装的已发布 tarball 自带构建好的 lib/ 与客户端 bundle;link . 则在 pnpm i 期间运行 prepare 构建它们,prepack 在打包时做同样的事。

使用

接管提供商并添加 key

1. 搜索提供商。打开 Plugins → 密钥管理 → 查看(英文 locale 下显示为 Plugins → Keys Manager → View),管理器渲染在插件详情页上。既有 DSH 提供商排在前面;插件同时附带精选的额外提供商目录,见提供商覆盖。
2. 接管提供商。对既有提供商,管理器导入当前解析出的凭据、把 broker 引用写进提供商档案,并把原 key 留在凭据存储里,以便停止接管时还原。
3. 用别名添加更多 key。每把 key 都以自己的引用存进 Harness 凭据存储;管理器状态文档从不包含 key 字面量。
4. 在三点菜单中管理 key:重命名、暂停/恢复、删除。key 行显示状态、最近使用,以及冷却中的恢复时间。
5. 在设置卡片中调整重试次数(1–3)、基础冷却与恢复宽限。

账户与登录

支持原生 OAuth 登录的提供商有两种入池方式:添加密钥保存静态 API key,添加账户则执行提供商的 OAuth 登录流程,把结果作为账户行存进同一个池。九条路由以账户身份入池:七条走 pi-ai 自己的流程,kilo 与 zai 走插件自带的客户端(设备码、粘贴 zcode:// 跳转),后两者签发的是静态凭据,只能靠重新登录续期。

| 路由组 | 如何入池 | 刷新 / 续期 |
| 9 个 OAuth 账户 | 添加账户 —— 七个 pi-ai 流程,两个插件客户端 | 七个由提供商负责刷新;两个静态凭据靠重新登录 |
| 7 条传输路由 | 传输账户 —— 每条路由一条授权 | 见传输路由 |

API key 构成选择环——会话粘滞、轮询选择、重试切换与冷却都作用在该提供商的 key 之间;每个提供商由一条被投影的 OAuth 授权服务,账户行上的计数只反映该账户自身的成功与失败。按账户排名是后续工作。被投影的授权失败时,该账户进入冷却,池回落到它的 key;仅有 OAuth 的路由则停止服务,直到手动重新登录。

muse-code 不需要传输,也不需要自己的账户行:随附 pi-ai 的 meta 路由(openai-responses 走 https://api.meta.ai/v1)已提供它,该一致性检查是静态的,首次真实调用属于手动冒烟检查,详见已知限制。

传输路由

随附 pi-ai 无法支持的提供商由配套的 dsh-llm-omp-transports 组件提供:

- 每条路由只有一条授权,位于 llm-omp-transports/<route>——没有 key 池,也没有按账户轮换。登录在 Keys Manager 页面的 传输账户(Transport accounts)区块完成。
- 模型在构建传输包时由固定的 @oh-my-pi/pi-catalog@18.12.3 表生成,客户端均为非官方实现。依赖前请阅读传输包文档与其已知限制。

| 路由 | 登录 | 刷新 | 模型行数 |
| cursor | 浏览器页面 + 轮询 | 在凭据 seam 上 | 123 |
| devin | 粘贴浏览器最终落到的地址 | 无 —— 需重新登录 | 2 |
| google-gemini-cli | 回环 8085 + 粘贴兜底 | 在凭据 seam 上 | 7 |
| google-antigravity | 回环 51121 + 粘贴兜底 | 在凭据 seam 上 | 22 |
| factory-droid | WorkOS 设备码(网址 + 用户码) | 60 秒窗口内刷新一次,保留 orgId/region | 62 |
| gitlab-duo | PKCE 回环 localhost:8080/callback,无端口回落,可粘贴兜底 | 60 秒窗口内刷新一次 | 16 |
| gitlab-duo-agent | 粘贴 vscode:// 链接 | 刷新一次,回显 vscode 重定向 | 1 |

各路由说明

- Cursor —— 支持文本与推理流,把工具调用交给 DSH 的工具循环;遇到图片块以类型化错误拒绝。该客户端呈现 Cursor 厂商内部的 OAuth 身份。
- Devin —— 没有刷新:记录是静态 bearer,有效期由令牌推导(JWT exp 减五分钟,否则一年);没有可读有效期时行显示 active,倒计时列留空。
- 两条 Google 路由 —— 共用一份生成的 lib/omp/google.mjs 产物,却各自保留独立的授权、账户行与模型目录。授权内容为 {access, refresh, expires, projectId, email?};登录会解析该路由计费所用的 Google Cloud 项目,legacy-tier 或付费账户若无法发现项目则以 AUTH_FAILED 失败,直到设置 GOOGLE_CLOUD_PROJECT(或 GOOGLE_CLOUD_PROJECT_ID)。
- Factory Droid —— 一个代理背后是四套协议,由产物内的模型 id 选择;行上不带 base URL,账户的区域属性(orgId/region)在刷新后保留。
- GitLab Duo 一对 —— gitlab-duo 的 direct-access token 缓存以 GitLab token 为键,轮换后的 token 因此会未命中;gitlab-duo-agent 每个请求重新播种一条工作流并重放会话记录,而不是复用 socket。

选择与故障策略

| 机制 | 行为 |
| 会话粘滞 | 会话的首次请求选出一把 key,并为该会话/提供商对绑定;后续请求复用该 key。 |
| 轮询 | 新会话推进提供商游标,取下一把健康 key。 |
| 重试 | 失败请求在同一把 key 上重试 retryCount 次。CONTEXT_WINDOW_EXCEEDED 这类请求形态的失败与取消从不冷却 key。 |
| 切换 | 重试预算耗尽后,失败 key 标记为冷却,会话重新绑定到另一把健康 key;没有备用 key 时,管理器委托给组合层常规的重试/回退策略。 |
| 冷却 | 首次失败使 key 冷却 baseCooldownMs。冷却中再次失败,或恢复后 recoveryGraceMs 内失败,下一次冷却翻倍;长时间健康运行会重置升级。硬上限七天。 |
| 恢复 | 冷却到期后 key 自动恢复可选,无需手动重置。 |

配置与数据

管理器元数据位于:

$DSH_HOME/keys-manager/state.json

权限为仅属主可读写。内容包含别名、凭据引用、健康计数、会话绑定和提供商接管事实。API key 字面量只存在于 Harness 凭据存储;账户行同理,授权挂在它的 grantRef 之下,状态里只有非敏感元数据(邮箱、账户 ID、过期时间)。文件通过临时文件加重命名原子写入。

每个受管提供商档案的 apiKeyEnv 指向 broker 引用,例如 KEYSMGR_ZAI_CODING_CN_3FA2C1。Host 凭据层按请求用该会话选中的 key 应答这个引用。Models 页面视该档案为已配置;直接写 broker 引用会被拒绝并指向管理器。

OAuth2 扩展点

状态结构已区分 kind: "api-key" 与 kind: "oauth",并在凭据引用旁保留可空的 oauth 对象。未来的账号流程可以在 keys-manager/<provider>/<key> 下追加记录而不改写既有行。本版本中,只有 OAuth 认证的提供商会按不支持上报,而不会被当作 API key 提供商处理。

提供商覆盖

四组,一个池:

- DSH 内置 —— 随附 DSH pi-ai 目录的路由。集合随你安装的 DSH 版本而定,因此以 Models 页面为准;其中四个不在单 key 池管理范围内(见下)。
- 插件扩展内置 —— 本插件以普通 llm-pi-ai 路由新增的 35 条。
- OAuth 账户 —— 9 条以账户而非粘贴 key 入池的路由:七条走 pi-ai 自己的流程,kilo 与 zai 由插件自带的客户端登录。
- 传输路由 —— 7 条随附 pi-ai 无法支持、由 dsh-llm-omp-transports 服务的路由。

已支持 —— 全部插件额外、OAuth 账户与传输路由

插件扩展内置 —— 35 —— 收录自 oh-my-pi 的提供商目录(MIT):

| 提供商 | Route id | API key 环境变量 |
| DeepInfra | deepinfra | DEEPINFRA_API_KEY |
| Novita | novita | NOVITA_API_KEY |
| StepFun | stepfun | STEPFUN_API_KEY |
| SambaNova | sambanova | SAMBANOVA_API_KEY |
| Qianfan | qianfan | QIANFAN_API_KEY |
| GMI Cloud | gmi-cloud | GMI_API_KEY |
| Synthetic | synthetic | SYNTHETIC_API_KEY |
| ZenMux | zenmux | ZENMUX_API_KEY |
| Kilo Gateway | kilo | KILO_API_KEY |
| NanoGPT | nanogpt | NANO_GPT_API_KEY |
| Venice AI | venice | VENICE_API_KEY |
| AIML API | aimlapi | AIMLAPI_API_KEY |
| AI& | aiand | AIAND_API_KEY |
| Helmcode | helmcode | HELMCODE_API_KEY |
| Alibaba Coding Plan | alibaba-coding-plan | ALIBABA_CODING_PLAN_API_KEY |
| MiniMax Coding (Global) | minimax-code | MINIMAX_CODE_API_KEY |
| MiniMax Coding (CN) | minimax-code-cn | MINIMAX_CODE_CN_API_KEY |
| Umans AI Coding Plan | umans | UMANS_AI_CODING_PLAN_API_KEY |
| Sakana AI | sakana | SAKANA_API_KEY |
| CoralBricks | coralbricks | CORAL_API_KEY |
| Wafer Serverless | wafer-serverless | WAFER_SERVERLESS_API_KEY |
| Alibaba Token Plan | alibaba-token-plan | ALIBABA_TOKEN_PLAN_API_KEY |
| Alibaba Token Plan (CN) | alibaba-token-plan-cn | BAILIAN_TOKEN_PLAN_API_KEY |
| Charm Hyper | charm-hyper | CHARM_HYPER_API_KEY, HYPER_API_KEY |
| LiteLLM Proxy | litellm | LITELLM_API_KEY |
| SiliconFlow | siliconflow | SILICONFLOW_API_KEY |
| SiliconFlow (CN) | siliconflow-cn | SILICONFLOW_CN_API_KEY |
| Zhipu Coding Plan | zhipu-coding-plan | ZHIPU_API_KEY |
| Abliteration | abliteration | ABLITERATION_API_KEY, ABLIT_KEY |
| ClinePass | cline-pass | CLINE_API_KEY |
| Command Code | commandcode | COMMAND_CODE_API_KEY, COMMANDCODE_API_KEY |
| CoreWeave Serverless Inference | coreweave | COREWEAVE_API_KEY |
| Fire Pass | firepass | FIREPASS_API_KEY |
| Ollama Cloud | ollama-cloud | OLLAMA_CLOUD_API_KEY |
| Yolo Auto | yolo-auto | YOLO_AUTO_API_KEY |

列出两个变量时二者皆可接受,第一个为主变量;CoreWeave Serverless Inference 还需在添加前把 COREWEAVE_PROJECT=<team>/<project> 设置到 DSH 进程环境中。

OAuth 账户 —— 9

| 提供商 | 路由 | 登录客户端 |
| Anthropic | anthropic | pi-ai |
| GitHub Copilot | github-copilot | pi-ai |
| Kimi Coding | kimi-coding | pi-ai |
| OpenAI Codex | openai-codex | pi-ai |
| OpenRouter | openrouter | pi-ai |
| Radius | radius | pi-ai |
| xAI | xai | pi-ai |
| Kilo | kilo | 插件自带客户端 —— 设备码 + 轮询 |
| Z.AI Coding Plan | zai | 插件自带客户端 —— 粘贴 zcode:// 跳转 |

两个插件签发的凭据是静态的,标记为 signin:kilo / signin:zai-coding-plan,不会向 llm-pi-ai/<provider> 写入任何内容;七条 pi-ai 行则是提供商自己的授权。kilo 出现两次是刻意的:同一条路由既可以作为插件额外内置路由收 API key,也可以通过自带客户端以账户身份入池。

传输路由 —— 7 —— cursor、devin、google-gemini-cli、google-antigravity、factory-droid、gitlab-duo、gitlab-duo-agent;登录、刷新与模型细节见传输路由。

不纳入池 —— 4 个 DSH 内置

| 提供商 | 原因 |
| amazon-bedrock | AWS 凭据链(profile、IAM 密钥、ECS/IRSA/EC2),不是单一 API key |
| cloudflare-ai-gateway | API key 之外还需 Cloudflare 账号 ID 与网关 ID |
| cloudflare-workers-ai | API key 之外还需 Cloudflare 账号 ID |
| openai-codex | 仅支持 ChatGPT OAuth 登录,无 API key 凭据——可作为 OAuth 账户使用而非 key |

其余 DSH 目录路由都提供 API key 凭据;你在档案里自己声明的路由(自定义 / Custom)与内置路由一样入池。

文档

| 文档 | 内容 |
| 开发 | 构建与开发工作流、仓库布局 |
| 发布 | CI 检查与 npm 发布流程 |
| 已知限制 | 当前设计边界,含七条传输路由 |
| 传输包(英文) | 传输路由:支持状态、风险、构建/测试与发布 |

英文版本:README.md · Development · Release · Known limits。

许可证

基于 MIT 许可证 发布。
预览分享卡片长什么样 ↓btspoony/dsh-keys-manager
分享 · DeepSeek Harness Hub
btspoony/dsh-keys-manager

把单个服务商 API key 变成托管池的 DSH 插件,还内置更多 LLM 服务商

这是你的仓库?认领条目

回到顶部