摘要
1) 一句话总结
本文通过 Simon Willison 使用 GPT-5.2 将 Python 库 JustHTML 成功移植为 JavaScript 库的案例,总结了 Coding Agent 在代码翻译、自动化测试闭环和预设架构下的“舒适区”及最佳实践。
2) 关键要点
- 案例数据:Simon Willison 仅用约 8 条提示词、140 万个 Token 和 43 次提交,通过 Codex CLI + GPT-5.2 将纯 Python 库 JustHTML 移植为零依赖的 JS 库,生成约 9000 行代码并跑通 9200+ 个测试用例。
- 舒适区一:跨语言翻译:大语言模型非常擅长在不同编程语言之间进行“照葫芦画瓢”式的翻译(如从 Python 翻译到 JS)。
- 舒适区二:完整的测试集:拥有标准测试集(如 html5lib-tests)能让 Agent 自动收集报错反馈并不断自我修复,避免低效的人工测试介入。
- 舒适区三:现成的架构设计:Agent 更适合在已有 API 或架构设计下执行“填空”任务,而非凭空设计整个项目。
- 专家操作流程(Spec First):第一步不直接生成代码,而是让 AI 基于现有代码先写出目标语言的设计文档(Spec)。
- 专家操作流程(Smoke Test):先让 AI 跑通最简单的基础链路(如 Hello World 级别的解析),确保流程可用。
- 专家操作流程(The Loop):结合 GitHub Actions 实现“写代码 → 跑测试 → 报错 → 读日志 → 修正”的自动化死循环(设计智能体闭环)。
- 开发建议:日常开发中应先寻找可参考的范例,坚持“先设计后实现”,并为 Agent 提供必要的验证工具(如 Chrome Dev Tool MCP、Lint、自动化测试等)。
3) 风险与不足
- 上下文窗口限制:Agent 受限于上下文窗口长度,无法一次性处理过长的任务,复杂项目无法将整个代码库直接交给 Agent,必须基于架构设计拆分为小任务。
正文
Simon Willison(Django 框架的联合创始人)。他一边陪家人装饰圣诞树、看电影,一边用 Codex CLI + GPT-5.2,把 Emil Stenström 的 JustHTML(纯 Python、通过 html5lib-tests)迁移成了一个纯 JS、零依赖的库,跑过了 9200+ 个 html5lib-tests 用例,最终产出大约 9000 行代码、43 次提交。

整个过程他自己只发了 8 条左右的提示词。
当然我不是来吹 Coding Agent 或者说 GPT-5.2 多牛逼的,只是正好我发现这案例本身完美命中了 Coding Agent 的舒适区。
什么是 Coding Agent 的舒适区呢?
- 从一种语言“翻译”到另一种语言
大语言模型最擅长的事情之一就是“照葫芦画瓢”,或者说“翻译”,无论是自然语言还是编程语言,都能做到又快又好。
所以像这个案例中从 Python 翻译成 JS,相对就很轻松了
- 有完整的测试集合
想想我们日常写代码,写完都需要测试一遍,如果不对再修改,如果这个过程需要人工介入,比如一些 UI 测试,就会很低效,但是如果 Agent 能自己测试,那么它可以从测试中收集反馈不断调整不断修复,直到把问题解决。
这个 HTML5 标准有一套名为 html5lib-tests 的测试集。这是一套与语言无关的测试数据(输入是 HTML,输出是正确的解析树结构)。
这就好比你让 AI 做数学题,你虽然不懂解法,但你手里有一本带标准答案的习题册。你不需要盯着 AI 写的每一行代码(过程),你只需要看它算出的结果对不对(结果)。
- 已经设计好了架构,Agent 只需要“填空”
Agent 由于受上下文窗口长度限制,每次任务是没办法太长的上下文,复杂一点的项目你没法整个代码库扔过去,所以我们通常要基于架构设计将 Agent 的任务拆分成小一点的任务让它刚好在上下文窗口内完成。
所以架构设计无论对于真人的项目还是 Coding 的项目都非常重要。
Simon 这个项目他不需要凭空设计,直接让 Agent 参考那个 Python 项目的 API 设计。这意味着架构是现成的,AI 只需要基于现有架构去“翻译”。
- 高手来操作
武侠小说里面,同样一把剑,在高手手里能发出更大的威力,毫无疑问 Simon 是高手中的高手。
看 Simon 的操作流程: 1). 制定规范 (Spec First): 第一条提示词不是求代码,而是扔给 AI 现有的 Python 代码,让它写一份 JavaScript 版本的设计文档(Spec)。
-
冒烟测试 (Smoke Test): 让 AI 先跑通一个最简单的“Hello World”级别的 HTML 解析,确保链路是通的。
-
死循环测试 (The Loop):Simon 配置好 GitHub Actions,每提交一次代码就自动运行那 9000 多个测试用例。
-
AI 写代码 → 跑测试 → 报错 → AI 读错误日志 → 修正代码 → 再跑测试。
-
结果:AI 像个不知疲倦的程序员,用了 140 万个 Token,提交了 43 次,直到所有绿灯亮起。
Simon 把这个过程称为 “设计智能体闭环” (Designing the Agentic Loop)。
这就是为什么这项目对于 Agent 来说做起来很成功。
既然我们知道 Coding Agent 的舒适区或者说强项在哪里,其实我们在开发时也可以充分发挥它的强项,比如说:
-
不要着急实现,先看看有没有“葫芦”可以照着画“瓢”
-
尽量让 Agent 自己去验证需求,为 Agent 提供验证必须的工具,比如Chrome Dev Tool MCP、Lint、自动化测试等等
-
先设计好再去实现
《I ported JustHTML from Python to JavaScript with Codex CLI and GPT-5.2 in 4.5 hours》https://simonwillison.net/2025/Dec/15/porting-justhtml/
相关文档
- AI 编程能力受限于上下文的限制,对于大型项目的构建能力偏弱该怎么办?;关联理由:观点一致;说明:两文都把“上下文受限下的大任务拆解”作为让 AI 编程可落地的核心策略。
- 你需要的不是智能体,而是一个适合 AI 的工作流;关联理由:解说;说明:本文讲“先设计再实现”和“工具化验证”,该文系统解释了为何应优先构建适配 AI 的工作流。
- OpenAI 智能体工程指南:10 条实战技巧和 3 种构建模式;关联理由:延伸思考;说明:本文用个案展示 Agent 测试闭环,该文进一步给出可复用的工程化落地方法与边界。
- AI 还没有改变软件工程范式;关联理由:观点一致;说明:两文都认为 AI 当前主要作用是加速既有工程流程,而不是替代需求到交付的基本范式。