固定栈分配(Static Stack Allocation)
概述
固定栈分配是上下文策略之一,要求每次 Agent 迭代以完全相同的顺序和方式分配上下文栈,确保关键约束始终位于注意力最高的开头和结尾位置,避免"lost in the middle"问题导致 Agent 遗忘重要规则。
关键内容
- 核心原则:每次迭代,以完全相同的方式分配上下文栈。CLAUDE.md 的固定分配顺序为:
- [System Prompt] ← 总是第一个(~3k tokens)
- [Project conventions] ← 总是第二个(~2k tokens)
- [Core constraints] ← 总是第三个(~1k tokens)
-
[File references] ← 总是最后(@prd.json @progress.txt @AGENTS.md)
-
为什么顺序重要:LLM 对上下文开头和结尾的注意力高于中间部分("lost in the middle"问题)。注意力曲线呈 U 形——开头和结尾高,中间低。把最重要的约束放在最前面,确保 Agent 不会忘记它们。
-
工程实践:在 CLAUDE.md 中硬编码加载顺序,而非依赖 Agent 自主决定加载什么。这保证了每次迭代的一致性,避免了因上下文内容变化导致的注意力漂移。
-
与 Context-Engineering 的关系:固定栈分配是 Context Engineering 中 Prompt 位置编排的具体实现。Context-Engineering 推荐的布局(Cached Prefix → Task contract → Working memory → Evidence → Counter evidence → User ask → Final answer rubric)与固定栈分配的原则一致——关键信息放两端,避免埋中间。
来源
- raw/articles/ai-tools/ralph-loop/context-strategies.md — Context Strategies 文档中的策略一
相关
- 上下文策略 — part_of(固定栈分配是六大上下文策略之一)
- Context-Engineering — implements(Prompt 位置编排的具体实践)
- 上下文窗口 — relates_to(围绕上下文窗口的有限性设计)
- 注意力预算 — relates_to(优化注意力资源分配)