如果你想从“完整项目”入手做 AI Agent 开发,优先看这几个开源项目(按类型帮你分了类):
为什么从这里开始? 因为 Agent 开发涉及记忆、工具、规划、多模型、多平台等多个复杂模块,自己从零搭建容易陷入细节。直接研究成熟项目,能快速掌握最佳实践和架构模式,事半功倍。
- Hermes Agent(爱马仕) —— 重点看:记忆系统 + 技能自学习闭环 + 多平台网关
- GenericAgent —— 重点看:极简 ~3K 行自进化架构,适合自己照着重构
- OpenClaw(龙虾) —— 重点看:多平台消息网关 + 工具集成 + 可观测性
- MetaGPT —— 重点看:角色化多 Agent + 软件公司流程编排
- CrewAI —— 重点看:轻量多 Agent + 任务拆分 + 工作流编排
- Dify —— 重点看:可视化 Agent 工作流 + RAG + 一键部署
下面按“你要开发”的视角,简单说说每个项目适合学什么、怎么选。
1. Hermes Agent(爱马仕)—— 自进化单体 Agent
- 仓库: NousResearch/hermes-agent
- 官网: https://hermes-agent.org
- 特点:
- 自我进化闭环: 任务完成后自动提炼成 Skill,下次直接复用,并持续优化 Skill
- 四层持久记忆: 热记忆/温记忆/冷记忆 + USER.md / MEMORY.md,SQLite + FTS5 全文检索
- 多平台消息网关: Telegram / Discord / Slack / 飞书 / 钉钉 / WhatsApp 等 10+ 平台
- 6 种执行后端: 本地、Docker、SSH、Daytona、Singularity、Modal 等
- 多模型: OpenRouter 200+ 模型、OpenAI、Kimi、MiniMax 等
开发上值得学的点:
- 如何设计“执行 → 总结 → Skill 生成 → Skill 自改进”的闭环(这是 Hermes 最大的亮点)
- 分层记忆系统怎么存、怎么检索、怎么自动摘要和遗忘
- 消息网关层如何与核心 Agent 引擎解耦: 前端只负责收发消息,真正的 Agent 循环在一个地方跑
- Skill 标准化(YAML/Markdown 元数据 + 文档)和技能市场/生态怎么做
适合你:
想做一个“长期在线、越用越懂你”的个人 Agent / 办公助手,尤其看重记忆和自进化能力。
2. GenericAgent —— 极简自进化框架,适合自己重写
- 仓库: lsdefine/GenericAgent
- 特点:
- 核心只有约 3K 行代码,Agent 循环约 100 行,9 个原子工具
- 自进化: 每次任务自动沉淀成 Skill,形成个人技能树
- 系统级控制: 浏览器、终端、文件系统、键盘鼠标、屏幕视觉、ADB(手机)等
- 兼容多种模型: Claude / Gemini / Kimi / MiniMax 等
开发上值得学的点:
- 如何用最少的代码实现一个完整的 Agent Loop(观察 → 思考 → 行动 → 记忆 → Skill)
- 如何把“工具层”抽象成 9 个原子工具,再组合出复杂技能
- 自进化的实现细节: Skill 的数据结构、触发条件、版本演进机制
适合你:
如果你想“自己从零写一个 Agent 框架”,GenericAgent 比 Hermes 更适合当骨架,因为它刻意做得极简,代码量小,容易通读再重写。
3. OpenClaw(龙虾)—— 多平台助手型 Agent
- 仓库: openclaw/openclaw
- 官网: https://openclaw.ai
- 特点:
- 定位: 个人 AI 助手,跑在你自己的设备上,通过 WhatsApp / Telegram / 邮件等渠道帮你做事
- Gateway-first 架构: 强调多平台消息接入 + 可控执行
- 内置大量工具: 邮件、日历、浏览器、文件操作等,偏“生活/办公自动化”
- 多模型支持,可以一键切换不同模型
开发上值得学的点:
- 消息网关设计: 如何统一接 WhatsApp / Telegram / 邮件 / Slack,再转成统一消息格式给 Agent 核心
- 工具抽象: 如何把“发邮件”“查日历”“操作浏览器”等统一抽象成 Tool
- 可观测性与安全: 日志、权限、审批、沙箱(OpenClaw 这块比 Hermes 稍弱,但可以看它做了哪些)
适合你:
如果你想做“一个连微信/飞书/钉钉的私人助手”,OpenClaw 是很好的参考;特别是“多端接入”的部分。
4. MetaGPT —— 多角色协作的多 Agent 框架
- 仓库: FoundationAgents/MetaGPT
- 文档(含中文): MetaGPT/docs/README_CN.md
- 特点:
- 把多 Agent 模拟成“软件公司”: 产品经理 / 架构师 / 项目经理 / 工程师等角色
- 定义了清晰的工作流: 需求 → 设计 → 任务拆分 → 编码 → 测试,完整流程
- 支持多模型轮转、文档解析、复杂项目自动生成
开发上值得学的点:
- 如何给每个 Agent 分配“角色 + 职责 + 上下文”
- 多 Agent 之间如何通过消息/共享文档协作(而不是简单串联)
- 如何把“项目流程”固化为可执行的 Pipeline,而不是一次性脚本
适合你:
如果你想做“多 Agent 协作完成一个复杂项目(比如自动开发一个项目、自动做数据分析报表)”,MetaGPT 是目前最完整的一个参考。
5. CrewAI —— 轻量多 Agent 编排框架
- 仓库: crewAIInc/crewAI
- 示例: crewAIInc/crewAI-examples
- 特点:
- 轻量、独立、高性能的多 Agent 框架,强调简单可控
- 通过角色定义 + 任务拆分 + 工作流编排,把多个 Agent 组装成一个“团队”
- 示例丰富: 营销自动化、内容创作、业务流程等
开发上值得学的点:
- 如何定义一个 Agent(角色、目标、工具)和任务(Task)
- 如何把多个 Task 组装成流程(串行 / 并行 / 条件分支)
- 如何在保持轻量的前提下,做到可观测和可调试
适合你:
如果你觉得 MetaGPT 太“重”,只想做一个小而美的多 Agent 工作流,CrewAI 是更轻量的选择。
6. Dify —— 平台级 Agent 工作流
- 仓库: langgenius/dify
- 官网: https://dify.ai
- 特点:
- 生产级 LLM 应用开发平台,包含 Agentic 工作流、RAG、模型管理、插件等
- 可视化编排工作流,拖拽式搭建 Agent 流程
- 插件体系: 官方插件 + 社区插件
开发上值得学的点:
- 如何设计一个“平台级”的 Agent 编排系统: 工作流节点、变量、错误处理、重试机制
- RAG / 工具调用 / 多模型如何统一抽象成节点
- 如何做可观测性(日志、指标、追踪)和权限隔离
适合你:
如果你想做一个“类似 Dify 的 Agent 平台”,或者要给团队提供低代码的 Agent 构建能力,这个项目值得重点研究。
7. 怎么选:给你一个简单决策图
#mermaid-svg-rdrOM0MD2Lrr7x8w{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-rdrOM0MD2Lrr7x8w .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-rdrOM0MD2Lrr7x8w .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-rdrOM0MD2Lrr7x8w .error-icon{fill:#552222;}#mermaid-svg-rdrOM0MD2Lrr7x8w .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rdrOM0MD2Lrr7x8w .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-rdrOM0MD2Lrr7x8w .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-rdrOM0MD2Lrr7x8w .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-rdrOM0MD2Lrr7x8w .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-rdrOM0MD2Lrr7x8w .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-rdrOM0MD2Lrr7x8w .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-rdrOM0MD2Lrr7x8w .marker{fill:#333333;stroke:#333333;}#mermaid-svg-rdrOM0MD2Lrr7x8w .marker.cross{stroke:#333333;}#mermaid-svg-rdrOM0MD2Lrr7x8w svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-rdrOM0MD2Lrr7x8w p{margin:0;}#mermaid-svg-rdrOM0MD2Lrr7x8w .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-rdrOM0MD2Lrr7x8w .cluster-label text{fill:#333;}#mermaid-svg-rdrOM0MD2Lrr7x8w .cluster-label span{color:#333;}#mermaid-svg-rdrOM0MD2Lrr7x8w .cluster-label span p{background-color:transparent;}#mermaid-svg-rdrOM0MD2Lrr7x8w .label text,#mermaid-svg-rdrOM0MD2Lrr7x8w span{fill:#333;color:#333;}#mermaid-svg-rdrOM0MD2Lrr7x8w .node rect,#mermaid-svg-rdrOM0MD2Lrr7x8w .node circle,#mermaid-svg-rdrOM0MD2Lrr7x8w .node ellipse,#mermaid-svg-rdrOM0MD2Lrr7x8w .node polygon,#mermaid-svg-rdrOM0MD2Lrr7x8w .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-rdrOM0MD2Lrr7x8w .rough-node .label text,#mermaid-svg-rdrOM0MD2Lrr7x8w .node .label text,#mermaid-svg-rdrOM0MD2Lrr7x8w .image-shape .label,#mermaid-svg-rdrOM0MD2Lrr7x8w .icon-shape .label{text-anchor:middle;}#mermaid-svg-rdrOM0MD2Lrr7x8w .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-rdrOM0MD2Lrr7x8w .rough-node .label,#mermaid-svg-rdrOM0MD2Lrr7x8w .node .label,#mermaid-svg-rdrOM0MD2Lrr7x8w .image-shape .label,#mermaid-svg-rdrOM0MD2Lrr7x8w .icon-shape .label{text-align:center;}#mermaid-svg-rdrOM0MD2Lrr7x8w .node.clickable{cursor:pointer;}#mermaid-svg-rdrOM0MD2Lrr7x8w .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-rdrOM0MD2Lrr7x8w .arrowheadPath{fill:#333333;}#mermaid-svg-rdrOM0MD2Lrr7x8w .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-rdrOM0MD2Lrr7x8w .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-rdrOM0MD2Lrr7x8w .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-rdrOM0MD2Lrr7x8w .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-rdrOM0MD2Lrr7x8w .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-rdrOM0MD2Lrr7x8w .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-rdrOM0MD2Lrr7x8w .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-rdrOM0MD2Lrr7x8w .cluster text{fill:#333;}#mermaid-svg-rdrOM0MD2Lrr7x8w .cluster span{color:#333;}#mermaid-svg-rdrOM0MD2Lrr7x8w div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-rdrOM0MD2Lrr7x8w .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-rdrOM0MD2Lrr7x8w rect.text{fill:none;stroke-width:0;}#mermaid-svg-rdrOM0MD2Lrr7x8w .icon-shape,#mermaid-svg-rdrOM0MD2Lrr7x8w .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-rdrOM0MD2Lrr7x8w .icon-shape p,#mermaid-svg-rdrOM0MD2Lrr7x8w .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-rdrOM0MD2Lrr7x8w .icon-shape .label rect,#mermaid-svg-rdrOM0MD2Lrr7x8w .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-rdrOM0MD2Lrr7x8w .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-rdrOM0MD2Lrr7x8w .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-rdrOM0MD2Lrr7x8w :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
单 Agent
多 Agent
记忆 + 自进化
多平台助手
偏角色协作
偏工作流编排
你想做什么 Agent?
单 Agent 还是 多 Agent?
重点是什么?
偏流程还是偏角色?
Hermes Agent+ GenericAgent 做简化版
OpenClaw+ Hermes 记忆设计
MetaGPT+ CrewAI 做轻量版
Dify+ CrewAI 流程抽象
结合你说的“爱马仕 / OpenClaw 这种级别”,我建议的组合是:
- 记忆 + 自进化: 看 Hermes + GenericAgent
- 多平台接入: 看 OpenClaw 的网关层
- 想做“软件公司式”多角色协作: 看 MetaGPT
- 想做轻量工作流: 看 CrewAI
- 想做 SaaS / 低代码平台: 看 Dify
8. 实际开发时,怎么“抄作业”更高效
比如:“做一个能自动整理 GitHub Issue 并发飞书通知的单 Agent”,先跑通,再补记忆和多 Agent。
- Hermes: 看 agent/ 下的 prompt_builder.py / memory_manager.py / skill_utils.py + run_agent.py
- GenericAgent: 看 agent_loop.py + llmcore.py + memory/
把这些项目克隆下来,先删掉你暂时不需要的功能(比如只保留 CLI + 文件工具 + 简单记忆),跑起来,再一点点加。
- 工具: 统一成 tool_schema(name / description / parameters / execute)
- 消息: 统一成 Message(role / content / metadata)
- 记忆: 统一成 MemoryStore(save / search / delete)
这样你之后换框架、加平台,成本会低很多。
9. 下一步:从“看懂”到“动手”
理论看完了,下一步就是动手。这里提供一个简单的学习路径图,帮你把知识串联起来:
#mermaid-svg-IhBjMBFQAl0n7lry{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-IhBjMBFQAl0n7lry .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-IhBjMBFQAl0n7lry .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-IhBjMBFQAl0n7lry .error-icon{fill:#552222;}#mermaid-svg-IhBjMBFQAl0n7lry .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-IhBjMBFQAl0n7lry .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-IhBjMBFQAl0n7lry .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-IhBjMBFQAl0n7lry .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-IhBjMBFQAl0n7lry .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-IhBjMBFQAl0n7lry .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-IhBjMBFQAl0n7lry .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-IhBjMBFQAl0n7lry .marker{fill:#333333;stroke:#333333;}#mermaid-svg-IhBjMBFQAl0n7lry .marker.cross{stroke:#333333;}#mermaid-svg-IhBjMBFQAl0n7lry svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-IhBjMBFQAl0n7lry p{margin:0;}#mermaid-svg-IhBjMBFQAl0n7lry .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-IhBjMBFQAl0n7lry .cluster-label text{fill:#333;}#mermaid-svg-IhBjMBFQAl0n7lry .cluster-label span{color:#333;}#mermaid-svg-IhBjMBFQAl0n7lry .cluster-label span p{background-color:transparent;}#mermaid-svg-IhBjMBFQAl0n7lry .label text,#mermaid-svg-IhBjMBFQAl0n7lry span{fill:#333;color:#333;}#mermaid-svg-IhBjMBFQAl0n7lry .node rect,#mermaid-svg-IhBjMBFQAl0n7lry .node circle,#mermaid-svg-IhBjMBFQAl0n7lry .node ellipse,#mermaid-svg-IhBjMBFQAl0n7lry .node polygon,#mermaid-svg-IhBjMBFQAl0n7lry .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-IhBjMBFQAl0n7lry .rough-node .label text,#mermaid-svg-IhBjMBFQAl0n7lry .node .label text,#mermaid-svg-IhBjMBFQAl0n7lry .image-shape .label,#mermaid-svg-IhBjMBFQAl0n7lry .icon-shape .label{text-anchor:middle;}#mermaid-svg-IhBjMBFQAl0n7lry .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-IhBjMBFQAl0n7lry .rough-node .label,#mermaid-svg-IhBjMBFQAl0n7lry .node .label,#mermaid-svg-IhBjMBFQAl0n7lry .image-shape .label,#mermaid-svg-IhBjMBFQAl0n7lry .icon-shape .label{text-align:center;}#mermaid-svg-IhBjMBFQAl0n7lry .node.clickable{cursor:pointer;}#mermaid-svg-IhBjMBFQAl0n7lry .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-IhBjMBFQAl0n7lry .arrowheadPath{fill:#333333;}#mermaid-svg-IhBjMBFQAl0n7lry .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-IhBjMBFQAl0n7lry .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-IhBjMBFQAl0n7lry .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-IhBjMBFQAl0n7lry .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-IhBjMBFQAl0n7lry .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-IhBjMBFQAl0n7lry .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-IhBjMBFQAl0n7lry .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-IhBjMBFQAl0n7lry .cluster text{fill:#333;}#mermaid-svg-IhBjMBFQAl0n7lry .cluster span{color:#333;}#mermaid-svg-IhBjMBFQAl0n7lry div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-IhBjMBFQAl0n7lry .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-IhBjMBFQAl0n7lry rect.text{fill:none;stroke-width:0;}#mermaid-svg-IhBjMBFQAl0n7lry .icon-shape,#mermaid-svg-IhBjMBFQAl0n7lry .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-IhBjMBFQAl0n7lry .icon-shape p,#mermaid-svg-IhBjMBFQAl0n7lry .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-IhBjMBFQAl0n7lry .icon-shape .label rect,#mermaid-svg-IhBjMBFQAl0n7lry .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-IhBjMBFQAl0n7lry .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-IhBjMBFQAl0n7lry .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-IhBjMBFQAl0n7lry :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
学习起点
确定你的目标 Agent 类型
个人助手型
多角色协作型
平台/工作流型
主攻: OpenClaw + Hermes
核心模块: 消息网关 + 记忆系统
动手: 实现一个 CLI 助手
主攻: MetaGPT + CrewAI
核心模块: 角色定义 + 任务编排
动手: 实现一个多 Agent 写作助手
主攻: Dify + CrewAI
核心模块: 可视化节点 + 工作流引擎
动手: 设计一个简单的拖拽式流程
迭代优化: 加入工具/模型/记忆
产出: 你的第一个可运行 Agent
记住: 最好的学习方式是“模仿-修改-创造”。选一个最接近你目标的项目,把它跑起来,然后尝试修改其中一个模块(比如给 Hermes 加个新工具,或者给 CrewAI 改个任务流程),你会对 Agent 架构有更深的理解。
欢迎关注我与我一起学习AI开发。
