自我改进 · 当 Harness 开始自我改进

上下文工程:从手写到自动进化

ACE → MCE → Meta-Harness:优化对象从 prompt 内容演进到管理机制代码

本页解决的问题

先给结论

「上下文工程:从手写到自动进化」要解决的关键问题是什么?

ACE → MCE → Meta-Harness:优化对象从 prompt 内容演进到管理机制代码

判断标准

让这个结论先证明自己值得留下。 把这一页当成决策工具,而不是需要背下来的定义。把概念连到一个真实任务、一个可观察结果,以及一个能改变你判断的失败上。

下一步

写下一个问题:试完这个方法后,你能用什么证据回答它?

常见误区

结论听起来很完整,却没有检查最关键的假设。

优化对象的演进
Level 1
指令 Prompt
Level 2
结构化上下文
Level 3
工作流
Level 4
Harness 代码
Level 5
优化器代码
模型越智能、越强大,我们能优化的目标就越复杂、方法越通用。这条演进线从调 prompt 一路到优化写优化器的代码。
问题:上下文膨胀
简单追加 = 失控
把所有工具响应和模型生成简单追加到上下文中,随着 Agent 任务时长增加会迅速失控。

长上下文研究会持续进步,但目前长上下文智能上下文工程往往交织在一起:上下文管理是在 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 Framework
ACE 框架:Generator 生成轨迹 → Reflector 提炼洞察 → Curator 增量更新上下文剧本。(来源:Zhang et al. 2025)
关键设计:Curator 输出结构化的 (identifier, description) 条目,用确定性逻辑合并进剧本,从不重写整块 prompt blob。这避免了迭代重写时的上下文坍缩和简洁偏差。
MCE:Meta Context Engineering
💬 说人话:ACE 是把手册整理好,MCE 追问了一个更深的问题:整理手册的方法本身是不是也能优化?比如按时间排还是按主题排?记大纲还是记细节?MCE 把记什么(内容)和怎么记(方法)分开,两头一起进化:不仅笔记越来越好,记笔记的方法也越来越聪明
分离机制与内容,双层优化
MCE(Ye et al. 2026)在 ACE 基础上更进一步:将如何管理上下文(机制/Skill)与上下文中有什么(内容)分离,在两个层面同时优化。

一个 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 Framework
MCE 框架:meta-level 技能进化搜索上下文管理机制,base-level 优化任务上下文。(来源:Ye et al. 2026)
实现:上下文函数 = 文件系统中的目录
MCE 中一个 context function 被实例化为专用目录中的文件集合:

静态文件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 用 grep/cat 按需读取,避免全塞进 prompt
• 每个提出的 harness 是文件系统中的字典:包含源码、分数、轨迹和状态更新
Meta-Harness Outer Loop
Meta-Harness 外循环优化算法:迭代创建新 harness,只保留合格者。(来源:Lee et al. 2026)
Meta-Harness Performance
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 前沿候选集。最通用但计算最重。
直观对比:看三种策略逐轮变化
就绪
朴素追加
上下文占用 (第 0 轮)
任务成功率
每轮把所有历史全部塞进上下文…
ACE 结构化
上下文占用 (第 0 轮)
任务成功率
Curator 只增量写入结构化条目…
MCE 元进化
上下文占用 (第 0 轮)
任务成功率
Skill 与内容双层同时进化…
点击上方 运行 10 轮对比,观察三种策略随轮次推进的实时变化:谁在膨胀、谁保持稳定、谁越跑越强。
核心教训:一旦 harness 设计变成可执行的搜索空间,强编码 Agent 就能利用人类工程师使用的同一设计空间。上下文工程的未来是让系统自动学会什么时候存什么、怎么检索、怎么呈现,再聪明的手写 prompt 也只是过渡。

「优化对象的演进」为什么能找到相关内容

「ACE → MCE → Meta-Harness:优化对象从 prompt 内容演进到管理机制代码」把检索问题从“把资料存起来”推进到“怎样找到真正相关的资料”。这一步决定了 RAG、推荐和以图搜图最后交给模型的输入质量。

相似度不是答案,召回之后还要核对

在「ACE → MCE → Meta-Harness:优化对象从 prompt 内容演进到管理机制代码」对应的流程里,Embedding 负责把对象放到可比较的语义空间,近邻索引负责减少搜索范围,最终的回答仍然依赖召回片段是否覆盖问题、距离指标是否合适,以及内容有没有过期。

先区分找得到和找得准

把「ACE → MCE → Meta-Harness:优化对象从 prompt 内容演进到管理机制代码」落成一次小测试:准备几条有明确答案的查询,记录召回的相关性、遗漏和无关结果,再决定是否需要换切分方式、索引或重排。

从「优化对象的演进」走到「问题:上下文膨胀」

「优化对象的演进」先把问题落在「Level 1 指令 Prompt Level 2 结构化上下文 Level 3 工作流 Level 4 Harness 代码 Level 5 优化器代码 模型越智能、越强大,我们能优化的目标就越复杂、方法越通用。这条演进线从调 prompt 一路到优化写优化器的代码」上;到了「问题:上下文膨胀」,讨论继续推进到「简单追加 = 失控 把所有工具响应和模型生成 简单追加 到上下文中,随着 Agent 任务时长增加会迅速失控。 长上下文研究会持续进步,但目前 长上下文智能 和 上下文工程 往往交织在一起:上下文管理是在 LLM 有限注意力下构建更结构化、简洁上下文的关键层」。两段连起来,重点就不只是记住一个结论,而是看清它成立所依赖的条件。

把这条判断带到下一个场景

检索系统也可以这样看:先确定什么算相关,再观察召回是否覆盖问题,最后检查排序、切分和时效性有没有把真正有用的内容挤出去。

  • 「优化对象的演进」:Level 1 指令 Prompt Level 2 结构化上下文 Level 3 工作流 Level 4 Harness 代码 Level 5 优化器代码 模型越智能、越强大,我们能优化的目标就越复杂、方法越通用。这条演进线从调 prompt 一路到优化写优化器的代码
  • 「问题:上下文膨胀」:简单追加 = 失控 把所有工具响应和模型生成 简单追加 到上下文中,随着 Agent 任务时长增加会迅速失控。 长上下文研究会持续进步,但目前 长上下文智能 和 上下文工程 往往交织在一起:上下文管理是在 LLM 有限注意力下构建更结构化、简洁上下文的关键层
  • 「直观对比:看三种策略逐轮变化」:运行 10 轮对比 重置 就绪 朴素追加 上下文占用 (第 0 轮) — 任务成功率 — 每轮把所有历史全部塞进上下文… ACE 结构化 上下文占用 (第 0 轮) — 任务成功率 — Curator 只增量写入结构化条目… MCE 元进化 上下文占用 (第 0 轮) — 任务成功率 — Skill 与内容双层同时进化… 点击上方 运行 10 轮对比 ,观察三种策略随轮次推进的实时变化:谁在膨胀、谁保持稳定、谁越跑越…

最后的「直观对比:看三种策略逐轮变化」把讨论落到「运行 10 轮对比 重置 就绪 朴素追加 上下文占用 (第 0 轮) — 任务成功率 — 每轮把所有历史全部塞进上下文… ACE 结构化 上下文占用 (第 0 轮) — 任务成功率 — Curator 只增量写入结构化条目… MCE 元进化 上下文占用 (第 0 轮) — 任务成功率 — Skill 与内容双层同时进化… 点击上方 运行 10 轮对比 ,观察三种策略随轮次推进的实时变化:谁在膨胀、谁保持稳定、谁越跑越…」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。

标记为已学完 阅读进度会自动记录
← 上一篇下一篇 →

继续阅读

同一条线上的下一篇。

文章讨论

读到这里,留下一个判断。

把刚想明白的地方、还没想通的问题,留给下一位一起学习的人。

正在讨论 上下文工程:从手写到自动进化 当 Harness 开始自我改进
3条讨论文章讨论 · 与共学社区同步
在共学社区查看
AM
Asha Morgan内容编辑
观点实践记录

我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。

文章讨论7 有帮助
LH
Lin Harper独立开发者
观点观点

读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。

文章讨论5 有帮助
KM
Kiki Moore产品运营
问题问题

如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。

文章讨论4 有帮助