Skip to content

feat(v1): prefer reported usage for nudge calculations - #15

Merged
ranxianglei merged 1 commit into
ranxianglei:masterfrom
5258MF:2026-08-13_v1-reported-usage
Aug 13, 2026
Merged

feat(v1): prefer reported usage for nudge calculations#15
ranxianglei merged 1 commit into
ranxianglei:masterfrom
5258MF:2026-08-13_v1-reported-usage

Conversation

@5258MF

@5258MF 5258MF commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

PR E:V1 优先使用 OpenCode provider usage

Summary

V1 在存在有效、最新且与当前 user model 匹配的 OpenCode provider usage 时,直接使用该快照驱动 kernel;否则继续使用现有文本估算:

tokenCount = validReportedUsage ?? estimatedTokens

这与 PI 的“真实值优先、估算兜底”原则一致,不取两者最大值。V2 没有经过验证的稳定 usage 接口,本 PR 保持估算路径不变。

What changed

  • 在 OpenCode V1 host adapter 中补充 assistant tokenssummaryerror、provider/model 字段类型和 usage 提取逻辑。
  • time.created 选择最新 assistant;相同时间按 id 选择,不依赖消息数组顺序。
  • 严格校验并求和 input + output + reasoning + cache.read + cache.write:每个分量必须是有限非负数,总和必须大于 0;缺失、负数、NaN、Infinity、全零均回退估算。
  • 最新 assistant 若为 summary、error 或无效 usage,不复用更早 assistant 的旧快照。
  • 当前 user model 可确定时,provider/model 不匹配的快照无效。
  • 若 compression state 中有 createdAt >= assistant.time.created 的 block,认为快照早于或伴随最近一次压缩并回退估算;压缩后出现更新的 provider assistant 后自动恢复 usage。
  • V1 始终计算 estimatedTokens,debug 日志记录 estimated、reported、最终 tokenCount、来源和回退原因。
  • 扩展现有 turn cache,原子保存 state、cores、resolved kernel config/model limit、最终 tokenCount 和 processTurn 结果。bili_status 仅在这些输入仍完全匹配时复用 transform 结果,否则回退当前文本估算。
  • V2 runPipelineV2 继续只使用 estimateTokens

Known limitations

  • OpenCode 当前可用的是最近一次 provider 请求的 usage 快照,不是下一次请求的精确上下文总量;快照之后新增的 user/tool 内容不会进入本轮 reported usage。这是 V1 当前明确接受的一轮时滞。
  • 因此本 PR 不宣称完全复制 PI 的“usage 快照 + 尾部消息估算”能力,也不新增 usage 持久化或独立 cache。
  • bili_status 的 nudge usage/growth 可以复用最近一次 V1 transform 的最终 tokenCount;CONTEXT BREAKDOWN 主体仍由 kernel 对可见文本估算,不能视为 provider Meter 的逐项拆分。
  • V2 usage 留待获得正式稳定接口或可靠运行时 fixture 后单独处理。

Tests

新增 usage extraction、模型匹配、时间/id 排序、无效最新快照、压缩新鲜度、reported 大于/小于估算、V1 压缩后恢复、turn cache/status 输入匹配、dropSession/LRU eviction 等测试。

本分支当前测试为 38/38;另已验证:

  • npm run typecheck
  • npm test
  • npm run build
  • bash scripts/ci/check-pr.sh 2026-08-13_v1-reported-usage upstream/master
  • git diff --check

Scope

  • V1 only;不依赖、不修改 PR A/B/C,也不修改 acp-kernel
  • Branch: 2026-08-13_v1-reported-usage
  • Suggested title: feat(v1): prefer reported usage for nudge calculations

@ranxianglei
ranxianglei merged commit e5f2965 into ranxianglei:master Aug 13, 2026
3 checks passed
@ranxianglei ranxianglei mentioned this pull request Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants