@marsken/dsh-studio 0.1.10 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -53,7 +53,9 @@ STUDIO_TOKEN=$(sudo journalctl -u dsh-web -n 50 | grep -o 'token=[A-Za-z0-9_-]*'
53
53
  ```
54
54
 
55
55
  > `tools/deploy.mjs` 会打印 `active=` / `files=` / `state=`,`active` 不是 active 就以非零退出。
56
- > 它依赖 `ssh2`(devDependency,只给部署用,不进插件运行时);`tools/visual/smoke.mjs` 依赖 `puppeteer-core`(同样只在 devDependencies 里),浏览器用系统 Chrome,可用 `CHROME_PATH` 指定。
56
+ > 它依赖 `ssh2`(devDependency,只给部署用,不进插件运行时);`tools/mock-gitlab.mjs` 是本地 GitLab 打桩(三个接口,3 文件 / 3 提交),配合 `tools/verify-gitlab-facts.mjs` 可以在没有真实令牌时把「MR 事实 → 与自报值对账」整条链跑通:`node tools/mock-gitlab.mjs` + `STUDIO_BASE=<host> node tools/verify-gitlab-facts.mjs`。
57
+
58
+ `tools/visual/smoke.mjs` 依赖 `puppeteer-core`(同样只在 devDependencies 里),浏览器用系统 Chrome,可用 `CHROME_PATH` 指定。
57
59
 
58
60
  > 目标机上那个老的 `deploy-all.sh` 只作兜底(它拷 `/tmp/` 下的两个文件和 `src/`)。日常用 `tools/deploy.mjs`,别再手工 scp 拼路径。改了 `package.json`(包头、`engines`、`dsh.*`、`files`)、`cordis.patch.yml`、`locale/*.json` 时必须单独上传到插件目录(`~/dsh-studio/` 或 profile 的 `node_modules` 下)再重启,否则改了个寂寞。改动前先 `cp package.json /tmp/package.json.bak` 留退路。
59
61
  >
package/README.md CHANGED
@@ -410,6 +410,16 @@ sudo systemctl restart dsh-web
410
410
  - `GET /costs`(工具 `studio_costs`)返回总次数、已结束次数、平均耗时,以及按专家 / 按模型 / 按提示词版本 / 按天的次数分布。
411
411
  - 边界:宿主没有把 token 用量回传给插件,所以这里统计的是**次数与时长**,不是钱;要算钱得等宿主暴露用量。
412
412
 
413
+ ### 成本口径(接真实用量之前先定死,免得以后对不上账)
414
+
415
+ 1. **只统计本平台的会话**:`studio-<taskId>-<expertId>`。你自己在 DSH 里开的会话不算,哪怕用的是同一个模型。
416
+ 2. **订阅套餐通道不计钱,只计 token**:模型 id 以 `-coding` / `-token-plan` 结尾的走订阅额度,成本记 0,token 照记——否则会把"包月"算成"每次都在烧钱"。
417
+ 3. **按 turn 记,不按会话记**:一次派单可能追加多轮,钱是按 turn 出的。
418
+ 4. **三级汇总**:卡(taskId)→ 专家(expertId)→ 项目(project);卡的成本是它所有 turn 之和,专家的是他所有卡之和,项目的是它所有卡之和。
419
+ 5. **缓存命中要分开记**:命中 cache 的输入 token 单价通常低一个量级,混在一起算会高估。拿不到就标"未知",不要按 0 算。
420
+ 6. **价目表跟着日期走**:模型调价后,历史记录按当时单价算,不重算——所以每条记录要存 `{ at, model, inputTokens, outputTokens, cacheHitTokens, unitPrice }`。
421
+ 7. **拿不到用量就不写 0**:`cost: null` 表示未知,页面显示"未接入/未知",不能让报表看起来"很便宜"。
422
+
413
423
  ## 负载与燃尽(里程碑视图的轻量版)
414
424
 
415
425
  - `GET /workload`(工具 `studio_workload`):每位专家 `running / open / done7d / overdue`,外加 `busy` 汇总——谁被压住了、谁闲着,一眼能看出来。