Skip to content

Growth 基线混用两套刻度 #267

Description

@ranxianglei

问题 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:面板文案/口径误导(小)

  1. :11580 "never shrinks; includes compressed originals" —— 实测 T2 后该值从 55.5k 缩到 48.4k(provider input 真降了 8k),"never shrinks" 不成立。本意应是"比 sent 口径降得少"。
  2. 分母不一致:面板所有百分比用 modelContextLimit=262,144(满窗口),实际请求上限是 245,760(output-headroom 后)。Sent 17k (6% of limit) 的真实占用是 17k/245.8k≈7%;48k 的真实负载是 19.7% 而非 18.6%。建议注明两口径
    或统一分母。
  3. 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。

三个子问题:

  1. findExtensionDir() 从 import.meta.url 向上定位,自更只更新当前进程加载的那份副本。global install 副本永远更新失败(无权限),老进程永远跑旧代码,且没有任何用户可见的提示(只写 acp.log)。
  2. 节流文件 ~/.pi/agent/.billion-context-pi-update-check 是跨进程共享的:健康的 0.1.55 进程每 3 分钟刷新它,失败的 0.1.51 进程读到"刚查过"就静默跳过——失败连日志都不留,彻底不可见。
  3. 自更默认 autoUpdate: true(ACP_AUTO_UPDATE 可关,建议文档明示):扩展静默自更 + pi core TUI 横幅提醒是两套并行机制,行为出乎用户预期(本事件的"它自己更新了")。

建议:EACCES 时记一条 notify(或 TUI 横幅);节流文件按扩展目录/进程区分;global 只读位置检测到失败后停止重试并提示 npm i -g 或卸载。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions