第 36 章:Tool Result 预算与外溢
文件系统只有在 Prompt 中保留可信、可取回的指针时,才真正扩展了工作上下文。
公开源码快照:实现细节取自 Kocoro 公开仓库
origin/main的4ec6772提交,复核日期为 2026-07-27。章节讲的是不变量;具体常量应以当前源码为准。
36.1 问题是什么
一次大型文件读取就可能占满下一次 Prompt;多个中型并行结果累加也会产生同样问题。直接截断会让后续无法追查,而全部保留又会让文件工具意外变成“上下文拒绝服务”。
36.2 设计原则
把完整内容写入 Runtime 管理的文件,再用“预览 + 指针”替换 Prompt 内结果,并让替换跨 Turn 持续生效。限制单结果大小,并把单 Turn 总量当作尽力而为的目标:并行批次结束后,从最大的可外溢结果开始处理,直到总量落回目标之下。当某个工具豁免外溢、或外溢本身失败时,这一轮仍然可能停在目标之上——所以超出目标应当被当作需要排查的信号,而不是一个不可能出现的状态。
36.3 快照证据
| 源码快照 | 观察 |
|---|---|
4ec6772 | 单结果快照阈值:50,000 字符 |
4ec6772 | 上下文内预览:2,000 Rune |
4ec6772 | 每 Turn Tool Result 总量目标:200,000 字符——不是硬上限:豁免外溢或标记为无限大小的工具、以及一次失败的外溢,都可能让总量停在这个数之上 |
以上数值描述的是一个有日期的实现快照,不是普遍契约。
36.4 实现检查表
- 多语言预览必须按 Rune 安全截取。
- 外溢文件应绑定 Session 并受权限控制。
- 用多个中型结果测试总量超限。
36.5 本章结论
文件系统只有在 Prompt 中保留可信、可取回的指针时,才真正扩展了工作上下文。
这些章节应作为一个系统阅读:上下文、工具 Schema、持久化、操控、时间纪律、循环检测和并发会彼此影响。