Skip to content

Latest commit

 

History

History
128 lines (94 loc) · 6.54 KB

ROADMAP.md

File metadata and controls

128 lines (94 loc) · 6.54 KB

opencode-token-usage 路线图

为 OpenCode 2 提供轻量级、实时的 token 用量监视器。勾选项表示已实现且通过相应验证;未来版本的示例仅用于说明设计。

v0.1.0 — 核心用量与基础侧边栏

目标:提供可本地安装的完整会话树用量面板,不包含 npm 发布。

  • OpenCode 2.0.9 主插件与 ./tui 入口集成
  • 向原生 sidebar.content 追加基础面板,保留宿主内容
  • 子代理视图通过 session.composer.top 提供使用量入口,适配宿主隐藏侧边栏的行为(初版显示完整面板,后改为按需弹窗)
  • 检测当前会话,沿 parentID 汇总根会话及所有后代
  • 分页读取完整消息,包括压缩前历史和未打开的子代理
  • 快照替换与继承历史去重,防止重复累计
  • 显示 Input、Output、Reasoning、Cache Read、Cache Write
  • 显示缓存命中率 Cache Rate
  • 显示五类 token 的总量 Total
  • 按当前查看会话的活动模型估算 Est. Cost,支持模型切换
  • 未选模型时使用所在位置的默认模型;缺失适用价格按 0 并标注
  • 按每条消息的传入 token 数选择价格阶梯
  • 数字使用千位逗号分组:1200 → 1,200、125000 → 125,000、1500000 → 1,500,000
  • 空会话保留基础统计行并显示零;零值 Cache Write 与 Est. Cost 隐藏
  • 消息用量上报后合并刷新,切换会话时隔离旧请求
  • 加载、不可用、未更新与失败恢复状态
  • 实际打包产物在 OpenCode 2.0.9 和 2.0.10 中验证加载、显示、刷新与子代理累计

预览及安装说明见 README.md,验证结果见 验证记录。

v0.2.0 — 上下文用量

目标:让上下文消耗情况清晰可见。

  • 读取活动模型的上下文窗口大小
  • 显示已用 / 最大上下文
  • 显示上下文用量百分比
  • 处理上下文限制未知的模型
  • 在模型切换后同步更新上下文指标
Context  72,400 / 128,000 (56.6%)

上下文行显示在面板第一行;百分比与用量同行,进度条留待后续版本。

v0.2.1 — TPS、TTFT的显示

目标:提供更直观的性能指标。

  • 显示实时 TPS(每秒 token 处理量)
  • 显示平均 TTFT(首 token 处理时间)
TPS  48.7 tok/s
TTFT  2.7s

v0.2.5 — Steps 计数

目标:让整棵树的模型调用次数可见。

  • 显示全树(含子代理)的 Steps 计数
  • 口径与 OpenCode 官方统计一致:每条 assistant 消息为一个 step,compaction 与用户消息不计
  • 分叉继承副本不重复计数
  • 行位置为 Context 之后、Input 之前;无 Context 时位于面板第一行
  • 实际打包产物在 OpenCode 2.0.11 中验证显示与刷新
Steps  1,234

v0.3.0 — 官方价格补全

目标:按每条消息实际使用的模型统计费用,并在 OpenCode 缺少价格时使用厂商官方价格补全。

  • 内置可追溯的厂商官方价格快照
  • 首版收录最近半年发布且具有明确标准 token 定价的模型
  • OpenCode 完整适用价格优先,缺失时整条消息回退到官方价格
  • 按 assistant 与 compaction 消息实际模型分别计算
  • 支持价格阶梯、缓存读写和 Reasoning 费用
  • 支持网关模型到厂商模型的精确 ID 与明确别名映射
  • 区分免费、部分可计算和价格不可用
  • 已收录模型永久保留,后续持续核验价格和来源
  • 通过单元测试与 OpenCode 2.0.11 打包集成验证

v0.3.2 — GPT-6 Sol / Luna 定价

  • 根据 OpenAI 官方 Standard 价格补全两款模型的短、长上下文费率
  • 将 OpenAI 长上下文切换边界校正为传入 token 超过 272,000
  • 通过类型检查、45 项自动化测试及构建

v0.4.0 — 用量命令

目标:按需提供比侧边栏更详细的 token 信息。以弹窗的形式显示。

  • 添加 /usage
  • 显示当前会话树的 token 信息
  • 显示 context 各项占比
  • 显示 token 明细与上下文用量
  • 显示各个模型费用
  • 拆分为 Context Window / Last Request / Context Breakdown / Session / By Model,口径互不混用
  • 紧凑数字(K/M)、来源条形图、Session 单行汇总、d 详细模式切换
  • 子代理视图保留 Context、Total、Cost、TPS 单行摘要,点击打开可关闭的原生居中统计弹窗

v0.4.3

  • 在 /usage 中显示模型的定价信息。

开发中 — 会话累计对话耗时(未发布)

  • 按 OpenCode 2.0.26 原生回答页脚口径累计当前查看会话的全部保留轮次,每轮只取最终已完成回答
  • 不计轮次之间的空闲,不额外叠加子代理耗时,未完成回答不写入原生累计值
  • 复用完整消息历史,重开会话和插件重启后恢复累计值,不依赖执行日志 API
  • 侧边栏 Run Time、子代理单行 Time、/usage 的 Run Time (this session) 三处显示
  • 移除各耗时入口的 Running... 文本及点号动画,保留 ~ 实时估算、未更新标记与零值隐藏
  • 运行中以 ~ 显示当前轮已耗时估算,首轮非零估算可见;共享 500ms 单调时钟,不定时读取 API,结束后校正为原生值
  • 时间缺失显示不可用,读取失败保留旧值并标注未更新;分叉副本不继承耗时,已提交回退随删除历史扣除
  • 移除动画后通过类型检查、205 项测试、构建及真实 OpenCode 2.0.26 完整打包集成复验
  • 首轮尚无 idle 消息时依据原生会话时间保持起点,synthetic/steer 不误重置;重连校时期间保留同一开放轮次的可信显示,247 项测试及真实 OpenCode 2.0.28 完整打包验证通过
  • macOS 物理多屏切换导致耗时倒退的实机复验(终端焦点事件、视图重建与模拟重连已覆盖,不代表已验证物理切屏、App Nap 或睡眠/唤醒)

后续评估

  • 首次 npm 发布:@chenlongapps/opencode-token-usage@0.2.1

待解决问题

  • TPS 显示机制修改:100ms 突发合并、首批基线、500ms 最小跨度、时间加权平滑与静默过期;209 项测试及真实 OpenCode 2.0.26 本地 Responses SSE 打包集成验证通过
  • 异常流与 TTFT 回收:离屏会话的共享活动检查、重连对账、丢失结束事件回收及异步竞态保护;长工具/重试等待不按静默时长误清理,234 项测试及真实 OpenCode 2.0.26 打包集成验证通过(长等待采用加速时钟)