来源: #351 #351 分析 thinking 单字符退化问题时发现
现象 / 代码路径
src/messages.ts 的 extractText()(:111-120)只收集 type === "text" 块;assistant 的 thinking 块在入站投影中完全不可见。因此 kernel 侧全部计量(sentTokens、view-recount #289、nudge/compress 带仲裁)都基于纯 text,历史 thinking 体积为零。
影响分层
建议方向(未定,需 owner 拍板)
- 入站投影把 thinking 长度并入 core message(带标记或独立字段),让 kernel 计量包含回传体积;或
- 估算层单独加一个 thinking 增量(不污染 kernel 语义)。
方案 1 更彻底但触及 kernel 接口;方案 2 改动小但两处口径可能漂移。先记录,待排期。
复现
任何使用 reasoning 模型 + 不回传 usage 的 relay 的长会话:对比 /acp 面板 tokens 与 provider 实际 prompt size,差值 ≈ 累计 thinking 体积。
来源: #351 #351 分析 thinking 单字符退化问题时发现
现象 / 代码路径
src/messages.ts的extractText()(:111-120)只收集type === "text"块;assistant 的 thinking 块在入站投影中完全不可见。因此 kernel 侧全部计量(sentTokens、view-recount #289、nudge/compress 带仲裁)都基于纯 text,历史 thinking 体积为零。影响分层
realUsagefloor(估算错误导致紧急压缩从不触发 #257/fix: run nudge/emergency decision on provider-reported prompt size (#257) #258,provider 报告的 prompt tokens 含全部 thinking)抬升 tokenCount,带仲裁基本准确 → 影响被掩盖。projectMessage丢弃(空文本 400 防护),kernel 对这类消息零感知——与上面的计量缺口同源。建议方向(未定,需 owner 拍板)
方案 1 更彻底但触及 kernel 接口;方案 2 改动小但两处口径可能漂移。先记录,待排期。
复现
任何使用 reasoning 模型 + 不回传 usage 的 relay 的长会话:对比
/acp面板 tokens 与 provider 实际 prompt size,差值 ≈ 累计 thinking 体积。