Nanobot

一句话定义

Nanobot 是香港大学数据科学实验室(HKUDS)开源的极简 AI Agent 框架,用不到 4,000 行 Python 代码重建 OpenClaw 的核心能力——Agent 循环、长期记忆、技能加载、多平台接入。

摘要

Nanobot 于 2026 年 2 月初开源,30 天内获得 28,500+ GitHub Stars。它的核心价值不在于替代 OpenClaw,而在于提供了一个可以被完全理解的 Agent 实现——43 万行代码的系统很难看清全貌,但 4,000 行的版本可以。

架构设计的核心特征是控制面集中化:所有决策路径穿过同一个 while 循环,没有 Chain/Runnable/LCEL、没有 DAG、没有显式 PLAN 步骤。这是极强的设计约束——可理解性最大化,弹性空间随之缩小。

最独特的设计是 Skill-as-Markdown:Skills 不是 Python 代码而是 Markdown 文档,通过文件系统做懒加载(XML 索引 + LLM 按需 read_file),不用的 skill 零 token 开销。记忆系统采用 “grep beats RAG” 策略,两个 Markdown 文件 + exec grep,不用向量库。

详情

核心架构

  • Agent Loop:~20 行 ReAct 循环,错误响应不持久化(防 400 中毒循环),工具结果截断 500 字符
  • Message Bus:45 行代码的 asyncio.Queue 解耦,支持 13 个聊天平台
  • Tool 系统:Python 抽象类,execute 强制返回 str,JSON Schema 手写
  • Skill 系统:Markdown 文档 + XML 索引 + Progressive Loading
  • 记忆系统:MEMORY.md(长期事实)+ HISTORY.md(对话摘要)+ grep 搜索
  • Subagent:asyncio.Task 委托,结果通过消息总线重注入,无 message/spawn 工具(防递归)
  • MCP 集成:自动包装为原生 Tool,命名空间隔离

设计取舍

优势代价
可理解性极强弹性空间有限
Skill-as-Markdown 零成本扩展skill 数量大时 XML 索引占满 context
grep 记忆确定性可审计企业规模时文件搜索力不从心
工具接口统一(全返回 str)结构化数据需内部序列化
错误恢复委托给 LLM弱模型上可能无效循环

适用场景

  • 个人自托管 AI 助手
  • 快速原型 / 学习 Agent 架构
  • 不需要精确多 agent 协调的场景