nanobot源码分析--1架构设计
学习最好的方式就是重新发明一遍。
今年年初,OpenClaw 横空出世,一下子推动 AI Agent 快速发展,各种 Agent 如雨后春笋般层出不穷。
GitHub 上有一个项目 nanobot,目前已经有 4.5 万 star 了。它是一个极其轻量的 AI Agent,曾经在它的 README 的开头是这么写的(随着项目的发展,这段描述已经被修改了):
🐈nanobot is an ultra-lightweight personal AI assistant inspired by OpenClaw.
⚡️ Delivers core agent functionality with 99% fewer lines of code than OpenClaw.
麻雀虽小五脏俱全。这个项目的目的是用于学习、研究,所以代码结构清晰、简洁,核心功能极其精简,但 Agent 该有的东西它都有,而且项目还在快速迭代中,不断像 claude code 等成熟的 Agent 靠近。我们可以通过剖析 nanobot 来学习 AI Agent 的实现原理。
架构设计
项目的架构图简洁清晰的展示了它的核心架构设计,核心部分极其精简。

Agent Loop 是 nanobot 的核心,负责上下文管理、大模型交互、工具调用、任务拆分、记忆、提示词整理等工作。
Channel 是外部通信的接口,统一抽象了消息接入的行为模式,并实现了微信等社交工具。
Message Bus 连接 Channel 和 Agent Loop,是负责传递消息输入输出的中间件。
此外,还有一些定时、心跳任务没有在架构中罗列。
消息流向
完整的一次请求处理,大致路径经历:Channel聊天平台->输入MessageBus->Loop核心->输出MessageBus->Channel聊天平台。
Bus 是核心枢纽:所有渠道与 Agent 解耦,入站、出站各走一条队列,启动时 Agent 与 Channels 并行消费/分发。
目录结构
这是整个项目的运行时核心,顶层子模块包括:
• agent/— Agent 主循环、上下文、记忆、工具与子 Agent• channels/— 内置聊天渠道(Telegram、Feishu、Slack、Discord 等)• providers/— LLM 提供商适配(OpenAI、Anthropic 等)• cli/— 命令行入口(nanobot gateway、nanobot chat等)• bus/— 消息总线与路由• cron/— 定时任务• heartbeat/— 主动唤醒 / 心跳服务• session/— 会话管理• config/— 配置加载与 schema• skills/— 内置 Agent Skills(weather、github、tmux 等)• command/— 斜杠命令路由(如/restart)• security/— 网络安全工具(如 SSRF 防护)• templates/— 工作区模板(SOUL.md、MEMORY.md等)
大部分核心功能都在 agent 目录下,如果想要二次开发,完全可以将 agent 的实现迁移出来进行修改。
写在最后
这个项目还在不断的开发中,可能文中的有些内容已经和最新的代码实现不匹配了,但是整体的结构还是一致的。
后续打算逐个拆解各个功能模块,分析它的实现细节,从而理解 AI Agent 的工作机制。
夜雨聆风