dsh-vorssaint: Write DeepSeek Harness usage and API value to Vorssaint

前言

DSH(DeepSeek Harness)把每一次模型响应的 token 数记录在自己的会话日志里。这些日志是压缩过的、会轮转的,而且按 DSH 的口径只报 token,不报价格。如果你已经在用 Vorssaint 这类工具按天看预算,直接读 DSH 日志会有两个问题:文件格式不对,今天的用量也可能缺失。

dsh-vorssaint 解决的就是这个缺口。它是 RGarrido03 维护的 DSH 插件,监听 DSH 的事件流,把每次响应的用量翻译成 Vorssaint 的 DSH reader 能 tail 的 JSONL,落到 ~/.vorssaint/agents/dsh/。下面介绍它的工作方式、安装和配置。

这是个什么插件

一句话:把 DSH 的用量、模型、项目和实时运行情况,转成 Vorssaint 的 feed 文件。

Vorssaint 已经在读 Claude、Codex、OpenCode 和 GitHub Copilot 的本地会话日志。DSH 的日志是压缩加轮转的,所以这个插件不试图让 Vorssaint 去解 DSH 日志,而是自己写一份独立的、小而稳定的 feed。插件一加载就开始上报;最近会话的用量会在首次运行时从 DSH 日志导入,所以装完当天的数不是空的。

来源:插件由 RGarrido03 维护,MIT 许可证,源码和发布页见文末链接。

核心功能

插件关心两组数字:token 消耗和 API 价值。

它能上报的内容,按 README 的「How it works」一节:

  1. 监听 DSH 的 session/event 事件流,每个产生 usage 的响应写成一行 usage:input、cache-write、cache-read、output、reasoning token 数,加上模型 id 和 provider 路由。模型有价格时再写 cost。
  2. turn 边界写成 turn 行,Vorssaint 把它显示成一次 live run。
  3. 一个会话一个文件,append-only 且串行化;writer 会跳过磁盘上已有的 sequence,所以重启和重读不会重复计数,Vorssaint 侧还会按 response id 再做一次 dedupe。
  4. 启动时先导入 DSH 日志里最近 backfillDays 天的用量,再写缓冲的实时事件。feed 比日志新的会话直接跳过,正常重启没有额外开销;fork 继承的前缀不会重复计费。

DSH 只报 token,网关报什么模型 id 都有可能,所以插件本身不带价格。想看到 API value 和每日预算,需要自己配价格表。

安装与启用

DSH 要求 0.2.2-rc.1 或更高的 0.2.x 版本,Vorssaint 需要带 DSH provider 的构建,Node.js 22.15 用于 backfill。

web profile 下安装:

dsh plugin --profile web add dsh-vorssaint

desktop profile 用 --profile desktop。如果 DSH 跑在本地 checkout 上、npm 包还没发布:

dsh plugin --profile web add link:$PWD

装完之后,如果 Plugin Manager 没有自动启用 bundle,要把 "dsh-vorssaint" 加进 ~/.dsh/profiles/<profile>/package.json 的 dsh.profile.bundles,然后重启 DSH。安装器会把新 bundle 标记为需要重启,因为运行中的宿主无法加载不在 live list 里的插件。

最后在 Vorssaint 的 Settings → AI 页面打开 DeepSeek Harness。功能装好后它和其他 agent 一样默认启用。

配置价格

把价格写进 ~/.dsh/profiles/<profile>/cordis.patch.yml,文件里已有的条目保留:

- id: vorssaint
  config:
    pricing:
      "deepseek/deepseek-v4.1-flash":
        input: 0.28
        output: 0.42
        cacheRead: 0.028
        cacheWrite: 0.28
      "*":
        input: 1
        output: 2

价格单位是每百万 token 的美元数,key 必须是 Vorssaint 会显示的那个精确模型 id(也就是 DSH 在 assistant/message 里报的 id)。* 是未列出 id 的兜底。cacheRead 和 cacheWrite 默认等于 input 价;reasoning token 已经算在 output 里,不会再计一次。

上面这组数字是格式示例,不是报价,请改成你 provider 价格页上的实际费率。没有价格也不阻碍上报——feed 里照常有 token、模型、项目和 runs,只是这些响应的 API value 和每日预算为空。

配置字段一览:

字段 默认值 说明
feedDir ~/.vorssaint/agents/dsh feed 写到哪里。Vorssaint 只读默认路径,改此处需要同时改应用侧。
pricing {} 按精确模型 id 的每百万 token 美元价,* 为兜底。
backfill true 启动时导入近期 DSH 日志里的用量。
backfillDays 30 导入多少天,0 表示不扫描。
sessionsDir $DSH_HOME/sessions,否则 ~/.dsh/sessions backfill 用的 DSH 会话日志目录。

配置由 loader 校验,非法费率会被丢掉而不是猜一个值。feed 目录和文件按 0700/0600 创建。

隐私

只有 docs/FEED.md 里定义的字段会进入 feed:session id、工作目录、时间戳、turn 号、模型和 provider id、token 计数,以及可选的 cost。prompt 文本、工具参数、模型输出、文件内容和凭证都不会写进去。

写入是 fire-and-forget:磁盘写满或者权限弹窗被关掉,只记一次日志,不会阻塞 agent,也不会让 turn 失败。

适用场景与注意

适合已经在用 Vorssaint 做预算追踪、同时跑 DSH 的开发者。你不需要在 DSH 里改任何行为,插件被动订阅事件流,对 agent 本身的运行没有侵入。

需要注意三点:

  1. 插件运行在当前 DSH 进程的权限下,装之前应当检查源码和许可证(MIT)再确认信任。
  2. 没有 model 响应的 turn(比如第一步之前就被取消)不会写 usage 行,看到没数据先确认 ~/.vorssaint/agents/dsh 目录在 DSH 跑完一个 turn 之后是否存在。
  3. Vorssaint 里没有 DeepSeek Harness 入口,是 Vorssaint 构建不带 DSH provider 的问题,需要升级 Vorssaint,而不是插件侧能解决。

排查命令:

dsh --profile web --dump-config | grep vorssaint

能输出 vorssaint 那一行说明插件已加载;否则按上文启用 bundle 并重启。

小结

这个插件的价值在于把 DSH 的用量口径和 Vorssaint 的读取方式对齐,中间不夹带你要改的东西。装上之后它自己开始上报,配置好价格表,token 数就能换算成你实际被计费的美元值,喂给每日预算。

目录页:https://www.skillhub.cn/plugins/RGarrido03/dsh-vorssaint
GitHub:https://github.com/RGarrido03/dsh-vorssaint

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

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

Xiaoye