perf(context): Tier 1 迷你卡按实测收窄 —— 无来源只留工具名,URL 上限 3→1 - #33
Merged
Merged
Conversation
在 ApodexHarness 的 12 个真实长跑研究 trial(1337 条被压缩结果、约 13.5k 个 即将被丢弃的来源 URL)上量了卡片的成本与收益,两处按数据收窄。 **URL 上限 3 → 1。** 留 3 个使「URL 总保留率」达到 16.5%,但下游唯一消费的量是 「一次检索有没有留下一个可追溯的来源」—— 那个由第一个 URL 就达成, 769/775 = 99.2%。降到 1 后总保留率 7.8%,而 99.2% 一字未变:多留的两个 URL 每个约 120 字符,买的是一个没有读者的百分比。 **无来源的结果只留工具名。** 1337 条里 435 条(33%)根本没有来源 —— shell 命令、 任务板更新、写文件。卡片存在的前提是「不要重做那些出处还看得见的工作」, 没有来源这个前提就不成立,而且重复这类调用通常是合法的(它读的状态变了)。 那些 args 不构成决策信息,不值 120 字符的预览。 判据是「正文无 URL **且** args 无 URL」,不是单看正文:来源可以在参数里而不在 正文里(web_fetch 的参数本身就是 URL),只读正文会把 web_fetch 唯一的来源剥掉。 **Consumer impact:** 需要「每个论断多个独立来源」的 host 现在应当显式抬高 `_MINI_CARD_MAX_URLS`,而不是继承 3。其余不变:卡片仍然说明调用、仍然在有来源时 带上来源,placeholder / footer 契约完全未动。 该样本上的成本:卡片在 12 个 trial 上共增加约 49.6k tokens,在激进的 `keep_last_k=5` 下占压缩后 context 的 25.0%;而产品实际使用的阈值触发式 `tiered` 路径压缩后 context 在 150–200k,同样的卡片占 2–3%。 Tests: 4 条既有断言随行为更新(有来源才谈 args、URL 上限 1、超长与多行 args 改用带来源的调用),新增 4 条(无来源只留工具名、来源在 args 里仍出完整卡片、 无来源卡片长度不足有来源的一半、URL-heavy 正文也只留 1 个); `pytest tests/ -q` → 1485 passed;`ruff check` → 0 error。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`46b7b0b3` 修掉了「从截断后的 args 预览判断有无来源」这个缺陷之后, 本条目引用的统计就全部过时了 —— 它们描述的是修复前的行为。 误判影响约 130 张卡片(约 10%):那些调用其实带着来源,只是 URL 落在预览的 120 字符之后。修好之后: | | 修复前(已过时) | 修复后(现值)| |---|---|---| | 被压缩条数 | 1337 | 1295 | | 仅工具名 | 435 (33%) | 306 (24%) | | URL 总保留率 | 7.8% | 8.9% | | 成本占压缩后 context | 25.0% | 27.2% | | 每次检索至少一个来源 | 99.2% | 99.2% | **修复前的数字之所以"更便宜",只是因为它在丢弃那些调用真实拥有的出处**, 所以 CHANGELOG 里补了一句说明,避免读者把 25.0% 当成收窄本身的成本基线。 条数 1337→1295 是因为卡片变长后,「卡片不比原文短则保留原文」的兜底判据 接住了更多小 body。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
上一个 commit 只改了 _elided_tool_card 的 docstring,漏了常量上方注释里的 1337→1295 与 7.8%→8.9%。CHANGELOG 第 50 行的 33% / 25.0% 是有意保留的 —— 那里正是在说明修复前的数字为什么看起来更便宜。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
为什么
Tier 1 迷你卡(0.8.x 起在
_elided_tool_card)此前对每一条被压缩的工具结果一视同仁:120 字符的 args 预览 + 最多 3 个来源 URL。在 ApodexHarness 上用 12 个真实长跑研究 trial
(1337 条被压缩结果、约 13.5k 个即将被丢弃的来源 URL)量了它的成本与收益,两处按数据收窄。
URL 上限 3 → 1
下游唯一消费的量是后者 —— 一次检索有没有留下一个可追溯的出处(引用报告需要的是
出处,不是一次搜索的全部 20 个链接)。那个由第一个 URL 就达成,769/775。多留的两个
URL 每个约 120 字符,买的是一个没有读者的百分比。
无来源的结果只留工具名
1337 条里 435 条(33%)根本没有来源 —— shell 命令、任务板更新、写文件。
卡片存在的前提是「不要重做那些出处还看得见的工作」。没有来源,这个前提就不成立;而且
重复这类调用通常是合法的(它读的状态变了 ——
date两次、编辑后重读文件)。所以它们的args 不构成决策信息,不值 120 字符的预览。
判据是「正文无 URL 且 args 无 URL」,不是单看正文:
只读正文会把
web_fetch唯一的来源剥掉。Consumer impact
需要「每个论断多个独立来源」的 host 现在应当显式抬高
_MINI_CARD_MAX_URLS,而不是继承 3。其余不变:卡片仍然说明调用、仍然在有来源时带上来源,
placeholder /
recovery_footer契约完全未动。成本
keep_last_k=5tieredkeep5下成本主体是卡片的条目数(1337 条)而非单条长度;要再降只能限制出卡条目数,而那会牺牲「引用方可以引用任意时刻采集的来源」。
keep5不是产品配置,故不引入该取舍。这些数字怎么来的
不是 accuracy 实验 —— 那条路走过了,测不出东西。在 ApodexHarness 的
browsecomp_200后 40 题上跑过两轮两臂 A/B(同题、同 profile、同凭据):
tiered(阈值 209,715,实测峰值中位 153k → 卡片几乎没触发)keep_last_k=5(每轮压缩,卡片确实生效)方向相反、都不显著。原因不是改动无效,而是卡片的收益不在准确率上:它保住的是
来源可追溯性(基线 769/769 条含 URL 的结果压缩后一个 URL 不剩,即 0%),消费者是需要
引用出处的报告合成,而 browsecomp 是 exactMatch 短答案、不需要任何引用。
所以本 PR 的依据全部是机制性量化(URL 覆盖率、成本占比),不引用那两轮 accuracy。
测试
(否则那两条测不到 args 路径)
一半(成本降低是本 PR 的目的,直接断言它)、URL-heavy 正文也只留 1 个
pytest tests/ -q→ 1485 passed;ruff check→ 0 error