KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
Agent 上下文工程:Context Window、Token Budget 与 Compaction — keel 龙骨
Context Engineering 的参考信息:Agent 上下文工程:Context Window、Token Budget 与 Compaction
这门课回答一个经常被“模型支持多少 token”掩盖的问题:一次 Agent 运行到底应该把什么放进当前模型调用,什么时候需要删减或压缩,压缩以后怎样证明关键状态没有丢失?
课程把上下文当成 Harness 的一个有界、可观测、可恢复的子系统,而不是一个无限增长的聊天数组。主线是:
测量 token
-> 为系统/任务/工具/输出分配预算
-> 按来源、优先级和依赖选择消息
-> 触发 trim、删除或模型摘要
-> 校验摘要和工具消息结构
-> 保存 checkpoint,继续运行
-> 用质量、成本、延迟和信息损失评估
你会解决什么问题
context window、token budget、模型输出上限、KV cache 和运行状态分别是什么;- 为什么“模型支持 128k”不能直接等于“Agent 应该发送 128k”;
- 如何在真实 tokenizer 与近似计数之间做出诚实的工程选择;
- 怎样给系统提示、工具 schema、任务材料、历史、记忆、输出和安全余量分配预算;
- trim、drop、摘要、结构化压缩、外部检索分别保留和牺牲什么;
- 为什么 tool call 与 tool result 必须成对保留,为什么摘要不能伪造工具证据;
- compaction 什么时候触发、如何幂等、如何记录版本、如何从 checkpoint 恢复;
- 怎样用“事实保留、任务可继续、工具轨迹有效、跨租户隔离”验证压缩质量;
- 怎样用 token、延迟、费用和任务成功率判断压缩策略,而不是只看摘要长度。
学习路线
| 章节 | 先解决的问题 | 主要产出 |
|---|---|---|
| 01. 上下文窗口究竟限制了什么? | 区分容量、输入、输出和实际可用空间 | 一张 token 预算图 |
| 02. Token 怎样被测量? | 从字符直觉转向 tokenizer 和估算误差 | 可替换的计数器 |
| 03. 预算应该给谁? | 给固定、动态和安全部分建立预算契约 | BudgetPlan |
| 04. 先删什么,后保什么? | 按优先级、依赖和新鲜度组装上下文 | 可解释的选择器 |
| 05. Compaction 是摘要,不只是截断吗? | 比较 trim、drop、摘要、结构化压缩和检索 | 策略对照实验 |
| 06. 怎样安全地压缩 Agent 轨迹? | 保持 tool call/result 合法与证据可追踪 | 轨迹压缩器 |
| 07. 什么时候触发 compaction,怎样恢复? | 处理阈值、版本、幂等、失败和 checkpoint | 可恢复的 compact run |
| 08. 压缩后真的还记得吗? | 评估信息损失、任务质量、成本和延迟 | 评估报告 |
| 09. 完成一个有预算的事件诊断 Agent | 把全链路放回 Harness、工具和记忆 | 结课项目 |
与已有专题的关系
建议先读 Agent Harness 第 06-08 章;本课程把其中的“上下文是预算”和运行循环展开为可执行子系统。工具消息的 schema、执行和失败语义复用 Tool Calling 课程。跨运行的长期记忆和检索见 Persistent Memory 课程;本课程只决定哪些已授权候选可以占用当前窗口。多 Agent 场景中的上下文隔离和工件边界见 Multi-agent Collaboration。
配套项目
项目不要求 API key,也不把某个供应商的 tokenizer 当成抽象定义。它提供字符近似计数器、可注入的 tokenizer、预算分配、依赖安全的消息选择、确定性 compaction、工具轨迹校验、事件记录和 checkpoint 恢复。
python -m pip install -r courses/foundation/context-engineering/course/project/requirements.txt
python courses/foundation/context-engineering/course/project/examples/01_measure_and_budget.py
python courses/foundation/context-engineering/course/project/examples/04_compact_tool_trace.py
python courses/foundation/context-engineering/course/project/examples/06_recover_after_compaction.py
python -m unittest discover -s courses/foundation/context-engineering/course/project/tests -v
真实模型实验可以把项目里的 TokenCounter 换成供应商 tokenizer;课程刻意先用固定输入测试预算和恢复不变量,再接模型,因为模型“摘要得不错”不能替代程序对预算和消息协议的验证。
从第 01 章开始。课程的资料取舍记录在调研与课程设计依据,统一案例、代码映射和生产替换点记录在课程设计说明,术语在glossary。
完成基础上下文课程后,可进入Advanced Agent Systems:Durable Execution、Wake-up、Grounded Retrieval 与质量门禁。