openclaw源码与框架解读(nanobot精简框架)
根据代码分析,以下是 nanobot 框架从 CLI 入口的完整调用流程:主体流程CLI 入口 (cli/commands.py)│├─► nanobot agent→ 直接交互模式├─► nanobot gateway→ 启动网关服务(支持多渠道)└─► nanobot onboard→ 初始化配置关键代码文件模块文件作用CLI 入口定义所有 CLI 命令 (agent, gateway, on
nanobot简介
nanobot是香港大学数据科学学院开发并负责维护的框架,其灵感来自于openclaw框架,该平台暂无论文发布。
代码介绍
根据代码分析,以下是 nanobot 框架从 CLI 入口的完整调用流程:
主体流程
CLI 入口 (cli/commands.py)
│
├─► nanobot agent → 直接交互模式
├─► nanobot gateway → 启动网关服务(支持多渠道)
└─► nanobot onboard → 初始化配置
关键代码文件
| 模块 | 文件 | 作用 |
|---|---|---|
| CLI 入口 | cli/commands.py | 定义所有 CLI 命令 (agent, gateway, onboard 等) |
| 消息总线 | bus/queue.py | 异步队列,解耦通道与 Agent |
| 网关/通道 | channels/manager.py | 管理多渠道 (Telegram/Discord/WhatsApp/飞书等) |
| 主线消息 | agent/loop.py | AgentLoop 类,核心消息处理循环 |
| Memory | agent/memory.py | MemoryStore 类,双层记忆 (MEMORY.md + HISTORY.md) |
| Skills | agent/skills.py | SkillsLoader 类,加载技能定义 |
| 上下文构建 | agent/context.py | ContextBuilder 类,组装系统提示词 |
核心调用链 (Gateway 模式)
-
gateway 命令 (cli/commands.py:276)
- 创建 MessageBus → AgentLoop → ChannelManager
-
ChannelManager (channels/manager.py)
- 接收外部消息 → 发布到 bus.inbound
-
AgentLoop.run() (agent/loop.py:240)
- 消费 bus.inbound → _process_message() → LLM 调用循环
-
ContextBuilder.build_messages() (agent/context.py:136)
- 组装:系统提示词 + 记忆上下文 + Skills + 历史消息
-
MemoryStore (agent/memory.py)
- 定期将旧消息归档到 memory/MEMORY.md 和 memory/HIGHSTORY.md
-
SkillsLoader (agent/skills.py)
- 从 workspace/skills/ 目录加载技能定义
-
消息输出
- AgentLoop 发布到 bus.outbound → ChannelManager 分发到对应渠道
请阅读项目/home/ubuntu/githubs/nanobot-main,介绍该项目下面python文件的方法记忆agent/memory.py、感知bus/events.py与bus/queue.py、agent/skills.py行动、agent/loop.py决策
文件作用介绍
nanobot 项目核心模块介绍
- agent/memory.py - 方法记忆
负责记忆管理,包含两个核心类:
- MemoryStore: 内存存储与压缩
- consolidate(): 压缩会话历史到长期记忆
- _summarize_messages(): 使用LLM生成摘要
- load_session_memory(): 从记忆加载历史消息
- ConsolidationType: 枚举类型,定义压缩方式(summarize摘要、snapshot快照)
- bus/events.py 与 bus/queue.py - 感知
events.py - 事件定义:
- InboundMessage: 接收到的消息(channel, sender_id, chat_id, content, media等)
- OutboundMessage: 发出的消息
- EventBus: 事件总线基类
queue.py - 消息队列: - MessageQueue: 异步消息队列实现
- consume_inbound(): 消费入站消息
- publish_outbound(): 发布出站消息
- enqueue(): 入队,dequeue(): 出队
- agent/skills.py - 行动
负责技能/工具管理:
- Skill: 技能定义,包含name、description、tools列表
- SkillLibrary: 技能库管理
- load_skill(): 加载技能
- get_skill(): 获取技能
- list_skills(): 列出所有技能
- 支持从YAML/JSON配置文件加载技能定义
- agent/loop.py - 决策
Agent主循环,负责协调感知-思考-行动:
- Agent: 核心Agent类
- _run_agent_loop(): 执行agent迭代循环,调用LLM决策
- _process_message(): 处理单条消息
- run(): 启动主循环,从消息队列消费消息
- process_direct(): 直接处理消息(CLI/定时任务用)
- 决策流程:接收消息 → 构建上下文 → LLM推理 → 工具调用 → 返回结果
整体架构:感知(bus) → 决策(loop) → 行动(skills) → 记忆(memory)
更多推荐




所有评论(0)