BBC Micro AI Agent 实验:让大模型编写 8 位机 BASIC 绘图
个人项目构建 AI Agent,通过 OpenRouter 调用多款主流大模型为 1981 年 BBC Micro 编写…
一项名为「BBC Micro AI Agent」的假期副业项目尝试用 AI Agent 为 1981 年发布的 8 位计算机 BBC Micro 自动编写 BASIC 绘图程序。项目团队通过 OpenRouter 统一调用多种开源权重和闭源模型,包括 GPT-5.6 Sol、Kimi K3、Gemini 3 Flash、DeepSeek V4 Flash 和 Gemma 4 26B A4B,让 Agent 在「计划—编写—执行—观察—迭代」的循环中自主生成可在 BBC Micro 上运行的程序。
实验背景与目标
BBC Micro Bot 社区多年来积累了大量不超过 500 字符的 BBC BASIC 一行式程序(one-liner),展现出惊人的创造力。本次实验并未沿用既有作品,也不强求一行式技巧,而是给模型提供机器背景说明、可调用的 BBC Micro 模拟器,以及一个对图形输出进行评判的视觉语言模型(VLM)。每次生成的程序会送入 beebjit 模拟器运行最多 30 个仿真秒;若崩溃则直接重写,只有成功运行出画面的程序才会被送入评判环节。
测试场景包括海洋日落、巴士、乡间房屋、城市夜景,以及经典的「骑自行车的鹈鹕」——后者源自 Simon Willison 自 2024 年起反复让 LLM 绘制 SVG 的趣味挑战,本次实验将其移植到 320×256、四色限制的 BBC Micro 上。
Agent 架构
Agent 采用简单的反馈循环,整体分为五步:
- 计划(Plan):模型调用 plan 工具,用文字描述画面构成——形状、颜色、大小、位置,并给出伪代码大纲。
- 编写(Write):一次性生成完整程序,每次从零开始写约几百字符的 BASIC,可调用 lookup 查询绘图参考(如 PLOT 映射、VDU 码、尺寸技巧)或 count_chars 获取 tokenize 后的真实长度。
- 执行(Act):通过 run_check 把程序送入 beebjit 模拟器,返回截图或错误信息(如「Division by zero at line 30」)。
- 观察(Observe):由 Qwen3 VL 担任 VLM 评判,从画面与意图匹配度两方面打分。例如 Kimi 首次绘制鹈鹕骑车时被打出 4/10,被指出缺少喉囊、车轮缺辐条与脚蹬等细节。
- 完成或循环:若评判分数允许且剩余步数充足则回到编写步骤;最终提交时由 Agent 框架挑选整轮中得分最高的版本,而非模型自选。
模型表现与成本对比
不同模型在成本与生成效果上差异显著。以单张图平均成本(输入/输出 token)为例:
- Gemma 4 26B A4B:约 0.008 美元,52K/9.9K token
- DeepSeek V4 Flash:约 0.012 美元,167K/19.3K token
- Gemini 3 Flash:约 0.034 美元,50K/4.3K token
- GPT-5.6 Sol:约 0.068 美元,11K/1.4K token
- Kimi K3:约 0.193 美元,68K/5.7K token
作者特别提到,Gemma 4 26B A4B 这类可在边缘或浏览器本地运行的小模型,已经能够输出可执行的 BBC BASIC 程序并绘制尚可的画面,显示低成本推理具备落地潜力。
改进方向与时间分配
以 Kimi 的鹈鹕案例为例,整轮共调用模型 12 次、耗时 295 秒。模拟器实际运行时间被压缩到 0.23 秒一次,仅占整轮 0.7%,远低于单次模型调用的开销。主要可优化方向包括:
- 当分数停滞时及时终止:最强模型 4 轮即可出图,最弱模型需要 12 轮还起伏不定;让 Agent 看到自身分数历史并在平台期停止,有望以一半的调用成本达到同等画质。
- 降低评判开销:VLM 评判占总时长的 15%,可考虑每隔一次渲染评判一次,或在中间轮使用小视觉模型、终轮再调用大模型。
- 减少输入 token:当前绘图参考每次都全量附带,可将低频内容移至 lookup 取用,但可能拖累弱模型主动查阅的能力。
- 按模型能力定制上下文:实验中发现,把抖动指引改写成可复制粘贴的精确配方对强模型无影响,却让弱模型过度调用并破坏了画面;通用上下文难以普适,需要按模型分级度量。
整体来看,这是一项关于 Agent 经济性而非模型本身能力的探索,结论指向小模型 + 模拟器反馈回路在受限创作任务上的可行性。
