# spill/ - spill 存储功能家族

[English](README.md) | 中文

工具输出 spill 的功能 seam：一个抽象存储接口、一个本地文件系统实现，以及一个使用该实现的工具结果策略。全部都是**产品** 包。

| 包 | 职责 | ctx 键 |
|---|---|---|
| `spill/` | 抽象 spill 存储 seam（`saveText`：持久化过大的工具文本，返回定位信息与取回指引） | `ctx.spillStore` |
| `spill-local/` | 本地文件系统后端：使用防路径遍历名称的私有会话级文件 | （注册到 `ctx.spillStore`） |
| `spill-policy/` | `tools/post-execute` 策略：将过大的纯文本结果替换为预览和 spill 定位信息 | （无服务接口） |

接口位于 `spill/spill/`。这种拆分方式与 bash/fs 相同：seam 只负责存储，`spill-local` 负责文件系统机制，`spill-policy` 负责决定何时 spill 以及面向模型的通知。预览机制位于 [`util/retention`](../util/README.md)；策略只组合两者，不会让任何一方承担对方的职责。

设计原理见[工具输出 spill Agent Note](../../.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.md)，其中说明了为什么最终结果 spill 要与工具自行提前 spill（bash 流、subagent rollout）分离，以及为什么创建操作应由运行时 spill seam 而非面向模型的 `write` 工具承担。
