收藏 | 程序员必看:Agent Harness 如何管理大模型上下文工作集,告别 Prompt 限制! 📅 2026/8/17 20:07:20 随着大模型应用发展上下文窗口管理成为关键。文章分析了 Pi、OpenClaw、Claude Code 和 Letta 四个 Agent Harness 如何应对上下文窗口限制从简单的 Prompt 调整转向主动管理。核心挑战在于设计有效的策略来决定保留、压缩或检索哪些内容。各 Harness 采用不同方法如文件分页、工具结果预算、会话裁剪和子 Agent 隔离但都朝着系统化、自动化的内存管理方向演进目标是让模型在有限窗口内高效工作。Agent Harness 的核心工程问题正在从“怎么写 prompt”转向“怎么管理工作集”。上下文窗口不是一个被动容器它越来越像一套内存系统有缓存、有分页、有压缩、有驱逐也有一层层对模型透明的管理策略。每一个 Agent Harness智能体运行框架最终都会撞上同一个限制上下文窗口太小装不下模型可能想记住的一切。随着会话变长文件读取会膨胀子 Agent 调用会变多工具输出会堆积Harness 必须决定哪些内容留在工作集里哪些内容被压缩哪些内容以后再检索。现在更重要的问题已经不只是“什么该放进 prompt”。真正的问题是Harness 如何随着时间管理上下文。最好的系统不再把上下文窗口当成一个被动的聊天记录缓冲区而是主动管理它把高价值状态留在近处按需翻页读取数据建立索引去找到需要的内容grep 就是在做这件事并且用一种能提示“还有更多内容可以访问”的方式截断内容。1 上下文窗口管理不再只是 Prompt 问题Pi、OpenClaw、Claude Code 和 Letta 在这里做出了不同选择但它们正在收敛到相似的底层模式。上下文不再只是“能塞进 transcript 的所有内容”。它变成了系统必须主动管理的东西。真正的设计问题是这种管理有多少应该发生在 Harness 内部又有多少应该交给模型自己完成。2 核心赌注相信模型能管理自己的上下文每一个上下文管理决策都隐含着一个关于模型行为的假设。关键问题是Harness 应该主动约束上下文使用还是相信模型能自己正确管理这笔预算3 大文件上下文管理文件读取让这个问题变得很具体。当模型需要读取一个大到放不进上下文的文件时总得有人决定保留什么。四个 Harness 都支持用 offset 和 limit 参数分页读取。3.1 Pipi-monoPi 读取文件时会设置硬上限最多 2,000 行或 50KB哪个先到就在哪停止即使模型没有主动要求切片也一样。内容会从头部开始保留并截断工具输出会追加一个明确的继续提示[Showing lines 1-2000 of 50000. Use offset2001 to continue.]工具说明也会再次强调“output is truncated to 2000 lines or 50KB. Use offset/limit for large files.”Pi 的方式是 Harness 优先先由 Harness 保护你再教模型如何分页。3.2 OpenClawOpenClaw 继承了 Pi 的读取工具也继承了 2,000 行 / 50KB 的截断方式。普通文件读取时它的行为基本相同。在此之上它又为 bootstrap files会话启动时一次性加载的上下文文件增加了额外限制单文件最多 12,000 字符总量最多 60,000 字符。当 bootstrap 文件超过预算时它采用 75% 头部 25% 尾部的保留方式你能看到开头和结尾中间被切掉。工具结果还有单独预算16,000 字符或上下文窗口的 30%取较小值。当尾部看起来“重要”比如错误、JSON 闭合括号、summary 关键词时它会切换成头尾保留模式否则只保留开头。OpenClaw 的方式是纵深防御第一层是 Pi 的截断策略然后是 bootstrap 注入的额外上限再往上是工具结果预算。3.3 Claude CodeClaude Code 对文件读取做了两层防御。第一道门是在打开文件前通过 stat 检查 256KB 字节上限。如果文件超过这个大小读取会立刻被拒绝并返回一个错误提示模型改用 offset/limit 或 grep。第二道门发生在读取之后输出会按 25,000 token 的预算重新计数用来捕捉那些虽然没超过字节上限、但 token 密度很高的文件。这两个限制都可以由 Anthropic 通过 GrowthBook feature flags 远程调整不需要发布新版本。即使文件低于上限工具默认也只返回开头 2,000 行任何超过 2,000 个字符的单行也会被截断。模型必须显式使用 offset 和 limit 参数请求更多内容。这个工具说明本身也是一段很完整的 prompt它解释分页提到大小上限覆盖图片、PDF、notebook 支持还鼓励对多个文件并行读取。offset 和 limit 参数各自也有说明告诉模型它们是为“太大而无法一次读取”的文件准备的。还有一条条件指令会根据 feature flag 把 256KB 限制直接暴露在 prompt 中。文件去重系统也值得注意。如果模型在文件没有修改的情况下用同一个范围重复读取同一个文件Claude Code 会返回一个 stub而不是再次把完整内容塞进上下文从而避免重复消耗 token。Claude Code 的方式是 Harness 优先同时保持远程可调**读取前字节门、读取后 token 门、默认行数与单行长度限制、可执行的错误提示、丰富的工具 prompt、读取去重**以及能让 Anthropic 服务器端调整所有限制的 feature flags。3.4 LettaLetta 走的是一条根本不同的路线。每个上传文件都会被解析、切块、嵌入到向量库里因此 Agent 同时拥有精确搜索和语义搜索。它提供三种文件工具open_files用于直接查看原始文本grep_files用于精确模式匹配也是原始文本semantic_search_files则基于嵌入后的片段做语义检索。当一个文件在 Agent 上下文里处于“打开”状态时可见内容会被截断到一个按模型上下文窗口伸缩的单文件字符上限8K 上下文时是 5,000 字符32K 是 15,000128K 是 25,000200K 以上是 40,000。可同时打开的文件数量也会伸缩小模型最多 3 个很大的模型最多 15 个默认兜底是 5 个。超过限制时它用 LRU最近最少使用策略驱逐最久没有访问的文件。Letta 的方式是记忆优先文件同时存在于原始文本和向量库中上下文窗口只展示一个被管理过的视图模型通过工具访问更多内容。4 真正的工程难点会话裁剪随着对话增长每个 Harness 都必须决定保留什么、丢掉什么。这才是设计差异真正有意义的地方因为压缩策略会决定长时间运行的 Agent 是保持连贯还是慢慢退化。4.1 Pipi-monoPi 使用 compaction由 LLM 驱动的摘要在 token 到达阈值时触发。触发条件估算上下文 token 超过contextWindow - reserveTokens默认 reserve 是 16,384 token。保留内容从对话尾部往回走保留最近约 20,000 token 的消息keepRecentTokens。被摘要内容更早的所有内容都会交给 LLM 生成摘要。摘要位置摘要会变成一条合成的用户消息插入到保留尾部之前。工具调用安全性永远不会把 tool call 和 tool result 切成孤儿结果。它会沿边界回退确保工具调用和工具结果成对保留。4.2 OpenClawOpenClaw 在 Pi 的 compaction 之上又运行两种不同的上下文管理机制。触发条件历史记录超过上下文窗口的 50%maxHistoryShare默认 0.5。保留内容历史会被切成 token 质量相近的多个块最旧的块被丢弃其余块会在修复 tool call / result 配对后保留。被摘要内容被丢弃的内容会经过分阶段、多轮 LLM 摘要并带有合并步骤。摘要位置和 Pi 一样作为合成用户消息插入到保留尾部之前。工具调用安全性repairToolUseResultPairing会修复块丢弃后出现的孤儿工具结果splitMessagesByTokenShare会避免切进一个 tool call / result 对。压缩前刷新在历史消失前一个静默的 agentic turn 会让 Agent 把状态持久化到 memory files。第二层对工具结果做非破坏性的内存裁剪先 soft-trim再 hard-clear并设置 5 分钟缓存 TTL。这样可以保护持久对话同时为当前请求回收上下文。4.3 Claude CodeClaude Code 通过查询前优化和 LLM 驱动的 compaction 管理上下文。触发条件估算 token 超过有效上下文窗口减去 13,000 token 缓冲区对 200K 上下文模型来说大约在 167K token 时触发压缩。被摘要内容完整对话会被发送给模型并配上一段结构化的 9 部分 prompt覆盖 primary request、关键技术概念、文件和代码、错误与修复、问题解决过程、所有用户消息、待办任务、当前工作以及可选的下一步。摘要位置摘要会变成一条用户消息告诉模型这个会话是从一个因上下文耗尽而中断的旧对话继续下来的。压缩后恢复最多 5 个最近读取的文件会在 token 预算内重新附加回上下文。摘要器安全性模型会在分离的标签块中生成 analysis scratchpad 和 final summary。scratchpad 会在摘要进入上下文前被剥离从而提升摘要质量又不增加上下文负担。prompt 过长时的兜底如果 compaction 调用本身也撞上上下文上限就会用确定性的 head-drop 删除最旧的 API round 组删除 20% 的组或删除足够多以补齐 token 缺口。查询前优化每一次 API 调用前都会运行不管是否已经有上下文压力。Claude Code 会运行一条只管理工具结果、不触碰对话文本的流水线。过大的工具结果会被持久化到磁盘并替换成 2KB 预览。单个工具上限是 50,000 字符单条消息聚合上限是 200,000 字符。所以哪怕一个全新会话里出现 60KB 的 grep 结果它也会在第一轮就被移到上下文外。4.4 LettaLetta 通过多种 compaction 策略管理上下文并在主要路径溢出时使用两阶段摘要器兜底。触发条件估算上下文使用量超过上下文窗口的 90%。滑动窗口驱逐从 30% 的消息开始移除不是 10%之后每次迭代增加 10%直到 token 使用量降到目标以下。最新的消息会被保留最旧的消息被驱逐。Self-compact 模式使用 Agent 自己的模型生成摘要因此不需要单独的摘要器成本或配置。摘要器溢出的两阶段兜底第一步把工具返回压到 5,000 字符后重试。如果仍然溢出就对 transcript 做中部截断保留 30% 头部和 30% 尾部丢掉中间。预警阈值在 90% compaction 触发之前还有一个单独的 75% memory warning。5 子 Agent 的上下文管理在我们看的这些 Harness 里子 Agent 通常和父会话隔离。这里没有一个例子会把完整的父会话历史复制进子 Agent。真正的问题是子 Agent 会继承多少工作区上下文。5.1 SubagentPi 会为每个委派任务启动一个新进程并使用内存中的会话。子 Agent 只收到任务字符串这一条用户消息不会传入父对话历史。OpenClaw 默认给子 Agent 全新的隔离会话不带父 transcript。它有一个 fork 模式可以把父 transcript 复制进子 Agent但只用于同类 Agent 的 spawn。工作区上下文会被过滤到一个最小 allowlistAGENTS.md、TOOLS.md、SOUL.md。Claude Code 有两条路径。默认的 typed-agent 路径会创建一个空白对话委派 prompt 会成为唯一的用户消息不带父历史。较新的 fork 路径会把完整的父消息历史传给子 Agent以便复用 prompt cache同时还会加上一条合成 assistant 消息和占位工具结果。Worker 会用自己的权限模式重建工具异步 Agent 会拿到一个明确的 allowlist包括 Read、Grep、Glob、Shell、Edit、Write、WebSearch 等。Agent 定义里引用的 Skills 会被提前加载。完整 Skill 内容会作为用户消息注入初始对话而不是按需加载。Letta 在普通工具执行中完全不 fork。工具在主 Agent 循环里运行。历史上下文通过专门的搜索工具访问conversation search 用于 recall memoryarchival memory search 用于嵌入库。6 这些设计为什么会收敛比较这四个代码库后最显眼的发现不是它们有多不同而是它们有多一致。也就是说Agent 工程正在把“上下文窗口不够用”这个问题重构成一个更老也更硬的系统问题怎么管理一个固定大小的工作集。四个 Harness 都会对文件读取设置硬上限。四个都支持 offset/limit 分页。四个都限制工具结果大小。四个都隔离子 Agent 会话。四个都会在 token 到达阈值时运行 LLM 驱动的 compaction。四个都会估算上下文使用量并检测压力。这些不是巧合。它们是在解决同一个工程问题一个固定大小的工作集却要让它感觉像是无限的。这种收敛不只是“功能相同”。具体设计选择也在押韵。Pi 和 OpenClaw 都对文件读取做头部截断并追加继续提示。Claude Code 和 OpenClaw 都会把过大的工具结果持久化到磁盘。Pi、OpenClaw 和 Claude Code 都会在 compaction 期间保证 tool call / result 边界安全。四个系统里有三个支持把父 transcript fork 进子 Agent。它们独立走到了相似答案。这些模式并不局限于 coding agents。Arize 自己的 Alyx assistant 是为数据探索构建的不是为代码编辑构建的但它也独立走到了同样的设计。Alyx 会把工具结果限制在 10,000 token 预算内并用二分搜索找到能放进上下文的最大数据切片。它会通过从对话历史中裁掉重复预览只保留最近一次来去重幂等工具调用。它把大型 JSON payload 拆成 LLM 可见的压缩预览以及服务端保存的完整副本模型之后可以通过 jq 钻进去查看完整内容。这和 Pi、OpenClaw、Claude Code 为文件读取使用的“把过大结果持久化到上下文之外”是同一个模式。它会对很长的单元格值做头尾截断并保留指向完整内容的反向引用。它用 char/4 的启发式估算 token 压力并在对话超过 50,000 token 时强制 checkpoint让模型在历史被裁剪前写下自己的状态摘要。这把 Claude Code 的确定性 compaction 触发和 OpenClaw 的压缩前状态刷新结合在了一起。它的子 Agent 也采用了这四个 Harness 都使用的隔离启动模式。一个完全不同领域的产品最终收敛到了同一套上下文管理方法。50 年的计算机历史告诉我们最好的内存管理是程序自己不用思考的那一种。寄存器、缓存行、页表、交换空间。每一层都由系统管理每一层对上一层都不可见。程序只管运行。Agent Harness 正在朝同一个方向移动。目标不是把一切都展示给模型而是在正确的时间给它正确的工作集并允许它动态决定如何管理自己的上下文。最后很多正在择业、考虑转行提升或是刚入门的开发者、编程新手都会关心一个问题未来几年哪些技术方向更值得长期投入从行业趋势来看人工智能尤其是大模型相关方向依然是增长最快、人才需求最集中的领域之一。随着企业数字化、智能化升级相关岗位的需求持续增加对有实战能力的开发者也更加友好。对于想系统了解大模型、希望抓住AI行业机会的同学来说提前搭建完整知识体系、掌握可落地的实战技能会比盲目自学效率高很多。我自己在学习和实践过程中整理了一套从零基础到大模型实战的学习资料包含学习路线、教程、文档、行业信息与面试相关内容适合刚开始接触、不知道从哪里入手的同学参考。扫码免费领取全部内容下面简单介绍一下资料包含的内容一、大模型学习路线整体学习路径梳理从基础概念到工程落地按阶段循序渐进避免走弯路。二、0基础到进阶视频教程从入门概念到实战项目内容相对完整方便跟着节奏系统学习。三、精选学习书籍与技术文档筛选了适合入门和进阶的文档与资料省去大量找资料、筛选信息的时间。四、AI大模型行业相关报告包含近年行业趋势、应用场景、落地方向等内容帮助理解大模型在各行业的实际价值。五、面试相关资料与经验整理汇总了常见的AI大模型面试问题、知识点梳理和面经参考方便求职时针对性准备。【大厂 AI 岗位面经分享107 道】【AI 大模型面试真题102 道】【LLMs 面试真题97 道】六、大模型实战项目与源码包含可直接上手练习的项目案例从简单Demo到完整应用帮助把理论转化为实战能力。适用人群四阶段学习规划共90天可落地执行第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容3、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】