nanobot是香港大学开源的轻量级AI Agent框架,仅4k多行代码就实现了clawbot的核心功能。相比传统框架,nanobot具有代码量少、易扩展、支持本地vllm模型等优势,能够有效节省成本。本文将从实践体验和代码原理两个维度,深入解析这个简洁而强大的AI Agent实现方案。
智能速览
nanobot仅4k多行代码,实现clawbot核心功能,轻量高效
支持本地vllm模型部署,可充分利用本地算力节省成本
采用ReAct模式,支持工具自动调用和迭代执行
实现双层记忆架构,智能管理对话历史和长期记忆
模块化设计,易于扩展工具、渠道和LLM提供者
支持多种聊天渠道,包括Telegram、Discord、飞书等
精华内容
nanobot通过精简的架构设计,在保持功能完整性的同时大幅降低了复杂度。其核心思想是用最少的代码实现AI Agent的基本能力,同时提供良好的扩展性,让开发者能够快速构建自己的智能助手。
核心架构设计
nanobot采用消息驱动架构,通过MessageBus连接各个组件。主要包含AgentLoop核心处理引擎、ContextBuilder上下文构建器、MemoryStore记忆系统、ToolRegistry工具注册表等模块。系统支持Gateway和Agent两种运行模式,Gateway模式适合多渠道部署,Agent模式适合直接交互。整个架构清晰分层,各模块职责明确,便于理解和扩展。
ReAct执行机制
AgentLoop实现了ReAct(Reasoning+Acting)模式的简化版本。LLM可以交替进行推理和工具调用,直到完成任务或达到最大迭代次数(默认20次)。每次工具调用结果都会添加到消息上下文中,供后续迭代使用。系统还添加了反思提示,引导LLM决定下一步操作。这种机制让AI Agent能够自主完成任务链,支持复杂的多步操作。
智能记忆管理
nanobot实现双层记忆架构:MEMORY.md存储长期事实记忆,每次覆盖写入并注入到系统提示;HISTORY.md记录对话历史日志,支持grep搜索。当消息数超过memory_window(默认50条)时触发记忆整合,调用LLM总结对话并更新记忆文件。这种设计既保持了上下文连续性,又控制了token消耗,实现了增量式记忆管理。
工具系统实现
工具系统采用注册模式,支持动态加载和管理。内置文件系统工具(Read、Write、Edit等)、Shell工具(Exec)、网络工具(WebSearch、WebFetch)、消息工具等。工具继承BaseTool基类,实现execute方法即可。系统支持工具参数验证和OpenAI函数调用格式转换。开发者可以轻松添加自定义工具,扩展Agent的能力边界。
本地模型部署
nanobot支持通过vllm部署本地模型,节省API调用成本。部署时需添加–enable-auto-tool-choice --tool-call-parser hermes参数,让模型动态决定何时使用工具。测试使用cyankiwi/Qwen3-VL-8B-Instruct-AWQ-4bit模型,可正常执行工具调用和任务处理。本地部署不仅降低成本,还能更好地控制数据和隐私。
扩展开发指南
nanobot提供清晰的扩展机制。添加新工具只需继承BaseTool并注册;添加新渠道继承Channel基类实现;添加新LLM提供者继承LLMProvider。技能系统支持动态加载,可通过SKILL.md文件定义Agent能力。项目还支持子代理管理,可处理复杂后台任务。这种模块化设计让开发者能根据需求灵活定制功能。
nanobot以其简洁的设计和强大的扩展性,为AI Agent开发提供了新的思路。它证明了用少量代码就能实现核心功能,同时保持良好的可维护性。随着项目持续完善,特别是对MCP和OpenClawHub的支持增强,nanobot有望成为轻量级AI Agent开发的优秀选择。对于想要深入了解Agent原理或快速构建原型工具的开发者来说,这是一个值得探索的项目。