跳转到内容

M2-B/C 中断记录:pi/oh-my-pi/Claude/Gemini/Qwen 适配器(半成品保留,未验收)

已于 2026-09-25 恢复并完成验收,见 m2bc-resumed.md。 本文保留为中断经过与恢复简报的历史记录;下方「与 M2 完成条件的差距」 状态列已按恢复结果更新。

本文件不是通过记录。M2-B(pi + oh-my-pi)与 M2-C(Claude Code/Gemini CLI/Qwen Code) 两个并行实现任务由用户决定于 2026-09-24 中断,工作树半成品经核验编译与测试全绿后保留, 待用户恢复后继续。恢复前不得以「M2 适配器已完成」对外表述。

元信息

项目 内容
日期 2026-09-24
执行环境 Windows 11 x64;rustc 1.98.0;Node v24.21.0 / npm 12.0.2
代码 revision 未提交工作树:M2-A 已验收状态(另一会话已 git add)+ 本次中断留下的未跟踪/未暂存改动
设计要求 adapters.md 接入矩阵;validation.md V07/V12/V17

中断经过与恢复方式

任务 范围 运行时长 中断原因 恢复方式
M2-B(后台子代理 agent-16) pi + oh-my-pi 适配器 约 57 分钟 用户要求暂停并落地文档 本机:Agent(resume="agent-16", "继续");换机后失效,用下方恢复简报
M2-C(后台子代理 agent-17) Claude/Gemini/Qwen 适配器 约 57 分钟 同上 本机:Agent(resume="agent-17", "继续");换机后失效,用下方恢复简报

换机恢复方案(2026-09-24 增补)

换机后会失效的东西

  • 子代理会话:agent-16/17 的上下文只存在本机 ~/.kimi-code/sessions/,不随仓库转移。 换机后由「恢复简报」(本节末尾)替代,新机器上的 Agent 读简报恢复工作即可。
  • 未提交的工作树:M0 以来的全部成果(含本记录)目前只在本机工作树/暂存区, git log 最新仍是 9394264 P1。不转移则全部丢失。
  • build/desktop-usage-validation/:真实核对的原始产物被 gitignore,不随 git 转移; 其结论已记录在 m2a-codex.md / m0-agent-fixtures.md(会随 git 转移)。需要原始产物时手动复制该目录。
  • 本机真实数据探测结论:claude/gemini/qwen 本机 not_found、pi sessions 为空(no_data) 是这台机器的核验结果。新机器可能装有这些 Agent、存在真实数据——可以补充真实样本, 也意味着恢复后必须按新机器实际重新探测,不得沿用旧机结论。

第一步:保存并转移工作树(三选一)

方案 命令(旧机执行) 新机恢复 适用
A. 提交并推送(推荐) git add -A && git commit -m "M0-M2 阶段性成果与 M2-B/C 中断半成品" && git push origin main(LFS 对象随 push 自动上传) git clone [email protected]:owent/llm-usage.git && cd llm-usage && git lfs pull 有 GitHub 访问权;历史可追溯,便于保留恢复提交
B. git bundle 单文件 先按 A 提交,再 git bundle create llm-usage.bundle main git clone llm-usage.bundle 不想推送远端;注意 bundle 不含 LFS 对象,需另复制 .git/lfs/ 目录,否则 svg/ico 等是指针
C. 整目录文件同步 无(用网盘/U盘/rsync 复制整个 llm-usage/ 含 .git/,node_modules 与 target/ 可排除) 直接进目录工作 最省事,工作树与暂存区逐字节保留;但无提交历史增量,丢失恢复点

无论哪个方案,新机首次进入后重建依赖并验证基线:

Terminal window
npm ci # 根目录;desktop/ 依赖由根 scripts 级联(如缺则再 npm --prefix desktop ci)
npm run verify # 基线:core 143 + app 2 = 145 passed,lint/clippy/fmt/svelte-check 全绿

第二步:新机环境前提

依赖 要求 旧机实测
OS Windows 11 x64(首发验收平台);WSL2 可做 Linux 构建冒烟 Windows 11 x64
Node.js 22+(AGENTS.md 要求) v24.21.0 / npm 12.0.2
Rust stable(edition 2021,无 toolchain 文件锁定) 1.98.0
git-lfs 必需(.gitattributes 对 svg/png/ico 等启用 LFS) 已启用
WebView2 GUI 冒烟(npm run dev:desktop)需要 通过

第三步:恢复简报(换机后给新 Agent,替代 agent resume)

你在 llm-usage 仓库继续 M2-B/C。先读:Plan.md(状态表)、 docs/validation/desktop-usage/m2bc-suspended.md(本文件,含半成品清单与差距表)、 docs/validation/desktop-usage/m2a-codex.md(已验收的适配器长什么样,照此标准)、 docs/design/desktop-usage/adapters.md 与 data-contract.md(数据规则)。 工作树已有 pi/claude/gemini/qwen 四个适配器半成品与共享 usage_map(文件清单见上节), 编译测试全绿但只有内联单测。你的任务:①对照 codex 的 contract/gaps/incremental 测试组补齐四源集成测试(tests/common/mod.rs 辅助函数已预留,fixture 目录待建); ②确认 oh-my-pi 是否需要独立适配器文件;③按本机实际安装重新探测真实数据 (旧机 claude/gemini/qwen not_found、pi sessions 为空——那是旧机的核验结果,新机重查), 有真实样本则按 m0-agent-fixtures 脱敏流程提取核验,没有则记录 not_found/no_data; ④补 real_verify example 与验收记录。规则:测试不 mock、未知不补零、 未知版本 fail closed、不改 previous-draft/、未经授权不 commit/push。 完成后 npm run verify 必须全绿(基线 145 passed,只会增不会减)。

半成品清单(全部保留在工作树,未提交)

文件 状态 内容与核验范围
desktop/src-tauri/crates/core/src/adapters/pi.rs 未跟踪,985 行,3 单测 pi session JSONL v3;固定版本源码依据 pi-mono b4559750(联网只读核对);本机 pi 0.87.1 sessions 为空,真实核对状态 no_data
desktop/src-tauri/crates/core/src/adapters/claude.rs 未跟踪,680 行,3 单测 仅有文档依据(A01),文件头自标「待真实样本」;本机 not_found
desktop/src-tauri/crates/core/src/adapters/gemini.rs 未跟踪,658 行,2 单测 同上量级,未核实真实样本
desktop/src-tauri/crates/core/src/adapters/qwen.rs 未跟踪,705 行,2 单测 同上量级,未核实真实样本
desktop/src-tauri/crates/core/src/adapters/usage_map.rs 未暂存改动 +195 行 PiFamilyUsage/map_pi_family(pi-mono b4559750 与 oh-my-pi 62bc57b 固定源码规则)、ClaudeTranscriptUsage 等共享映射
desktop/src-tauri/crates/core/src/adapters/mod.rs 未暂存改动 +5 行 注册四个新模块
desktop/src-tauri/crates/core/tests/common/mod.rs 未暂存改动 +114 行 M2-C 测试辅助(claude/qwen/gemini 临时目录与 fixture 路径构造);对应 tests/fixtures/{claude,qwen,gemini}/ 目录与集成测试尚未创建,辅助函数当前无调用方

oh-my-pi 适配器未见独立文件(仅共享 map_pi_family 规则);M2-B 的 oh-my-pi 部分是否 完成取样未核实,恢复后先向 agent-16 确认。

命令与结果(中断后核验)

# 命令(cwd) 退出码 结果摘要
1 cargo test --locked -p llm-usage-core(desktop/src-tauri) 0 143 passed / 0 failed(含四个新适配器内联单测 10 个:pi 3、claude 3、gemini 2、qwen 2)
2 npm run verify(仓库根) 0 全部检查通过:lint:md 57 文件 0 问题(本次在 .markdownlint-cli2.jsonc 的 ignores 增补 .venv/**,该目录已被 .gitignore 忽略,为本地 Python 环境非项目文档)、assets:check、test:scripts、svelte-check、cargo fmt –check、clippy -D warnings、cargo test –locked(core 143 + app 2 = 145,对比 M2-A 记录 135)、vite build 518.01 kB / gzip 176.33 kB

与 M2 完成条件的差距(恢复后待办)

2026-09-25 恢复完成,各项状态如下;验收细节见 m2bc-resumed.md。

项 状态 原因 后续条件
符合设计要求的集成测试(对照 Codex 的 contract/gaps/incremental 测试组) 已完成(2026-09-25) 五源 15 个集成测试文件 103 用例全绿;oh-my-pi 定案为独立适配器 omp.rs —
合成/真实测试数据 已完成(2026-09-25) pi 真实 1 + 合成 7;omp 真实 3 + 合成 9;claude/gemini/qwen 合成各 8(本机无真实数据,no_data/not_found 核验结果在恢复记录) 三源真实样本待本机出现数据后按 m0 脱敏流程补取
本机真实只读核对(对照 real_verify_codex example) 已完成(2026-09-25) examples ×6 齐备;pi/omp 真实核对通过(重复读取不新增用量、不变量成立);claude/gemini/qwen 记录 no_data/not_found —
重复扫描不增量、主/辅助/子 Agent 覆盖可见(M2 完成条件) 已验收(2026-09-25) V12 增量套件五源全绿;omp 真实核对类别计数 primary/sub_agent 分列 —
Codex 旧版本 fail closed 逐版本 fixture 部分完成(2026-09-25,m2d) 0.153.0/0.154.0-alpha.6.1/6.2 已验证;0.139–0.151 实测无逐次记录,待专用实现核验 按 m2d 记录后续条件执行
适配器目录化迁移与未知版本兼容尝试(execution.md#m2-layout) 已完成(2026-09-25,m2d) 六源目录化 + 注册表分派 + 兼容标记持久化回归全绿 —

验证产物

  • 适配器内联依据:四个 adapters/*.rs 文件头注释(固定源码 commit 与文档出处逐条在列)。
  • 本记录命令输出以工作树复跑为准;无新增脱敏产物写入 build/desktop-usage-validation/。