Skip to content

fix(agent): 自动压缩死循环修复 — keepTail 预算化 + 摘要执行可靠性 - #23

Open
Rogers-F wants to merge 12 commits into
CometixSpace:mainfrom
Rogers-F:main
Open

fix(agent): 自动压缩死循环修复 — keepTail 预算化 + 摘要执行可靠性#23
Rogers-F wants to merge 12 commits into
CometixSpace:mainfrom
Rogers-F:main

Conversation

@Rogers-F

Copy link
Copy Markdown

问题

长会话(单指令 + 连续读大文件)中自动压缩死循环:258K 窗口压缩后仍剩 187K(80.8%),每 4-5 分钟重压一次,最小触发间隔仅 239 token。

根因

  1. 尾窗按条数保留(末 6 条)——巨物工具结果场景下压缩释放量趋近于零;
  2. 压缩后按 chars/4 重置计数(CJK 低估 4 倍),provider usage 回传即反弹;
  3. 执行层:摘要流无超时、锁争用误触熔断、心跳事件驱动(思考模型零事件期 SSE 静默 93s → 客户端弃 run → 摘要作废 + 重复压缩)。

修复

  • 尾窗预算化:目标地板 25%×窗口,o200k 实测计价;超线巨物换占位符(头尾预览 + 路径可重读,原文入 archive);最后一条 user 指令锚点保底;未消费工具结果豁免;
  • 摘要治理:源超预算走官方同款 max-min 水位分配;失败三级兜底;输出 hard-cap;Task 报告入口截断 + spill 落盘;
  • 执行可靠性:摘要流 idle 300s 超时(对齐 Codex);会话级压缩锁,争用不计熔断;心跳改定时驱动(思考期不断连)。

无协议变更、无新增配置、摘要 prompt 未动,请求保持 `{model, messages}` 极简形态。

验证

  • 修复前:232K → 187K(剩 80.8%);修复后实弹:106K → 27.4K(22.8%),距下次触发 74.6K token,205s 思考期摘要零断连;
  • 测试 43/43(预算切分/CJK/并发互斥/挂死网关/性能冒烟);全量仅 1 个与本 PR 无关的既有失败。

12 个提交按阶段递进,各步独立可回溯。

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant