llm-coding-agent 教程:200 行 Python 搭一个 Claude Code 风格的编码 Agent(附完整代码)
TL;DRSimon Willison 用 Claude Fable 5 从零搭建了一个 Claude Code 风格的 Python 编码 Agent已发布到 PyPI。本文拆解它的核心架构——5 个工具、一个 Agent 主循环、以及不到 200 行就能跑起来的完整实现附上可直接运行的代码和踩坑提示。1. 背景为什么还要自己搭一个 Coding AgentClaude Code、Codex、Cursor——市面上的 AI 编码工具已经够多了。但 Simon Willison 决定自己动手理由很直接他的 LLM 库 已经演化成一个 Agent 框架他想验证它能不能支撑一个完整的 coding agent。更重要的是自己搭意味着你能理解每一行代码在做什么——这恰好呼应了 Geoffrey Litt 在 AIE 大会上说的理解才能参与。他用 Claude Fable 5 写了 spec、实现了所有代码、跑了测试、写了文档最后发布到 PyPI。你可以这样安装uvx--prereleaseallow--withllm-coding-agent llm code2. 核心架构五个工具 一个主循环llm-coding-agent 的架构极其简洁。它只有5 个工具每个工具就是一个 Python 函数工具功能对应 Claude Code 的哪个能力edit_file精确字符串替换old_string → new_stringEdit 工具execute_command在项目根目录执行 shell 命令Bash 工具list_files按 glob 模式列出文件Glob 工具read_file读取文件返回 cat -n 格式的行号输出Read 工具write_file创建或覆盖文件自动创建父目录Write 工具Fable 还贴心地加了一个search_files工具做正则搜索——这其实是 Simon 没要求的但 Fable 自己判断应该加上。Agent 主循环和 Claude Code 一样读用户指令 → 调用工具 → 拿结果 → 继续调用工具 → 返回最终结果。关键区别在于llm-coding-agent 把这个循环暴露为 Python APIfromllm_coding_agentimportCodingAgent agentCodingAgent(modelgpt-5.5,# 也可以用 claude-sonnet-5-20250914root/path/to/project,approveTrue# False 就是 --yolo 模式)agent.run(Fix the failing test in tests/test_parser.py)3. 上手实操5 分钟搭起来第一步确保有 Python 3.10 和 uv# 安装 uv如果没有curl-LsSfhttps://astral.sh/uv/install.sh|sh# 安装 llm-coding-agent预发布版uvx--prereleaseallow--withllm-coding-agent llm code第二步配置 API key。llm-coding-agent 复用了 LLM 库的配置所以如果你已经配过llm keys set openai直接就能用。没有的话pipinstallllm --break-system-packages llm keyssetopenai# 粘贴你的 OpenAI API key第三步跑起来# 交互模式需要你审批每个操作llm code# --yolo 模式自动执行适合小任务llm code--yolo# 只允许特定命令llm code--allowpytest*--allowgit diff*试试让它写个 ASCII 艺术时钟llm code--yolomkdir/tmp/democd/tmp/democreate a simple Python CLI appfortelling thetimeinascii artSimon 实测的结果——GPT-5.5 生成了一个完整的 Swift 命令行 ASCII 时钟。你的体验取决于模型但核心循环是一样的。4. 踩坑提示工具权限控制是重点。--yolo模式会让 Agent 自动执行所有命令包括rm -rf。建议日常使用--allow白名单llm code--allowpytest*--allowgit*--allowpython*模型选择影响很大。Fable 5 和 GPT-5.5 在编码任务上表现最好但成本也最高。Simon 在 7 月 3 日的笔记里分享了一个技巧告诉 Agent “对小任务用 Sonnet/Haiku 做子代理自己判断”——这能省不少 token。这个项目还在 alpha 阶段。功能远不如 Claude Code 完善但代码量极少核心不到 500 行非常适合学习和魔改。5. 这意味着什么llm-coding-agent 的意义不在于又一个编码工具而在于它证明了 coding agent 的核心循环可以压缩到几百行 Python。当你能看懂每一行代码时你对 AI 写代码这件事的掌控力就完全不同了——你不会再盲目信任而是能精确判断它哪里可能出错。正如 Armin Ronacher 在 7 月 4 日的文章里指出的即使是 Opus 4.8 这样的顶级模型在自定义工具调用上也可能出错。理解工具层的实现细节能帮你更快定位问题。6. 参考资料Simon Willison: llm-coding-agent 0.1a0llm-coding-agent GitHubLLM 库文档Simon Willison: Let Fable use its own judgement