问题 1:Growth 基线混用两套刻度(主问题)
现象(2026-09-01 实测,会话 01a05728):
- 04:09:43Z 做 T2 压缩,provider input 从 55,490 降到 47,420(−8,070)
- 04:19:41Z 面板显示 Growth: +35k since last nudge
还原:上次 nudge(04:09:43,T2 READY)时 anchor 刚被压缩弄 stale,anchorStale=true → 基线取 sentTokens=12.5k(chars/4 估算刻度);恢复后 displayTotal=48k(provider 实测刻度)。48k − 12.5k ≈ 35k——所谓 "+35k 增长" 实
际是刻度切换的假象(同一内容两把尺子相减)。
位置(0.1.55 dist/index.js):
- :11958 sessionTokens = !anchorStale && realUsage?.tokens ? realUsage.tokens : defaultCountTokens(coreMessages)
- :11961 tokenCount: anchorStale ? sentTokens : Math.max(sentTokens, realUsage?.tokens)
- growth 在 processTurn 里以该 tokenCount 为当前值、与上次 nudge 记录值相减
影响:cadence 的 growthFloor(22,500)判断被污染——压缩后第一次 nudge 几乎必然"虚增长"解锁(本例 35k > 22.5k floor),而真正的静默增长反而可能因基线虚高被锁死。
建议:基线与当前值统一用同一刻度(都取 Math.max(sent, providerReal),anchorStale 时用 providerReal 的锚点值而非估算);或 growth 只累计同源差值。
问题 2:面板文案/口径误导(小)
- :11580 "never shrinks; includes compressed originals" —— 实测 T2 后该值从 55.5k 缩到 48.4k(provider input 真降了 8k),"never shrinks" 不成立。本意应是"比 sent 口径降得少"。
- 分母不一致:面板所有百分比用 modelContextLimit=262,144(满窗口),实际请求上限是 245,760(output-headroom 后)。Sent 17k (6% of limit) 的真实占用是 17k/245.8k≈7%;48k 的真实负载是 19.7% 而非 18.6%。建议注明两口径
或统一分母。
- Blocks: 4 active / 12 total (195k tokens compressed) 的 195k 是历史累计原文量,与上一行 Session-only 71k(当前持有)口径不同,紧挨着放容易被读成矛盾。建议标注 cumulative。
问题 3:自更新器在 global install 下死循环 + 失败不可见(设计/健壮性)
现象:机器上有两份包——/usr/lib/node_modules(0.1.51,npm -g 装)和 ~/.pi/agent/npm(pi 包位置,0.1.52)。[update] 日志 08-31 19:04 → 09-01 11:49 13 次 auto-install-failed npmDir=/usr/lib(/usr/lib root 所有,npm
install EACCES),之后由加载可写副本的进程才装上 0.1.55。
三个子问题:
- findExtensionDir() 从 import.meta.url 向上定位,自更只更新当前进程加载的那份副本。global install 副本永远更新失败(无权限),老进程永远跑旧代码,且没有任何用户可见的提示(只写 acp.log)。
- 节流文件 ~/.pi/agent/.billion-context-pi-update-check 是跨进程共享的:健康的 0.1.55 进程每 3 分钟刷新它,失败的 0.1.51 进程读到"刚查过"就静默跳过——失败连日志都不留,彻底不可见。
- 自更默认 autoUpdate: true(ACP_AUTO_UPDATE 可关,建议文档明示):扩展静默自更 + pi core TUI 横幅提醒是两套并行机制,行为出乎用户预期(本事件的"它自己更新了")。
建议:EACCES 时记一条 notify(或 TUI 横幅);节流文件按扩展目录/进程区分;global 只读位置检测到失败后停止重试并提示 npm i -g 或卸载。
问题 1:Growth 基线混用两套刻度(主问题)
现象(2026-09-01 实测,会话 01a05728):
还原:上次 nudge(04:09:43,T2 READY)时 anchor 刚被压缩弄 stale,anchorStale=true → 基线取 sentTokens=12.5k(chars/4 估算刻度);恢复后 displayTotal=48k(provider 实测刻度)。48k − 12.5k ≈ 35k——所谓 "+35k 增长" 实
际是刻度切换的假象(同一内容两把尺子相减)。
位置(0.1.55 dist/index.js):
影响:cadence 的 growthFloor(22,500)判断被污染——压缩后第一次 nudge 几乎必然"虚增长"解锁(本例 35k > 22.5k floor),而真正的静默增长反而可能因基线虚高被锁死。
建议:基线与当前值统一用同一刻度(都取 Math.max(sent, providerReal),anchorStale 时用 providerReal 的锚点值而非估算);或 growth 只累计同源差值。
问题 2:面板文案/口径误导(小)
或统一分母。
问题 3:自更新器在 global install 下死循环 + 失败不可见(设计/健壮性)
现象:机器上有两份包——/usr/lib/node_modules(0.1.51,npm -g 装)和 ~/.pi/agent/npm(pi 包位置,0.1.52)。[update] 日志 08-31 19:04 → 09-01 11:49 13 次 auto-install-failed npmDir=/usr/lib(/usr/lib root 所有,npm
install EACCES),之后由加载可写副本的进程才装上 0.1.55。
三个子问题:
建议:EACCES 时记一条 notify(或 TUI 横幅);节流文件按扩展目录/进程区分;global 只读位置检测到失败后停止重试并提示 npm i -g 或卸载。