nanobot是一个开源AI助手框架,支持多工具调用和记忆系统。本文分享从源码安装以获得完整MCP功能(如多工具集成和搜索引擎聚合)的体验,对比了官方安装方式的不足,并介绍了配置和使用场景。
AI摘要

什么是 nanobot

nanobot 是一个开源的 AI 助手框架,支持多工具调用和记忆系统。它可以运行在服务器环境下,通过 Telegram、Discord 等聊天工具与用户交互,并能够执行文件操作、Shell 命令、网络搜索、定时任务等多种功能。

安装方式

正式版安装(推荐)

现在 release 版本已支持 MCP 功能,推荐直接使用 uv 安装:

uv tool install nanobot-ai

安装完成后,将 /root/.local/bin 添加到 PATH:

export PATH="/root/.local/bin:$PATH"

源码安装(可选)

如果需要最新功能或开发贡献,可以选择源码安装:

git clone https://github.com/HKUDS/nanobot.git
cd nanobot
uv venv
source .venv/bin/activate
uv pip install -e .

核心功能

工具调用

nanobot 支持多种内置工具:

工具 功能
read_file / write_file / edit_file 文件操作
exec 执行 Shell 命令
web_search / web_fetch 网络搜索和网页抓取
message 发送消息到聊天渠道
spawn 生成子代理处理后台任务
cron 管理定时任务

技能系统 (Skills)

nanobot 支持自定义技能扩展能力。默认包含以下技能:

  • memory — 双层记忆系统(MEMORY.md + HISTORY.md)
  • weather — 天气查询
  • tmux — 远程操控 tmux
  • github — 使用 gh CLI 与 GitHub 交互
  • cron — 定时任务调度

此外,还可以添加自定义技能,例如:

  • typecho-api — 管理 Typecho 博客(发布文章、分类标签等)[自定义技能]

MCP 工具集成

通过 MCP 协议,可以集成外部服务。本文重点介绍 open-websearch 的集成。

open-websearch 配置

安装方式

推荐使用 npx 临时运行,无需全局安装:

npx -y open-websearch@latest

MCP 配置

nanobot 的 MCP 配置不支持直接设置环境变量,需要使用 env 命令包装:

{
  "mcpServers": {
    "web-search": {
      "command": "env",
      "args": [
        "MODE=stdio",
        "DEFAULT_SEARCH_ENGINE=duckduckgo",
        "npx",
        "-y",
        "open-websearch@latest"
      ]
    }
  }
}

关键点:

  • 使用 env 命令设置环境变量
  • 每个环境变量作为独立的 args 元素
  • MODE=stdio 用于 MCP 模式(不使用 HTTP)
  • 此配置方式无需单独使用 Supervisor 管理服务

环境变量说明

变量 说明 示例
DEFAULT_SEARCH_ENGINE 默认搜索引擎 duckduckgo
ENABLE_CORS 启用 CORS true
MODE 服务模式 stdio (MCP) / both (HTTP+STDIO)

搜索引擎支持

引擎 状态 适用场景
DuckDuckGo ✅ 完全可用 国际搜索
CSDN ✅ 完全可用 中文技术问题
掘金 (Juejin) ✅ 完全可用 中文技术文章
Baidu ⚠️ 部分可用 中文搜索(URL 重定向)
Bing ❌ 无响应 服务器 IP 可能被屏蔽
Linux.do ❌ 无响应 服务器 IP 可能被屏蔽

推荐引擎组合:

  • 中文技术问题:CSDN + Juejin
  • 国际搜索:DuckDuckGo
  • 综合搜索:多引擎聚合

使用场景

自动化博客发布

配置 Typecho API 技能后,可以自动发布技术文章:

from typecho_api import TypechoAPI

api = TypechoAPI(
    base_url="https://mukapp.top/rest/",
    api_token="your_token"
)

api.post_article(
    title="文章标题",
    text="<!--markdown-->\n# 内容",
    author_id=1,
    mid="1,5"  # 分类 ID=1, 标签 ID=5
)

发布注意事项:

  • 勾选「允许评论」
  • 勾选「允许被引用」
  • 勾选「允许在聚合中出现」
  • 发布后添加标签(Tags)
  • 发布后设置分类(Category)

GitHub 项目监控

使用定时任务监控 GitHub 趋势项目,自动发布技术文章。

网络搜索聚合

通过 MCP 集成 open-websearch,无需 API 密钥即可搜索多个引擎:

# 多引擎搜索
results = mcp_web-search_search(
    query="python MCP protocol",
    engines=["duckduckgo", "csdn", "juejin"]
)

记忆系统

自动记录重要信息到 MEMORY.md,历史操作记录到 HISTORY.md,支持 grep 搜索。

模型配置

当前使用阿里云发布的 Qwen3.5-Flash 模型,具有出色的性能和成本效益。

总结

nanobot 是一个功能强大的 AI 助手框架,通过源码安装可以获得完整的 MCP 功能支持。结合 open-websearch 可以实现无需 API 的网络搜索,配合 Typecho API 可以自动化博客管理。虽然 MCP 配置中环境变量的设置有些特殊,但通过 env 命令包装可以完美解决。