nanobot是一个超轻量个人AI助手框架,灵感来自Clawdbot,目标是以极少的代码实现核心代理能力。
项目现状
• 当前版本:0.1.3.post3(Python包名nanobot-ai)
• GitHub热度:Star约1.4k、Fork约169(截至2026-02-03,数据来源: https://github.com/HKUDS/nanobot/issues)
• 里程碑:2025-02-01正式发布
项目背景
• 从Clawdbot等大型Agent框架出发,强调“足够好”的核心能力与最小可读实现。
开发团队
• HKUDS(香港大学数据智能实验室)团队维护。
主要用途与痛点
• 让个人AI助手的基本能力落在“可读、可改、可扩展”的小代码基座上。
• 为研究/实验场景提供更短的理解链路与更低的工程成本。
• 统一的Agent loop:消息接入、上下文构建、模型调用、工具执行、结果回传
• 多模型接入:基于LiteLLM,支持OpenRouter、Anthropic、OpenAI、Gemini及vLLM
• 结构化工具系统:文件读写、Shell、Web搜索/抓取、消息转发、子代理
• 多渠道对话:CLI、Telegram、WhatsApp(通过bridge)
• 计划任务:内置Cron服务与调度管理
• 心跳唤醒:定期触发主动任务
核心设计
• 以消息总线为中枢(bus),将输入输出统一成事件流
•AgentLoop负责完整推理与工具执行闭环
• Provider层用LiteLLM统一适配多模型
• Channels层对接Telegram/WhatsApp,Bridge负责WhatsApp连接
关键依赖
• typer、rich:CLI与交互输出
• litellm:多模型统一调用
• pydantic / pydantic-settings:配置与数据结构
• httpx、websockets、websocket-client:网络通信
• loguru:日志
• croniter:定时任务
• python-telegram-bot:Telegram接入
AI细节
- 模型调用通过LiteLLM,默认配置指向OpenRouter,可切换为vLLM等本地模型服务。
- Web搜索可选接入Brave Search API。
目录结构(核心部分)
nanobot/
├── agent/ # 代理核心逻辑
│ ├── loop.py # 推理主循环
│ ├── context.py # 上下文构建
│ ├── memory.py # 记忆持久化
│ ├── skills.py # 技能加载
│ └── tools/ # 内置工具
├── cli/ # CLI命令入口
├── providers/ # 模型提供方适配
├── channels/ # Telegram/WhatsApp接入
├── bus/ # 消息总线
├── cron/ # 计划任务
├── heartbeat/ # 定期唤醒
├── session/ # 会话管理
└── config/ # 配置加载与schema
代码入口与调用链
• 安装后入口:nanobot -> nanobot.cli.commands:app
• CLI命令nanobot agent / nanobot gateway -> 初始化Provider与AgentLoop
• AgentLoop:构建上下文 -> 调用LLM -> 解析工具调用 -> 执行工具 -> 汇总结果
主要逻辑拆解
• AgentLoop统一处理消息流与工具执行,减少分叉逻辑,保持最短路径。
• ToolRegistry负责工具注册与路由,便于扩展。
• LiteLLMProvider在模型层做兼容处理,包括OpenRouter与vLLM前缀适配。
环境要求
• Python≥3.11
• 可选:Node.js≥18(用于WhatsApp bridge)
安装与运行(最小路径)
pip install nanobot-ai
nanobot onboard
# 编辑 ~/.nanobot/config.json
nanobot agent -m "Hello from nanobot"
本地模型(vLLM)
vllm serve meta-llama/Llama-3.1-8B-Instruct --port 8000
# 配置 apiBase 指向本地服务
nanobot agent -m "Hello from my local LLM!"
• GitHub仓库:https://github.com/HKUDS/nanobot
• Demo演示:https://github.com/HKUDS/nanobot#-quick-start
nanobot用极小的代码体量实现了可用的Agent基础闭环:消息接入、上下文构建、模型调用与工具执行。它的核心价值在于“可读、可改、可扩展”,适合研究者与工程实践者用来快速验证想法、搭建轻量级助手。对于追求完整生态的重型框架来说,nanobot更像一套高密度的最小实现,提供了一个清晰的学习与二次开发起点。