6.1 Open Claw 开源框架
Open Claw 是一款开源、高可扩展的 AI Agent 框架,基于 TypeScript 开发,核心用途是构建可自定义的私人 AI 助手。创新之一是拓展了 Agent 的交互入口(飞书等)。
Open Claw 的设计理念
一切都是插件
Open Claw 核心 = 最小化的插件运行时
所有功能都通过插件实现:
- 🤖 LLM 对接(OpenAI、Anthropic...)
- 💬 交互入口(CLI、飞书、Slack、Web...)
- 🛠️ 工具集成(文件系统、Git、API...)
- 🧠 记忆系统(向量数据库、本地存储...)
多入口设计
同一个 Agent 后端,可以通过多种方式交互:
💻 CLI 命令行 → 开发者最常用
📱 飞书机器人 → 团队协作场景
🌐 Web 界面 → 非技术用户
🔌 API 接口 → 与其他系统集成
核心架构
分层架构
┌─── ──────────────────────────────────────┐
│ Interfaces(交互层) │
│ CLI / 飞书 / Slack / Web / API │
├─────────────────────────────────────────┤
│ Core(核心层) │
│ Agent Loop / Memory / Tool Manager │
├─────────────────────────────────────────┤
│ Plugins(插件层) │
│ LLM Plugins / Tool Plugins / ... │
└─────────────────────────────────────────┘
插件系统设计
// 最简单的插件定义
interface Plugin {
name: string;
version: string;
description: string;
// 提供工具
tools?: Tool[];
// 提供 Prompt
prompts?: Prompt[];
// 生命周期钩子
onLoad?: () => void;
onMessage?: (message: Message) => void;
}
典型插件示例
工具插件:文件系统
const FileSystemPlugin = {
name: 'filesystem',
tools: [
{
name: 'read_file',
description: '读取文件内容',
parameters: {
path: { type: 'string', description: '文件路径' }
},
async execute({ path }) {
return fs.readFileSync(path, 'utf-8');
}
},
// ... 更多工具
]
};
平台插件:飞书机器人
const FeishuPlugin = {
name: 'feishu',
async onLoad() {
// 启动飞书机器人服务
this.bot = createFeishuBot({
appId: config.feishu.appId,
appSecret: config.feishu.appSecret
});
// 监听消息
this.bot.on('message', async (msg) => {
// 转发给 Agent 核心处理
const response = await agent.process(msg.content);
// 回复用户
await msg.reply(response);
});
}
};
内存中的简化版:nanobot
如果说 Open Claw 是完整的工业级框架,nanobot 就是它的极简教学版。
核心思想:500 行代码理解 Agent
# nanobot/core.py
class NanoBot:
def __init__(self, llm, tools):
self.llm = llm
self.tools = tools
self.memory = []
def run(self, goal: str):
self.memory.append({"role": "user", "content": goal})
while True:
# 1. 思考
response = self.llm.chat(
messages=self.memory,
tools=self.tools.get_definitions()
)
# 2. 检查是否需要调用工具
if not response.tool_calls:
return response.content
# 3. 执行工具
for tool_call in response.tool_calls:
result = self.tools.execute(tool_call)
self.memory.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": result
})
→ 这就是 Agent 的本质,剩下的都是工程细节!
为什么选择 Open Claw?
对比其他 框架
| 特性 | Open Claw | LangChain | AutoGPT | CrewAI |
|---|---|---|---|---|
| 多入口支持 | ✅ 原生支持 | ❌ 需要自己做 | ❌ 只有 CLI | ❌ |
| 插件化架构 | ✅ 核心就是插件 | ⚠️ 部分支持 | ⚠️ 简单插件 | ❌ |
| TypeScript 原生 | ✅ | ❌ Python 为主 | ✅ | ✅ |
| 飞书/协作友好 | ✅ 重点设计 | ❌ | ❌ | ❌ |
| 轻量级 | ✅ 核心很小 | ❌ 庞大复杂 | ⚠️ | ⚠️ |
适合场景
✅ 个人私人 AI 助手:集成你的所有工具和数据
✅ 团队协作机器人:飞书/Slack 机器人,整个团队共用
✅ 定制化需求:需要深度定制工作流和工具
✅ 学习研究:源码结构清晰,适合学习 Agent 开发
Open Claw 的创新点
1. 多入口统一 Agent 状态
用户 A 通过飞书问问题
用户 B 通过 CLI 问同一个 Agent
→ 状态共享,记忆共享,能力共享
2. 渐进式权限控制
插件级别权限控制:
- filesystem: 只能读写 ~/projects/
- command: 只能运行白名单内的命令
- github: 只能读,不能写
3. 流式交互体验
Agent 不需要等"想完了"再回复
边想边说,用户实时看到进度:
> 🔍 正在搜索相关文件...
> 📄 找到了 3 个相关文件
> 🔄 正在分析依赖关系...
> ✨ 这是我的建议:...
扩展 Open Claw
开发一个插件的流程
1. 定义插件元数据
2. 实现提供的工具
3. 注册 Prompt 模板
4. 实现生命周期钩子
5. 测试和发布
社区生态
🔧 官方插件
- LLM:OpenAI / Anthropic / 通义千问
- 平台:CLI / 飞书 / WeChat
- 工具:文件 / Git / GitHub / 浏览器
👥 社区插件
- 数据库连接
- Jira 集成
- 数据分析工具
- ...
Open Claw 不是"又一个 Agent 框架",而是对"Agent 应该如何服务于真实世界中的人"的一种探索。