Hi! 刚提了 PR #71,是三个独立的 pi 相关修复,CI 全绿,每个 commit 单独可 revert:
https://github.com/vibe-cafe/vibe-usage/pull/71
pi 的 reasoning token 一直算成 0。pi 的 Usage 类型里这个字段叫 reasoning
(文档明确写是 output 的子集),但 pi-session-jsonl.js 读的是 reasoningTokens,
pi 从来不写这个名字。所以 reasoning 全被留在 outputTokens 里。总 token 不变,
只是归类。拿真实数据验过:reasoning 0 → 2716,output 704679 → 701963,
total 14250058 不变。老的 reasoningTokens 拼写保留兜底。
pi 自己的 session 目录配置没被认。pi 的优先级是--session-dir > PI_CODING_AGENT_SESSION_DIR > settings.json 的 sessionDir,
但发现逻辑只看 PI_CODING_AGENT_DIR。用后两种方式搬过 session 目录的人,
pi 用量直接是空的,而且没有任何报错(默认目录还在,能正常 parse)。
这个 PR 把它们一并扫上,参照 Codex parser 认 CODEX_HOME 的既有做法。
PRESERVED_SERVICE_ENV 里没有 pi 的变量,但 PI_CODING_AGENT_DIR 在这个 PR
之前就已经被发现逻辑认了。结果是:搬过目录的人 vibe-usage sync 结果正确,
而装了后台 service 之后 pi 数据是空的。属于既有的不一致。
另外有个第四种情况这个 PR 故意没动,想先问下你们的意见:
pi 还支持每次调用传 --session <path>,所以 harness 可以把会话文件放在任何
config 和环境变量都记录不到的目录里。Rollica/Multica 就是这么干的——它跑pi -p --mode json --session <file>,文件放在 ~/.multica/pi-sessions/,
并且用这个文件路径当跨轮 resume id。在我这台机器上,这是全部本机 pi token 的
99.1%(约 1.68 亿 token / 50 个会话)完全统计不到,而默认目录只有 150 万,
时间戳停在我上次手工跑 pi 那天。
唯一能覆盖这种情况的机制是「用户指定的额外扫描目录」,也就是 Codex 已经有的codexExtraHome 那个形状(VALID_CONFIG_KEYS + resolveCodexHomes 里追加 +
README 配置表)。一个 piExtraSessionDirs 大概 20 行就够。
我没有直接写,因为 AGENTS.md 的 Architecture Approval Gate 说往 config.json
加控制面需要先拿到 maintainer 批准,而且看到了 v0.10.15/16 那个 incident marker。
所以按 gate 要求的格式(current/proposed invariant、影响面、兼容性、迁移、回滚)
写在 PR 正文最后了。要我在这个 PR 里实现、拆独立 PR、还是开成 RFC issue,
你们说一声就行。