dsh-composer-credits
在 DSH(DeepSeek Harness)对话输入框常驻一枚积分胶囊:一眼看到当前渠道的账号余额,点开面板即可秒切优先账号。
积分胶囊
它解决什么
dsh-our-free-model 的积分只在「设置 → 插件 → Channel Pack」里能看到,输入框没有读数;而 dsh-connect-workbuddy / dsh-connect-trae 各自带一个胶囊,功能重复。本插件取代它们,在输入框工具行左侧放一枚极轻量的胶囊。
功能
- 常驻读数:形如
● Raccoon 7,160(渠道短名 · 余额)。每 5 分钟自动刷新一次。
- 点击开面板:一行一账号 + 余额,点行即切号。
- 切号 = 把该账号排到
account.reorder 的首位,即改写 channel-pack 的自动选号 / 限流换号优先级。
- 渠道可切换:面板顶部列出所有还有账号的渠道,点击即切;选择记在
localStorage,跨会话保留。
- 不伪造数字:读不到余额的行显示
—,绝不显示 0。
依赖
需要宿主已安装 dsh-our-free-model,它内嵌的 channel-pack 提供全部 RPC。
未安装时胶囊只显示 —,不报错、不影响输入框其它控件。
安装
dsh plugin install dsh-composer-credits
或手动:把本包放进 profile 的 node_modules,在 dsh.profile.bundles 里加入 dsh-composer-credits。
数据来源
全部读数与操作都走 channel-pack 的 RPC(端点 /api/channel-pack):
| RPC | 用途 |
|---|
usage.badge | 胶囊读数(宿主侧 120s TTL 缓存,比逐账号直读上游便宜得多) |
account.list | 面板的账号行 |
credits.balances | 逐账号余额(打开面板时才抓,避免按账号数放大上游读) |
provider.status | 挑出「还有账号」的渠道做 chips |
account.reorder | 秒切账号:把目标账号排到首位 |
客户端通过宿主 connection 服务的 rpc.call(connection.rpc, '/api', 'channel-pack', { method, payload }, signal) 调用。connection 是机会式读取:拿不到就降级显示,绝不让整个插槽崩掉。
设计约束
- 不
require 任何 @deepseek-ai/dsh-client-ui-* 包;控件自写、样式自持。
- 只用
--dsw-alias-* 主题 token,不写死颜色,浅色 / 深色自动跟随。
- 工厂无副作用;样式与字典都在
apply() 里用 ctx.effect 注册并返回清理函数。
- 面板走
ReactDOM.createPortal 进 document.body(仍属 React 树),不 append 第二个应用。
- 挂载点:
conversation.input.left(会话级 list 插槽,输入框工具行左侧的紧凑控件位)。
License
MIT