pstack原则14守护上下文窗口:大任务中防止上下文爆炸的终极路由法
【免费下载链接】pstack-claudeClaude Code, Codex, Copilot, Pi, OpenCode, Gemini, and Prime Agent versions of Poteto's pstack. Rigorous agent workflows with Cursor primitives translated for other harnesses.项目地址: https://gitcode.com/GitHub_Trending/ps/pstack-claude
pstack 是一套面向 Claude Code、Codex、GitHub Copilot 等 AI 编码智能体移植的工作流技能栈,把 Cursor 上成熟的智能体流程搬到了其他运行时。本文深入解析其第 14 号原则「守护上下文窗口(Guard the Context Window)」:通过把大块数据路由给子智能体,让主线程只保留摘要,从机制上防止大任务中上下文爆炸。
为什么上下文窗口是 AI 智能体最稀缺的资源 ⚠️
很多人把 AI 智能体跑飞归咎于模型变笨,其实更常见的原因是上下文窗口被撑爆了。上下文窗口有两个特性:
- 有限:一次会话能装的 token 有硬上限;
- 不可再生:会话内用掉的不会回血。
一旦溢出,会发生三件坏事(这也是该原则在 SKILL.md 里写的原话):
- 推理质量下降——模型开始"丢三落四";
- 压缩伪影出现——自动压缩会把关键细节压没了;
- 任务直接停滞——进度卡死,只能重开会话。
典型的重灾区场景:一次性输出巨大、反复读取超长文件、粘贴截图和大型文档、以及多路并发(fan-out)规划时的海量回报。pstack 的思路不是"硬扛",而是路由——像流量调度一样,决定哪些数据进主线程、哪些丢给子智能体去消化。
路由法三规则:守护上下文窗口的核心手法 🧭
这个原则的完整定义只有十几行,凝练成三条规则,非常值得逐条对照检查:
核心判断:每一个 token 都应当值回它的成本。
规则一:大块数据交给子智能体,主线程只收摘要
原文明确要求Isolate large payloads:冗长的输出、截图、大文档,全部路由给子智能体去读去处理;主上下文拿到的应该是摘要,而不是原始载荷。
pstack 在 poteto-mode 的智能体规范里把这条做成了硬性默认值:每次调用Agent工具时传"file pointers not inlined context"(文件指针,而非内联上下文)——也就是说,子智能体把结果写成文件,主线程只拿"去哪找"的指针,需要细节时再按需取用。
swarm技能同样如此:多个并行 worker 跑完后,父智能体被明令禁止Do not paste raw worker dumps(不要粘贴 worker 的原始输出),只保留紧凑的结果表格。
规则二:高频使用的内容直接内联
反直觉的一条:经常要用的内容反而不该拆出去。原文要求Keep frequently used content inline——每次调用都要用的模板和参考资料,应直接写进技能文件里,而不是拆成独立文件、每次多花一次"读取"的 token 成本。
拆开省空间是假象,多一次文件读取就是实打实的开销。判断标准很简单:这个内容是不是每次都会用到?是,就内联。
规则三:控制阶段规模,给范围设上限
原文要求Size phases and cap scope,具体拆成三个动作:
| 动作 | 含义 |
|---|---|
| 限制每阶段文件数 | 一个阶段只碰有限几个文件,做完再进下一阶段 |
| 设定回合预算(turn budget) | 给子任务划出轮次上限,防止无限递归探索 |
| 计入机制成本 | 工具调用、环境加载等"隐性开销"也要算进预算 |
pstack 的多阶段计划 playbook(multi-phase-plan.md)就是这条规则的落地:探索阶段全部丢给子智能体,每路只返回文件指针、编码约定、测试命令、入口点,并强调一句"No inlined dumps"(不要内联倾倒)。
实战场景:pstack 在哪些 playbook 里真的用了它 🔍
原则的价值在于被反复触发。仓库里至少四处 playbook 明确引用了这条路由法,都是"大块数据"的典型现场:
| 场景 | 大块数据 | 路由策略 |
|---|---|---|
| 运行时取证 | 海量运行时产物 | 在子智能体中解析,只把"铁证"(关键函数、泄漏链)留在主线程 |
| 追踪取证 | 大型 profiling 文件 | 同上:子智能体解析,主线程保留压缩后的发现 |
| 工作区清理 | 巨型会话转录 | "transcripts are bulk"(转录天生是大块数据),扇出子智能体分别阅读并回报结论 |
| 爬坡优化 | 反复的代码修改 | 改动交给子智能体执行,主线程只做监督与 diff 审查,不亲自动手 |
规律很清晰:凡是"读起来很贵、但结论可以很小"的工作,都应该外包。主线程的职责收敛为决策、汇总与验证,这正是路由法的目的。
不止于 AI:给人类读者的同款原则 📖
有趣的是,pstack 的另一条原则 principle-minimize-reader-load 直接点破了这层类比:
"代码被阅读的次数远多于被编写的次数……读者的工作记忆同样是有限的。这就是 守护上下文窗口 的人类版本。"
AI 的上下文窗口和人脑的工作记忆,约束结构其实一样:入口带宽有限,超载之后质量就会崩塌。所以给智能体减负和给人减负,用的是同一套方法——摘要代替原文、按阶段限流、只保留决策需要的信息。
值得延伸阅读的相关文件 📚
- 原则原文:plugins/pstack/skills/principle-guard-the-context-window/SKILL.md
- 原则注册表(含全部原则的触发时机):plugins/pstack/skills/poteto-mode/SKILL.md
- 并行扇出与汇总策略:plugins/pstack/skills/swarm/SKILL.md
- 多路候选比稿流程:plugins/pstack/skills/arena/SKILL.md
- 人类版上下文守护:plugins/pstack/skills/principle-minimize-reader-load/SKILL.md
- 架构术语表:CONTEXT.md
想动手体验完整工作流,可以克隆仓库后安装:
git clone https://gitcode.com/GitHub_Trending/ps/pstack-claude总结 ✨
「守护上下文窗口」是 pstack 原则体系中极具工程感的一条:上下文不是垃圾桶,而是需要主动调度的稀缺资源。三条路由规则——大块数据交给子智能体、高频内容内联、阶段限流设预算——配合"文件指针代替内联上下文"的硬约定,让主线程始终只装摘要和决策。对新手来说,最值得带走的经验只有一句话:让 AI 读贵的东西,让你看便宜的结论。
【免费下载链接】pstack-claudeClaude Code, Codex, Copilot, Pi, OpenCode, Gemini, and Prime Agent versions of Poteto's pstack. Rigorous agent workflows with Cursor primitives translated for other harnesses.项目地址: https://gitcode.com/GitHub_Trending/ps/pstack-claude
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考