@marsken/dsh-studio 0.1.14 → 0.1.15

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/README.md CHANGED
@@ -611,16 +611,16 @@ DSH 的 web 只有一张登录 cookie,所有人共用;所以平台自己记
611
611
  | 一次通过率 | 已完成的卡里,history 从没往回退过的比例 | 与页首「一次通过率」KPI **同一条定义**(`index.js` 的 `taskTimeline.backward`) |
612
612
  | 返工率 | 往回退过的卡 ÷ 名下卡数 | 同上 |
613
613
  | AI 失败 / 缺陷重开 | `agentFailures` / `reopenCount` 求和 | 单独列,**不进**返工率 |
614
- | 成本 | 未接入 | 平台还没有按卡/按项目的 token 记账,接上 usage 才会有数字 |
614
+ | 成本 | token 按会话日志逐次累加,钱 = token × 价目表 | `~/.dsh/sessions/*/studio-*/session.v4.jsonl.zstd` 的 `usage`;价目表在设置 → 成本与预算 |
615
615
 
616
616
  已知偏差:`task.expert` 会在换列时被列负责人覆盖,所以「卡数」看的是**当前负责**的卡,不是历史上派给过它的所有卡。
617
617
 
618
- 成本为什么还是「未接入」:宿主没有把 token usage 暴露给插件;会话目录里的 `session.v4.jsonl.zstd` 解出来是整份 JSON 快照,没有稳定可依赖的 usage 字段(`dsh-ui-usage-billing` 那类插件是自带解析器 + 价目表的)。要真算钱得先解决这两件事,已单开一张卡跟踪。
618
+ 成本怎么来的(0.1.12 起):宿主仍然没有把 usage 暴露给插件,所以改成自己读会话日志——`assistant/message` 上带 `usage`(入/出/缓存读/缓存写),模型名在请求上下文里继承。同一条消息里 usage 会出现两次(消息体 + 流式 chunk),只认消息上的那份。价目表要自己配,没配的模型花费记「未知」而不是 0。(`dsh-ui-usage-billing` 那类插件是自带解析器 + 价目表的)。要真算钱得先解决这两件事,已单开一张卡跟踪。
619
619
  ## 已知限制
620
620
 
621
621
  - 多维表格镜像(`baseToken` / `tableId`)只存配置,尚未实现写入。
622
- - GitLab 同步 Issue 与**关联 MR**(`/issues/:iid/related_merge_requests`),但不同步 MR 的评论与流水线状态;MR 的合并/关闭状态要等下一次同步才会反映到卡上。
623
- - 用例记录存在卡上(`task.cases`):2026-11-13 起有跨卡的**用例总览**页签,并支持**勾选一批接口用例批量跑**(结果回写到各自的卡、失败照旧开缺陷)。但还没有「回归套件」这个对象——固定的用例集合、一键重跑、历次通过率趋势都还没有,批量跑是临时勾选、跑完即散。
622
+ - GitLab 同步 Issue 与**关联 MR**(`/issues/:iid/related_merge_requests`);卡上挂 MR 后「从 GitLab 核对」会拉 MR 详情、`/changes` 与 `/pipelines`(流水线状态进 `coding.gitlab`)。**不同步 MR 的评论**;MR 的合并/关闭状态要等下一次同步才反映到卡上。
623
+ - 用例记录存在卡上(`task.cases`):跨卡的**用例总览**页签可以勾选批量跑(结果回写各自卡、失败照旧开缺陷),也支持**回归套件**(`/suite/*`:按规则或手选固定一批,一键重跑,`by` 记「套件:名字」)。但还没有「回归套件」这个对象——固定的用例集合、一键重跑、历次通过率趋势都还没有,批量跑是临时勾选、跑完即散。
624
624
  - 缺陷卡的严重级别默认 `P2`、优先级 `normal`:自动建卡不猜严重程度,由人或在评论里改。
625
625
  - 派单失败会记在 `/studio-api/integrations` 与卡片抽屉里,不会自动重试。
626
626
  - 集成健康现在会**落盘保留最近一次结果**(SQLite 的 `meta:side:integration-health`,不进 state、不涨 revision、不占快照):重启 dsh-web 后四条通道不再回到「还没用过」。仍然只是「最近一次」,没有按小时/按天的长期趋势(要趋势还得上采集)。
@@ -6,7 +6,7 @@
6
6
 
7
7
  | 项 | 值 |
8
8
  | --- | --- |
9
- | dsh-studio | `package.json` `version: 0.1.14` |
9
+ | dsh-studio | `package.json` `version: 0.1.15` |
10
10
  | DeepSeek Harness | `0.2.2-rc.1`(`dsh --version`) |
11
11
  | Node | `v24.22.2`(Linux 目标机);本机 Windows `v24.19.0` |
12
12
  | 目标系统 | Ubuntu 24.04,`dsh web` 监听 `18080`,nginx `:80` 反代并注入 `dsh-auth-*` cookie |
package/docs/publish.md CHANGED
@@ -127,6 +127,7 @@ token 只写进临时 npmrc(放在仓库外或 `tmp/` 且不提交),发完
127
127
  | --- | --- | --- |
128
128
  | `0.1.0` | 2026-11-13 | 首个公开版:看板 / 需求 / 用例回归 / 效能 / 设计评审四期 |
129
129
  | `0.1.1` | 2026-11-13 | 补三张 README 截图(npm 页可看图);默认值与文档去掉公司内网信息 |
130
+ | `0.1.15` | 2026-11-15 | 清掉三处过期的「已知限制」 |
130
131
  | `0.1.14` | 2026-11-15 | 修正成本口径的过期文案 |
131
132
  | `0.1.13` | 2026-11-15 | 价目表编辑器 + 未配价目模型清单 |
132
133
  | `0.1.12` | 2026-11-15 | 真实 token 成本(读会话日志 + 价目表计价) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marsken/dsh-studio",
3
- "version": "0.1.14",
3
+ "version": "0.1.15",
4
4
  "type": "module",
5
5
  "description": "DSH Studio: role-based multi-agent workspace (product / architect / developer / QA) with a live work board, GitLab + Feishu connection settings, all configurable from the web GUI.",
6
6
  "main": "index.js",
@@ -46,7 +46,7 @@ export async function handleInsightsRoute({ method, route, req, res, store, url
46
46
  return true
47
47
  }
48
48
  if (method === 'GET' && route === '/quality') {
49
- // AI 质量:派单量 / 一次通过率 / 返工率 / 平均耗时。成本未接入(见 README 口径)。
49
+ // AI 质量:派单量 / 一次通过率 / 返工率 / 平均耗时;成本见 /costs 的 usage(读会话日志 + 价目表)。
50
50
  host.sendJson(res, 200, { ok: true, quality: buildQuality(store.snapshot(), runSummary()) })
51
51
  return true
52
52
  }