前言
这本书适合谁
你是一位对AI炒作持怀疑态度的软件工程师。
你看过演示。你试过各种框架。你亲眼目睹过你的LangChain应用因为产生幻觉而删除了生产数据库。于是你想:“一定有更好的方法。”
确实有。这本书是为那些想要真正理解AI代理运行时发生什么的开发者而写的。不是营销图表。不是“推理引擎“抽象概念。而是实际的HTTP请求。实际的while循环。
如果你会读Python,而且之前构建过网络应用或CLI工具,你就具备了所需的一切条件。
你将构建什么
Nanocode是一个在终端中运行的编码代理。在本书结束时,它将能够:
- 读写你代码库中的文件
- 执行shell命令
- 使用纯Python搜索代码
- 在会话之间保持上下文
- 在执行危险操作前请求许可
- 在网上搜索文档和答案
你将从零开始构建它,仅使用requests、subprocess和pytest。不用LangChain。不用向量数据库。不用“编排框架“。只用可以用print()调试的Python代码。
唯一的例外是:第11章添加了用于网络搜索的ddgs——这是唯一一个轻量级依赖。
测试方法
本书采用“同步测试“方法。对于每个功能:
- 我们介绍概念——为什么需要这个功能
- 我们首先展示测试,这样你就知道成功的标准是什么
- 我们实现代码以通过测试
- 我们用pytest验证
这种方法教授了测试驱动开发的思维方式,而无需在书中完整展示红-绿-重构的仪式。它还解决了一个关键问题:你不能通过实际调用LLM来测试基于LLM的应用。API调用很慢、很贵,而且结果不确定。
从第3章开始,我们将介绍FakeBrain模式——一个能返回可预测响应的测试替身。这让你可以运行整个测试套件,而无需进行一次API调用或花费一分钱。
代码示例
本书遵循“代码优先“方法。每章都建立在前一章的基础上,每个代码示例都是从可运行文件中提取的。
获取代码:
- **GitHub:**从GitHub克隆或下载。1
- **Leanpub:**完整的源代码也包含在你购买后可下载的资源中。
代码按章节组织(ch01/、ch02/等)。每个文件夹包含:
nanocode.py— 该章节完整的、可运行的代理代码test_nanocode.py— 无需API调用即可验证代码的测试
你可以复制任何章节文件夹并从那里开始。运行pytest来验证你的代码是否符合预期行为。
本书使用的约定
在本书中,你会看到三种标注:
![]() |
**警告:**安全风险。请注意这些内容——忽视它们可能导致文件被删除或API密钥泄露。 |
![]() |
**旁注:**深入探讨和延伸内容。有用的背景知识,但首次阅读时可以跳过而不会影响主线理解。 |
代码讲解遵循一致的模式:首先是上下文(为什么需要这段代码),然后是代码本身,最后是重要部分的逐行解释。
现在开始编写代码吧。
https://github.com/owenthereal/build-your-own-coding-agent↩︎

