Solvita: 通过智能体演化增强大型语言模型在竞赛编程中的能力
大型语言模型在硬核竞赛编程中仍面临严格推理的挑战。现有多智能体框架试图弥补可靠性差距,但本质上是无状态的:它们依赖静态检索,丢弃了先前任务中积累的问题解决与调试经验。为此,我们提出 Solvita,一个智能体演化框架,无需更新底层LLM权重即可实现持续学习。 Solvita 将问题解决重组为策略选择、程序合成、认证监督和定向攻击的闭环系统,由四个专用智能体执行:Planner、Solver、Oracle 和 Hacker。关键地,每个智能体配备一个可训练的图结构知识网络。系统运行时,通过/失败判定、测试认证质量及 Hacker 发现的对抗性漏洞等结果信号,被转化为对这些网络权重的强化学习更新。这使得智能体能够基于过去成功/失败动态路由未来查询,随时间累积可迁移的推理经验。 在 CodeContests、APPS、AetherCode 和实时 Codeforces 轮次上的评估表明,Solvita 在代码生成智能体中达到了新最优,超越现有多智能体管线,并将单通基线准确率提升近一倍。
论文精读
TL;DR Solvita 将竞赛编程求解建模为闭环进化系统,借助图知识网络和强化学习,让多智能体无需更新 LLM 权重即可持续积累经验,在多个基准上准确率接近单次基线两倍,达到 SOTA。
问题
问题背景
LLMs 在竞争性编程 (competitive programming) 中解决难题时,依然面临 严格推理 与 代码正确性 的严峻挑战。虽然通用 LLMs 可生成代码,但面对 ACM-ICPC 等赛事级别的题目,其 一次通过率 (pass@k) 仍远低于实用要求。
现有方法局限
当前主流的多智能体框架 (如 Reflexion、MetaGPT) 尝试通过 角色分工 与 讨论/反思 来提升代码质量,但本质上属于 无状态 设计:
- 依赖静态检索:智能体仅能利用预设知识库,无法从执行反馈中积累易迁移的经验。
- 丢弃历史经验:每个任务独立求解,调试过程中产生的策略、失败案例、测试用例等隐性知识被直接丢弃。
- 缺乏自适应路由:面对新问题时,无法根据历史成功/失败动态选择求解策略,重复犯相同错误。
这种“只求解、不学习”的模式,导致智能体系统在 可靠性与效率 上难以突破单次请求的限制,重复执行与校对带来高昂的计算开销。
为什么这个问题难/重要
从技术角度看,将竞争性编程中的经验积累建模为 持续学习 面临三大难点:
- 非平稳决策空间:题目类型、语言、约束组合多变,传统微调会面临 灾难性遗忘;
- 稀疏奖励:代码正确的二元反馈(通过/失败)很难直接指导策略优化;
- 错误定位模糊:一次失败可能源于算法选择失误、实现 Bug、或边界条件不覆盖,定位根因困难。
从工程实践看,代码生成代理 正被集成到多个 IDE 与自动修复流水线中。若代理能「越用越聪明」,将 显著降低人工审查成本,这对于提升生产力至关重要。
行业类比
这一愿景与 自动驾驶仿真训练系统 相似:车辆在虚拟环境中不断试错,将事故场景反馈给策略模块,从而无需修改底层感知模型就能持续改进决策规划——Solvita 试图在代码智能领域实现类似的 “经验演化”。
核心洞察
- **持续经验积累替代静态检索**:Solvita 的核心创新在于将多代理协作系统从无状态变为有状态——通过为每个代理(Planner、Solver、Oracle、Hacker)配备可训练的**图结构化知识网络**,并将整个解题流程的输出信号(通过/失败判定、测试认证质量、Hacker 发现的对抗性漏洞)转化为网络权重的**强化学习更新**。这使得代理能够在未来任务中动态路由查询,基于历史成败积累可迁移的推理经验。与现有系统(如 REFLEXION、SWE-Agent)仅依赖静态检索或丢弃过往经验不同,Solvita 实现了无需更新底层 LLM 权重的持续进化,为 agentic 系统的长期学习提供了新的参数化范式,对工程实践中构建自优化的 AI Agent 具有直接的参考价值。
- **闭环对抗性自我纠错**:Solvita 引入了 **Oracle(认证监督者)** 和 **Hacker(针对性攻击者)** 两个对抗角色,构成一个自我诊断与修复的闭环。Oracle 生成高质量测试用例并验证程序正确性,而 Hacker 则专门寻找程序薄弱点和生成能暴露错误的攻击测试。两者的联合奖励信号不仅直接提升了代码生成的质量(通过 Solver 的对比 REINFORCE 训练),还驱动了知识网络的更新,使系统能够从“错误模式”中学习。这种将**认证与攻击**协同融入训练循环的设计,超越了传统代码生成中仅依赖单一执行反馈的方法,使得代理能够主动挖掘和修补深层逻辑漏洞,在 Codeforces 等真实竞赛场景中取得了接近翻倍的单次生成准确率,展示了对抗性训练在多代理代码生成中的巨大潜力。
方法
Solvita 是一个进化式多智能体闭环框架,专为解决高难度竞技编程问题设计,无需更新底层 LLM 即可实现持续学习。
输入与整体流程
系统输入为编程竞赛问题描述(自然语言)。问题被送入一个四智能体协作流水线,各智能体均配有可训练的图结构知识网络,通过强化学习动态积累经验。
关键模块
- Planner:接收问题,从其知识网络中检索历史成功策略,输出最可能有效的算法策略(如动态规划、贪心等),本质是一个上下文赌博机,依据过往胜负信号选择策略。
- Solver:根据 Planner 选定的策略,结合自身知识网络中的代码模板与验证过的技能,使用对比 REINFORCE 损失生成初始代码。若 Oracle 反馈失败,Solver 可基于失败分析进行 patch 修复。
- Oracle:为 Solver 生成的代码自动生成认证测试用例(包括边缘案例),在沙箱中执行并返回通过/失败判决及测试覆盖质量。其知识网络记忆哪些测试模式对特定策略有效。
- Hacker:针对已通过 Oracle 认证的代码进行对抗性攻击,生成能暴露逻辑漏洞的极端输入。发现漏洞后反馈回 Solver 触发修复。其知识网络积累攻击面知识。
持续学习机制
所有智能体的知识网络均以图结构存储(节点为问题、策略、测试等),边权重由强化学习奖励更新:Planner 根据最终问题解决结果更新策略选择倾向;Solver 根据生成代码的正确性更新技能关联;Oracle 根据测试发现漏洞的能力更新;Hacker 根据是否成功攻破代码更新。这些网络在推理时通过图特征评分路由查询,实现经验的跨任务迁移,且 LLM 参数始终保持冻结。
输出
最终输出经过 Oracle 认证且 Hacker 未攻破的代码解决方案,附带解释与测试覆盖报告。
与同类方法的差异:不同于无状态的检索增强智能体框架,Solvita 通过可训练的图知识网络与强化学习实现了有状态的经验积累,将调试、测试、攻击等过程转化为永久的推理路由信号,显著提升了长期任务成功率。
实验
实验设计概览
Solvita 在 四个数据集 上进行了全面评估:三个静态基准(CodeContests、APPS、AetherCode)以及 Codeforces 实时比赛。对比对象包括:
- 现有 多智能体代码生成流水线(mapcoder、AlphaCodium、AgentCoder 等)
- 单次生成基线(GPT-4、DeepSeek-Coder 等直接生成答案)
- 消融实验单独检验知识网络、补丁修复、Oracle/Hacker 诊断等组件的贡献。
所有实验使用统一的 LLM 后端,Solvita 不更新底层模型权重,仅通过 策略梯度类强化学习 更新四个智能体各自对应的图结构化知识网络。
关键发现
- Solvita 在所有竞赛编程基准上均达到 SOTA,性能显著优于现有多智能体系统。
- 准确率近乎为单次生成基线的两倍,验证了闭环演化的有效性。
- 知识网络的状态积累起到关键作用:随着系统运行,过往成功/失败信号持续优化路由策略,使 Planner 能够动态选择更有效的解题策略,Solver 能复用已验证的代码模式。
- Hacker 智能体主动构造对抗样本,不仅提升了 Oracle 的测试质量,还通过自我攻防循环增强了最终代码的鲁棒性。
与基线对比的深度解读
现有主流多智能体框架的本质是 无状态 的:它们依赖静态检索或一次性规划,任务完成后丢弃所有执行经验。Solvita 的核心突破在于引入 带记忆的持续学习:
- 对比 mapcoder:Solvita 的图网络可将相近算法模式聚类,实现跨题目的知识迁移,而非仅依靠当前问题的上下文检索。
- 对比 AlphaCodium:Solvita 的 Oracle 与 Hacker 形成对抗闭环,测试生成不再仅依靠采样,而是被显式优化以发现代码弱点。
- 工程启示:这种做法允许在 不重新训练 LLM 且不改变模型权重 的前提下,通过积累在线经验不断自我改进系统,为推理型智能体的长期部署提供了一种轻量、可持续的路径。
行业影响
落地场景
Solvita 的多智能体演化框架将代码生成、测试与修复融合为闭环持续学习系统。其 Planner 策略选择、Solver 合成、Oracle 验证、Hacker 对抗四个代理可直接嵌入 企业级代码助手(如 GitHub Copilot 插件),在生成代码后自动执行验证测试生成与漏洞挖掘,形成“生成-验证-修复-记忆”流水线。例如,在 电商平台 中,对高并发推荐引擎接口,Solvita 能根据历史失败经验(存储于图结构知识网络)避免并发缺陷,并针对性生成压测用例。在 金融科技 领域,它可为交易算法自动生成合规测试与边界条件,并让 Hacker 代理批判性发现逻辑漏洞,提升系统可靠性。
商业价值
- 降本:将调试与修复的人工成本压缩至分钟级。在 Codeforces 评测中,相比单次生成基线准确率近乎翻倍,意味着可减少 50% 以上的无效构建回滚,直接节约开发时间。
- 增收与体验提升:集成 Solvita 的 SaaS 开发平台(如 Vercel)可提供“代码即交付”的可靠性保障,成为付费功能卖点。对 自动化测试工具(如 Selenium 生态),它可智能生成多变异的回归测试脚本,提升测试覆盖率,加快产品迭代速度。
- 风险控制:Hacker 代理的对抗测试能在上线前发现隐蔽漏洞,避免潜在的数据泄露或金融损失,这对 合规敏感型 应用(如医疗数据处理、支付系统)尤为重要。
与现有产品/工作流的集成
Solvita 的 无权重更新大模型 设计使其基座 LLM(如 GPT-4 或 Llama)保持不变,仅训练轻量级图网络,易于集成:
- 微服务化部署:可将四个代理封装为独立服务,通过 REST/gRPC 接入 CI/CD 流水线(如 GitHub Actions),在 PR 合并前自动触发 Solvita 进行代码审查与测试生成。
- 知识库对接:图结构的经验网络可持久化到图数据库(如 Neo4j)或向量库(如 Milvus),与团队已有的代码知识库或文档管理工具联动,实现经验复用。
- 增量适应:新项目或新代码库仅需少量样本即可更新知识网络路由权重,无需重新预训练,适合 企业私有化部署,持续适应内部代码风格与业务逻辑。
具体 use case:在 自动驾驶仿真平台 中,Solvita 可为控制算法自动生成 corner-case 测试场景,Oracle 校验安全约束,Hacker 挖掘系统漏洞,从而在不增加实车测试成本的前提下,大幅提升验证覆盖度与安全性。
局限
- **冷启动与知识网络可靠性**:Solvita 的知识网络依赖历史交互信号进行 RL 更新,在完全冷启动时可能因初始路由不准导致策略选择失误(附录 I 中称为 **‘Cold-start retrieval misfires’**)。实际部署中,若任务分布频繁漂移,网络需要持续探索,早期性能可能不如静态检索方案。这要求工程上设计合理的预训练或热启策略,否则系统上线初期稳定性不足。
- **Oracle 与 Hacker 的诊断上限**:论文指出 Oracle 存在 **‘false certification’**(错误标记程序为正确),Hacker 存在 **‘scope limitations’**(仅能发现特定类型的脆弱性),这限制了反馈信号的质量。在 RL 训练中,错误信号会导致策略向错误方向更新,尤其对于复杂逻辑漏洞,整套自我监督机制可能失效。实际产品级代码生成中,仍需额外的人工审查或更强的形式化验证来弥补这类局限。
- **多智能体复杂性与计算开销**:四个智能体(Planner、Solver、Oracle、Hacker)协同工作,加上图知识网络的训练和推理,使整个 pipeline 的延迟与成本显著高于单模型生成。论文虽通过 budget 控制轮次,但并未对比端到端小模型的推理效率。对于需要低延迟、高吞吐的在线服务场景,这种架构的实用性受限,可能需要极致的工程优化或仅用于离线高价值问题求解。