Skip to content

acp_status 会计缺陷:tool 结果全计为 text + 同一报告两套互斥的 tool 定义 + 双估计器混印不标尺 + pct 地板 #386

Description

@wosnxn123

症状(2026-08-31 实机取证,bili 0.1.66 / acp-kernel 0.0.47,HEAD 0.1.67 仍在)

acp_status 的 CONTEXT BREAKDOWN 在灌入 5×51,361 字符(≈52-65K token)的 bash 输出后,先后打印 0 tool (0%) | 56 text (100%)611 tool (1%)392 tool (7%)——tool 桶最多只统计到真实工具结果量的 0.6%。取证会话 01a056ed-30b4-74f3-b283-341a734c9abe(proxy :57645,时刻 16:28:52 / 16:34:53 / 16:38:03)。

根因(acp-kernel 侧,bili dist 对应行号并列)

  1. 字段选择错误:kernel src/report.ts:86(dist 46346)const tool = message.toolName ?? "text"。但 wire 转换器只在 tool-call 上设 toolName:src/wire/anthropic.ts:98-105tool_result 只 push role:"tool", contentType:"tool-result", toolCallId, text,无 toolName;openai.ts:141-145 同。→ 所有工具结果被记成 "text",tool 桶只含 tool-call 参数(字节级)。
  2. 同一份报告两套"tool"定义互斥:src/recommend.ts:42-44(dist 45161)isToolMessage = contentType==="tool-call"||"tool-result"(正确)用于 Compressible ranges 行的 tool N%|text N%;report.ts:86(错误)用于 CONTEXT BREAKDOWN。一次输出自相矛盾。
  3. 双估计器混印不标尺:CONTEXT BREAKDOWN 用 estimateTokensFast = ceil(chars/4)(kernel tokenize.ts:19-22,bili 在 dist 51221/50393/52904 显式传入);nudge 侧默认 CJK-aware 的 defaultCountTokens(tokenize.ts:5-13,注释明言 "chars/4 badly underestimates CJK")。panel.ts:49-61 有"三套刻度、绝不混算"的自家纪律,但 report 打印完全不标刻度,中文会话下报表系统性低估 ~4×。
  4. pct() 地板 1(dist 46300-46303 Math.max(1, ...)):三桶可印 1%+1%+1% 且总和 >100。
  5. 关联复发:plugin.ts:340-342unprunedTokens 用 CJK-aware 估计器,却减去 estimateTokensFast 算的 sent——panel.ts:73 注释声称两侧同为 chars/4,实际混算,即已修的 release v0.1.6 #18 同类缺陷在 panel 行复活。

建议修复

验收标准

  • 灌 ≥50K token tool_result 后,CONTEXT BREAKDOWN 的 tool 桶与真实量级偏差 ≤20%
  • 同一份 acp_status 内,两处 tool/text 百分比可互相印证
  • 中文会话回归:桶估计不再 4× 低估;release v0.1.6 #18 的 scale-mix 测试思路补一例 panel unpruned 行

查重注记:#119 正文出现过此行但修的是压缩重试循环;#18/#40 修看板 scale;本票的字段选择错误无人报过。

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