前言¶
在 DSH 里用多渠道免费模型时,积分往往分散在各个 provider 账号上。侧边栏可以列额度,但对话过程中你更需要两件事:当前还剩多少、这一轮到底扣了多少。官方统计栏侧重上下文与用量,不会按渠道账号把余额和单轮消耗摊开。
下面介绍社区客户端插件 dsh-channel-credits(维护者 basaltfold):在输入框下方统计栏常驻显示渠道积分余额,并在每轮回答末尾回填本轮积分消耗。数据全部来自同机已安装的 dsh-our-free-model 注册的 channel-pack RPC,不请求外部接口,也不读凭据文件。
这是什么¶
dsh-channel-credits 是 DeepSeek Harness 的 Web 客户端插件(分类:客户端)。它挂两个 UI 槽位:统计栏显示合计剩余积分(可点击强刷);回合尾部在动作行之前显示「本轮 −X 积分」,并可带上扣款账号昵称。
与社区插件 dsh-ofm-balance 的差异在于:后者在侧边栏列各渠道额度、只做余额展示;本插件把余额放在输入框统计栏,并对每一轮对话做消耗归因与异步回填。
两个挂载点¶
| 槽位 | 位置 | 内容 |
|---|---|---|
conversation.composer.dock |
输入框卡片下方统计栏(⊙ 上下文环 右侧) |
例如 剩余 9,034 积分,点击可强刷 |
conversation.chat.turnTail |
每轮回答末尾的动作行之前 | 例如 本轮 −0.31 积分 |
统计栏条目通过 CSS order:1 排在原生 activity / usage / ContextMeter 之后,成为该行最后一个 flex 项。
核心功能¶
剩余积分¶
宿主 RPC usage.badge 返回各账号的 balance.total,插件按 provider 求和。只对 provider.status 里 accounts.total > 0 的 provider 取数——宿主是逐账号顺序打上游,全量轮询可能触发风控。
本轮消耗¶
宿主与上游都没有单次消耗字段,插件用余额差量实测:回合刚结束时强刷一次作为基线,再在 70s、120s、180s 采样,读到回落即结算。上游扣账延迟实测约 60~100 秒,回合结束时读到的仍是旧值,因此必须异步回填。
结算结果写入 localStorage(键 dcc:v1:turn:<sessionId>:<turn>),刷新页面不重算。同一会话只允许最新一轮认领差量;0 值也会记账,避免重复结算。
依赖的 RPC¶
调用形式如下:
connection.rpc.call('/api', 'channel-pack', { method, payload }, signal)
usage.badge { provider, force }→{ accounts: [{ accountId, nickname, balance: { total, packages } }], windowDays }provider.status { providers }→{ statuses: { <p>: { accounts: { total, enabled }, closed } } }
宿主徽标缓存 TTL 为 120 秒,插件轮询周期也是 120 秒;force: true 仅在点击统计栏与结算采样时使用。
安装与启用¶
插件以当前 DSH 进程权限运行,安装前请自行查看 GitHub 仓库 源码与许可证。改动 profile 后需重启 DSH 桌面端(cordis 树只在启动时构建)。
在 profile 的 package.json(路径 $DSH_HOME/profiles/<name>/package.json)中:
- 在
dependencies增加本地路径依赖,或使用dsh plugin add(README 未给出固定的一条github:owner/repo命令,请按你本机 DSH 插件安装方式操作)。 - 在
dsh.profile.bundles末尾追加"dsh-channel-credits"。 - 包内
cordis.patch.yml需包含channel-credits;客户端由dsh.client.platform: web声明。
dependencies 示例(路径改为本机绝对路径):
"dsh-channel-credits": "file:/absolute/path/to/dsh-channel-credits"
当前包版本(以仓库 package.json 为准):0.1.1。
典型用法¶
- 确保已安装并配置
dsh-our-free-model,且至少配置了一个渠道账号;未安装时connection.rpc找不到channel-pack,本插件不渲染任何内容。 - 重启 DSH 后,在输入框下方统计栏查看「剩余 X 积分」;余额不准时可点击条目强刷。
- 完成一轮对话后,在回答末尾等待异步回填(通常需等待上游扣账,插件会在 70s~180s 内采样);显示形如
本轮 −3.91 积分 · ACAI时表示已按账号归因。
适用场景与注意¶
适合谁:已在 DSH 桌面端使用 dsh-our-free-model、需要在对话界面直接盯余额和单轮消耗的智能体开发者。
依赖风险(重要):本插件读取的是 dsh-our-free-model 注册的私有 RPC 服务 channel-pack,不是 DSH 官方稳定 API。dsh-our-free-model 默认开启热更新(autoReloadWatch);上游一旦调整 usage.badge / provider.status 的方法名、参数或返回结构,插件可能静默失效(界面不报错,只是不显示)。
已知限制:
- 单位混用:
cline为美元、zcode为 token、gemini为额度,其余按「积分」显示;多 provider 合计时只累加同单位条目。 - 凭据缺失的账号返回
balance: null与error: '凭据未配置',界面显示「不可用」,不计入合计。 - 一个回合内若切换过 provider,差量会算到当前 provider 的合计上。
DSH 生态奉行「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-channel-credits 把渠道积分余额放进输入框统计栏,并用余额差量异步回填每轮消耗,适合与 dsh-our-free-model 配套使用。进一步了解可访问 目录页 与 GitHub 仓库。