LLM 对战游戏:用代码控制单位战斗

深度2026年3月23日2 分钟阅读
LLM 对战游戏:用代码控制单位战斗
9 个单位在带障碍物的棋盘上对战,大语言模型通过编写 JavaScript 代码控制单位移动和射击。Gemini 3.1 Pro 在 50 场比赛中仅输 4 场,表现最佳。

LLM 在 1v1 游戏中对战(循环赛)

游戏规则很简单:9 个单位对战 9 个单位,棋盘上有障碍物和治疗舱。

■ P1 单位 □ P2 单位 ○ 障碍物 + 治疗舱

大语言模型通过 ASCII 表示的游戏状态迭代改进代码。

玩家编写 JavaScript 代码来控制单位并访问游戏信息。单位只能执行 move()pew() 两个动作。

所有复杂性都源于需要推理移动位置和射击目标。

code
function dist(a, b) {
    return Math.hypot(a[0] - b[0], a[1] - b[1]);
}

function closest_enemy(cat) {
    let best = null;
    let best_dist = Infinity;
    for (let id of cat.sight.enemies) {
        let d = dist(cat.position, cats[id].position);
        if (d < best_dist) {
            best_dist = d;
            best = cats[id];
        }
    }
    return best;
}

for (let cat of my_cats) {
    let enemy = closest_enemy(cat)
    cat.move(enemy.position)
    cat.pew(enemy)
}

基础玩家代码示例

自己试试这个游戏 →

code
id
string
position
array
energy_capacity
number
energy
number
hp
number
sight
object
…
…

单位属性

测试方法

每个模型与参考机器人(Clowder Bot)进行 10 次迭代——编写代码、玩游戏,然后查看回放(ASCII 棋盘快照 + 自身日志),再尝试改进。最终生成的机器人在 10 场循环赛中对战,每场比赛之间同样执行编写 → 游玩 → 查看的循环。

结果

Gemini 3.1 Pro 表现突出,轻松击败所有其他大语言模型——在 50 场比赛中仅输 4 场。Claude Sonnet 4.6 意外地在所有测试的对战格式中都超越了 Opus 4.6。GPT-5.3 Codex 在多场比赛中显示出强劲的改进,在 10 场格式中超越了 Opus 和 GPT-5.4。

讨论

欢迎在我们的 Discord 中讨论这些结果,或对测试方法提出改进建议,并告诉我们你希望覆盖的其他模型。

觉得有用?分享给更多人

获取每周 AI 工具精选

工具推荐、实战教程和生态洞察,每周更新。

相关文章

Simon Willison 正在重构 LLM Python 库的抽象层,以支持服务器端工具执行等新功能。他利用 Claude Code 分析了四大 LLM 提供商的客户端库,生成了用于测试的 curl 命令和 JSON 输出。这些调研材料已开源,旨在帮助设计更通用的 API 抽象。

深度Simon Willison·4月5日·1 分钟

智能体技能——包含程序性知识和可执行资源的结构化包,供智能体在推理时动态加载——已成为增强 LLM 智能体的可靠机制。然而,推理时技能增强存在根本性限制:检索噪声引入无关指导,注入的技能内容带来大量 token 开销,而模型从未真正习得它所遵循的知识。我们提出一个问题:技能是否可以被内化到模型参数中,使其在无需任何运行时技能检索的情况下实现零样本自主行为?我们提出 Skill0,一个专为技能内化设计的上下文强化学习框架。Skill0 引入了一种训练时课程,从提供完整技能上下文开始,逐步撤除。技能按类别离线分组,并与交互历史一起渲染为紧凑的视觉上下文,教授模型工具调用和多轮任务完成。动态课程机制…

深度·4月5日·17 分钟

评论