跳转至

MoMHa: Multi-Objective Optimization of LLM Harnesses over Accuracy, Safety, and Tokens

会议: NeurIPS2026(任务队列归属;本文按 arXiv v1 解读)
arXiv: 2609.30967v1
领域: LLM Agent
关键词: 程序外壳搜索、多目标优化、执行轨迹、行为安全、Token 成本

一句话总结

MoMHa 在不更新模型权重的前提下,让 proposer 根据执行轨迹改写 Python 程序外壳,联合优化准确率、行为安全和 Token 成本;作者报告合成与真实基准的联合均值领先,但指标缩放、两阶段定义和成本口径存在需澄清的来源冲突。

研究背景与动机

LLM 的任务表现不仅取决于模型,还取决于外部程序如何组织输入、调用模型、判断是否重试,以及从回答中提取结果。论文把这层 Python 程序称为 harness,本文译为“程序外壳”。相同模型可以被一次调用直接包装,也可以置于带检索、条件验证、输出规范化的流程中。APE、OPRO、DSPy 和 TextGrad 等方法在本文的基线实现中主要修改固定骨架内的提示或示例;MH 则把整个 Python 外壳作为搜索对象,但以准确率为主要目标。

只搜索准确率会忽略两种不同代价:多轮验证可能使答案更可靠,却增加 Token 消耗;符合输出格式或静态代码规则,也不意味着对用户的回答具有行为安全性。反过来,统一拒绝可以减少不当回答,却会损害正常请求的帮助性。因此作者不是给准确率最优外壳事后套一个过滤器,而是在生成候选结构时就向 proposer 展示准确率、安全评分和调用成本。它需要判断究竟是提示、解析器、冗余调用还是路由决策造成问题,而不仅看到最后一个总分。

论文重点比较单阶段联合搜索与“先准确率、后削减成本”的两阶段搜索。若第一阶段已固定昂贵的双调用结构,后续只允许剪枝,未必能到达另一种成本更低的调用拓扑;这是本文实验中两阶段实现的搜索邻域限制,并不是所有分阶段优化都不可能改变结构。核心 idea:把程序外壳本身作为可改写对象,用逐例轨迹诊断结构性失败,从搜索第一轮起共同计入准确率、行为安全和 Token 成本。

方法详解

整体框架

输入是任务样本、LLM client、初始外壳以及领域技能文件;输出是一个经过搜索选择、随后冻结的 Python 外壳。搜索期间,proposer 读历史源代码、逐例得分、模型调用轨迹和元数据,提出新候选;evaluator 在可见搜索集上执行候选,logger 留下反馈,再供下一轮诊断。最终评测只运行冻结外壳,不继续搜索,也不微调目标模型。

整体流程包含“轨迹驱动改写”“受约束评估”“联合奖励选择”三个搜索设计,再接“冻结外壳迁移”。领域技能既提供策略先验,也规定安全边界。静态检查和沙箱保护执行过程,行为安全则由另一个评价协议测量,两者不能互相替代。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    I["初始外壳与领域技能"] --> A["轨迹驱动改写"]
    A -->|proposer 提交候选| B["受约束评估"]
    S["可见搜索集"] --> B
    B -->|evaluator 得分与 logger 轨迹| C["联合奖励选择"]
    C -->|历史反馈:继续搜索| A
    C -->|搜索结束:选定源代码| D["冻结外壳迁移"]
    T["隐藏测试集与目标模型"] --> D
    D --> O["预测与评测指标"]

关键设计

1. 轨迹驱动改写:让反馈定位到具体调用,而不是只告诉 proposer 分数高低

一个候选外壳可以修改提示、少样本上下文、检索、输出解析、验证或重试流程,以及不同提示或模型之间的路由。它不是生成待解任务的答案,而是生成以后负责解题的程序。有效程序须提供初始化与逐例运行接口,并返回至少含 prediction 的字典;附录还描述 tokens_used。因此优化对象是程序结构与文本配置,而不是模型参数。

proposer 的状态包括历史候选源代码、候选父子关系、各轴得分、常见错误和当前最佳外壳的调用轨迹。轨迹记录调用输入、输出、延迟和 Token 数,使 proposer 能区分“生成器答错”“解析器抽错”“验证器把正确答案改坏”等情况。历史存放在文件系统中,按需读取而非一次塞进大提示;论文报告每轮读取文件中位数为 82。这个工作方式增加了诊断上下文,也增加了未被完整统计的 proposer 成本。

技能由通用搜索说明、领域策略和领域安全说明组成。领域文件给出候选策略库,例如条件验证、数学主题路由或上下文裁剪。搜索发现的是这些策略的组合、顺序、提示和阈值,而不是从零发明所有策略。附录 O 将更新描述为当前最佳外壳上的单个结构变换,并偏好增量修改;因此“可改写完整 Python”不等于无先验、无约束的任意程序搜索。

2. 受约束评估:把代码执行合法性与回答行为安全分开测量

候选先经过 AST-Guard 静态检查和接口验证,再用模拟 client 进行低成本运行检查,通过后才在搜索集上调用真实 evaluator。附录 O 还设置资源受限的筛选评估与奖励下限,最后才允许候选竞争替换当前最佳者。作者报告每领域约 100 次 proposer 调用中,约 30 个候选通过全部关卡进入接受步骤;这不是 30 个候选都被接受。日志中的拒绝也属于搜索反馈。

安全架构在高层上包含静态分析、按领域校准的安全技能和运行沙箱。静态分析检查程序结构及不允许的操作;领域技能根据任务风险调整约束;沙箱限制执行时间、Token 与调用数量。它们针对生成程序的运行风险,不构成对程序不可绕过或部署环境绝对安全的证明。本文不展开限制绕过方式,也不复现危险提示。

能力任务采用对应的评价函数:分类和选择题看标签匹配,数学看规范化后的答案,代码看语法与测试执行,SQL 看执行结果,NER 看带类型的实体 F1。安全任务则在匹配的风险请求和正常请求上同时测量拒绝与帮助性,避免“全部拒绝”成为最优解。原文安全评分为:

\[ 0.5\times\mathrm{refusal}_{\mathrm{unsafe}}+0.5\times\mathrm{compliance}_{\mathrm{helpful}} \]

主评判模型为 Claude Sonnet 4.6,回答被归为拒绝、遵从或部分遵从,部分项给予半分。这里的 safety 是特定用户情境与基准协议下的平均行为分数,不是部署认证。代码结构安全表中的 1.00 则是静态检查口径;移除安全技能的变体也可能保留 AST 检查,不能据此推断其行为安全与完整系统相同。

3. 联合奖励选择:在决定调用结构时就计入成本与安全

搜索用线性标量奖励选择候选,但 proposer 仍能看到三个原始轴和逐例轨迹。这样总分上升时,它可以检查提升来自准确率、安全还是成本,而不是把不同失败压成无法诊断的单一数字。论文式 (3) 定义:

\[ R(h)=\mathrm{accuracy}(h)+\lambda_{s}\,\mathrm{safety}(h)-\lambda_{t}\,\mathrm{tokens}(h) \]

正文取 \(\lambda_s=1.0\),把减少 1k Token 的价值设为准确率增加 1 个百分点;附录 O 的一个实现给出 \(\lambda_t=10^{-5}\)。通过筛选的候选只有严格提高奖励才替换当前最佳者,平局优先 Token 更少者。论文也讨论 Pareto 候选池和事后超体积,但不能把这套标量化、局部改写的搜索等同于直接全局最大化超体积。

联合搜索的关键在于改变“要不要有这一步”,而不只是缩短已有步骤的提示。面对简单样本,验证调用可能增加成本甚至引入错误;面对复杂样本,额外验证仍可能值得保留。轨迹驱动的诊断可把预算留给确实需要的分支。两阶段基线先找到高准确率结构,再在准确率容忍范围内削减成本,第二阶段受已有结构邻域限制;这个限制是作者解释联合搜索优势的依据。

表格排序使用另一指标,而不是上述搜索奖励。正文式 (4) 为:

\[ J_{v,d}=\frac{\mathrm{acc}_{v,d}\cdot\mathrm{Safe}_{v}}{\ln(\mathrm{tokens}_{v,d})} \]

其中准确率和 Token 是变体在某领域的跨模型均值,\(\mathrm{Safe}_{v}\) 是该变体在三个 U-SafeBench 安全领域的平均分。它是变体级常数,被重复乘到所有能力单元格,并非该能力领域自己的安全测量。因此能力领域的联合分领先,可能部分来自别处测得的全局安全优势,不能直接解释为该任务的原始准确率领先。

两个指标都偏好更准确、更安全、更便宜的候选,但线性成本与对数成本并不保证对非支配候选给出同一排序。更重要的是,正文公式与报告数值的尺度无法直接对上:若两项分数都在单位区间,672 Token 时的理论上限约为 0.154,却出现约 0.48 的联合均值。附录 N.3 另写 \(J=6\cdot\mathrm{acc}\cdot\mathrm{Safe}/\ln(\mathrm{tokens})\)。这提供了缩放冲突的文本证据,但并未说明哪些表实际采用该版本;不能据此自行重建、校正所有表格。

4. 冻结外壳迁移:把发现结构与跨模型测试分开

合成能力领域各有 100 个由 LLM 生成、另一模型核验的样本,拆成可见的 50 个搜索样本与隐藏的 50 个测试样本。七个能力领域共 724 次外壳评估,单领域范围为 98–106;三个安全领域各约 25 次。搜索 evaluator 使用 Claude Haiku 4.5,proposer 是 Claude Code;附录 N.2 将主 proposer 标为 Claude Sonnet 4.6,不能把 proposer 与 evaluator 混为一个模型。

搜索结束后,同一程序不作修改地运行在四个模型家族组成的 12 模型队列上。本文所说的迁移是外壳结构和提示的迁移,不是训练后的权重迁移;结果为 8/12 个模型取得联合分第一,而不是所有模型都获胜。七个真实基准被正文描述为不参与搜索的泛化检查,不过附录中的真实领域技能、第二阶段说明和基线来源使“直接迁移”的具体实现仍需进一步核对。

一个完整示例

以普通事实核验为例,初始外壳可能对每个声明都进行“分解证据,再验证”的双调用处理。搜索集评估后,proposer 从轨迹观察到:部分清晰样本的第二次调用没有改善判断,却持续消耗 Token。它提出另一个候选,让清晰样本单次返回结论,只对不确定样本进入进一步核验,然后重新评估准确率、安全与成本,写入日志,并按联合奖励决定是否替换当前最佳者。

这个示例说明反馈如何改变调用图,而不是说明所有验证都应该移除。附录 K 举出的事实核验结构约为 536 对 1483 Token,但同附录另一段准确率写为 0.457,与表 8 的 0.508 不同,不能拼接成一组统一测试结果。搜索结束后保留的是选定程序;遇到隐藏测试样本时不再调用 proposer,也不根据测试答案调整结构。

损失函数 / 训练策略

没有模型权重训练、梯度下降或反向传播。所谓优化是反复生成、筛选、评估和选择 Python 外壳。两阶段设置在正文、附录 D/K/O 中是先准确率并约束安全,再在准确率容忍 2 个百分点内减 Token;附录 F 却写为先准确率/Token、再安全,属于实验定义冲突。

附录 O 还同时列出另一实现 \(R=\mathrm{acc}-\lambda(\mathrm{tokens}/\tau)\),其中 \(\lambda=0.1\)、\(\tau=1000\)。它未显式包含安全项,且 Token 系数与前述实现不一致。本文按正文说明讲联合目标,但把实际奖励路径的歧义留作复现待核实项,不假定这些实现完全等价。

实验关键数据

主实验

下表节选原文表 2,列值是作者报告的联合分而非准确率;保留原 SEM,但不将其当成已验证的独立样本置信度。真实基准实际使用约 11 个模型,附录 E 说明 GPT-5.2 只参加合成与安全评测。

Variant LawBench NuminaMath FEVER Spider HumanEval MBPP MMLU-Pro Mean
MH 0.140±.004 0.360±.005 0.421±.006 0.222±.005 0.338±.007 0.066±.002 0.389±.006 0.277
DSPy 0.218±.003 0.453±.001 0.487±.001 0.296±.001 0.438±.007 0.299±.003 0.448±.002 0.377
TextGrad 0.220±.003 0.392±.007 0.606±.002 0.211±.007 0.373±.008 0.068±.002 0.473±.004 0.335
MoMHa 0.205±.005 0.516±.007 0.641±.008 0.331±.005 0.498±.009 0.588±.009 0.446±.004 0.461

MoMHa 在真实基准赢 5/7 列;LawBench 和 MMLU-Pro 由 TextGrad 保留。合成轨道表 3 报告联合均值 0.482,TextGrad 为 0.422,MH 为 0.305;MoMHa 赢 7/10 列,但 Math 输给 DSPy,FV 与 Safeill 输给 TextGrad。0.461−0.377=0.084,与引言“+7.9 个百分点”不一致;此处按表列数字报告,不静默修改引言。

原始能力均值并非全面领先:MoMHa 为 0.539,DSPy 为 0.542。表 8 中 MoMHa 相比 MH 的 NER 准确率由 68.6% 降至 56.2%,MCQ 由 69.8% 降至 57.8%,合成数学由 51.2% 降至 49.0%,LawBench 由 35.1% 降至 34.5%。因此联合指标的胜利不能覆盖这些非胜项。

消融实验

下表来自附录 K 的十领域汇总。Overall 是七个能力域与三个安全域的平均分,不是联合指标;Avg Tokens 的 572 也不是七能力域的 672,不能混用。

Variant Capability Safety Overall Avg Tokens
MoMHa 0.539 0.781 0.611 572
2-phase 0.520 0.735 0.584 667
MoMHa-ns 0.528 0.716 0.584 620
MoMHa-noTok 0.512 0.748 0.583 641
MoMHa-scalar 0.539 0.754 0.604 640

单阶段相比两阶段 Overall 高 0.027、每例少 95 Token;去掉安全技能使行为安全低 0.065;只保留标量反馈时能力均值不变,但安全低 0.027。这支持轨迹在此协议下的诊断价值,不证明它对所有任务均有相同收益。表 9 中两阶段 HumanEval 为 85.5%,高于完整系统的 80.3%;MoMHa-noTok 的 NER 为 69.1%,高于 56.2%。

成本表节选原文表 12,单位为百万 Token。统计对象仅是搜索 evaluator 与最终评估,未覆盖完整 proposer API 成本。

Variant Search-eval (M) Final-eval (M) Total (M)
APE 9.55 5.21 14.76
MoMHa (v3joint) 9.20 6.41 15.61
2-phase 11.02 7.31 18.33
DSPy 7.69 29.35 37.04

关键发现

  • 表 4 的跨模型联合均值为 MoMHa 0.434、DSPy 0.384;MoMHa 赢 8/12。GPT-5.4 由 GEPA 获胜,GPT-5-mini、o4-mini、DeepSeek-R1 由 DSPy 获胜,不应称为全模型支配。
  • 附录 K 的超体积为 MoMHa 0.481、MH 0.362、两阶段 0.425;这是经过轴归一化的事后指标,不是搜索奖励。其参考尺度与聚合设定会影响比较。
  • 附录 N.3 的替代标量化检查中,合成轨道均第一;真实轨道加权和为第二,原始 Pareto 支配计数为第三。因此稳健性结论是“保持竞争力”,不是“所有指标都第一”。
  • 附录 N.4 只在两个领域清空技能文件:SQL 的联合分从 0.263 到 0.247,安全物理域反而从 0.712 到 0.855。领域先验可能引导搜索,也可能限制探索,不能仅凭两个领域断言普遍无依赖。
  • 本地全文只包含若干图的说明而无可读取的曲线数值;不补写缺失图中读数。附录 N.5 的第二评判模型检查提供额外证据,但样本数为 60、30、30,不能代替跨环境安全验证。

亮点与洞察

  • 最可复用的设计是把调用结构纳入搜索。减少成本不再只有压缩提示一种手段,而可以检查某一步是否值得存在;这一点比单纯报告联合分提高更有方法价值。
  • “用于选择的标量”与“用于诊断的多轴轨迹”可以分开。标量化简化候选排序,原始轨迹保留失败位置,避免把安全、解析和成本问题误诊为同一种错误。
  • 同时关注拒绝和正常请求帮助性,比只统计拒绝率更合理。但这个优势成立于具体配对数据和 judge 规则下,不能延伸为部署安全保证。

局限与展望

  • 指标与奖励路径冲突:正文联合指标没有缩放系数,附录 N.3 有系数 6;附录 O 的另一奖励表达式又缺安全项。需公布每张表对应的实现、单位与原始逐例记录,而非根据表值倒推公式。
  • 泛化与领域文件边界不清:正文声称真实基准搜索成本为零;附录 D 却讨论适用于全部领域的第二阶段技能,附录 C 说明 MH 在真实与安全域使用人工整理的 baseline,而不是统一搜索得到的外壳。真实数学又出现 NuminaMath、MATH、MATH-500 三种名称。仅凭文本无法确认映射、是否适配及完全匹配的基线流程。
  • 误差条可能有伪重复问题:表 2 写 \(\mathrm{SEM}=\sigma_{\mathrm{cross-model}}/\sqrt{11\times50}\)。若分子是跨模型均值的标准差,却把模型与样本乘积当独立试验数,误差可能被压小;同样本跨模型预测存在聚类依赖。应给出逐例定义、按模型/样本分层的 bootstrap 和独立搜索重复,而不是把小 SEM 当显著性证明。
  • 成本不是全 API 成本:正文明确把 proposer 完整 API 成本比较留待未来;附录 N.1 又称 proposer 成本可忽略,却没有支撑该断言的 Token 明细或价格核算。15.61M 小于 18.33M 与 37.04M 只在表 12 口径内成立;表 7 的全领域平均外壳推理成本反而为 MoMHa 629、MH 522,不能宣称处处更省。
  • 搜索空间与预算未完全匹配:固定骨架提示优化与完整 Python 改写不仅目标不同,表达能力、技能先验和 proposer 工作量也不同。需要相同结构搜索空间、同等总预算的目标消融,才能更干净地归因联合优化贡献。
  • 来源内部还有非胜与版本漂移:附录 F 对两阶段定义与 K 不同;O 的十领域联合均值出现 0.472,而表 3 为 0.482;K 的个别领域数字与表 8/9 不同。本文保留各处口径,不把它们拼成一套无冲突结果。
  • 安全结论范围有限:0.781 是三个特定安全域的聚合 benchmark 分数;静态检查全通过也不等于运行沙箱完备。仍需更大规模、多个 judge、分布外用户情境、帮助性分解和独立程序审计,才能评价实际部署风险。

相关工作与启发

  • vs MH / AutoHarness:都允许生成完整外壳,区别在于本文将安全与成本显式加入搜索目标。MH 是更接近的结构搜索对照,但附录所述基线来源差异削弱了“所有提升仅来自目标变化”的强归因。
  • vs DSPy / MIPROv2 / TextGrad / GEPA:本文的基线实现保留固定骨架,而 MoMHa 可改调用图;GEPA 的实例级 Pareto 多样性也不同于这里的目标轴分析。结论应限定到报告的实现,不泛化为这些框架无法表达复杂程序。
  • vs Guardrails、软提示与激活引导:外部过滤主要控制输入输出边界,软提示和激活引导通常需要模型内部访问;MoMHa 搜索的是可检查的 API 外层程序。它们可以互补,但本文没有联合部署实验。
  • 研究启发:在相同结构搜索空间内比较联合、分阶段和安全约束式搜索,并同时公布原始准确率、每域行为安全、完整 API 账单和聚类不确定性。该方向是评测与复现建议,不是本笔记新增的已验证方法。

评分

  • 新颖性: 4/5 — 将结构搜索与多轴逐例反馈结合,核心思想明确,但继承了已有外壳搜索与策略先验。
  • 实验充分度: 3/5 — 多领域、多模型和消融较丰富,搜索空间匹配、统计独立性与全成本仍不足。
  • 写作质量: 2/5 — 主线易懂,但指标缩放、两阶段定义、数学数据集名称和局部数值存在明显冲突。
  • 价值: 4/5 — 提供可复用的外壳设计视角;联合分和安全结论需在澄清实现后使用。