摘要

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 次提交。

Image 1

整个过程他自己只发了 8 条左右的提示词。

当然我不是来吹 Coding Agent 或者说 GPT-5.2 多牛逼的,只是正好我发现这案例本身完美命中了 Coding Agent 的舒适区。

什么是 Coding Agent 的舒适区呢?

  1. 从一种语言“翻译”到另一种语言

大语言模型最擅长的事情之一就是“照葫芦画瓢”,或者说“翻译”,无论是自然语言还是编程语言,都能做到又快又好。

所以像这个案例中从 Python 翻译成 JS,相对就很轻松了

  1. 有完整的测试集合

想想我们日常写代码,写完都需要测试一遍,如果不对再修改,如果这个过程需要人工介入,比如一些 UI 测试,就会很低效,但是如果 Agent 能自己测试,那么它可以从测试中收集反馈不断调整不断修复,直到把问题解决。

这个 HTML5 标准有一套名为 html5lib-tests 的测试集。这是一套与语言无关的测试数据(输入是 HTML,输出是正确的解析树结构)。

这就好比你让 AI 做数学题,你虽然不懂解法,但你手里有一本带标准答案的习题册。你不需要盯着 AI 写的每一行代码(过程),你只需要看它算出的结果对不对(结果)。

  1. 已经设计好了架构,Agent 只需要“填空”

Agent 由于受上下文窗口长度限制,每次任务是没办法太长的上下文,复杂一点的项目你没法整个代码库扔过去,所以我们通常要基于架构设计将 Agent 的任务拆分成小一点的任务让它刚好在上下文窗口内完成。

所以架构设计无论对于真人的项目还是 Coding 的项目都非常重要。

Simon 这个项目他不需要凭空设计,直接让 Agent 参考那个 Python 项目的 API 设计。这意味着架构是现成的,AI 只需要基于现有架构去“翻译”。

  1. 高手来操作

武侠小说里面,同样一把剑,在高手手里能发出更大的威力,毫无疑问 Simon 是高手中的高手。

看 Simon 的操作流程: 1). 制定规范 (Spec First): 第一条提示词不是求代码,而是扔给 AI 现有的 Python 代码,让它写一份 JavaScript 版本的设计文档(Spec)。

  1. 冒烟测试 (Smoke Test): 让 AI 先跑通一个最简单的“Hello World”级别的 HTML 解析,确保链路是通的。

  2. 死循环测试 (The Loop):Simon 配置好 GitHub Actions,每提交一次代码就自动运行那 9000 多个测试用例。

  • AI 写代码 跑测试 报错 AI 读错误日志 修正代码 再跑测试。

  • 结果:AI 像个不知疲倦的程序员,用了 140 万个 Token,提交了 43 次,直到所有绿灯亮起。

Simon 把这个过程称为 “设计智能体闭环” (Designing the Agentic Loop)。

这就是为什么这项目对于 Agent 来说做起来很成功。


既然我们知道 Coding Agent 的舒适区或者说强项在哪里,其实我们在开发时也可以充分发挥它的强项,比如说:

  1. 不要着急实现,先看看有没有“葫芦”可以照着画“瓢”

  2. 尽量让 Agent 自己去验证需求,为 Agent 提供验证必须的工具,比如Chrome Dev Tool MCP、Lint、自动化测试等等

  3. 先设计好再去实现

《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/

相关文档

关联主题