M3 首个适配器(kilo)与 M4 三个产品(zcode/kimi-code/kimi-work)实施完成。
本机未安装的 M3 其余工具(cline/opencode/mimo/zoo/dsh/openclaw/hermes)
按用户指示另行基于文档或源码实施,真实验收后置。
元信息
| 项目 |
内容 |
| 日期 |
2026-09-25 |
| 执行环境 |
Windows 11 x64;rustc 1.98.0;Node v24.21.0 |
| 代码 revision |
未提交工作树(M6 之后 + 本次新增) |
| 设计依据 |
adapters.md 接入矩阵(A11/A12/A13/A21);architecture.md#database 来源 SQLite 读取规则;V07/V12/V17/V30 |
| 执行方式 |
四个适配器由三个并行子代理实现(测试样本由前次中断会话预提取),主会话集成(scanner 注册、clippy/fmt 清理、全量验证) |
命令与结果(主会话集成后)
| # |
命令(cwd) |
退出码 |
结果摘要 |
| 1 |
cargo test -p llm-usage-core(desktop/src-tauri) |
0 |
373 passed / 0 failed(M6 基线 285 + 净增 88) |
| 2 |
cargo clippy --workspace / cargo fmt --check |
0 |
干净(app crate 存量 main.rs 测试模块顺序警告为 M0 遗留) |
| 3 |
npm run verify(仓库根) |
0 |
49 个测试二进制全绿;lint 0;vite 构建不变 |
| 4 |
APPDATA=<临时> cargo run -p llm-usage-m0 -- --headless |
0 |
7 实例全部 succeeded,27,311 事件;再次扫描不重复入库(仅 zcode 活文件 +3) |
适配器核验结果(详见 real_verify 输出及测试数据期望文档)
Kilo Code CLI(M3,A11)
- 实读 schema:
~/.local/share/kilo/kilo.db(519MB 活库 + 30MB WAL,25 表);
usage 在 message.data.tokens(13,342/13,342 assistant 全带,五互斥口径);
session 行 tokens 列仅作会话对账(275/276 matched;列级语义随版本不稳定,
绝不映射为事件);session.cost 实为模型 JSON 不读;新 core 数据层
(session_message,0 行)仅存在不读。
- SQLite 来源读取实现:只读连接 + busy/锁/CANTOPEN 时 Online Backup 暂存副本
(2s/2GiB 上限,用后清理;真实库直读未触发暂存,busy 路径合成测试覆盖)。
- 已验证 7.4.8/7.4.9(测试样本);库内观测 7.3.42–7.7.12 未收录全部
latest_fallback 统计。
- 真实核对:255 会话 13,342 调用(primary 11,745 + sub_agent 1,597),
total 1,645,598,767 与独立 Python 求和逐字段一致;重复扫描不新增记录;对账 254/255
matched(1 mismatch 为源端快照未同步,诊断可见)。
ZCode(M4,A21)
- 双口径互斥不混算:AI SDK camelCase 五键为主(inputTokens 含缓存读)、
anthropic snake_case 对照(input_tokens 不含);两视图齐备时逐条校验
(in+cr+cw==inputTokens、out==outputTokens),矛盾记 dual_caliber_mismatch。
- 版本字段
request.headers["x-zcode-app-version"];已验证 3.14.3。
- db.sqlite 只读对账:活库 418/438 matched(在途/取消轮 mismatch 可见;
M0 静止样本 16/16)。
- 真实核对:3 文件 8 事件重复扫描不新增记录;
~/.zcode/v2 布局与 %APPDATA%/zcode
桌面存储未接入(待核验)。
Kimi Code(M4,A12)与 Kimi Work(M4,A13)
- 家族共享
adapters/kimi_wire.rs(metadata 探测/usage.record 提取/回声去重/
subagent 对账/epoch 毫秒校验),两产品独立目录与注册表(已核验协议 1.5 / 1.4)。
- 实读差异:Kimi Work 布局
conv-*|ctitle-*(daimon 宿主)、usage.record
无 agentId、model 裸 id;跨文件同毫秒 2 对(swarm 并行)⇒ 事件键含
session:agent 身份段(修复了首版会丢 2 事件的冲突)。
- 时间全部 epoch 毫秒(无秒样本,越界记诊断跳过,不做 ×1000 猜测)。
- 真实核对(与 jq 独立求和逐字段相等,重复扫描不新增记录):
- Kimi Code:13 文件 965 调用(primary 586+auxiliary 5+sub_agent 374),
total 116,428,813;10 文件对账 matched、2 文件 echo_subset
(打断步无回声,差异可见)、1 个 subagent.completed 快照再次核对相等。
- Kimi Work:69 文件 1,337 调用(833+8+496),total 125,225,933;
69/69 matched。
集成后全源汇总(headless 真实采集)
| Agent |
调用 |
total_tokens |
| kilo-code |
13,342 |
1,645,598,767 |
| oh-my-pi |
8,767 |
1,026,791,695 |
| codex |
2,597 |
299,747,341 |
| kimi-work |
1,337 |
125,225,933 |
| kimi-code |
965 |
116,428,813 |
| zcode |
266+3 活文件 |
100,651,285 |
| pi |
37 |
2,864,419 |
(claude/gemini/qwen 本机无数据,not_found/no_data 维持既有结论。)
未完成项
| 项 |
状态 |
后续 |
| kilo 新 core 数据层(session_message,当前 0 行) |
未接入 |
kilo 切换后核验专用实现 |
| zcode v2 布局、桌面 session 存储 |
未接入 |
待核验 |
| kimi usage.record 无稳定 ID ⇒ provider/逐次延迟不入账 |
如实标注 unavailable |
上游补充关联键后接入 |
| Kimi Work 缓存写>0、subagent.completed 真实样本 |
无本机样本 |
合成已覆盖路径;样本出现后补取 |
| Kimi Work 官方默认布局/env |
未见文档 |
安装位迁移需手工加根 |
| M3 其余工具(cline/opencode/mimo/zoo/dsh/openclaw/hermes) |
未实施 |
按用户指示基于文档或源码实施,真实验收后置 |
验证产物
- 适配器:
adapters/{kilo,zcode,kimi-code,kimi-work}/、adapters/kimi_wire.rs;
产品映射下沉:kilo/zcode common.rs、kimi_wire.rs(usage_map.rs 已清理)。
- 测试:
tests/{kilo,zcode,kimi_code,kimi_work}_{contract,gaps_synthetic,incremental_v12}.rs;
fixtures:tests/fixtures/{kilo,zcode,kimi-code,kimi-work}/(真实脱敏 + 合成,附 _expectations.md)。
- examples:
real_verify_{kilo,zcode,kimi_code,kimi_work}.rs;
提取工具 build/desktop-usage-validation/tools/extract-kimi.mjs(gitignored)。
- 应用注册:
src/scanner.rs(10 适配器)。