跳转到内容

OpenCode usage rows never pruned:OpenCode

Quick fix

修复同步逻辑:即使存在未完成消息,也要推进 OpenCode 会话游标,避免历史记录在 prune 后被重新插入。

报错原文
usage_daily_rollups numbers for historical days are 12–16× inflated vs the actual opencode.db data (double-counting, growing on every startup).

当 OpenCode 会话缺少游标或游标过期,且扫描到没有 `time.completed` 的未完成消息时,`session_has_incomplete_usage` 路径会跳过游标更新。后续每次同步都会重新扫描整个历史会话。

`rollup_and_prune(30)` 删除超过保留期的 `proxy_request_logs` 后,重新扫描会把这些已删除记录再次插入,并再次参与聚合,因此历史 `usage_daily_rollups` 会持续重复累计。已有膨胀的汇总数据不会因游标修复自动恢复,需要重建 OpenCode 用量数据。

  1. 在 `src-tauri/src/services/session_usage_opencode.rs` 中调整 `session_has_incomplete_usage` 的处理:即使会话中存在未完成消息,也将游标推进到已完整处理部分的 watermark,避免重新扫描已处理历史。

  2. 另一种实现方式是将游标推进到 `session.time_updated`,并只在 `session.time_updated` 发生变化时重新扫描会话。

  3. 为已受影响的安装提供 OpenCode 用量重建路径:清除 `opencode_session` 明细及对应 rollup,再从 `opencode.db` 重新导入。

ToolOpenCode
Version未知
PlatformsLinux

(暂无 FAQ)

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。