Simon Willison llm-coding-agent 实战:用 AI 构建 AI 工具的范本
一行命令启动编码 Agent
Simon Willison 又发了个好东西。llm-coding-agent 0.1a0 已经上了 PyPI,一行命令直接跑:
| |
不需要 clone 仓库,不需要装依赖,前提是你本地有 uv 和一个 LLM API key。这玩意儿的设计哲学就是 Simon 一贯的风格:最小化安装,最大化透明。
TLDR AI 在 7 月 3 日的刊目中提到了这个发布。Simon 在他的博客上说得很清楚:这是一个 alpha 版本,用来验证他的 Agent 设计思路,不是要取代 Claude Code 或 Cursor。
它是什么
llm-coding-agent 是一个命令行编码 Agent,核心流程是:
- 你给它一个任务描述
- 它帮你写一份
spec.md(规格说明) - 调用 LLM(默认 Claude)根据 spec 生成代码
- 跑测试——红了改,绿了提交
- 每一步都是 git commit,可回溯
这个流程不是 Simon 发明的,但他把它做成了一个不到 500 行 Python 的可运行包。没有 Electron 壳,没有 VS Code 插件,没有云服务依赖——一个 CLI 工具加你的 API key 就完了。
技术栈拆解
llm-coding-agent 建立在 Simon 自己的两个项目之上:
llm Python 库
llm 是 Simon 开发的统一 LLM 调用库。它的核心设计是:一个 llm 命令行工具 + 一个 Python 库,支持 OpenAI、Anthropic、Google、本地模型等十几个 provider。你不需要为每个 provider 写不同的调用代码,llm.get_model("claude-sonnet-4") 就能拿到模型实例。
llm-coding-agent 直接用 llm 库做 LLM 调用,这意味着它开箱支持所有 llm 支持的 provider。你有 OpenAI key 就用 OpenAI,有 Anthropic key 就用 Claude,有本地 Ollama 就用本地模型。
Fable 5
Simon 提到这个项目用了他称为 “Fable 5” 的提示词框架。从 GitHub 仓库的代码来看,Fable 5 是一套结构化的 Agent 提示词模板,定义了 Agent 的角色、工作流程、工具使用规则等。核心思路是:把 Agent 的行为规则写成一个清晰的文档,让 LLM 在每一步都明确知道该做什么。
PyPI 包页显示这个包的依赖很轻:llm、click、rich,外加标准库。没有 LangChain,没有 LlamaIndex,没有任何重型框架。
红绿 TDD 提交模式
llm-coding-agent 的工作流里最值得说的是它的 TDD(测试驱动开发)模式:
| |
每一步都是一个 git commit,提交信息里写清楚做了什么。这意味着:
- 你可以随时回退:每一步都是可恢复的检查点
- 你可以审查:
git log就是完整的开发日志 - 你可以接管:Agent 跑到一半你接管手动改,回来继续跑
这个设计很 Simon——他在 2024 年就开始公开讨论"用 AI 编码时版本控制是安全网"的观点,现在他把这个理念做成了工具。
和其他编码 Agent 的对比
| 特性 | llm-coding-agent | Claude Code | Cursor Agent | OpenClaw |
|---|---|---|---|---|
| 安装方式 | uvx 一行 | Claude 订阅 | VS Code 插件 | 独立桌面应用 |
| 模型支持 | 任意(通过 llm 库) | 仅 Claude | 多模型 | 多模型 |
| IDE 依赖 | 无(纯 CLI) | 无(CLI) | VS Code | 无 |
| 开源 | 是 | 否 | 否 | 是 |
| 代码量 | ~500 行 | 未知 | 未知 | 大型项目 |
| 适合场景 | 快速原型/学习 | 日常编码 | 团队开发 | Agent 生态 |
llm-coding-agent 的定位很明确:不是日常编码工具,而是 Agent 架构的教学样本和快速原型工具。Simon 自己也在 README 里说,这个项目的首要目标是"展示一个编码 Agent 可以有多简单"。
实战:用它写一个小项目
我花了一个下午试了一下,流程大致是这样的:
第一步:初始化
| |
第二步:描述任务
Agent 启动后会问你想要做什么。我给了个任务:“写一个 Python 脚本,监控指定目录的文件变化,新增 .py 文件时自动跑 pylint。”
第三步:等它写 spec
Agent 先生成了一份 spec.md,包含功能需求、技术选型、测试计划。你可以修改这个 spec 再继续。
第四步:看它红绿循环
Agent 先写了测试文件,跑了——红的(因为还没实现)。然后写实现代码,再跑——绿的。自动 commit。整个过程 git log 看得清清楚楚。
第五步:接管或继续
跑到一半我发现它选的 watchdog 库依赖太重,手动改成了 os.scandir 轮询,提交后让 Agent 继续。它接上没问题的。
Simon 的方法论:用 AI 构建 AI 工具
llm-coding-agent 本身就是用 AI 构建的。Simon 在博客里提到,他用 Claude Code 写了大部分代码,然后手工整理和优化。这形成了一个有趣的循环:
- 用 Claude Code(编码 Agent)→ 写出 llm-coding-agent(另一个编码 Agent)
- llm-coding-agent 的设计理念来自使用编码 Agent 的经验
- 产出的工具又能用来构建下一个工具
这种"吃自己的狗粮"的做法让工具的设计非常贴合实际使用场景。Simon 不是在想象编码 Agent 应该怎样工作——他每天都在用,然后把觉得好用的模式固化成代码。
适用场景与局限
适合用的场景:
- 快速原型:一小时内从想法到可运行代码
- 个人项目:不需要团队协作的脚本和工具
- 学习 Agent 架构:500 行代码读一遍就能理解编码 Agent 的工作原理
- CI/CD 集成:纯 CLI,容易嵌入自动化流程
不适合的场景:
- 大型项目重构:没有 IDE 集成,跨文件重构不方便
- 团队协作:没有实时协同能力
- 需要精确控制每一步:alpha 版本,行为可能有不确定性
🎯 行动清单
- 装 uv:如果还没装,
pip install uv或curl -LsSf https://astral.sh/uv/install.sh | sh - 跑一遍 demo:找个小任务,完整体验 spec → 测试 → 代码 → commit 流程
- 读源码:500 行 Python,重点看 Agent 的 prompt 模板和工具调用逻辑
- 对比你的工作流:把你平时用 Claude Code 或 Cursor 的流程和 llm-coding-agent 对比,看哪些模式可以借鉴
- 尝试自定义:fork 仓库,改 prompt 模板,看看不同提示词对 Agent 行为的影响
- 关注 Simon 的博客:他的每次更新都有详细的设计决策记录
开放思考
llm-coding-agent 的价值不在于功能多少,而在于它提出了一个问题:编码 Agent 到底需要多复杂?
市面上主流编码 Agent 都在往"更重"的方向走——更多功能、更深集成、更大上下文窗口。Simon 反其道而行,用 500 行代码证明核心循环可以很简单。
当然,简单不等于完善。没有 IDE 集成就意味着没有实时补全和跳转,没有团队协作就意味着只能单兵作战。但作为一个"最小可行编码 Agent",它已经足够让人思考:我们到底需要多少层抽象?
相关链接:
- GitHub 仓库:simonw/llm-coding-agent
- Simon Willison 博客:simonwillison.net
- PyPI 包页:pypi.org/project/llm-coding-agent
- llm 库文档:llm.datasette.io
- TLDR AI 7月3日刊:tldr.tech/ai/2026-07-03
延伸阅读
- skillweaver-token-optimization:SkillWeaver 架构拆解
- glm-5.2-free-deploy:GLM-5.2 免费部署指南
- gemini-free-api-setup:Gemini Free API 接入指南
觉得有用?转发给也在折腾编码 Agent 的朋友。想聊实现细节?评论区见。
如果你也对文章内容或者分享的资源和机会有兴趣,欢迎联系我。
相关内容
- WebBrain:开源本地优先的 AI 浏览器 Agent
- SkillWeaver 架构拆解:Agent 面对千工具时的 Token 优化实操
- DeepSeek Harness + V4-Pro:开源 Claude Code 替代上手
- GLM-5.3 拆解:参数没涨,后训练如何硬拉 50%
- LTX-2.5:开源视频生成,6.8 秒出 10 秒片
- 2026免费AI编程工具横评:Trae vs Cursor vs Copilot
