前言¶
在 DeepSeek Harness(DSH)Web UI 里开发或日常使用智能体时,很多人会同时挂 CPA 反代与 CPA-Manager-Plus 做账号池和用量统计。Token 用量往往在管理面板里看,连接状态又要另开页面,和侧边栏已有的 dsh-token-pill 是割裂的。dsh-cpamc-pill 在侧边栏底部补一块只读「小胶囊」:一颗状态点和一行今日 token 数字,数据从 CPA-Manager-Plus 拉取,管理端密钥留在 Host 侧,浏览器只访问插件注册的同源路由。
这是什么¶
dsh-cpamc-pill(npm 包名 @local/dsh-cpamc-pill,当前版本 0.1.0)由 ChrisZqaq 维护,归类为客户端插件。它挂在 sidebar.footer.action,order: 21,紧挨 dsh-token-pill(order: 20)右侧,刻意做得很小,例如:
● CPA · 18.72M
悬停可看今日汇总、调用健康与滚动 30 分钟速率;点 Details 可看模型拆分与上游账号池。
核心功能¶
读什么数据¶
插件只读 CPA-Manager-Plus 两个管理端接口(admin key 在 Host 解析,不进入浏览器):
| 接口 | 用途 |
|---|---|
GET /v0/management/dashboard/summary?today_start_ms=<ms> |
今日 token、调用、成功率、延迟、滚动 rpm/tpm、top models |
GET /v0/management/auth-files |
每个上游账号:提供商、状态、禁用与冷却 |
浏览器侧仅调用插件注册的同源路由:
GET /dsh-cpamc-pill/status
Token 统计方式¶
插件采用 CPA-Manager-Plus 返回的 total_tokens(input_tokens + output_tokens),并约定 input_tokens 已包含 cache_read_tokens。若在展示时再叠加重算 cache,实测会把单日用量从约 9.09M 误扩到约 17.61M;因此单独推导 fresh = input - cached,便于保留 cache 命中率可读性。
不展示费用¶
胶囊内故意不出现金额。反代后账号多为订阅、无按次账单,且 CPA-Manager-Plus 在价格同步前可能报告 total_cost: 0;显示 ¥0.00 反而误导,不如不显示。
健康状态¶
| 状态 | 圆点 | 含义 |
|---|---|---|
ok |
绿 | 至少一个可用账号,今日无失败 |
degraded |
琥珀 | 全部账号冷却或禁用,或今日有失败调用 |
offline |
红 | 127.0.0.1:18317 上 CPA-Manager-Plus 无响应 |
unconfigured |
红 | 无法解析 admin key |
无法连上服务时仍渲染胶囊(红点),不会空一块侧边栏。
依赖的 DSH 客户端注入¶
与 dsh-token-pill 类似,在 dsh.client.inject 中声明:
@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-sidebar
安装与启用¶
官方 README 给出的方式是把本地包链入 profile,而不是 dsh plugin add github:... 一类命令。先把插件源码放到本机绝对路径,再执行:
# 1. Link the package into your profile
cd ~/.dsh/profiles/<name>
npm pkg set "dependencies.@local/dsh-cpamc-pill=link:/absolute/path/to/dsh-cpamc-pill"
# 2. Add it to the bundle list
npm pkg set 'dsh.profile.bundles[]=@local/dsh-cpamc-pill'
# 3. Link the module the way the existing @local packages are linked
ln -sfn /absolute/path/to/dsh-cpamc-pill \
node_modules/@local/dsh-cpamc-pill
说明:桌面 profile 会用自带安装器处理 link: 依赖;若手写改 package.json,第 3 步才必要,因为普通 npm install 对 link: 会报 EUNSUPPORTEDPROTOCOL。
完成后重启 Harness,或在 Plugin Manager 里触发 profile 重编排,通常可挂载插件而无需重启。
配置 admin key¶
解析顺序为「先命中先用」:
- 环境变量
CPAMP_ADMIN_KEY - 文件
~/.dsh/cpamc-pill.json:{ "adminKey": "cpamp_..." } ~/Applications/cpa-stack/credentials.env内的CPAMP_ADMIN_KEY=
第 3 条针对从 Dock 启动、进程不带 shell 环境变量的场景;仅从 process.env 读取会漏掉。缺 key 时进入 unconfigured,不发起网络请求。响应里会有 keySource(env / file / stack),不包含密钥本身。
典型用法与自检¶
- 确保 CPA-Manager-Plus 在 Host 可访问(README 健康检查默认
127.0.0.1:18317)。 - 按上一节配置
CPAMP_ADMIN_KEY或等价文件。 - 打开 DSH Web UI,在侧边栏底部
dsh-token-pill右侧查看胶囊;悬停、点 Details 核对用量与账号池。
离线验证(无需浏览器、Host 或外网):
node scripts/verify.mjs
或在包目录执行 npm run verify。套件会 mock ModuleLoader、React 与 Cordis,覆盖 slot 契约、翻译键、token 折叠、密钥优先级、四种健康状态等约 80 项断言。
适用场景与注意¶
适合:已在本地或同机部署 CPA-Manager-Plus,希望在 DSH 侧边栏一眼看到反代健康与今日 token,又不想把 admin key 暴露给前端的用户。
注意:
- 插件以当前 DSH 进程权限运行;安装前建议阅读 仓库源码 与 MIT 许可证。
- 社区目录 SkillHub 插件页 为独立收录,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,本包是其中一类客户端扩展。
结尾¶
dsh-cpamc-pill 把 CPA-Manager-Plus 的只读汇总收成侧边栏一颗小胶囊:同源 GET /dsh-cpamc-pill/status、明确的 token 计账规则、四种健康状态,并与 dsh-token-pill 并排展示。进一步了解可访问目录页 skillhub.cn/plugins/ChrisZqaq/dsh-cpamc-pill 与 GitHub ChrisZqaq/dsh-cpamc-pill。