上下文策略(Context Strategies)
概述
上下文策略是一组针对 LLM Agent 上下文窗口管理的系统化方法,将上下文视为需要 malloc/free 的内存资源,通过固定栈分配、子 Agent 卸载、观察遮蔽、规范文件外置、预算管理和干净状态协议六大策略,避免 Agent 进入性能退化的 Dumb Zone。
关键内容
-
核心隐喻:上下文的 malloc/free 问题:每次工具调用(read_file、run_tests 等)都向上下文追加内容(malloc),但没有对应的释放操作(free)。一个典型的工具调用链会迅速消耗上下文:系统提示 ~5k tokens + 多次文件读取各 ~1.5-2k tokens + 多次测试输出各 ~3k tokens → 上下文快速达到 65% 以上,进入 Dumb Zone。Ralph Loop 的根本解法是在进入 Dumb Zone 之前主动退出,让外循环重启新实例。
-
六大策略体系:
- 固定栈分配:每次迭代以完全相同的方式分配上下文栈,确保关键约束始终位于注意力最高的开头和结尾位置,避免"lost in the middle"问题
- 子 Agent 卸载:将消耗大量 tokens 但只需结论的操作(测试套件 ~50k → ~100 tokens、编译 ~20k → ~50 tokens)卸载给子 Agent,主 Agent 保持精简
- 观察遮蔽:当上下文接近限制时,保留最近 N 轮对话,将旧消息替换为摘要占位符;Ralph 的立场是不适合"每 Story 一迭代"模式,但子任务间可用
- 规范文件 vs 上下文内容:任何需要跨会话持久化的信息必须在文件里(AGENTS.md、progress.txt),不能只在上下文里
- 上下文预算管理:在编写 CLAUDE.md 时估算各部分 token 消耗,确保总量在安全范围内(理想情况下 ≤52.5% 的 200k 窗口)
-
Clean State Protocol:每次迭代结束前验证 git 状态、构建、测试、prd.json 语法、progress.txt 更新,确保不把破损状态传递给下一个 Agent
-
不同模型的上下文策略差异:Claude 3.5 Sonnet/Opus(200k tokens)每迭代目标完成 1 Story,Dumb Zone 估计 >120k tokens;GPT-4o(128k tokens)Dumb Zone >80k tokens;Gemini 1.5 Pro(1M tokens)可完成 2-3 Stories,但 Ralph 仍推荐每迭代 1 Story 以保持小粒度的清晰 git commit 和低失败恢复成本。
-
Lost in the Middle 问题的工程应对:LLM 对上下文开头和结尾的注意力高于中间部分。上下文策略要求把最重要的约束(系统提示、项目约定、核心约束)放在最前面,文件引用放在最后,避免将重要信息埋在中间。
来源
- raw/articles/ai-tools/ralph-loop/context-strategies.md — Context Strategies 完整文档(六大策略、模型对比、预算估算)
相关
- Context-Engineering — implements(上下文策略是上下文工程在 Coding Agent 场景的具体实现)
- 上下文窗口 — part_of(上下文策略围绕上下文窗口的有限性设计)
- 上下文腐烂 — relates_to(上下文策略旨在延缓和避免上下文腐烂)
- Ralph Loop — implemented_by(Ralph Loop 是上下文策略的完整实现系统)
- Dumb Zone — relates_to(上下文策略的核心目标是避免进入 Dumb Zone)
- Session 交接机制 — relates_to(规范文件外置策略与三文件交接机制深度关联)