Skip to content

feat(chat): 运行卡片/思考步骤展示模型交互轮次与缓存命中量#115

Merged
huhamhire merged 2 commits into
devfrom
feat/cli-usage-cache-turns
Jun 23, 2026
Merged

feat(chat): 运行卡片/思考步骤展示模型交互轮次与缓存命中量#115
huhamhire merged 2 commits into
devfrom
feat/cli-usage-cache-turns

Conversation

@huhamhire

Copy link
Copy Markdown
Owner

背景

CLI(claude / codex)接管 LLM 时,运行卡片上的 token 用量是 agentic 多轮累加值,且每轮的 cache_read 反复计入,累计值远超模型单请求窗口(如 /ask ↑4.69M),容易被误读为「超出模型上限」或「计量实现有问题」。实际并非 bug——是多轮 + 缓存重复读的自然结果。本 PR 让 UI 把「实际与模型交互的规模」呈现清楚。

改动

采集层(嵌入式 pr-agent shim)

  • claude 解析顶层 num_turns、codex 按 turn.completed 计轮次,统一并入 usage 的 num_turns
  • cache_read 既计入 ↑输入总量、又单列上抛,供 UI 拆分展示
  • litellm / API 路径同步补 cache_read 采集(Anthropic cache_read_input_tokens / OpenAI prompt_tokens_details.cached_tokens),与 CLI 路径一致

契约 / 累加

  • TokenUsage 新增 cacheReadTokens / turns(可选,向后兼容历史 run)
  • 主进程哨兵累加器同步累计 cache_read 与 turns;turns 缺失回退为调用次数

展示(run 卡片 + 思考步骤)

  • 抽出共用 TokenStat 组件:↑输入 (⛁缓存命中) / ↓输出,run 卡片与思考步骤复用
  • 蓝色数据库柱体图标(DatabaseIcon)标缓存命中量——属输入的一部分,无命中则整段不显示
  • 循环箭头图标(RepeatIcon)标模型交互轮次——单轮不显示
  • 输入 / 输出各自独立 hover 提示;缓存命中悬浮另给「缓存 N」说明
  • 思考步骤(AgentStep)也随之显示缓存命中量

验证

nx typecheck desktopnx lint desktopnx typecheck shared 均通过;4 个 locale 校验为合法 JSON 且保持递归字典序;Python shim 字节编译 + 解析器功能自测通过。

注:shim 改动需 npm --prefix apps/desktop run prepare:pragent 同步进 vendor 后于 dev 生效(不在本 PR 改动内,vendor 为 gitignored)。

🤖 Generated with Claude Code

huhamhire and others added 2 commits June 23, 2026 16:32
CLI(agentic)模式下 token 数为多轮累加(且含每轮 cache_read 重复计入),
远超模型单请求窗口,易被误读为超限或计量出错。改为在采集层补充真实轮次与
cache_read,运行卡片以「↑总量 ⛁缓存命中 ↓输出 · N 轮」呈现实际与模型交互的规模:

- shim:claude 解析顶层 num_turns、codex 按 turn.completed 计轮次,cache_read
  单列上抛;litellm/API 路径同步补 cache_read 采集(Anthropic cache_read /
  OpenAI cached_tokens),两条路径一致
- TokenUsage 增 cacheReadTokens / turns;turns 缺失回退为 LLM 调用次数
- UI 单轮(≤1)或无缓存命中时自动隐藏对应信息
- 新增浅蓝数据库柱体图标 DatabaseIcon 表示缓存命中,与输入统计留间隔

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
在「展示模型交互轮次与缓存命中量」基础上打磨展示:
- 轮次「N 轮」文案改为循环箭头图标 + 次数(RepeatIcon),省空间、免复数 i18n
- 输入 / 输出拆为各自独立的 hover 提示(tokensInTitle / tokensOutTitle),
  取代原合并提示;缓存命中悬浮另给「缓存 N」说明
- 缓存图标数字与周边同色、柱体图标用浅蓝($color-token-cache);间距移到
  cache 前,无命中时不留多余间距
- 抽出共用 TokenStat 组件,run 卡片(RunMeta) 与思考步骤(AgentStep) 复用,
  思考步骤也随之显示缓存命中量
- 补 CHANGELOG 说明

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@huhamhire huhamhire added this to the 体验优化 milestone Jun 23, 2026
@huhamhire huhamhire added the enhancement New feature or request label Jun 23, 2026
@huhamhire huhamhire merged commit ab979e4 into dev Jun 23, 2026
1 check passed
@huhamhire huhamhire deleted the feat/cli-usage-cache-turns branch June 23, 2026 08:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant