南大清华联合提出 Solvita:竞赛编程 Agent 跑进 Codeforces 全球前十
南大、清华等机构提出 Solvita 多 Agent 框架,结合可训练知识网络,在 Codeforces 真实比赛评测中…
在代码生成任务中,大模型已经能完成日常开发工作,但面对算法竞赛中的复杂题目,仍然容易被算法选择失误、边界遗漏、复杂度估计错误和隐藏测试「打挂」。来自南京大学、清华大学等机构的研究者提出了 Solvita——一个面向竞赛编程的 Agentic Evolution 框架,它不微调底层大模型,而是通过 Planner、Solver、Oracle、Hacker 四类 Agent 组成闭环,并配合可训练的图结构知识网络,让系统从解题、测试、攻击和修复的全过程中持续积累经验。论文及代码已经公开,评测显示其在 Codeforces 真实比赛中的表现已进入全球前十,CF rating 超过 3500。
核心思路:把竞赛编程拆成「求解—认证—攻击—修复」闭环
Solvita 把一道算法题的求解过程拆成四个互补角色:
- Planner:把原始题面抽象成形式化数学描述,预测可能的算法标签、思路和复杂度,并结合知识网络检索结构相似的历史题目。
- Solver:根据 Planner 的策略生成 C++ 程序,并在样例和 Oracle 生成的测试上验证;与「失败就整段重写」不同,Solvita 强调 patch-based repair,尽量只对出错位置生成 SEARCH/REPLACE 形式的局部补丁。
- Oracle:为候选解法构造可靠内部测试,生成基于 testlib 的 generator、validator、checker 和 reference solver,并负责多答案问题的自定义 checker 验证。
- Hacker:主动分析候选代码的潜在漏洞,沿着 semantic、stress、antihash 等攻击路线构造能击穿错误程序的输入,成功 hack 到的 bug 还会作为失败经验回流到知识网络。
四个角色不是固定流程,而是一个会随历史经验更新的闭环:失败经验会改变后续任务的策略路由。
关键设计:可训练的图结构知识网络
Solvita 区别于一般多 Agent 框架的关键,在于每个 Agent 都配有一个可训练的 graph-structured knowledge network。以 Solver 为例,其知识网络分为三层:
- Q Layer:记录历史题目的描述和元信息;
- M Layer:记录解法分解、失败对比和元认知分析;
- S Layer:记录可复用的算法技能和 C++ 模板。
新题到来时,系统会先检索相似的 Q 节点,再沿 Q→M→S 的两跳路径激活相关技能;不同路径的边权会根据历史成功与失败动态更新——成功路径被强化,失败路径被削弱或生成对比节点。这种「可训练的策略路由」与传统的 RAG(将相似文本塞入 prompt)有本质差异。
实验结果:在多数 benchmark 和真实比赛评测中领先
论文在 CodeContests、APPS、AetherCode 以及近期 Codeforces rounds 上评测了 Solvita,对照方法包括 single-pass、Codex CLI、Claude Code、AlphaCodium 和 MapCoder。
- 在 15 个 backbone-benchmark 组合中,Solvita 在 14 个上取得最高 pass@1。
- 消融实验显示,从 single-pass 切换到无训练的多 Agent 框架本身就能带来显著提升;在此基础上加入 Solver/Oracle/Hacker 知识网络后性能还能继续提升,且随着训练题量从 1.5k 增加到 4.5k,收益持续增长。
- 成本分析显示,Solvita 的平均 token 消耗与开源 Agent 框架处于相近区间,没有逼近部分商业 CLI Agent 的高消耗。
- 真实比赛评测:选取 12 场 post-cutoff Codeforces rounds、共 76 道题,在官方时间限制内完成,不允许赛后修改;使用 GPT-5.4、Claude Opus 4.6、DeepSeek V4 Pro 作为 backbone 的 Solvita 版本均进入 Legendary Grandmaster 区间,而相同 backbone 的 bare model 仍停留在较低 rating。
此外,论文还专门比较了 Solver 内部的两种修复方式:full regeneration 与 patch repair。结果显示,在相同最大迭代预算下,patch repair 的通过率更高、平均迭代次数更少、token 更省。
总结:更强的 coding agent,不一定只来自更大的模型
Solvita 的核心贡献可以概括为三点:
- 提出 solve–certify–attack–repair 闭环,将策略选择、程序生成、测试认证和对抗攻击组织成一个持续运转的求解系统;
- 引入可训练的图结构知识网络,使 Agent 能在不微调底层 LLM 的前提下持续积累经验;
- 在 CodeContests、APPS、AetherCode 和 Codeforces 真实比赛评测中均取得领先,验证了框架在离线 benchmark 与真实比赛两种环境下的有效性。
研究团队认为,未来更强的 coding agent,未必只来自更大的基座模型,也可能来自更好的经验组织方式。真正可靠的代码智能体,需要会规划、会验证、会攻击自己的答案,也需要能把失败转化为下一次成功的经验。
参考资料:
