nanobot 是什么?

nanobot 是 Python 编写的自托管个人 AI Agent 框架,可在终端、WebUI 和聊天渠道中运行。它把模型路由、工具调用、长期记忆、MCP、定时任务和子 Agent 放进较小的代码核心,适合阅读、修改和自建。

⭐ 49,114 Stars 🍴 8,638 Forks Python MIT 作者: HKUDS
来源:github.com/HKUDS/nanobot 查看 GitHub 仓库 → 📘 使用教程 →

为什么值得关注

保留教程的依据是官方在 2026-09-15 发布 v0.3.5,更新终端与 WebUI 工作流、网关生命周期、并发控制、远程项目权限和 macOS Seatbelt 沙箱。

来源:github.com/HKUDS/nanobot/releases/tag/v0.3.5

核心功能

多入口个人 Agent

同一网关可服务终端、WebUI、Telegram、Discord、Slack、邮件等入口,并把消息送入 Agent 循环。

来源:github.com/HKUDS/nanobot/blob/main/README.md
工具与 MCP

Agent 可调用文件、shell、网页、MCP、定时任务、图像生成和子 Agent;这些能力需要按工作区与操作系统沙箱收紧。

来源:github.com/HKUDS/nanobot/blob/main/README.md
本地网关与会话

TUI 或 WebUI 启动共享网关,交互客户端退出后可按需结束;只有显式 background 模式才保持渠道和自动任务持续运行。

来源:github.com/HKUDS/nanobot/releases/tag/v0.3.5
访问模式与沙箱

可限制工具只访问工作区,并在 Linux 使用 bwrap、macOS 使用 Seatbelt 隔离 shell;仅有路径检查不等于操作系统沙箱。

来源:github.com/HKUDS/nanobot/blob/main/README.md

技术架构

聊天渠道和本地客户端把消息送入异步 MessageBus。AgentLoop 选择会话、工作区、记忆和上下文,AgentRunner 再调用模型提供商与工具,结果经消息总线返回。Gateway 承担 WebUI、WebSocket、渠道和健康接口;cron 与子 Agent 可在后台继续工作。配置位于 ~/.nanobot/config.json,工作区默认在 ~/.nanobot/workspace,但文件与 shell 的真实权限仍取决于 restrictToWorkspace 和操作系统沙箱。

来源:github.com/HKUDS/nanobot/blob/main/README.md

项目知识图谱

知识图谱:项目核心节点(中心)+ 核心功能(内环六边形)+ 关键技术依赖(外环 chip) 多入口个人 Agent 工具与 MCP 本地网关与会话 访问模式与沙箱 nanobot 项目本体 核心功能 关键依赖

技术栈

语言Python >=3.11
来源:github.com/HKUDS/nanobot/blob/main/pyproject.toml

快速上手

使用 Python 3.11 以上与 uv,在独立用户环境安装 nanobot-ai==0.3.5。首次启动前把 tools.restrictToWorkspace 设为 true,并在 macOS 配置 Seatbelt、Linux 配置 bwrap;令牌通过环境变量提供。先运行 nanobot webui,只监听 127.0.0.1:8765,选择一个本地或测试模型并发送 Hello。确认工作区后再逐个开启 shell、网页、MCP 或聊天渠道。
来源:github.com/HKUDS/nanobot/blob/main/README.md

使用场景

适合在个人电脑上学习 Agent 循环、把本地文件与模型接成受控助手、试验 MCP 或少量定时自动化。它不适合在默认权限下读取整个主目录、执行未知 shell、连接生产聊天账号或长期公网运行。第三方模型和搜索服务可能收费并接收提示、文件片段或查询。

来源:github.com/HKUDS/nanobot/blob/main/README.md

优势与局限

优势

  • Python 核心较小,便于阅读 Agent 和工具调用路径
  • TUI、WebUI、聊天渠道、MCP 与定时任务集中在同一网关
  • v0.3.5 提供 Linux bwrap 与 macOS Seatbelt 沙箱选择
  • 既可接本地模型,也可配置多家托管模型提供商

局限

  • tools.restrictToWorkspace 默认值需要部署者确认并主动收紧
  • 文件路径限制不能阻止 shell 子进程绕过,仍需操作系统沙箱
  • 模型、搜索和聊天渠道会把数据发送给第三方,并可能产生费用
  • 并发若未设置正数上限可能消耗过多模型额度和系统资源
  • 健康接口只说明网关通道状态,不能证明模型、MCP 或聊天渠道全部可用
来源:github.com/HKUDS/nanobot/blob/main/README.md

最新版本

官方最新 GitHub Release 为 v0.3.5,发布于 2026-09-15,对应提交 1bb712d。该版把原生终端客户端作为默认入口,wheel 内置 WebUI/TUI,调整共享网关生命周期与远程项目权限,增加并发配置、macOS Seatbelt 沙箱,并修正健康检查和多项客户端行为。

来源:github.com/HKUDS/nanobot/releases/tag/v0.3.5

实测与证据

status: official_source_checked_not_installed_or_run  |  checked_at: 2026-09-23  |  environment: 核对官方 README、配置说明、pyproject 与 v0.3.5 GitHub Release;未安装 wheel、未运行 TUI/WebUI/网关、未配置模型、渠道、MCP 或系统沙箱  |  limitations: 未验证安装脚本、wheel、模型调用、工具权限、Seatbelt/bwrap 规则、聊天渠道、并发、费用、健康检查或后台网关生命周期  |  observed_output: 官方最新版本为 v0.3.5,发布于 2026-09-15,对应提交 1bb712d;项目要求 Python 3.11 以上,首轮 WebUI 默认使用 127.0.0.1:8765

来源:github.com/HKUDS/nanobot/releases/tag/v0.3.5

同类项目对比

相比 OpenClaw,nanobot 以较小的 Python 核心和个人自建为重点,入口集中在 TUI、WebUI 与常见聊天渠道;OpenClaw 是 Node/TypeScript 平台,覆盖更多渠道、原生应用和运维组件。想读懂并修改 Agent 循环时可先看 nanobot;需要较成熟的多设备客户端、更多渠道和大型网关能力时,应同时评估 OpenClaw 的安全与部署文档。

来源:github.com/HKUDS/nanobot (1) · github.com/openclaw/openclaw (2)

总结评价

nanobot 适合想读懂并自建个人 Agent 的 Python 用户。安全起点是锁定 0.3.5、限制工作区、启用操作系统沙箱、只监听本机并逐个开放工具;长期后台运行前还要设置并发上限、费用预算和渠道白名单。

来源:github.com/HKUDS/nanobot/blob/main/README.md

常见问题

nanobot 第一次启动前最该改哪个权限?

先确认 tools.restrictToWorkspace=true,再为 exec 工具配置 Linux bwrap 或 macOS Seatbelt。工作区路径限制只管内置文件工具,不能代替对 shell 子进程的操作系统隔离。

关闭终端后,nanobot 的任务还会继续吗?

普通 TUI 或 WebUI 客户端退出后,共享网关会按 v0.3.5 的生命周期规则停止。只有显式运行 nanobot gateway --background,渠道和自动任务才会持续;之后要用 status、logs 和 stop 管理。

使用 nanobot 一定要购买模型 API 吗?

不一定,可以配置受支持的本地模型。使用托管模型、搜索、图像生成或外部 MCP 时,数据处理与费用由对应服务决定;应先设额度、保留费用日志并避免传入敏感内容。

可以把 WebUI 直接开放到公网吗?

首次只使用默认的 127.0.0.1:8765。远程访问需要身份验证、TLS、反向代理、来源限制、速率限制和最小工具权限;聊天渠道还要配置 allowFrom、配对或令牌。

健康检查返回正常就代表模型和 MCP 都可用吗?

不代表。健康接口主要反映网关与 WebSocket 通道状态,不能证明模型凭据、MCP 服务、聊天渠道或工具权限正确。每个集成都要用无敏感数据的最小请求单独验收。

资料与核验范围
本文依据项目公开资料整理。版本、安装命令和功能边界可能随上游更新,请以所列来源和项目当前版本为准。 资料核对时间: 2026-09-23 13:55.

参考材料:README、GitHub API、依赖文件