PART 5 · Harness 与自我改进
上下文工程:从手写 Prompt 到自动进化
随着 Agent 任务变长,上下文管理不再是可选项——它正在成为 Harness 优化的核心战场。
优化对象的演进
模型越智能、越强大,我们能优化的目标就越复杂、方法越通用。这条演进线从"调 prompt"一路到"优化写优化器的代码"。
问题:上下文膨胀
简单追加 = 失控
把所有工具响应和模型生成简单追加到上下文中,随着 Agent 任务时长增加会迅速失控。
长上下文研究会持续进步,但目前长上下文智能和上下文工程往往交织在一起——上下文管理是在 LLM 有限注意力下构建更结构化、简洁上下文的关键层。
长上下文研究会持续进步,但目前长上下文智能和上下文工程往往交织在一起——上下文管理是在 LLM 有限注意力下构建更结构化、简洁上下文的关键层。
ACE:Agentic Context Engineering
说人话:"上下文"就是 AI 的工作记忆——它眼前能看到的所有资料。ACE 的思路是:别让记忆变成一锅粥,而是维护一本条理清晰的"工作手册"。干活的人(Generator)照手册干活,复盘的人(Reflector)总结经验教训,管手册的人(Curator)把教训一条条整理进手册。手册越用越精,而不是越用越厚。
上下文是"不断演进的剧本",而非"不断增长的 Prompt"
ACE(Zhang et al. 2025)维护一份结构化的 bullet point 剧本,每条包含 identifier 和 description。三个组件协作维护这份剧本:
组件 1
Generator 生成器
执行任务、生成轨迹,参考剧本中的 bullet points 作为指引。
组件 2
Reflector 反思器
从成功和失败的轨迹中提炼洞察,萃取经验教训。
组件 3
Curator 策展器
用增量的、条目化的 entries 更新结构化上下文,定期精炼去重。
ACE 框架:Generator 生成轨迹 → Reflector 提炼洞察 → Curator 增量更新上下文剧本。(来源:Zhang et al. 2025)
关键设计:Curator 不重写整块 prompt blob——而是输出结构化的 (identifier, description) 条目,用确定性逻辑合并进剧本。这避免了迭代重写时的"上下文坍缩"和"简洁偏差"。
MCE:Meta Context Engineering
说人话:ACE 是"把手册整理好",MCE 追问了一个更深的问题:"整理手册的方法"本身是不是也能优化?比如按时间排还是按主题排?记大纲还是记细节?MCE 把"记什么"(内容)和"怎么记"(方法)分开,两头一起进化——不仅笔记越来越好,记笔记的方法也越来越聪明。
分离"机制"与"内容",双层优化
MCE(Ye et al. 2026)在 ACE 基础上更进一步:将如何管理上下文(机制/Skill)与上下文中有什么(内容)分离,在两个层面同时优化。
一个 MCE Skill 定义了上下文函数
• ρ = 静态组件(prompts、知识库、代码库)
• F = 动态算子(搜索、选择、过滤、格式化)
一个 MCE Skill 定义了上下文函数
c = F(x; ρ):• ρ = 静态组件(prompts、知识库、代码库)
• F = 动态算子(搜索、选择、过滤、格式化)
下面的公式在说啥:就两句话——内层:用当前的记笔记方法,把笔记写到最好;外层:比较不同的记笔记方法,选出最好的那套方法。先优化"内容",再优化"方法",轮流来。
双层优化:
内层: c* = argmax J_train(c; s) ← 给定 skill s,找最优上下文
外层: s* = argmax J_val(c*) ← 找最优 skill(在验证集上)
Skill 数据库: H = {(s_i, c_i, J_train_i, J_val_i)} 跟踪历史
技能进化: s_new = crossover(task, H) ← Meta-agent 执行 agentic crossover
上下文优化: c_new = engineer(task, s_new; c_prev, Rollouts)
MCE 框架:meta-level 技能进化搜索上下文管理机制,base-level 优化任务上下文。(来源:Ye et al. 2026)
实现:上下文函数 = 文件系统中的目录
MCE 中一个 context function 被实例化为专用目录中的文件集合:
• 静态文件:
• 动态文件:上下文数据和 rollout 记录
meta-level 和 base-level 优化都在标准编码环境中执行,使用工具集:
• 静态文件:
skill.md(存储任务最重要的知识)• 动态文件:上下文数据和 rollout 记录
meta-level 和 base-level 优化都在标准编码环境中执行,使用工具集:
Read, Write, Edit, Bash, Glob, Grep, TodoWrite
Meta-Harness:优化 Harness 的 Harness
说人话:这是套娃的最外层。ACE 优化笔记内容,MCE 优化记笔记的方法,Meta-Harness 直接优化整个工作台的源代码——相当于不只换工具、换方法,而是让 AI 重新装修整个车间。威力最大,但也最烧算力(每改一版都要完整试运行打分)。
优化对象:决定信息存储、检索和呈现的代码
Meta-Harness(Lee et al. 2026)更深一层:被优化的不是上下文内容,而是决定什么信息应该被存储、检索和呈现给模型的代码本身。它是"优化 Harness 的 Harness"。
• Proposer 本身是一个编码 Agent
• 输出是 Pareto 前沿上的 Harness 候选集合
• 执行历史通过文件系统访问——coding agent 用
• 每个提出的 harness 是文件系统中的字典:包含源码、分数、轨迹和状态更新
• Proposer 本身是一个编码 Agent
• 输出是 Pareto 前沿上的 Harness 候选集合
• 执行历史通过文件系统访问——coding agent 用
grep/cat 读取,而非全塞进 prompt• 每个提出的 harness 是文件系统中的字典:包含源码、分数、轨迹和状态更新
Meta-Harness 外循环优化算法:迭代创建新 harness,只保留合格者。(来源:Lee et al. 2026)
Meta-Harness 在文本分类和 TerminalBench-2 上的表现。注意 TerminalBench-2 实验从已有强 harness 初始化。(来源:Lee et al. 2026)
三种方法对比
ACE
从轨迹中学习
用规则化的 Generator→Reflector→Curator 管线维护结构化 bullet points。更新规则仍手工设计。
MCE
进化管理机制
不固定上下文格式,用 free-form skills 存储知识,双层迭代进化 skill 和 context。机制本身可变。
Meta-Harness
优化整个系统代码
Proposer 是编码 Agent,优化对象是 harness 源码本身,输出 Pareto 前沿候选集。最通用但计算最重。
直观对比:看三种策略逐轮变化
就绪
朴素追加
每轮把所有历史全部塞进上下文…
ACE 结构化
Curator 只增量写入结构化条目…
MCE 元进化
Skill 与内容双层同时进化…
点击上方 运行 10 轮对比,观察三种策略随轮次推进的实时变化:谁在膨胀、谁保持稳定、谁越跑越强。
核心教训:一旦 harness 设计变成可执行的搜索空间,强编码 Agent 就能利用人类工程师使用的同一设计空间。上下文工程的未来不是更聪明的手写 prompt,而是让系统自动学会"什么时候存什么、怎么检索、怎么呈现"。