如果你放任不管,每个软件项目都会走上同一条曲线。代码行数上升,依赖数上升,构建时间上升。能理解整个系统的人数下降。在某个节点,项目跨过一个阈值——没有任何一个人能在脑中装下整个系统,从那以后,每次修改都是与你无法完全看清的复杂性的博弈。
大多数 AI agent 框架早就跨过了那个阈值。LangChain 有数万行核心代码。OpenClaw 的 node_modules 包含 1200 多个包。即使是"极简"框架,算上工具执行引擎、提供商抽象层、插件系统和配置解析器,通常也有数千行。
NanoClaw 的核心大约 500 行 TypeScript。这不是因为它做得少——它支持 WhatsApp 消息、容器隔离、持久化记忆、定时任务、agent 集群和网页浏览。而是因为它对复杂性应该存在于何处做出了不同的选择。
复杂性总得有个去处
"更少代码"论点的诚实版本不是说 NanoClaw 消除了复杂性,而是说 NanoClaw 将复杂性转移到了更好管理的地方。
agent 循环——接收消息、决定使用什么工具、执行工具、处理错误、管理多轮对话——是复杂的。在大多数框架中,这种复杂性存在于框架维护者编写的应用代码中,你必须信任、调试和更新它。在 NanoClaw 中,这种复杂性存在于 Claude Agent SDK 中,由 Anthropic 的工程团队维护,针对 Claude 的实际行为进行测试,并与模型同步更新。
工具执行——网页浏览、文件访问、shell 命令——是复杂的。在大多数框架中,每个工具都是自定义实现,有自己的错误处理、重试逻辑和安全模型。在 NanoClaw 中,工具由容器内的 Claude Code 提供。工具实现由 Anthropic 维护,与数千名开发者每天通过 Claude Code CLI 使用的工具相同。
安全模型——沙箱、权限执行、密钥管理——是复杂的。在大多数框架中,安全是可能有 bug 的应用层代码。在 NanoClaw 中,安全是由操作系统强制执行的容器隔离。Apple Container 和 Docker 已经被数千名工程师加固了多年。NanoClaw 的 80 行容器编排代码利用了这些投入,而不是试图复制它。
模式是一致的:NanoClaw 的 500 行是连接维护良好、测试充分的组件的编排层。复杂性存在,但它存在于由拥有更多资源和更多专业知识的团队维护的组件中,这是任何单个开源项目都无法匹敌的。 ## 500 行能做什么
500 行代码能实现的功能比大多数人预期的更广泛,因为功能来自组件,而非 NanoClaw 的代码。
网页浏览能用是因为容器镜像包含 Chromium 和 agent-browser。NanoClaw 没有实现浏览器——它将浏览器挂载到容器中。文件访问能用是因为容器有挂载的文件系统。NanoClaw 没有实现文件 I/O——它配置哪些路径可用。agent 集群能用是因为 Claude Code 原生支持 agent 委派。NanoClaw 没有实现多 agent 编排——它启动容器并让 Claude 处理协调。
这 500 行处理的是 NanoClaw 使用场景特有的事情:通过 Baileys 接收 WhatsApp 消息、在 SQLite 中查找群组状态、用正确的挂载启动正确的容器、通过 stdin 传递密钥、通过 IPC 收集响应,然后将它们发回 WhatsApp。这些是定义 NanoClaw 作为产品的决策——关于如何安全便捷地将用户连接到 AI agent 的选择。
其他一切都委托给做得更好的组件。这不是偷懒,而是认识到最好的代码是你不需要写的代码,因为你没写的代码没有 bug,不需要维护,也不会产生安全漏洞。
维护红利
小代码库的实际好处随时间以不明显的方式复利增长。
当 Anthropic 发布新版 Claude Agent SDK 并改进了工具调用时,NanoClaw 只需更新一个依赖就能获得改进。不需要更新抽象层,不需要重写适配器,不需要检查兼容性矩阵。SDK 被直接使用,所以 SDK 的改进立即传导。
当容器运行时发现安全漏洞时,修复方法是更新 Docker 或 Apple Container——而不是修补 NanoClaw 的代码。安全边界由 Apple 和 Docker 的基础设施团队维护,而不是一个小型开源项目。
当新贡献者想要理解代码库时,他们可以在一小时内读完全部 500 行。他们不需要理解插件系统、提供商抽象或工具执行框架。整个架构可以装进一个心智模型:消息从 WhatsApp 进来,容器用 Claude 处理它们,响应发回 WhatsApp。
这就是最少代码的维护红利。你没写的每一行都是你不需要调试、不需要文档化、不需要向新贡献者解释、不需要在世界变化时打补丁的一行。
什么时候少即是多
500 行哲学不是普遍适用的。如果你在构建一个有特定业务逻辑的自定义 AI 应用,你需要一个能表达那些逻辑的框架——LangChain、CrewAI 或类似工具。如果你需要支持 Claude Agent SDK 不覆盖的 AI 提供商,你需要一个提供商抽象层。如果你需要一个面向非技术用户的插件生态系统,你需要一个插件系统。
NanoClaw 的赌注更窄:对于一个连接聊天频道、在容器中安全运行、通过官方 SDK 利用 Claude 能力的个人 AI 助手来说,500 行不仅够用——而且是最优的。超出这个数字的每一行都是不服务于用户的复杂性、不改善产品的维护负担、不需要存在的攻击面。
软件行业有一种根深蒂固的偏好:更多。更多功能,更多抽象,更多配置选项,更多代码行。假设是更多代码意味着更多能力。NanoClaw 是一个反例——一个项目的能力来自它连接的组件,而非它包含的代码。这 500 行不是产品本身,而是用户和 AI 之间的最小桥梁,设计得尽可能薄,以确保没有任何东西挡在中间。