deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
English | 中文
DeepSeek Harness 的 LLM 成本统计插件:监听每次模型调用完成事件,按 provider 上报的 token 用量(输入 / 输出 / 缓存命中 / 缓存未命中)与价格表折算费用,持久化每次调用记录, 并在 dsh web 里提供三层 UI:
费用 ¥0.0042 · 会话 ¥0.1234,即本次调用费用;DeepSeek Harness
dsh-plugin生态的社区插件,不属于官方仓库。
使用统计页面(指标卡、双 Y 轴趋势图、请求日志表格、tooltip 交互等)的 UI 全面对齐 CC Switch(MIT 协议)的 Usage Statistics 页面 —— 布局、配色、图表样式与交互密度均以其为蓝本。向 CC Switch 原作者 farion1231 及项目致谢;本插件为独立实现(自绘 SVG 图表,未引入 recharts), 仅参考其视觉设计与交互模式。
DeepSeek 2026-08-17 起调整价格并引入峰谷定价(高峰 9:00-12:00、14:00-18:00 为高峰价,
其余半价)。Harness 本身没有任何货币计费能力(token-meter 的 "shadow price" 只是上下文
压力估算,不是钱),于是有了这个插件:用 provider 上报的缓存命中/未命中分开的 token 数
按价格表实时折算人民币费用,并给出与 DeepSeek 平台用量页可交叉核对的可视化界面。
npm i @visol-456/dsh-cost-tracker
在 cordis.yml 中挂载插件(裸机 node 部署):
- name: '@visol-456/dsh-cost-tracker'
config:
dataDir: /path/to/cost-records # 可选,默认 <DSH_HOME>/cost-tracker
挂载即开始记录,无需任何配置。默认价格表按官方定价(元 / 百万 tokens):
| 模型 | 缓存命中 | 未命中输入 | 输出 |
|---|---|---|---|
| deepseek-v4-flash | 0.02 | 1 | 2 |
| deepseek-v4-pro | 0.025 | 3 | 6 |
| 其他模型(default) | 0.02 | 1 | 2 |
8/17 峰谷定价后请到 会话页 → 使用统计 → 价格配置 修改(支持按模型填峰谷价与高峰时段),
或直接改 settings 文档 / cordis.yml 的 prices。错误的价格表会在加载时直接报错
(fail loud),绝不会静默错算。
dsh plugin add(推荐)本包声明了 dsh.bundle,安装后会作为 profile 层自动激活(随包 cordis.patch.yml
以默认价格挂载插件,价格在 UI 里编辑):
dsh plugin --profile web add @visol-456/dsh-cost-tracker
# cordis.yml(patch 列表)
- insert:
- id: cost-tracker
name: '@visol-456/dsh-cost-tracker'
dsh web --patch ./cordis.yml
id;新增条目必须放在顶层 - insert: 列表里。dsh web 启动不打印任何错误。node --import tsx/esm apps/cli/src/bin.ts web --dump-config --patch <file>
诊断组合配置树。$DSH_HOME/profiles/node_modules 是 launcher 维护的 bundle 回退目录,不参与
cordis.yml 条目的裸 import 解析。本地挂载未发布的 checkout,必须把 junction 建在
harness 根 node_modules:
mkdir -p <harness-root>/node_modules/@visol-456
ln -s ~/myshare/deepseek_harness/dsh-cost-tracker <harness-root>/node_modules/@visol-456/dsh-cost-tracker
<dataDir>/records.jsonl(默认 <DSH_HOME>/cost-tracker/,
$DSH_HOME 缺省为 ~/.dsh),每次调用一行 JSON。/cost-tracker/* 路由挂在共享 webServer 上,loopback + Origin 同源守卫
(--host 0.0.0.0 时 LAN 请求被 403 拒绝),与 dsh-llm-fallback 的配置桥同款信任模型。assistant/message 的 message.source),因此 fallback 切换后费用归属依然正确。npm install
npm run build # tsc 双 tsconfig + tsdown(node + client 双入口)
npm test # vitest:费用计算/价格校验/持久化/聚合/桥守卫/loader E2E
internal/dispatch(global)→ session/event;assistant/message 携带
provider 上报的 TokenUsage(harness 的 DeepSeek adapter 已把
prompt_cache_hit_tokens 映射为 cacheReadTokens 并从 inputTokens 中减掉,
见 packages/llm/llm-deepseek/src/translate.ts 的 mapUsage)。conversation.view(order 2)注册「使用统计」tab,与「对话」「轨迹」平级;
conversation.composer.dock(order 1,紧随官方 stats line)注册费用行与会话汇总卡片;
数据经 HTTP 桥获取,新消息/切会话自动刷新。MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。