DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

YanZephyr14 /

YanZephyr14/dsh-local-cost

Verified

DSH 自配价格的峰谷计费插件(dsh-go 原生):今日费用 + 费用构成 + 峰谷拆分

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@c11e09df

local-cost · 费用自配

自己的峰谷计价插件:输入框上方一行今日费用,点开看费用构成;价格和峰时段都由你自己填,不依赖 dsh-cost-meter。

安装

# 插件目录放到 dsh-go 的插件目录(引擎重置时保留),再装进手机本机引擎用的 web profile
cp -r local-cost "$DSH_HOME/dsh-go/plugins/local-cost"
dsh plugin --profile web add "$DSH_HOME/dsh-go/plugins/local-cost"

装完在 App 的「引擎」页重启一次引擎(宿主侧插件只在启动时加载)。装的是指向该目录的链接,所以目录不能删。

npm test        # 16 项单测
node "$DSH_HOME/skills/dsh-go-plugin/kit/bin/check.mjs" . --load   # 清单 / 视图 / 处理函数检查

目录

路径 作用
lib/index.js 接线:状态条、两个面板、三个动作
lib/config.js price.json 读取、清洗、原子写入
lib/usage.js 扫会话日志取 token(按 mtime 缓存、截断容错)
lib/pricing.js 峰谷判定、模型匹配、分项计价
lib/summary.js 今日 / 本会话 / 近 7 天聚合
lib/views.js 两个面板的 v2 视图
lib/editor.js 价格设置表单的数据与保存
lib/templates.js 时段模板与峰谷关系模板
price.example.json 配置示例;运行时用同目录下的 price.json(已 gitignore)

在哪看

  • 输入框上方状态条:今日 ¥0.28 · 峰时,点一下打开「费用」面板。
  • 对话详情页 → 插件 / 全部功能 → 费用:今日、本会话、近 7 天金额;费用构成环图(未命中缓存输入 / 缓存命中输入 / 输出 各占几成、各多少钱);峰时 vs 谷时;按模型(未定价的会标出来)。点任意模型行直接进入该模型的价格设置;未定价的会先按兜底价建好条目。
  • 价格设置:同一入口,或在费用面板点「价格设置」。

价格设置怎么用(三个页签)

页签 1 · 时段与模板

  • 全局峰时段(08:00-22:00 或多段、跨午夜)、周末三选一、节假日列表,点「保存时段」只写这一段。
  • 一键模板:百炼 8–22 峰 / 官方两段(9-12、14-18,周末谷价)/ 全天一个价。模板只改时段,不动任何价格数字。

页签 2 · 模型单价

  • 顶部总览表:所有模型当前的谷/峰六个价,一眼看清、互不混淆。
  • 下拉切换模型,一次只编辑一个;「保存单价」只写选中的那个模型,其他模型绝不改动。
  • 模型模板(作用于当前选中模型):峰=谷×2 / 谷=峰×0.5 / 峰谷同价 / 用全局时段(清掉该模型自己的峰时段)。
  • 每个模型还能填自己的峰时段(留空 = 用全局)——百炼和 DeepSeek 官方混用时各按各的。

页签 3 · 兜底与单位

  • default 兜底价(模型名匹配不上具体条目时用);新增模型;货币符号 / 每多少 token 计价 / 小数位;删除模型。

费用面板联动:按模型列表每行可点,直达该模型的单价页签;未定价的模型会先按兜底价建好条目再跳转。顶部也会列出今天未定价的模型,「并入未定价」一次加齐。

配置 price.json

文件在插件目录里:$DSH_HOME/dsh-go/plugins/local-cost/price.json,第一次运行自动生成。

{
  "v": 1,
  "currency": { "code": "CNY", "symbol": "¥", "perTokens": 1000000, "decimals": 3 },
  "peak": {
    "enabled": true,
    "tz": "Asia/Shanghai",
    "windows": [{ "start": "09:00", "end": "12:00" }, { "start": "14:00", "end": "18:00" }],
    "weekend": "offPeak",
    "holidays": []
  },
  "models": {
    "custom-dashscope-aliyuncs:deepseek-v4.1-flash-1017": {
      "offPeak": { "input": 1, "cacheRead": 0.1, "output": 4 },
      "peak": { "input": 2, "cacheRead": 0.2, "output": 8 }
    }
  }
}
  • currency.perTokens:价格对应多少个 token,默认 100 万,也就是常见的「¥/百万 token」。
  • peak.windows:任意多段,HH:MM,支持跨午夜(22:00-02:00)。面板里用 09:00-12:00,14:00-18:00 这种写法编辑。
  • peak.weekend:offPeak(周末全天谷价)/ peak(周末全天峰价)/ ignore(周末照样按窗口算)。
  • peak.holidays:YYYY-MM-DD 列表,这些日期全天按谷价。
  • peak.enabled: false:不分峰谷,全天用 offPeak 价。
  • models 的键可以写 provider:model、只写 model,或 default 兜底;匹配不区分大小写、空格、下划线与点。
  • 峰时没填的字段回落到谷时。
  • 单个模型可以有自己的峰谷规则:在该模型条目里加 schedule(windows / weekend / holidays / enabled 任选),没写的字段继承全局。阿里云百炼这种「8:00–22:00 为峰、不分周末节假日」就写:
"bailian:deepseek-v4.1": {
  "offPeak": { "input": 0.5, "cacheRead": 0.05, "output": 2 },
  "peak":    { "input": 1,   "cacheRead": 0.1,  "output": 4 },
  "schedule": { "windows": [{ "start": "08:00", "end": "22:00" }], "weekend": "ignore" }
}

只保留一条全局规则时,把 peak.weekend 设成 ignore、peak.holidays 留空即可。

口径

  • 数据来自会话日志($DSH_HOME/sessions/*/session-*/session.v*.jsonl.zstd)里 assistant/message 的 usage: input = 未命中缓存输入、cacheRead = 命中缓存输入、output = 输出,三者相加等于 totalTokens。
  • 会话标题生成、记忆压缩这类不写进 assistant/message 的辅助调用不计入,所以比按 llm/stream 记账的插件略少。
  • 子智能体是独立会话:计入今日/近 7 天,不计入「本会话」。
  • 日志正在写入时可能暂时读不到(面板会提示),下一次刷新自动恢复;不会碰坏任何会话文件。

卸载

dsh plugin --profile web remove local-cost
rm -rf "$DSH_HOME/dsh-go/plugins/local-cost"

改了 lib/ 里的代码需要在 App 的「引擎」页重启引擎;只改 price.json 保存后面板刷新即可。

首次装完后也必须重启一次引擎(插件是宿主侧条目,只在引擎启动时加载)。重启后输入框上方出现 今日 ¥x · 峰时。

—/ 5

No ratings yet

Verified DSH bundle

Commit c11e09dfc83b

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout