dsh-channel-credits:输入框统计栏看渠道积分,回合尾部看本轮消耗

前言

在 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)中:

  1. 在 dependencies 增加本地路径依赖,或使用 dsh plugin add(README 未给出固定的一条 github:owner/repo 命令,请按你本机 DSH 插件安装方式操作)。
  2. 在 dsh.profile.bundles 末尾追加 "dsh-channel-credits"。
  3. 包内 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。

典型用法

  1. 确保已安装并配置 dsh-our-free-model,且至少配置了一个渠道账号;未安装时 connection.rpc 找不到 channel-pack,本插件不渲染任何内容。
  2. 重启 DSH 后,在输入框下方统计栏查看「剩余 X 积分」;余额不准时可点击条目强刷。
  3. 完成一轮对话后,在回答末尾等待异步回填(通常需等待上游扣账,插件会在 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 仓库。

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

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

小夜