Overview
dsh-token-billing
README / EN
Package documentation
Registry summary
dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.
Read the full README on GitHubLIMITATIONS
Known limitations
- **文案是中文写死的**,没有接 locale 字典(接了就要引入 `ctx.locale` 与字典注册)。要英文界面直接改 `src/client.js` 里的字符串并重新构建。 - **币种只有 CNY / USD** 两套(官方就这两套)。要加第三个币种:在 `src/host.js` 的 `DEFAULT_PRICES` 和 `CURRENCIES` 里加上,并在 `src/client.js` 的 `symbolOf` 里给出符号。 - **不自动抓官网价格。** 页面结构一变抓取就断,宁可让价格是显式配置。价格变动请按上面的「改价格」处理。 - **只覆盖会话内用量。** 不做跨会话汇总、不做预算拦截(拦截属于 gate,不属于展示)。想加的话,同样可以走一个 Host 投影 + 另一个 entry。 - **余额是「现在剩多少」,不是「本会话花了多少」。** 两者来自不同事实源:花费由会话日志折叠而来,余额是每次现查的外部快照。余额不会随投影推送更新,只按 `refreshMs` 轮询,所以刚发生的大额消费可能要过几十秒才反映在徽标上;想立刻看就点面板里的「刷新」(它会跳过 Host 端缓存)。 - **余额有两条取数路径,取到哪条取决于账户形态。** 登录了 DeepSeek 账号走平台接口(充值 / 赠送两个钱包分列,总额由插件相加);只有 API Key 就走 `GET /user/balance`(官方直接给出总额与两个分项)。两条都拿不到时显示 `--` 并说明原因,**绝不会把失败显示成 ¥0**。 - **余额徽标要求 Web 表面。** 它读的是 Host 半注册在 `webServer` 上的同源路由;纯终端 / ACP 环境里路由不存在,徽标也不会出现(Host 半用 `ctx.inject(['webServer'], …)` 注册,缺这个服务时插件照常加载,投影仍然工作)。 - **依赖 `conversation.session.header.utilities` 这个 slot**(由 `@deepseek-ai/dsh-client-ui-conversation` 声明)。纯终端 / ACP 等没有 Web 会话头的界面看不到徽标;Host 半的投影仍然照常工作,`tokenBilling` 键对其他消费者(例如自定义视图)也是可读的。 - **`--dump-config` 不是只读的**:它会重写 profile 里的 `cordis.yml`,在受限环境下需要该目录写权限。 - **样式对齐官方头部控件**:徽标按同 slot 官方按钮的规格写(28px 行高、`0.5px solid var(--dsw-alias-border-l4)` 发丝边框、`14px` 胶囊圆角、11px/400 字号、hover 用 `--dsw-alias-interactive-bg-hover` 铺底),规格抄自 `packages/client/ui-open-in-app/src/client/OpenInAppAction.module.css`。注意 `--dsw-alias-border-l4`、`--dsw-alias-interactive-bg-hover`、`--dsw-font-family` **不在**运行时 token 查询/覆盖列表里(那份列表只暴露 13 个 alias,边框类只有 `-l1`/`-l2`),但它们在上游主题表里真实存在、官方组件也在用,因此在页面里能正常解析;只是不能用 `theme.overrideTokens` 覆盖它们。
