nanobot是一个开源AI助手框架,支持多工具调用和记忆系统。本文分享从源码安装以获得完整MCP功能(如多工具集成和搜索引擎聚合)的体验,对比了官方安装方式的不足,并介绍了配置和使用场景。
什么是 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 命令包装可以完美解决。
微信