Simon Willison llm-coding-agent 实战:用 AI 构建 AI 工具的范本

目录

一行命令启动编码 Agent

Simon Willison 又发了个好东西。llm-coding-agent 0.1a0 已经上了 PyPI,一行命令直接跑:

1
uvx --prerelease=allow --with llm-coding-agent llm code

不需要 clone 仓库,不需要装依赖,前提是你本地有 uv 和一个 LLM API key。这玩意儿的设计哲学就是 Simon 一贯的风格:最小化安装,最大化透明

TLDR AI 在 7 月 3 日的刊目中提到了这个发布。Simon 在他的博客上说得很清楚:这是一个 alpha 版本,用来验证他的 Agent 设计思路,不是要取代 Claude Code 或 Cursor。

它是什么

llm-coding-agent 是一个命令行编码 Agent,核心流程是:

  1. 你给它一个任务描述
  2. 它帮你写一份 spec.md(规格说明)
  3. 调用 LLM(默认 Claude)根据 spec 生成代码
  4. 跑测试——红了改,绿了提交
  5. 每一步都是 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 包页显示这个包的依赖很轻:llmclickrich,外加标准库。没有 LangChain,没有 LlamaIndex,没有任何重型框架。

红绿 TDD 提交模式

llm-coding-agent 的工作流里最值得说的是它的 TDD(测试驱动开发)模式:

1
spec.md → 生成测试 → 跑测试(红) → 生成代码 → 跑测试(绿) → git commit

每一步都是一个 git commit,提交信息里写清楚做了什么。这意味着:

  • 你可以随时回退:每一步都是可恢复的检查点
  • 你可以审查git log 就是完整的开发日志
  • 你可以接管:Agent 跑到一半你接管手动改,回来继续跑

这个设计很 Simon——他在 2024 年就开始公开讨论"用 AI 编码时版本控制是安全网"的观点,现在他把这个理念做成了工具。

和其他编码 Agent 的对比

特性llm-coding-agentClaude CodeCursor AgentOpenClaw
安装方式uvx 一行Claude 订阅VS Code 插件独立桌面应用
模型支持任意(通过 llm 库)仅 Claude多模型多模型
IDE 依赖无(纯 CLI)无(CLI)VS Code
开源
代码量~500 行未知未知大型项目
适合场景快速原型/学习日常编码团队开发Agent 生态

llm-coding-agent 的定位很明确:不是日常编码工具,而是 Agent 架构的教学样本和快速原型工具。Simon 自己也在 README 里说,这个项目的首要目标是"展示一个编码 Agent 可以有多简单"。

实战:用它写一个小项目

我花了一个下午试了一下,流程大致是这样的:

第一步:初始化

1
2
3
4
mkdir my-project && cd my-project
git init
export ANTHROPIC_API_KEY=sk-xxx
uvx --prerelease=allow --with llm-coding-agent llm code

第二步:描述任务

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 版本,行为可能有不确定性

🎯 行动清单

  1. 装 uv:如果还没装,pip install uvcurl -LsSf https://astral.sh/uv/install.sh | sh
  2. 跑一遍 demo:找个小任务,完整体验 spec → 测试 → 代码 → commit 流程
  3. 读源码:500 行 Python,重点看 Agent 的 prompt 模板和工具调用逻辑
  4. 对比你的工作流:把你平时用 Claude Code 或 Cursor 的流程和 llm-coding-agent 对比,看哪些模式可以借鉴
  5. 尝试自定义:fork 仓库,改 prompt 模板,看看不同提示词对 Agent 行为的影响
  6. 关注 Simon 的博客:他的每次更新都有详细的设计决策记录

开放思考

llm-coding-agent 的价值不在于功能多少,而在于它提出了一个问题:编码 Agent 到底需要多复杂?

市面上主流编码 Agent 都在往"更重"的方向走——更多功能、更深集成、更大上下文窗口。Simon 反其道而行,用 500 行代码证明核心循环可以很简单。

当然,简单不等于完善。没有 IDE 集成就意味着没有实时补全和跳转,没有团队协作就意味着只能单兵作战。但作为一个"最小可行编码 Agent",它已经足够让人思考:我们到底需要多少层抽象?


相关链接:

延伸阅读


觉得有用?转发给也在折腾编码 Agent 的朋友。想聊实现细节?评论区见。

原文链接: https://www.17you.com/freeresources/llm-coding-agent-guide/ 已复制!
寻找合作和资源

如果你也对文章内容或者分享的资源和机会有兴趣,欢迎联系我。

请点击联系我


相关内容

发现新版本

当前站点有新版本可用。