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 模式)

  1. gateway 命令 (cli/commands.py:276)

    • 创建 MessageBus → AgentLoop → ChannelManager
  2. ChannelManager (channels/manager.py)

    • 接收外部消息 → 发布到 bus.inbound
  3. AgentLoop.run() (agent/loop.py:240)

    • 消费 bus.inbound → _process_message() → LLM 调用循环
  4. ContextBuilder.build_messages() (agent/context.py:136)

    • 组装:系统提示词 + 记忆上下文 + Skills + 历史消息
  5. MemoryStore (agent/memory.py)

    • 定期将旧消息归档到 memory/MEMORY.md 和 memory/HIGHSTORY.md
  6. SkillsLoader (agent/skills.py)

    • 从 workspace/skills/ 目录加载技能定义
  7. 消息输出

    • 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 项目核心模块介绍

  1. agent/memory.py - 方法记忆
    负责记忆管理,包含两个核心类:
  • MemoryStore: 内存存储与压缩
    • consolidate(): 压缩会话历史到长期记忆
    • _summarize_messages(): 使用LLM生成摘要
    • load_session_memory(): 从记忆加载历史消息
  • ConsolidationType: 枚举类型,定义压缩方式(summarize摘要、snapshot快照)
  1. 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(): 出队
  1. agent/skills.py - 行动
    负责技能/工具管理:
  • Skill: 技能定义,包含name、description、tools列表
  • SkillLibrary: 技能库管理
    • load_skill(): 加载技能
    • get_skill(): 获取技能
    • list_skills(): 列出所有技能
  • 支持从YAML/JSON配置文件加载技能定义
  1. agent/loop.py - 决策
    Agent主循环,负责协调感知-思考-行动:
  • Agent: 核心Agent类
    • _run_agent_loop(): 执行agent迭代循环,调用LLM决策
    • _process_message(): 处理单条消息
    • run(): 启动主循环,从消息队列消费消息
    • process_direct(): 直接处理消息(CLI/定时任务用)
  • 决策流程:接收消息 → 构建上下文 → LLM推理 → 工具调用 → 返回结果

整体架构:感知(bus) → 决策(loop) → 行动(skills) → 记忆(memory)
请添加图片描述

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐