前言
最近 AI Agent 领域有个项目特别火——OpenClaw,它是一个功能强大的 AI 助手框架,能让你拥有一个 7×24 小时在线的智能助理。
但当我 clone 下来准备研究时,发现它有43 万行代码!对于想快速上手或做二次开发的个人开发者来说,这个体量实在太重了。
直到我发现了它的轻量版——nanobot。
介绍轻量级 AI Agent 框架 nanobot,相比 OpenClaw 代码量减少约 99%。教程涵盖从零搭建 QQ AI 机器人的完整流程,包括 Python 环境配置、LLM 后端(如 Gemini)设置及 QQ 频道接入。针对默认搜索服务需 API Key 的问题,提出了基于策略模式的多搜索引擎扩展方案,支持 Tavily、Brave 及无需 Key 的 DuckDuckGo,并提供了核心代码实现细节。
最近 AI Agent 领域有个项目特别火——OpenClaw,它是一个功能强大的 AI 助手框架,能让你拥有一个 7×24 小时在线的智能助理。
但当我 clone 下来准备研究时,发现它有43 万行代码!对于想快速上手或做二次开发的个人开发者来说,这个体量实在太重了。
直到我发现了它的轻量版——nanobot。
nanobot 来自香港大学数据科学实验室(HKUDS),它的设计理念很简单:用最少的代码,实现 AI Agent 的核心能力。
来看一组对比数据:
| 项目 | 代码行数 | 核心功能 |
|---|---|---|
| OpenClaw | 430,000+ | 全功能 |
| nanobot | ~4,000 | 核心功能 |
瘦身比例:99%
但别被这个数字吓到,nanobot 保留了最实用的功能:
对于 90% 的个人使用场景,这些功能完全够用。
下面带你从零开始,搭建一个属于自己的 QQ AI 机器人。
nanobot 需要 Python 3.11+,如果你的系统版本较低,需要先升级:
# CentOS/RHEL
dnf install python3.11 python3.11-pip
# Ubuntu/Debian
apt install python3.11 python3.11-pip
git clone https://github.com/HKUDS/nanobot.git
cd nanobot
pip3.11 install -e .
python3.11 -m nanobot onboard
这会在 ~/.nanobot/ 目录下生成配置文件。
编辑 ~/.nanobot/config.json,推荐使用 Gemini(免费额度够用):
{
"agents": {
"defaults": {
"model": "gemini/gemini-2.5-flash"
}
},
"providers": {
"gemini": {
"apiKey": "你的 Gemini API Key"
}
}
}
💡 获取 Gemini API Key:https://aistudio.google.com/apikey
AppID 和 Secret{
"channels": {
"qq": {
"enabled": true,
"appId": "你的 AppID",
"secret": "你的 Secret"
}
}
}
python3.11 -m nanobot gateway
看到 机器人「xxx」启动成功! 就表示一切就绪,去 QQ 上找你的机器人聊天吧!
当让机器人帮我搜索新闻时,可能会回复:
"无法获取网页搜索结果,因为缺少 BRAVE_API_KEY"
什么?搜索还要单独的 API Key?
研究了一下发现,nanobot 默认使用 Brave Search API 作为搜索后端,这需要注册并获取 API Key。虽然有免费额度,但注册流程有点繁琐。
我就想:能不能支持其他搜索引擎?比如完全免费的 DuckDuckGo?
说干就干!我 fork 了 nanobot 仓库,花了一个下午重构了搜索模块,实现了三种搜索引擎的支持。
采用策略模式,让搜索后端可插拔:
SearchBackend (抽象基类)
├── TavilyBackend (AI 优化搜索,推荐)
├── BraveBackend (原版默认)
└── DuckDuckGoBackend (免费,无需 API Key)
class SearchBackend(ABC):
@abstractmethod
async def search(self, query: str, max_results: int) -> list[dict]:
pass
class DuckDuckGoBackend(SearchBackend):
"""免费搜索,无需 API Key"""
async def search(self, query: str, max_results: int) -> list[dict]:
# 解析 DuckDuckGo HTML 页面获取结果
url = f"https://html.duckduckgo.com/html/?q={quote(query)}"
# ... 实现细节
现在只需在配置文件中指定引擎即可:
{
"tools": {
"web": {
"search": {
"engine": "tavily", // 或 "brave" 或 "duckduckgo"
"apiKey": "你的 API Key"
}
}
}
}
三种引擎对比:
| 引擎 | 需要 API Key | 搜索质量 | 推荐场景 |
|---|---|---|---|
| Tavily | ✅ (免费 1000 次/月) | ⭐⭐⭐⭐⭐ | AI 应用首选 |
| Brave | ✅ | ⭐⭐⭐⭐ | 隐私优先 |
| DuckDuckGo | ❌ | ⭐⭐⭐ | 零成本体验 |
我已经将这个特性提交了 PR,希望能帮助到更多开发者:
配置好 Tavily 后,搜索功能完美运行!可以看到实际对话效果:
[图片:nanobot QQ 机器人对话截图,显示搜索结果质量高且信息全面]
从截图可以看到:搜索结果的质量相当不错,信息及时且全面,这就是 Tavily 作为 AI 优化搜索引擎的优势。
nanobot 是一个非常适合个人开发者的 AI Agent 框架:
优点:
适合场景:
不适合场景:
如果你也想拥有一个 24 小时在线的 AI 助手,不妨试试 nanobot!

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online