跳至主要内容

Nanobot 教程:轻量级的 OpenClaw 替代方案

探索 Nanobot,这款轻量级的 OpenClaw 替代品。通过本完整设置指南,在 10 分钟内构建一个安全、可审计的 Python AI 代理。
· 6分钟 阅读

使用 AI 探索

Nanobot 是一款轻量级的个人 AI 助手,是 OpenClaw 的替代方案。它比 OpenClaw 小 98%,但仍提供相同的核心代理功能。与 OpenClaw 一样,它可以在您的机器上运行,连接您常用的应用程序,而且由于体量小,您也能轻松检查其代码。

Nanobot 能连接您喜爱的闭源与开源模型,以运行本地编码代理。无论您通过 Telegram、WhatsApp,还是终端发送消息,代理都会在您的机器上执行命令进行响应,例如读取日志、运行脚本、搜索文件。

在本教程中,我将从零开始带您完成 Nanobot 的设置,并展示如何在几分钟内搭建一个功能完整的 AI 代理。同时,我还会介绍一些使用此类技术时需要注意的坑点。

什么是 Nanobot?

Nanobot 是 OpenClaw 的替代方案,已迅速走红,截至撰写时在 GitHub 上获得超过 21,000 颗星。与 OpenClaw 一样,它支持 Discord、Slack、Telegram 等主流消息平台。

就像 OpenClaw 代理一样,您的 Nanobot 代理也可以加入 Moltbook 上的社交“派对”,我们在Moltbook 入门教程中有示例。

Nanobot 关键能力

尽管体量小,Nanobot 仍覆盖强大代理所需的三项核心能力:

  • 有状态记忆:Nanobot 会构建您的历史本地图谱。这意味着如果您今天在做一个 Python 数据分析项目,一周后它仍会记得。
  • 模型无关:您不被绑定到任何特定模型提供商。既可使用 OpenAI、Anthropic,也可使用在自有硬件上运行的本地模型。
  • 即刻可用的界面:Nanobot 可在您喜爱的消息应用中使用,这意味着您可以继续沿用熟悉的界面。

运行 Nanobot 的先决条件

要跟随本教程,您需要准备以下内容:

  • Python 3.11 或更高版本,已安装在您的电脑(Mac、Windows 或 Linux)上。
  • API 密钥,来自 OpenRouter、OpenAI 或 Anthropic 等提供商,或通过 Ollama 设置本地模型。
  • Telegram 账号(我将使用 Telegram 作为界面,因为最易上手)。

Nanobot 分步教程:构建一个“研究代理”

让我们构建一个驻留在您的 Telegram 中、可搜索网页并能记住您兴趣的代理。

Step-by-Step Tutorial: Building A "Research Agent"

步骤 1:安装 Nanobot

如今安装 Python 工具最干净的方式是使用 pip 或 uv,它们能与系统 Python 隔离。如果没有这些工具,使用标准 pip 也可以。

打开终端并运行:

# run inside your env
pip install nanobot-ai 
# OR if you prefer uv
uv tool install nanobot-ai

安装完成后,您会看到类似下面的消息:

Successfully installed nanobot-0.4.1

步骤 2:获取您的接口令牌

设置界面:

  • 打开 Telegram 并搜索 @BotFather
  • 输入 /newbot 并按提示操作
  • 复制从 BotFather 获得的令牌
  • 接着获取您的用户 ID,以确保机器人只接受来自您的指令。在 Telegram 中搜索 @userinfobot 并点击开始。复制用户 ID。

步骤 3:初始化

运行 nanobot onboard 初始化您的机器人。您应当能看到类似下面的消息:

✓ Created config at /Users/derrickmwiti/.nanobot/config.json
✓ Created workspace at /Users/derrickmwiti/.nanobot/workspace
  Created AGENTS.md
  Created SOUL.md
  Created USER.md
  Created memory/MEMORY.md
  Created memory/HISTORY.md
🐈 nanobot is ready!
Next steps:
  1. Add your API key to ~/.nanobot/config.json
     Get one at: https://openrouter.ai/keys
  2. Chat: nanobot agent -m "Hello!"
Want Telegram/WhatsApp? See: https://github.com/HKUDS/nanobot#-chat-apps

步骤 4:配置

运行下方命令,并在 providers 部分为您想使用的模型提供商添加 API 密钥:

nano ~/.nanobot/config.json

编辑文件,将 API 密钥添加到所选提供商:

{
  "workspace": "./workspace",
  "providers": {
    // Option 1: OpenAI
    "openai": {
      "apiKey": "sk-YOUR-OPENAI-KEY-HERE",
      "model": "gpt-4o"
    },
    // Option 2: Anthropic (Claude)
    "anthropic": {
      "apiKey": "sk-ant-YOUR-CLAUDE-KEY-HERE",
      "model": "claude-3-5-sonnet-20240620"
    },
    // Option 3: Google Gemini
    "google": {
      "apiKey": "AIza-YOUR-GOOGLE-KEY-HERE",
      "model": "gemini-1.5-pro"
    },
    // Option 4: OpenRouter (Best for flexibility)
    "openrouter": {
      "apiKey": "sk-or-YOUR-OPENROUTER-KEY-HERE",
      "model": "nousresearch/hermes-3-llama-3.1-405b"
    },
    // Option 5: Local (Ollama or vLLM)
    "local": {
      "apiBase": "http://localhost:11434/v1",
      "apiKey": "ollama",
      "model": "llama3"
    }
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "token": "YOUR_TELEGRAM_BOT_TOKEN",
      "allowFrom": ["YOUR_NUMERIC_USER_ID"]
    }
  }
}

编辑 Telegram 部分,添加您之前获取的 token 和用户 ID。这样做是为了确保只有您能向代理发送指令。

"telegram": {
      "enabled": true,
      "token": "",
      "allowFrom": [""],
      "proxy": null
}

   修改 agents 部分以匹配您选择的提供商:

"agents": {
    "defaults": {
      "workspace": "~/.nanobot/workspace",
      "model": "openai/gpt-5",
      "maxTokens": 8192,
      "temperature": 0.7,
      "maxToolIterations": 20,
      "memoryWindow": 50
    }
  }

在终端测试您的代理:

nanobot agent -m "Hello"   

🐈 nanobot
Hi there! How can I help you today?    

步骤 5:设置网关

完成 Telegram 集成,请在终端运行下方命令:

nanobot gateway

现在您应当能看到 Telegram 已启用,如我下面的消息所示:

🐈 Starting nanobot gateway on port 18790...
2026-02-13 09:59:35.405 | INFO     | nanobot.channels.manager:_init_channels:46 - Telegram channel enabled
✓ Channels enabled: telegram
✓ Heartbeat: every 30m
2026-02-13 09:59:35.406 | INFO     | nanobot.cron.service:start:154 - Cron service started with 0 jobs
2026-02-13 09:59:35.406 | INFO     | nanobot.heartbeat.service:start:81 - Heartbeat started (every 1800s)
2026-02-13 09:59:35.406 | INFO     | nanobot.agent.loop:run:116 - Agent loop started
2026-02-13 09:59:35.406 | INFO     | nanobot.channels.manager:start_all:159 - Starting telegram channel...
2026-02-13 09:59:35.406 | INFO     | nanobot.channels.manager:_dispatch_outbound:187 - Outbound dispatcher started
2026-02-13 09:59:35.411 | INFO     | nanobot.channels.telegram:start:140 - Starting Telegram bot (polling mode)...
2026-02-13 09:59:39.245 | INFO     | nanobot.channels.telegram:start:148 - Telegram bot @mwitibananabot connected
2026-02-13 09:59:39.417 | DEBUG    | nanobot.channels.telegram:start:152 - Telegram bot commands registered

前往 Telegram 进行测试:

您还可以通过我们提供的Claude Code 教程,结合 Supabase Python 库的实战示例,学习如何使用 Anthropic 的 Claude Code 改进软件开发流程。

进阶:打造“多工具”代理

现在设置已完成,是时候让您的代理更强大了。大多数模型只掌握其训练数据截断日期之前的信息。我们可以将其连接到互联网以增强功能。

Nanobot 支持模型上下文协议(MCP),为您的代理增添网页搜索或数据库查询等能力。下面我们添加 Brave 搜索服务,使代理能够访问互联网:

  1. 从 Brave 获取 API 密钥
  2. 将该密钥更新到配置中
"tools": {
    "web": {
      "search": {
        "apiKey": "",
        "maxResults": 5
      }
    },
    "exec": {
      "timeout": 60
    },
    "restrictToWorkspace": false
  }

重启您的网关。

现在在 Telegram 中,询问类似“苹果股票当前价格是多少?”的问题。在终端您可以看到它确实在搜索网页:

2026-02-13 10:14:48.753 | INFO     | nanobot.agent.loop:_process_message:164 - Processing message from telegram:7045522516: What is the current price of the Apple Stock
2026-02-13 10:14:59.726 | INFO     | nanobot.agent.loop:_process_message:246 - Tool call: web_search({"query": "AAPL stock price Yahoo Finance", "count": 5})
2026-02-13 10:15:22.066 | INFO     | nanobot.agent.loop:_process_message:246 - Tool call: web_fetch({"url": "https://finance.yahoo.com/quote/AAPL/", "extractMode": "text", "maxChars": 20000})
2026-02-13 10:15:26.886 | INFO     | nanobot.agent.loop:_process_message:246 - Tool call: web_fetch({"url": "https://www.google.com/finance/quote/AAPL:NASDAQ", "extractMode": "text", "maxChars": 20000})
2026-02-13 10:15:51.361 | INFO     | nanobot.agent.loop:_process_message:246 - Tool call: web_fetch({"url": "https://query1.finance.yahoo.com/v7/finance/quote?symbols=AAPL", "extractMode": "text", "maxChars": 20000})
2026-02-13 10:15:52.018 | INFO     | nanobot.agent.loop:_process_message:246 - Tool call: web_fetch({"url": "https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL?modules=price", "extractMode": "text", "maxChars": 20000})
2026-02-13 10:16:07.071 | INFO     | nanobot.agent.loop:_process_message:246 - Tool call: web_fetch({"url": "https://www.marketwatch.com/investing/stock/aapl", "extractMode": "text", "maxChars": 20000})
2026-02-13 10:16:07.406 | INFO     | nanobot.agent.loop:_process_message:246 - Tool call: web_fetch({"url": "https://finviz.com/quote.ashx?t=AAPL", "extractMode": "text", "maxChars": 20000})
2026-02-13 10:16:35.897 | INFO     | nanobot.agent.loop:_process_message:246 - Tool call: web_fetch({"url": "https://financialmodelingprep.com/api/v3/quote/AAPL?apikey=demo", "extractMode": "text", "maxChars": 20000})
2026-02-13 10:16:36.919 | INFO     | nanobot.agent.loop:_process_message:246 - Tool call: web_fetch({"url": "https://stooq.com/q/l/?s=aapl.us&i=5", "extractMode": "text", "maxChars": 20000})
2026-02-13 10:17:14.870 | INFO     | nanobot.agent.loop:_process_message:266 - Response to telegram:7045522516: Reflection:
- JS-heavy sites (Yahoo/Google) hid the live quote; Yahoo's JSON APIs blocked (401). 
- Finviz returned a pr...

本地与私密:离线运行 Nanobot

与OpenClaw类似,Nanobot 的一大卖点是隐私保护。您可以在不向任何云提供商发送数据的情况下使用它。由于 Nanobot 支持 vllm 和兼容 OpenAI 的端点,您可以将其指向 Ollama 等本地模型运行器。

  1. 安装 Ollama 并运行 ollama
  2. 更新 config.json 的 provider 部分(参见上文步骤 4 中的“local”示例)。

查看我们的OpenClaw 搭配 Ollama 教程,了解如何使用 OpenClaw 与 Ollama 构建全本地的 AI 数据分析师,编排多步工作流、分析数据集并生成可视化报告,而无需将数据发送至云端。

Nanobot 常见陷阱与故障排查

即便是像 Nanobot 这样简单的工具,也可能出现问题。以下是您可能遇到的一些问题及其解决方法。

“连接被拒绝”错误

如果您尝试在服务器上运行 Nanobot,却要访问本地模型,会出现“连接被拒绝”错误。原因是在线服务器无法访问您的本地电脑。

为此,您需要确保开源模型也在同一台服务器上运行,或使用 ngrok 之类的工具来打通连接。

上下文窗口限制

本地模型通常拥有更小的记忆上限(上下文窗口)。即便云端模型,上下文窗口也有限。由于 Nanobot 将记忆存为简单文件,“重置”其大脑的最佳方式是手动删除 ./workspace 文件夹中的记忆文件。

或者,直接切换到具有更大上下文窗口的模型,例如 gemini-1.5-pro 或Claude Opus 4.6。

结语

Nanobot 证明了强大的软件不必臃肿。它在大幅缩小体量的同时,仍提供与 OpenClaw 相同的核心特性。不过,就安全性而言,它仍面临同类问题,因此我建议您在沙盒环境中进行部署,以避免诸如整块硬盘被清空等灾难性后果。

如需进一步学习如何使用 AI 工具,推荐查看 我们的最佳免费 AI 工具指南。若想全面提升 AI 编码技能,试试我们的面向开发者的 AI 辅助编程课程,培养让 AI 助手在您的开发流程中更可靠的能力。

您还可以通过我们的使用 LangChain 开发 LLM 应用课程,学习如何利用 LLM、提示、链与代理来构建 AI 驱动的应用。

Nanobot 常见问题

Nanobot 与 OpenClaw 有何不同?

核心功能相同。Nanobot 更小,更便于您阅读与更新代码。

我的 Nanobot 代理已在线,但忽略我的消息。为什么?

这几乎总是由 allowFrom 设置导致的。如果您向该列表添加了任何值(即使是占位符),Nanobot 就会启用“白名单模式”,严格忽略不在该列表中的任何用户 ID。

Nanobot 是否有网页界面?

不支持。Nanobot 使用您常用的消息应用或终端作为界面。

Derrick Mwiti

作者

Derrick Mwiti

主题