AI Agent 框架对比笔记
一、项目概览
| 项目 | Star数 | 代码行数 | 语言 | 定位 |
|---|
| PicoClaw | 12,000+ | Go | 超轻量个人AI助手 | |
| ZeroClaw | 活跃更新 | Rust | AI助手基础设施 | |
| NanoBot | 活跃更新 | ~11,200行 | Python | 超轻量OpenClaw |
| CountBot | 新项目 | ~426,700行 | Python+Vue | 中文优先AI Agent |
| OpenClaw | 活跃更新 | ~205,200行 | TypeScript | 企业级个人助手 |
二、核心架构对比
1. Agent Loop (核心循环)
NanoBot - 简洁同步
while iteration < max_iterations:
response = await provider.chat(messages, tools)
if response.has_tool_calls:
for tool_call in response.tool_calls:
result = await tools.execute(tool_call.name, args)
messages.append(tool_result)
else:
break
CountBot - 增强异步流式
while iteration < max_iterations:
async for chunk in provider.chat_stream(messages, tools):
if chunk.is_content:
yield chunk.content # 实时推送
if chunk.is_tool_call:
tool_calls_buffer.append(chunk.tool_call)
# 带重试的工具执行
for tool_call in tool_calls_buffer:
for attempt in range(max_retries):
try:
result = await tools.execute(tool_name, args)
break
except Exception:
await asyncio.sleep(retry_delay)
OpenClaw - Pi框架 + 多级重试
// 32-160次重试迭代,带Auth Profile轮换
const maxRetries = resolveMaxRunRetryIterations(profileCount);
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const result = await runEmbeddedAttempt({
messages,
tools,
thinkingLevel,
sandbox
});
return result;
} catch (error) {
if (isFailoverError(error)) {
await markAuthProfileFailure(profile);
continue; // 切换到下一个Auth Profile
}
}
}
2. Agent Loop 核心原理
ReAct = Reasoning + Acting(推理 + 行动)
Reasoning (推理): 思考要做什么
↓
Acting (行动): 执行工具完成
↓
Observation (观察): 查看结果
↓
回到 Reasoning (继续推理)
循环流程:
┌─────────────────────────────────────────┐
│ Agent Loop (循环) │
├─────────────────────────────────────────┤
│ 1. 接收用户消息 │
│ 2. 构建上下文 (历史/记忆/技能) │
│ 3. 调用 LLM 生成回复 │
│ 4. 解析 LLM 响应 │
│ ├─ 有工具调用? → 执行工具 │
│ └─ 无工具调用? → 返回答案 │
│ 5. 将工具结果反馈给 LLM │
│ 6. 回到步骤 3,继续循环 (直到完成) │
└─────────────────────────────────────────┘
三、详细对比
1. Context Builder (上下文构建)
| 特性 | NanoBot | CountBot | OpenClaw |
|---|
| 系统提示 | 基础身份 | 12种性格系统 | Bootstrap Files |
| Bootstrap | 5个文件 | 无 | 7个文件 |
| 记忆上下文 | MEMORY.md | 智能记忆总结 | Memory Search |
| 技能加载 | 渐进式 | 自动加载 | 动态加载 |
| 自定义性格 | ❌ | ✅ 完全自定义 | ✅ AGENTS.md自定义 |
Bootstrap文件对比:
# NanoBot
- AGENTS.md
- SOUL.md
- USER.md
- TOOLS.md
- IDENTITY.md
# OpenClaw
- AGENTS.md
- SOUL.md
- USER.md
- TOOLS.md
- IDENTITY.md
- SKILLS.md
- MEMORY.md
2. Memory System (记忆系统)
| 特性 | NanoBot | CountBot | OpenClaw |
|---|
| 存储方式 | 双文件 | 行式存储 | SQLite + Search |
| 记忆格式 | Markdown | 日期|来源|内容 | 结构化 + 向量 |
| 总结方式 | LLM工具调用 | 自动触发 + LLM | 智能总结 + 搜索 |
| 搜索方式 | grep HISTORY.md | 关键词搜索 | 向量搜索 + 关键词 |
CountBot 行式存储示例:
2026-02-22|web-chat|用户询问天气API方案;决定使用OpenWeatherMap;缓存策略选Redis
2026-02-22|telegram|用户要求每天早上9点发送日报;已创建cron任务
3. Channels (渠道支持)
| 渠道 | NanoBot | CountBot | OpenClaw |
|---|
| Telegram | ✅ | ✅ | ✅ |
| Discord | ✅ | ❌ | ✅ 深度集成 |
| WhatsApp | ✅ | ❌ | ✅ |
| Slack | ✅ | ❌ | ✅ |
| Feishu | ✅ | ✅ | ❌ |
| DingTalk | ✅ | ✅ | ❌ |
| QQ | ✅ | ✅ | ❌ |
| Signal | ❌ | ❌ | ✅ |
| iMessage | ❌ | ❌ | ✅ |
| Web UI | ❌ | ✅ Vue 3 | ✅ WebChat |
| 总计 | 9 | 6 | 15+ |
| 工具类型 | NanoBot | CountBot | OpenClaw |
|---|
| 文件操作 | 4个 | 4个 | ✅ |
| Shell | ✅ | ✅ | ✅ PTY支持 |
| Web | 2个 | 1个 | ✅ browser-tool |
| 浏览器 | ❌ | ❌ | ✅ Puppeteer集成 |
| Canvas | ❌ | ❌ | ✅ 可视化工作区 |
| Cron | ✅ | ✅ | ✅ |
| Discord Actions | ❌ | ❌ | ✅ 消息/频道/版主 |
| Sessions | ❌ | ❌ | ✅ 会话管理 |
| Subagents | ✅ | ✅ | ✅ 深度嵌套 |
| Terminal | ❌ | ❌ | ✅ 终端集成 |
| 总计 | ~8 | 13 | 74+ |
5. Security (安全机制)
| 特性 | NanoBot | CountBot | OpenClaw |
|---|
| 工作空间限制 | ✅ | ✅ | ✅ |
| 沙箱 | ❌ | ❌ | ✅ 完整沙箱 |
| 危险命令检测 | 基础 | 详细模式 | ✅ 策略管道 |
| 命令白名单 | ❌ | ✅ | ✅ |
| 审计日志 | ❌ | ✅ | ✅ |
| API密钥加密 | ❌ | ✅ Fernet | ✅ OAuth轮换 |
| 远程认证 | ❌ | 渐进式安全 | ✅ 配对认证 |
| 限流 | ❌ | 令牌桶 | ✅ |
| Auth Profiles | ❌ | ❌ | ✅ 多配置轮换 |
| Failover | ❌ | ❌ | ✅ 自动故障转移 |
四、技术栈对比
| 组件 | NanoBot | CountBot | OpenClaw |
|---|
| Web框架 | ❌ | ✅ FastAPI | ✅ Express |
| 数据库 | SQLite | SQLite + PG | ✅ SQLite |
| ORM | ❌ | ✅ SQLAlchemy | ❌ |
| 前端 | ❌ | ✅ Vue 3 | ✅ React |
| WebSocket | ✅ | ✅ | ✅ |
| 配置管理 | Pydantic Settings | ✅ Pydantic v2 | ✅ |
| 日志 | Loguru | Loguru | ✅ |
| LLM统一接口 | LiteLLM | LiteLLM | ✅ @mariozechner/pi-ai |
| 定时任务 | Croniter | Croniter | ✅ |
| 浏览器自动化 | ❌ | ❌ | ✅ Puppeteer |
| 沙箱 | ❌ | ❌ | ✅ Docker/Podman |
| 插件系统 | ❌ | ❌ | ✅ 完整SDK |
五、部署方式对比
| 方式 | NanoBot | CountBot | OpenClaw |
|---|
| CLI | ✅ nanobot agent | ✅ python start_app.py | ✅ openclaw agent |
| Docker | ✅ Compose | ✅ | ✅ Dockerfile |
| 桌面应用 | ❌ | ✅ start_desktop.py | ✅ 原生应用 |
| Web UI | ❌ | ✅ http://localhost:8000 | ✅ WebChat |
| Daemon服务 | ❌ | ❌ | ✅ systemd/launchd |
| 图形化配置 | ❌ | ✅ Web界面 | ✅ 向导 |
| 远程访问 | ❌ | 自动密码保护 | ✅ 配对认证 |
六、性能对比
| 指标 | NanoBot | CountBot | OpenClaw |
|---|
| 内存占用 | >100MB | ~200MB | ~300MB |
| 启动时间 | ~30s | ~5s | ~3s |
| 代码复杂度 | 低 | 中 | 高 |
| 响应延迟 | 中等 | 低 | 极低 |
| 并发处理 | 异步 | 异步+队列 | 异步+Lane队列 |
| 缓存支持 | ❌ | ❌ | ✅ Context缓存 |
七、适用场景
| 场景 | NanoBot | CountBot | OpenClaw |
|---|
| 学习Agent原理 | ✅ | ❌ | ❌ |
| 快速原型开发 | ✅ | ❌ | ❌ |
| 中文个人助手 | ❌ | ✅ | ❌ |
| 生产Web应用 | ❌ | ✅ | ✅ |
| 多渠道国际化 | ✅ | ❌ | ✅ |
| 国内企业应用 | ❌ | ✅ | ❌ |
| 边缘设备部署 | ✅ | ❌ | ❌ |
| 需要图形界面 | ❌ | ✅ | ✅ |
| 浏览器自动化 | ❌ | ❌ | ✅ |
| Discord深度集成 | ❌ | ❌ | ✅ |
| 企业级部署 | ❌ | ❌ | ✅ |
| 插件开发 | ❌ | ❌ | ✅ |
八、核心差异总结
NanoBot 的优势
- 极简设计: ~11K行代码,易于理解和修改
- 研究友好: 代码清晰,适合学习Agent原理
- MCP支持: Model Context Protocol
- 多渠道: 9个渠道,国际化支持好
- 轻量级: 内存占用低,适合个人使用
CountBot 的优势
- 中文优先: 12种性格系统,深度适配国产大模型
- 生产级: 完整的Web UI、数据库、审计日志
- 智能记忆: 自动总结+关键词搜索
- 流式响应: WebSocket实时推送工具进度
- 安全完善: 多层安全机制,API密钥加密
- 技能丰富: 10种内置技能,开箱即用
- 图形化配置: 无需编辑配置文件
OpenClaw 的优势
- 企业级功能: 74个工具,15+渠道
- 浏览器自动化: 内置Puppeteer
- Canvas可视化: 可视化工作区
- 多级重试: 32-160次重试,Auth Profile轮换
- 沙箱隔离: 完整的Docker/Podman沙箱
- 插件生态: 完整的插件SDK
- 原生应用: macOS/iOS/Android原生体验
- Thinking Levels: 流式思考输出
- 深度Discord集成: 消息/频道/版主操作
- Failover机制: 自动故障转移
九、选择建议
| 需求 | 推荐方案 |
|---|
| 学习研究 | NanoBot |
| 中文个人助手 | CountBot |
| 生产Web应用 | CountBot |
| 企业级部署 | OpenClaw |
| Discord深度集成 | OpenClaw |
| 浏览器自动化 | OpenClaw |
| 简单易用 | NanoBot/CountBot |
| 功能最全 | OpenClaw |
| 快速原型 | NanoBot |
| 多渠道国际化 | NanoBot/OpenClaw |
十、总结
代码规模
- 最轻量: NanoBot (~11K行)
- 中等: OpenClaw (~205K行)
- 最完整: CountBot (~426K行)
功能特性
- 研究学习: NanoBot
- 中文友好: CountBot
- 企业级: OpenClaw
技术选择
- Python生态: NanoBot, CountBot
- TypeScript生态: OpenClaw
- Go生态: PicoClaw
- Rust生态: ZeroClaw
最终推荐
- 初学者/研究者: NanoBot
- 中文用户: CountBot
- 企业/技术用户: OpenClaw