@marsken/dsh-studio 0.1.13 → 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 +5 -5
- package/docs/compatibility.md +1 -1
- package/docs/publish.md +2 -0
- package/package.json +1 -1
- package/src/host/dispatcher.js +1 -1
- package/src/host/quality.js +1 -1
- package/src/host/routes/insights.js +1 -1
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
|
-
| 成本 |
|
|
614
|
+
| 成本 | token 按会话日志逐次累加,钱 = token × 价目表 | `~/.dsh/sessions/*/studio-*/session.v4.jsonl.zstd` 的 `usage`;价目表在设置 → 成本与预算 |
|
|
615
615
|
|
|
616
616
|
已知偏差:`task.expert` 会在换列时被列负责人覆盖,所以「卡数」看的是**当前负责**的卡,不是历史上派给过它的所有卡。
|
|
617
617
|
|
|
618
|
-
|
|
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
|
|
623
|
-
- 用例记录存在卡上(`task.cases
|
|
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 后四条通道不再回到「还没用过」。仍然只是「最近一次」,没有按小时/按天的长期趋势(要趋势还得上采集)。
|
|
@@ -766,7 +766,7 @@ node /tmp/verify-dashboard.mjs # 工作台风险计数 / flaky 不开缺陷 /
|
|
|
766
766
|
|
|
767
767
|
- `config.costs = { budgetRuns, budgetHours, warnAt }`(默认 500 次 / 80 小时 / 80%)。
|
|
768
768
|
- `GET /costs` 返回 `budget: { runs, hours, runRate, hourRate, level, hint }`,`level` 为 `ok|warn|over`;效能页「AI 执行成本」下方是一条预算进度条,超 `warnAt` 变黄、超 100% 变红。
|
|
769
|
-
-
|
|
769
|
+
- 口径分两层:**次数 + 机上时长**(派单日志)与 **token + 花费**(会话日志 + 价目表),两者口径不同,别混着看。
|
|
770
770
|
|
|
771
771
|
### 集成失败升级
|
|
772
772
|
|
package/docs/compatibility.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
| 项 | 值 |
|
|
8
8
|
| --- | --- |
|
|
9
|
-
| dsh-studio | `package.json` `version: 0.1.
|
|
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,8 @@ 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 | 清掉三处过期的「已知限制」 |
|
|
131
|
+
| `0.1.14` | 2026-11-15 | 修正成本口径的过期文案 |
|
|
130
132
|
| `0.1.13` | 2026-11-15 | 价目表编辑器 + 未配价目模型清单 |
|
|
131
133
|
| `0.1.12` | 2026-11-15 | 真实 token 成本(读会话日志 + 价目表计价) |
|
|
132
134
|
| `0.1.11` | 2026-11-15 | 需求变更影响面(接口 + 面板)、可跑用例口径修正、成本口径文档 |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marsken/dsh-studio",
|
|
3
|
-
"version": "0.1.
|
|
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",
|
package/src/host/dispatcher.js
CHANGED
|
@@ -295,7 +295,7 @@ export function runSummary() {
|
|
|
295
295
|
byModel: sort(byModel),
|
|
296
296
|
byPromptVersion: sort(byPrompt),
|
|
297
297
|
days: [...byDay.values()].sort((a, b) => (a.day < b.day ? -1 : 1)).slice(-14),
|
|
298
|
-
note: '
|
|
298
|
+
note: 'token 用量读自 studio-* 会话日志(每次模型调用都记一次);钱要显示得先在「成本与预算」里配价目表,没配的模型会单独列出来。',
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
301
|
|
package/src/host/quality.js
CHANGED
|
@@ -118,7 +118,7 @@ export function buildQuality(state, runs) {
|
|
|
118
118
|
},
|
|
119
119
|
cost: {
|
|
120
120
|
wired: false,
|
|
121
|
-
note: '
|
|
121
|
+
note: '成本按真实 token 用量算:读 studio-* 会话日志,按卡 / 按专家汇总;价目表没配时只给 token,花费显示未知。',
|
|
122
122
|
},
|
|
123
123
|
}
|
|
124
124
|
}
|
|
@@ -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 质量:派单量 / 一次通过率 / 返工率 /
|
|
49
|
+
// AI 质量:派单量 / 一次通过率 / 返工率 / 平均耗时;成本见 /costs 的 usage(读会话日志 + 价目表)。
|
|
50
50
|
host.sendJson(res, 200, { ok: true, quality: buildQuality(store.snapshot(), runSummary()) })
|
|
51
51
|
return true
|
|
52
52
|
}
|