← Home

Meta Context Engineering via Agentic Skill Evolution

Haoran Ye、Xuning He、Vincent Arak et al. · Peking University(State Key Laboratory of General AI) · 2026-02-11 · arXiv:2601.21557

MCE:连「怎么管上下文」这个机制,也交给进化

> 量子位技术拆解 · 先给分层直觉再给形式。完整结构化数据见「速查」tab。

先看一个现象:上下文工程(Context Engineering,CE)火起来以后,方法各带各的结构偏见。GEPA 追求 brevity,上下文固定压到 1–2K token,领域细节被丢掉;ACE 反向膨胀,条目化 playbook 五轮之后能长到约 80K token;Dynamic Cheatsheet 整体重写,长到一定程度就 collapse。为什么没有一种「刚好的长度」?MCE(Meta Context Engineering,arXiv 2601.21557)给出的回答是:因为「怎么组织上下文」这个机制本身是手工设计的,而手工设计必然带偏置

它的解法是把 CE 拆成两层:meta 层进化「skill」——一份定义上下文如何表示与学习的可执行规格;base 层按 skill 把上下文当文件与代码优化。机制与内容分离,两层一起进化。

核心机制:双层优化 + agentic crossover

先给形式。设上下文函数 $c(x)$ 把查询 $x$ 映射到上下文,由静态组件 $\rho = \{\rho_1,\dots,\rho_m\}$(系统 prompt、知识库、代码库)与动态算子 $F = \{F_1,\dots,F_k\}$(检索、过滤、格式化、组合)组成:

$$c(x) = (F_k \circ \cdots \circ F_1)(x; \rho)$$

传统 CE 固定 $(\rho, F)$ 的结构,只优化里面的内容。MCE 引入 skill $s$——它决定 $(\rho, F)$ 该长什么样、该怎么从数据里学。于是优化变成双层:

$$s^{*} = \arg\max_{s \in \mathcal{S}}\, J_{\text{val}}(c_s^{*}) \quad\text{s.t.}\quad c_s^{*} = \arg\max_{c_s}\, J_{\text{train}}(c_s; s)$$

逐项看:内层在给定 skill 下找最优上下文函数(训练集上的 $J_{\text{train}}$);外层找那个让验证集性能 $J_{\text{val}}$ 最高的 skill。这类似把「模型架构与训练算法」和「学到的参数」分开,只不过发生在上下文层面。类比机器学习:参数是学出来的,架构和优化器是设计出来的;MCE 让「架构和优化器」也进化。

进化怎么跑?agentic crossover:meta agent 读技能历史库 $\mathcal{H}_{k-1} = \{(s_i, c_i, J_i^{\text{train}}, J_i^{\text{val}})\}$,选择性重组祖先 skill 目录里的组件,生成新 skill;base agent 在编码环境(Read/Write/Edit/Bash/Glob/Grep/TodoWrite)里执行它,把上下文函数写成文件与代码,带签名接口供程序化调用。外层用 (1+1)-ES 精英保留——每次只留优于当前最优的 skill。

Figure 2:MCE 双层框架——meta 层 skill 进化 + base 层上下文优化

实现层面有个值得展开的细节:上下文函数被实例化成工作目录里的一堆文件——CE/SKILL.md 存 skill 指令,context/ 存静态组件与动态算子,data/ 存 rollout。base agent 用标准工具集(读、写、编辑、跑 bash、glob、grep、todo)在目录里施工,产出必须带预定义输入输出签名的可调用接口,接口在每次执行完会被校验。这套「文件即上下文」的约定让双层循环都跑在同一个编码环境里,也让「改上下文」变成一次普通的文件编辑——可版本化、可审计、可复用。

关键结果:平均 +16.9%,训练快 13.6×

评估覆盖五个域:FiNER(金融)、USPTO-50k(化学)、Symptom2Disease(医学)、LawBench(法律)、Aegis2.0(AI 安全),生成器 DeepSeek V3.1、agentic 模型 MiniMax M2.1:

  • 相对 SOTA(ACE)平均 +16.9%,范围 5.6%–53.8%(abstract)。
  • offline 相对 base 模型增益 89.1% vs ACE 的 70.7%;online 74.1% vs 41.1%(§4.2.1)。
  • 小模型受益最大:Gemma3-4B 挂上 MCE 学出的上下文,平均相对增益 172.6%(Table 2)。
  • 训练效率:FiNER 上 5 epoch 只要 1.9 小时,ACE 要 25.8 小时——13.6× 加速来自 batch-level 优化,一次 rollout 处理一批样本(Fig.4)。
  • 上下文长度无偏:GEPA 固定在 1–2K、ACE 涨到 80K,MCE 按任务学出 1.5K(FiNER 之一)到 86K(USPTO-50k)的合适长度(Fig.3)。
  • Figure 3:上下文效率——长度按任务自适应

    消融与 confound 检验也很干净:去掉 meta 层 skill 进化,offline 从 75% 掉到 73%(仍超 ACE 的 71%);把 ACE 的 reflector/curator 换成 MiniMax M2.1,ACE 反而从 70% 退到 67%、playbook 膨胀到 114K token——说明 MCE 的增益来自方法本身,来自换更强的 agentic 模型

    局限:推理任务、长轨迹、成本

    1. 推理密集任务未必更好:作者自承,需要细粒度 credit assignment 的长轨迹场景,现有的手工 harness(迭代试错+反思)可能更合适(§4.5)。

    2. 强依赖 agentic 模型:meta/base agent 的编码与文件操作能力决定上限,作者预期随 agent 模型进步而缓解——但这意味着门槛不低。

    3. 在线模式退化:skill 进化需要多 epoch,在线单遍处理只能用 base-only 模式,适应性打折(§4.2.4)。

    4. 成本未完整披露:全 agentic 双层循环 + 编码工具调用的 token 消耗远大于传统 CE,论文没有完整成本表。

    一句话记住这篇

    MCE 把上下文工程从「优化上下文内容」升级为「优化管上下文的机制」:meta 层 agentic crossover 进化 skill,base 层把上下文当文件与代码优化,双层 (1+1)-ES 驱动。最该记住的数字是:相对 ACE 平均 +16.9%,FiNER 训练快 13.6×,上下文长度从 1.5K 到 86K 按任务自适应;最该记住的边界是——推理密集与长轨迹任务上,它可能比手工 harness 差。

    机制与内容分离的双层上下文优化:meta 层用 agentic crossover 进化「怎么管上下文」的 skill,base 层按 skill 把上下文当文件与代码优化;五个域相对 SOTA agentic CE 方法平均 +16.9%(范围 5.6–53.8%),FiNER 训练比 ACE 快 13.6×,上下文长度按任务自适应(1.5K–86K token)。

    问题

    要解决什么:现有 Context Engineering(CE)方法被手工设计的 harness 绑住:ACE 用固定的生成-反思-策展 workflow 和预定义条目 schema,GEPA 倾向 brevity 压缩,DC 累积式改写会膨胀——结构偏差把上下文优化限制在窄小、凭直觉的设计空间里。MCE 要回答:连「怎么组织与学习上下文」的机制本身,能不能也变成优化对象。

    为什么 prior work 不够:单一 agentic harness 没有普适最优:schema 化的条目列表带来结构刚性(ACE),全 LLM 重写带来 brevity bias(GEPA)与 context bloat(DC 到 80K token);这些方法把『表示/学习上下文的规程』当固定外设,只优化上下文内容本身。

    进化循环(搜索空间 → 算子 → 评估 → 选择)

    搜索空间(什么被进化):双层:meta 层进化 skill s(可执行规格:指令 + 脚本 + 资源,如 CE/SKILL.md 目录),它定义上下文如何表示与学习;base 层在给定 skill 下优化上下文函数 c=(ρ,F)——ρ 是静态组件(prompt/知识库/代码库),F 是动态算子(检索/过滤/组合)。两者以文件与代码形式存在、均可编辑;核心 agent 架构与工具集(Read/Write/Edit/Bash/Glob/Grep/TodoWrite)只读。

    变异/提案算子

    • agentic crossover:meta agent 审视技能历史库(skill/执行/评估三元组 H),选择性重组祖先 skill 目录中的组件生成新 skill
    • base-level engineer:agent 执行 skill s_k,从 rollout 反馈学习上下文函数 c_k
    • (1+1)-ES 精英循环驱动双层交替优化

    评估方式:内层 J_train:给定 skill 下最大化训练集上的上下文函数性能;外层 J_val:skill 在验证集上的表现。五域基准:FiNER(金融)、USPTO-50k(化学)、Symptom2Disease(医学)、LawBench criminal charge(法律)、Aegis2.0(AI 安全);DeepSeek V3.1 默认生成器、MiniMax M2.1 作 agentic 模型,经 OpenRouter 调用。

    选择与归档:best-so-far 精英保留((1+1)-ES):每次迭代只保留优于当前最优的 skill;skill 数据库维护 (s_i, c_i, J_train, J_val) 历史供 crossover 参考;无显式种群多样性控制——多样性靠 agentic crossover 对历史的选择性重组维持。

    自我改进程度:L1:生成器/reflector/agentic 模型固定,skill(管上下文的机制)与上下文内容协同进化;进化规程本身(crossover 操作、(1+1)-ES)仍是手工设计的。

    输入 / 输出

    输入

    名称类型说明

    输出

    名称类型说明

    数据集

    数据规模备注

    架构(摘要)

    主干与结构

    backbone

    参数

    类型

    → 详见 Architecture tab。

    关键结果

    指标最强 baselinesetup
    相对 SOTA agentic CE 方法的改进平均 +16.9%(范围 5.6%–53.8%)ACE(SOTA agentic CE 方法)FiNER / USPTO-50k / Symptom2Disease / LawBench / Aegis2.0 五域,abstract + §4(p1/p10)
    相对 base 模型的平均增益(offline)89.1%(MCE)ACE 70.7%(第二名)五个 benchmark 平均,DeepSeek-V3.1 作生成器,Table 1(§4.2.1,p7)
    相对 base 模型的平均增益(online)74.1%(MCE)ACE 41.1%在线设置,单遍处理测试集(§4.2.1,p7)
    小模型迁移增益Gemma3-4B + MCE 上下文平均相对增益 172.6%无上下文 Gemma3-4B;对比 ACE 迁移Table 2(p8),FiNER/Symptom2Disease/LawBench 三域
    训练耗时(FiNER,5 epoch)1.9 小时(13.6× 加速)ACE 25.8 小时Fig.4(p9);MCE 的 batch-level 优化一次 rollout 处理一批样本
    上下文长度自适应FiNER 最优上下文 1.5K / 20K token;LawBench 44K;USPTO-50k 86KGEPA 固定约 1–2K;ACE 5 epoch 后膨胀至约 80KFig.3 + §4.2.2(p9);200 个训练实例的设置下(§4.2.2 上下文)
    消融:meta 层 skill 进化的贡献完整 MCE 75% vs 无 skill 变体 73%(offline)无 skill 的 base-agent 单独跑(也超 ACE 的 71%)§4.2.4(p8);online 单遍处理无法迭代 skill,所以 skill 进化只在 offline 生效
    模型 confound 排除把 ACE 的 reflector/curator 换成 MiniMax M2.1 反而退化:67% vs 70%,playbook 114K vs 79K tokenACE 默认 DeepSeek V3.1 配置Table 4(p8)——MCE 的增益来自方法而非更贵的 agentic 模型

    Insights

    vs 同类工作

    局限

    可复现性

    context-engineering skill evolution bi-level optimization agentic crossover self-improvement (1+1)-ES

    MCE 架构:双层进化循环数据流

    Mermaid 数据流

    flowchart TD
        subgraph META["Meta 层:skill 进化"]
            SK["Skill Database\n{(s_i, c_i, J_train_i, J_val_i)}"]
            MO["Meta-agent\n(读历史 + 评估指标)"]
            XO["Agentic Crossover\n(选择性重组祖先 skill 组件)"]
            NS["新 Skill\n(CE/SKILL.md 指令 + 脚本 + 资源)"]
            SK --> MO --> XO --> NS
        end
    
        subgraph BASE["Base 层:上下文优化"]
            BA["Base-agent Engineer\n(编码工具集:Read/Write/Edit/\nBash/Glob/Grep/TodoWrite)"]
            CF["Context Function\n(文件 + 代码:\n静态组件 ρ + 动态算子 F)"]
            RO["Training Rollouts\n(按批次执行 + 反馈)"]
            BA --> CF --> RO --> BA
        end
    
        NS -->|"执行 skill"| BA
        RO -->|"评估 J_train / J_val"| MO
        CF -->|"最优上下文 c*"| INF["Inference with Optimized Context"]
        RO --> SK

    组件详解

    • Meta-agent(元层优化器):读取技能历史库(每个 skill 附带的上下文函数与训练/验证指标),决定如何把祖先 skill 中「各自成功」的部分交叉重组。交叉粒度是 skill 目录组件级,比整份文本变异更精细、更有上下文意识。
  • Agentic Crossover(交叉算子):agent 先读历史、再选择性重组组件,是一种有上下文意识的遗传算子——相比固定变异 prompt 的进化方法,它能在组件粒度上定向组合。
  • Base-agent Engineer(基层工程师):执行 skill 定义的规程,在编码环境中把上下文函数写成文件与代码。要求实现带预定义输入输出签名的可调用接口,保证 rollout 与评估能程序化调用;接口完成时会被校验。
  • Context Function(上下文工件):文件系统里的目录——静态组件(prompt/知识库/代码库)+ 动态算子(检索/过滤/组合逻辑)+ rollout 数据;表示自由,不受 schema 约束。
  • (1+1)-ES 精英循环:每次迭代产出 1 个新 skill,只在优于当前最优时保留;历史全部进数据库供下次 crossover 参考。简单到极致——把「搜索策略」的复杂度交给 agent 而不是手工编码。
  • 双层交接点:内层(给定 skill 优化上下文)在外层(选择 skill)的每次评估前完成;训练 rollout 既喂 base 层学上下文,也汇总成 meta 层的评估信号。
  • 设计要点

    1. 机制与内容分离:skill 是「怎么学/怎么表示」,上下文是「学到的结果」;分离让上层机制可跨任务迁移。

    2. 上下文代码化:Turing-complete 表示 + 可验证接口,比条目 schema 通用;编码能力是 LLM 的强项,搜索效率高。

    3. 长度自适应:没有预设上下文长度偏置(对比 GEPA 1–2K、ACE 80K),长度由任务数据决定——这直接带来小模型迁移收益(Gemma3-4B 相对 +172.6%)。

    4. batch-level 训练:一次 rollout 处理一批样本,替代逐样本更新,是 13.6× 训练加速的结构性来源。

    5. 只读边界:核心 agent 架构与工具集固定,两个 agent 的读写权限按角色与迭代严格限定——进化的是 skill 与上下文,系统骨架不进化。

    Figure 2 p.4 key

    MCE 双层框架:meta 层 skill 进化 + base 层上下文优化

    MCE 双层框架:meta 层 skill 进化 + base 层上下文优化

    原文 caption:Methodological overview of Meta Context Engineering (MCE).

    展示机制:meta 层读 skill 数据库与评估指标、经 agentic crossover 生成新 skill;base 层按 skill 在编码环境中把上下文函数当文件/代码工程化,训练 rollout 与验证反馈闭环。读法:看上下两条回路如何通过 skill 与上下文函数交接。为什么重要:它把「机制与内容分离」落到具体数据流——上层进化怎么管,下层进化管什么,是全文架构的核心证据。

    Figure 1 p.1 supportive

    MCE 概念总览:magic formula 与双层循环

    MCE 概念总览:magic formula 与双层循环

    原文 caption:A conceptual overview of Meta Context Engineering (MCE) in a cartoon style. MCE operates as a bi-level optimization framework where a meta-agent drives skill evolution while a base-agent manages context optimization.

    用示意图讲清四步:meta agent 经 agentic crossover 进化 skill、base agent 执行 skill 构建上下文工件、系统从执行历史与环境反馈学习、skill 与上下文协同进化。读法:看右侧 skill 数据库(Skill A 65% / B 72% / C 68%)与「怎么把最好部分组合起来」的提问。为什么重要:它给出「+10% 改进」的直觉来源——把已有 skill 里各自成功的部分交叉出新 skill。

    Figure 3 p.9 supportive

    上下文效率:MCE 按任务学长度,避开 brevity 与 bloat 两个偏置

    上下文效率:MCE 按任务学长度,避开 brevity 与 bloat 两个偏置

    原文 caption:Context efficiency on FiNER. We plot context accuracy vs. context tokens. For MCE, we include the context generated in two iterations. For ACE, we include context at Step 20 of Epoch 1, end of Epoch 1, 2, and 5.

    证明「长度无偏」:GEPA 固定在约 1–2K token(brevity bias),ACE 膨胀到约 80K token(bloat),MCE 的两个最优上下文落在 1.5K 与 20K——按任务特性选择。读法:看散点的 token 分布与对应准确率。为什么重要:它把「结构偏差」量化成可见的上下文长度轨迹,是 MCE 相对前作的核心差异证据。

    连「怎么给模型写上下文」这件事,也让模型自己进化(对话版)

    小播:今天聊一篇北大团队的论文,讲上下文工程的升级版。先说结论?

    老播:这篇叫 MCE,Meta Context Engineering。一句话:以前的方法优化的是「上下文里有什么」,这篇把「怎么组织上下文」这个机制本身也拿来进化。在五个领域上,相对当前最强的 ACE 平均提升了 16.9%,训练还快了 13.6 倍。

    小播:等一下,「怎么组织上下文」不是人设计的吗?这也能量化优化?

    老播:这就是它的核心主张:人设计的机制都带偏置。我们从头讲。

    问题:每个方法的上下文都有「出厂偏置」

    小播:什么偏置?

    老播:GEPA 追求简洁,上下文固定压到 1 到 2K token,领域细节全丢——这是 brevity bias。ACE 反过来,条目化 playbook 越养越大,五轮训练后能到 8 万 token——这是 context bloat。Dynamic Cheatsheet 整体重写,长到一定程度直接坍缩。

    小播:那「刚好的长度」谁来定?

    老播:MCE 说:让机制自己学。它把问题拆成两层——meta 层进化一个叫 skill 的东西,skill 是一份可执行的规格,定义上下文该怎么表示、怎么从数据里学;base 层按这个 skill,把上下文当成文件和代码来优化。

    小播:那和 ACE 有什么区别?ACE 不也是内容在进化吗?

    老播:区别在这:ACE 的三角色分工、条目结构、更新规则全是人写的,内容在进化、机制是死的。MCE 连机制一起进化。它有个很干净的类比:机器学习里,参数是学出来的,架构和优化器是设计出来的;MCE 让「架构和优化器」也变成学出来的。

    机制:双层优化加 agentic crossover

    小播:具体怎么跑?

    老播:先给公式。上下文函数 c 由两部分组成:静态组件 rho,就是系统提示、知识库、代码库;动态算子 F,就是检索、过滤、格式化这些操作。写成 c(x) 等于 Fk 复合到 F1 再作用在 x 上,参数是 rho。

    小播:这个公式 ACE 也有吧?

    老播:有,但 ACE 优化的是 rho 和 F 的内容,结构固定。MCE 多了一层:skill s 决定 rho 和 F 该长什么样。于是变成双层优化——内层在给定 skill 下,找训练集上最好的上下文函数;外层找那个让验证集表现最好的 skill。两个 argmax 叠在一起,就是论文的核心公式。

    小播:那「进化」怎么实现?

    老播:关键算子叫 agentic crossover。meta agent 先读技能历史库——每个 skill、它产出的上下文、它的训练和验证分数——然后像遗传算法交叉一样,把祖先 skill 里各自成功的组件重新组合成新 skill。base agent 在一个编码环境里执行它,用读文件、写文件、跑 bash 这些工具,把上下文函数真的写成代码。外层用一个最简的 (1+1) 精英策略:每次只留比当前最好的更好的那个。

    小播:所以是让 agent 自己决定怎么交叉?

    老播:对,记住这个记忆锚点:交叉先看历史再选择性重组,把搜索策略的复杂度交给 agent 本身。

    数字:全面领先

    小播:数字呢?

    老播:五个领域,金融、化学、医学、法律、AI 安全。相对 ACE 平均提升 16.9%,范围从 5.6% 到 53.8%。离线设置下相对基座模型的增益是 89.1%,ACE 是 70.7%;在线设置 74.1% 对 41.1%。

    小播:有没有更直观的?

    老播:先记一个记忆锚点:batch-level 优化——一次 rollout 处理一批样本,这是它比逐样本更新的 ACE 快一个数量级的结构性原因,后面那个 13.6 倍就来自这里。

    老播:小模型收益最大。Gemma3-4B 挂上 MCE 学出的上下文,平均相对增益 172.6%。还有一个特别能说明问题的:FiNER 上训 5 轮,MCE 用 1.9 小时,ACE 要 25.8 小时——13.6 倍加速。原因也简单:MCE 一次 rollout 处理一批样本,ACE 是一个样本一个样本地更新。

    小播:那上下文长度呢?不是说要有偏置吗?

    老播:MCE 学出来的长度是 1.5K 到 86K 不等,按任务定。GEPA 永远 1 到 2K,ACE 五轮后固定 8 万。这就能看出偏置没了。

    排除干扰:不是模型更强的功劳

    小播:它用的 agentic 模型是 MiniMax M2.1,会不会是模型更强?

    老播:作者专门做了这个对照:把 ACE 的反思器和策展器也换成 MiniMax M2.1,结果 ACE 反而从 70% 退到 67%,playbook 还膨胀到 11 万 4 千 token。这说明增益来自 MCE 的方法本身。

    小播:那消融呢?

    老播:把 meta 层的 skill 进化拿掉,MCE 从 75% 掉到 73%,但仍然超过 ACE 的 71%。也就是说 base 层单独跑也够强,skill 进化是锦上添花,但确实是实打实的提升。

    泼冷水:哪些场景它不行

    小播:它有什么短板?

    老播:作者自己承认三点。第一,推理密集的任务它未必更好——那种需要一步一反思、细粒度归因的长轨迹任务,现有手工 harness 反而合适。第二,它强依赖 agentic 模型的能力,编码和文件操作不行,效果就缩水。第三,skill 进化需要多轮训练,在线单遍处理只能用底层模式,适应性打折。

    小播:还有隐藏成本吗?

    老播:有,而且论文没给完整账本:双层全 agentic 循环加编码工具调用,token 消耗远大于传统方法。另外评估还是靠标准答案和验证集信号,更开放的任务上 reward hacking 和上下文污染的问题,论文没有讨论。

    收尾

    小播:最后用一句话总结?

    老播:MCE 把上下文工程从「优化上下文内容」升级为「优化管上下文的机制」:meta 层用 agentic crossover 进化 skill,base 层把上下文当文件和代码优化,双层精英循环驱动。最该记住的数字是:相对 ACE 平均 +16.9%,训练快 13.6 倍,上下文长度 1.5K 到 86K 按任务自适应。

    小播:而最该记住的边界是:推理密集和长轨迹任务上,它可能比手工 harness 差。

    老播:没错。这篇把「机制也进化」这条路走通了一半,读它之前先记住那句类比:参数是学出来的,架构和优化器现在也可以是学出来的。