nanobot 基础概念

上级索引:00-概览与索引 | 上一篇:03-快速上手-WebUI

🏗️ 核心架构概念

AgentLoop vs AgentRunner

nanobot 的 Agent 执行分两层:

概念文件职责
AgentLoopagent/loop.py面向 Channel,处理 session 选择、workspace 范围、context 构建、消息发布
AgentRunneragent/runner.py面向 Model,处理 provider 调用、streaming、tool call 执行、结果回注

调试技巧:消息路由/session 问题找 loop.py;模型调用/工具执行问题找 runner.py

Gateway

nanobot 的服务模式入口,通过 nanobot gateway 启动。

  • 监听 18790 端口(health endpoint)
  • 管理所有 Channel 的生命周期
  • 注册并执行心跳任务(读取 HEARTBEAT.md
  • 支持多 Channel 并发(Telegram + Discord + WebUI 同时运行)

Channel

外部平台与 nanobot 之间的适配层,将各平台消息转换为统一的 InboundMessage 事件。

支持的 Channel:

Channel说明
WebSocketWebUI 实时通信
TelegramTelegram Bot
DiscordDiscord Bot
SlackSlack App
Feishu飞书机器人
WeChat Work企业微信
Email邮件收发
Mattermost私有化聊天
TeamsMicrosoft Teams

Provider

LLM 后端抽象层,nanobot 通过 providers/registry.py 集中注册所有模型商。大多数 Provider 基于 OpenAI-compatible 实现,因此理论上支持任何兼容 OpenAI API 格式的模型服务。

Session

一次对话的完整上下文,以 JSONL 格式存储在 <workspace>/sessions/ 目录。支持压缩和历史搜索。

Memory + Dream

双层记忆设计:

层次存储位置特点
短期(Session)sessions/*.jsonl近期对话完整记录,按 session key 分隔
长期(Memory)memory/MEMORY.md跨 session 的蒸馏知识,结构化 Markdown

Dream 是将短期记忆整合进长期记忆的周期性任务,类似人类睡眠中的记忆巩固过程。

MCP(Model Context Protocol)

Anthropic 提出的工具调用标准协议,允许 LLM 调用外部服务和工具。nanobot 原生支持 MCP,通过 tools.mcpServers 配置接入第三方 MCP Server,大幅扩展 Agent 能力边界。

Goal

长时运行任务抽象,可跨多轮对话追踪进度。适合需要数分钟到数小时才能完成的复杂任务,类似后台异步任务。

Skills

存放在 <workspace>/skills/ 目录下的 Markdown 文件,定义 Agent 的特定能力和行为规范。Agent 按需加载对应 Skill,实现专业化能力扩展。

Workspace

nanobot 的工作区目录(默认 ~/.nanobot/workspace/),包含:

workspace/
├── SOUL.md          # Agent 身份定义
├── USER.md          # 用户信息
├── MEMORY.md        # 长期记忆
├── HEARTBEAT.md     # 心跳任务列表
├── sessions/        # 会话历史
├── memory/          # 每日记忆日志
├── cron/            # 定时任务
├── skills/          # 自定义技能
└── artifacts/       # Agent 生成的文件

📝 个人笔记

{{待填:概念理解和疑问}}


🔗 延伸阅读