# 看 AI 画像素画

日期: 2026-06-26T09:43:41Z
摘要: stevibe 发明了一种有意思的 LLM 评测方法：给模型看一张 emoji，让它用 tool call 在 16×16 网格上逐格画出像素画。我把这个方法做成了网页工具。
关键词:
- AI 像素画
- tool call
- LLM 评测
- pixel art
- 多模态

---

stevibe 是个专门给 LLM 出怪题的人。他做了一堆 [BenchLocal](https://github.com/stevibe/BenchLocal) 基准测试，测工具调用、指令遵循、数据提取这些正经能力。有一天他发了条推，说「这看起来像个玩具，实际上是我做过的最狠的视觉评测」。

题目很简单：给模型看一张 emoji 图片，让它在 16×16 的网格上，一格一格地画出来。总共 256 个格子，最多 2000 步。没有代码生成，没有推理链，就是一个多模态模型盯着一张图，然后用 tool call 像画笔一样一格格涂抹。

这个方法叫 [Pixel-Art Showdown](https://x.com/stevibe/status/2070162704917020696)。stevibe 测了 5 个模型、7 个 emoji，每个跑 5 次取最佳。他发现了一件意外的事：模型有性格。

有些模型画完一格会后悔，回头重画。有些会在同一个区域反复涂抹，像在试图做出动画效果。有些像冷静的外科医生，一次到位从不返工。这些行为不是 prompt 指令的结果，而是模型内在决策模式的外显。

我自己跑的时候也观察到了类似的现象。MiMo V2.5 画一只青蛙，先用 fill_rect 铺出头顶两只眼睛的轮廓，再填绿色身体，然后调 query_canvas 看一眼自己的进度，发现右侧轮廓缺了一块，回头补上，接着画肚子的浅绿色区域，最后加上鼻孔和嘴巴。整个过程像一个有条理的画师，先打型再上色再修细节。总共 141 步，没有明显的返工。

任务本身很苛刻。16×16 的画布只有指甲盖大小，模型必须判断哪些像素是「承重结构」。😂 的泪痕不能丢，但笑脸也要保住。🦄 的角必须在。🤖 的天线不能少。用几乎为零的分辨率保住一个图形的灵魂，这比生成一张高清图难得多。

我用 [MiMo V2.5](https://mimo.xiaomi.com) 复现了这个方法，做成了一个网页工具。上传任意图片，AI 自动识别内容，然后在画布上逐格绘制。整个过程实时可见，你能看到每一笔落下。

工具地址：[AI 像素画](/tools/pixel-art/)

试试上传你的头像、一个 logo、或者随手拍的照片，看 AI 怎么理解它，怎么在 256 个格子里重新诠释它。

实现原理不复杂。服务端准备四个 tool：paint 画单格、fill_rect 填矩形、query_canvas 查询画布状态、finish 完成。把图片和 system prompt 一起发给多模态模型，模型返回 tool call，服务端执行后把结果推回给模型，循环往复直到模型调用 finish。

前端用 SSE 实时接收每一步，逐格渲染到 canvas 上。你能看到 AI 先画轮廓，再填颜色，偶尔会停下来查询画布状态确认自己的进度，然后继续修正细节。

有个技术细节值得注意。多轮循环中，如果每轮都带原始图片，上下文会越来越大，最终触发 API 的 multimodal 数据损坏错误。解决方法是只在第一轮带图片，后续轮次只发文本和 tool call 历史。模型已经看过图片了，不需要反复提醒。
