nanobot 项目简介
🎯 项目定位
nanobot 是一个超轻量级、开源、可自托管的个人 AI Agent 框架,由香港大学数据科学学院(HKUDS)发布,作者 Xubin Ren 最初作为个人开源项目启动。
核心目标:让个人用户拥有一个私有的 AI 助手运行时,支持持久记忆、工具调用、多端接入,同时保持代码小巧可读、完全可自托管。
✨ 核心特性
| 特性 | 说明 |
|---|---|
| 持久化工作流 | Dream 机制将对话历史蒸馏进长期记忆,跨会话保持连贯上下文 |
| 多端接入 | WebUI、CLI、Telegram、Discord、Slack、飞书、微信、Email、Mattermost 全覆盖 |
| 模型自由 | 兼容所有 OpenAI-compatible API、本地 LLM(Ollama/vLLM)、多模型 Fallback |
| 轻量内核 | 代码库故意保持小巧可读,非黑箱平台,方便 fork 和定制 |
| 数据自主 | 完全自托管,session/memory 都是本地 JSONL/Markdown 文件 |
🏗️ 与同类项目对比
| 项目 | 定位 | 区别 |
|---|---|---|
| nanobot | 轻量个人 AI Agent 运行时,强调自托管和可读性 | — |
| LangChain | 通用 LLM 应用框架,功能丰富但依赖庞大 | nanobot 更轻量,无需学习大量抽象层 |
| AutoGen | 微软多 Agent 对话框架 | nanobot 更侧重个人助手场景,而非企业级多 Agent 编排 |
| CrewAI | 角色扮演式多 Agent 协作 | nanobot 以单 Agent + MCP 工具为核心,多 Agent 是可选扩展 |
| OpenHands | 代码执行沙箱 Agent | nanobot 是通用助手定位,代码执行只是众多工具之一 |
📐 设计哲学
- Small core:代码库故意保持小巧可读,不是黑箱平台,鼓励阅读和 fork
- Own your stack:可检视、可定制、可自托管、可扩展,数据不上云
- Chat-native reach:以聊天为主入口,多平台统一接入同一个 Agent
- Model freedom:不绑定特定模型商,支持本地 + 云端混用
🔖 关键词汇
- Gateway:nanobot 的服务模式入口,启动后监听 18790 端口,管理 Channel 生命周期和心跳任务
- Channel:外部平台适配层(Telegram、Discord 等),将平台消息转换为统一的 InboundMessage 事件
- Dream:周期性记忆整合任务,将近期会话历史蒸馏写入长期记忆文件(MEMORY.md)
- MCP(Model Context Protocol):Anthropic 提出的工具调用标准协议,nanobot 原生支持,可接入第三方 MCP Server 扩展能力
- Goal:长时运行任务,可跨多轮对话追踪进度,类似异步后台任务
- AgentLoop:面向 Channel,管理 session、workspace、context 构建、outbound 发布
- AgentRunner:面向 Model,管理 provider 调用、tool call 执行、streaming 处理
📝 个人笔记
- 不同框架项目的优势