dsh-survival-cost
生存模式 · Token 花费统计 —— 为 DeepSeek Harness 打造。
一个「省 token + 花销透明」的插件:侧边栏底部实时显示本会话的 Token 用量与费用(缓存命中 / 未命中输入 / 输出 分别计价),每条助手消息下方附加该段对话的 Token 与花费小字,并在每一轮 AI 回复完成后让 dsh-pet 桌宠旁弹气泡告诉你这轮花了多少。配套的「生存模式」Agent 预设(~/.dsh/.agent-presets/survival/)通过精简提示、更早压缩上下文来降低每次请求的 token 消耗,同时保留 Shell、文件、检索、Skills、计划等核心编码能力。
✨ 功能
| 功能 |
位置 |
说明 |
| 侧边栏花费 |
sidebar.footer.action |
本会话累计:缓存命中 / 未命中输入 / 输出 Token 数 + 各自花费 + 总花费(金额右对齐);随当前会话切换自动刷新;折叠侧边栏时仅显示总花费 |
| 余额进度条 |
sidebar.footer.action |
在设置里输入 API 平台当前剩余余额后,侧边栏显示剩余金额与进度条;进度条从满格开始、只随后续新增消耗递减(<20% 变红),缩放/切换会话都不会跳动 |
| 每段对话小字 |
conversation.chat.assistant-actions |
每条已完成的助手消息下方:入 230.3k · 出 629 · 花费 ¥0.0059 |
| 桌宠 token 气泡 |
shell.overlay |
每轮回复完成后在 dsh-pet 鲸鱼娘旁弹同款气泡:「这轮我吃了 X tokens · 花了 Y 元~」;跟随鲸鱼娘位置;仅鲸鱼娘可见时提示,关掉桌宠或隐藏则完全静默 |
| 设置页 |
设置 → 生存模式 |
切换计价方案、模型假设、填写自定义价格、设置 API 余额/预算 |
| 自动跟随模型 |
— |
按最近请求的模型(deepseek-v4-flash / deepseek-v4-pro)自动取对应价格表 |
💰 计价方案
价格单位为 元 / 每百万 tokens。内置三套方案(设置页可切换),以及完全自定义模式:
| 方案 |
flash 命中 / 未命中 / 输出 |
pro 命中 / 未命中 / 输出 |
| 涨价前(默认) |
0.02 / 1 / 2 |
0.025 / 3 / 6 |
| 涨价后 · 高峰 |
0.09 / 4.5 / 9 |
0.1125 / 13.5 / 27 |
| 涨价后 · 空闲 |
0.045 / 2.25 / 4.5 |
0.05625 / 6.75 / 13.5 |
| 自定义 |
用户填写 |
用户填写 |
「涨价前」为 DeepSeek 官方 2026-08-17 调价前的公开价格。「涨价后」按官方调价公告推算:高峰时段(北京时间 9:00–12:00、14:00–18:00)约为涨价前 4.5 倍(pro 输出最高 ¥27/百万),空闲时段为高峰的一半。公告细节有限,数字为推算值,请以官方价格页为准,或切换到「自定义价格」精确填写。
参考:DeepSeek API Pricing · 调价公告 · V4 Pro 价格报道
📦 安装
支持 Windows / macOS / Linux。需要先安装 git、node(≥18)与 pnpm。
# 1. 克隆并进入插件目录
git clone https://github.com/ZhaYi-Miao/dsh-survival-cost.git
cd dsh-survival-cost
# 2. 一键安装(安装到默认 web profile)
node scripts/install.js
# 或指定 profile
node scripts/install.js --profile web --force
安装器自动完成:
- 在
$DSH_HOME/profiles/<profile>/package.json 添加 dsh-survival-cost 的 link: 本地依赖;
- 运行
pnpm install 把包链接进 profile 的 node_modules(nodeLinker: hoisted);
- 向
$DSH_HOME/profiles/<profile>/cordis.patch.yml 幂等写入组合行:
- insert:
- id: survival-cost
name: dsh-survival-cost
完成后 重启 dsh,刷新浏览器页面即可看到侧边栏与消息下方的统计;桌宠气泡需要已开启 dsh-pet 桌宠并保持可见。
⚠️ 不要手动把包装进 $DSH_HOME/profiles/node_modules/ —— 那是 dsh 自身的扁平依赖 fallback,dsh 每次启动都会重写它,写在里面的包会被覆盖丢失。
🗑️ 卸载
# 从 profile package.json 移除 link 依赖
node scripts/install.js --help # (本脚本无卸载命令)
手动步骤:
- 删除
$DSH_HOME/profiles/<profile>/node_modules/dsh-survival-cost;
- 从
$DSH_HOME/profiles/<profile>/cordis.patch.yml 移除 survival-cost 组合行;
- 从
$DSH_HOME/profiles/<profile>/package.json 移除 dsh-survival-cost 依赖;
- 重启 dsh。
(也可以保留组合行,在 Harness 设置的插件清单里禁用本插件。)
🧠 数据来源
- Host 半(
lib/index.js)监听 session/event,按回合(turn)累计 assistant/message 的用量,在 turn/end(completed)时结算写入,提供三个路由:
/survival-cost/session:该会话 tokenUsage 投影(由 host 的 @deepseek-ai/dsh-token-meter 提供,为 provider 上报的真实用量)+ 最近模型 → 驱动侧边栏;
/survival-cost/total:跨所有会话的账户累计 token 用量 → 驱动余额进度条;
/survival-cost/last-turn:最近一轮完成消息的 seq / usage / model → 驱动桌宠气泡。
- Client 半(
lib/client.js)从会话快照 ConversationSnapshot.nodes 按 messageId 取每条助手消息的 usage 与 provenance.model 逐条计价;桌宠气泡轮询 /survival-cost/last-turn 检测新回合,通过 getBoundingClientRect 锚定鲸鱼娘位置。
- 价格配置保存在浏览器
localStorage(键 dsh.survivalCost.v1)。
🧩 结构
survival/
├── lib/
│ ├── index.js # Host 半:会话 token 聚合 + 两个 HTTP 路由
│ └── client.js # Client 半:侧边栏、每段小字、桌宠气泡、设置页
├── scripts/
│ └── install.js # 一键安装器
├── package.json # dsh.client 声明 + pnpm 元数据
└── README.md
💻 开发
npm run check # 语法检查各 JS 文件
npm run install:local # 从本地目录安装(--force)
📄 许可
MIT