用 Claude + n8n 搭建你的第一个 AI Agent 团队

用 Claude + n8n 搭建你的第一个 AI Agent 团队
开场
上个月我用 Claude API + n8n 搭了一个 5 人 Agent 团队,替我完成了一个原本需要 3 天的内容生产任务——调研、写稿、审稿、排版,全流程自动化,总 API 成本不到 $8。这篇文章把整个搭建过程拆解给你看,包括踩过的坑和最终跑通的架构。
问题背景
很多人听过 multi-agent 的概念,但真正动手搭建时会遇到几个问题:
第一,Agent 之间怎么通信? 你让一个 Agent 做调研,另一个 Agent 写文章,中间的数据怎么传?格式怎么统一?
第二,错误怎么处理? 如果调研 Agent 返回了垃圾数据,下游的写作 Agent 会写出更大的垃圾。没有质量门控的 multi-agent 系统,比单 Agent 还不如。
第三,怎么 debug? 5 个 Agent 串联,最终输出不对,你怎么定位是哪一步出了问题?
n8n 解决了这三个问题。它是一个开源的工作流自动化平台,原本用于 API 编排,但它的可视化节点 + webhook + 错误处理机制,天然适合做 Agent 编排层。
核心架构
设计原则
- Agent 无状态:每个 Agent 只关心自己的输入和输出,不需要知道上下游是谁
- n8n 做编排:所有 Agent 的调用顺序、条件分支、重试逻辑都在 n8n 里配置
- 质量门控:关键节点设置评分机制,低于阈值自动触发修改流程
架构概览
触发器 (Webhook/定时)
↓
n8n 主工作流
├── 节点 1: 调研 Agent (Claude Sonnet)
│ ↓ 输出: 结构化调研数据 (JSON)
├── 节点 2: 写作 Agent (Claude Sonnet)
│ ↓ 输出: 文章草稿 (Markdown)
├── 节点 3: 审核 Agent (Claude Haiku)
│ ↓ 输出: 评分 + 修改意见
├── 条件分支: 评分 >= 75?
│ ├── 是 → 节点 4: 格式化 Agent
│ └── 否 → 节点 5: 修改 Agent → 回到审核
└── 输出: 最终文件写入存储
关键组件
调研 Agent:接收主题关键词,通过 Claude API 生成搜索策略,调用外部 API 获取数据,输出结构化 JSON。
写作 Agent:接收调研数据和写作规则(语气、字数、结构模板),输出 Markdown 格式的文章。
审核 Agent:用 Claude Haiku(成本低、速度快),按照预设评分标准给文章打分,输出分数和具体修改建议。
实现细节
Step 1: 配置 n8n 环境
n8n 支持 Docker 部署或云托管(Pro 版 $60/月,含 10,000 次执行)。自建的话,成本更低:
# Docker 部署 n8n
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-e N8N_AI_ENABLED=true \
docker.n8n.io/n8nio/n8n
关键配置:开启 N8N_AI_ENABLED 环境变量,这会激活 n8n 的 AI 节点面板,包括 Agent 节点、Tool 节点和 Memory 节点。
Step 2: 创建调研 Agent 节点
在 n8n 里,每个 Agent 实际上是一个 HTTP Request 节点,调用 Claude API:
// n8n Code 节点中的 Claude API 调用
const response = await $http.request({
method: 'POST',
url: 'https://api.anthropic.com/v1/messages',
headers: {
'x-api-key': $env.ANTHROPIC_API_KEY,
'anthropic-version': '2023-06-01',
'content-type': 'application/json',
},
body: {
model: 'claude-sonnet-4-5-20250514',
max_tokens: 4096,
system: `你是一个专业调研员。根据给定主题,输出结构化调研数据。
输出格式必须是 JSON:
{
"key_facts": [...], // 核心事实,附数据来源
"market_data": {...}, // 市场数据
"competitor_analysis": [] // 竞品分析
}`,
messages: [
{
role: 'user',
content: `调研主题: ${$input.item.json.topic}`,
},
],
},
});
// 解析并传递给下一个节点
return { json: JSON.parse(response.content[0].text) };
这里有个坑:Claude 返回的 JSON 有时候会被 Markdown 代码块包裹(```json ... ```)。处理方法是在解析前做一次清洗:
// 清洗 Claude 返回的 JSON
function cleanJsonResponse(text: string): string {
// 去掉 Markdown 代码块标记
const cleaned = text.replace(/```json\n?/g, '').replace(/```\n?/g, '');
return cleaned.trim();
}
Step 3: 写作 Agent 节点
写作 Agent 的核心在于 system prompt 的设计。我把品牌语气规则、文章结构模板、禁用词列表全部塞进 system prompt:
# 写作 Agent 的 system prompt 结构(简化版)
WRITING_SYSTEM_PROMPT = """
你是一位技术内容写作专家。
## 写作规则
- 语气:专业但亲和,第一人称
- 字数:2000-3000 字
- 结构:开场 hook → 问题 → 解决方案 → 代码示例 → 实战经验 → 总结
- 禁用词列表:{banned_words}
## 输入
你会收到一份 JSON 格式的调研数据,基于它写作。
## 输出
Markdown 格式的文章,包含 YAML frontmatter。
"""
Step 4: 审核 Agent + 条件分支
这是整个系统最关键的部分。审核 Agent 用 Claude Haiku($1/M input, $5/M output),成本极低:
// 审核 Agent 的评分逻辑
const reviewPrompt = `
评估这篇文章的质量,按以下 5 个维度打分(每项 20 分,总分 100):
1. 内容深度:是否有具体数据和案例
2. 结构清晰度:逻辑是否通顺
3. 语气一致性:是否符合品牌调性
4. 技术准确性:代码和技术描述是否正确
5. 原创性:是否有独特视角
输出 JSON:
{
"total_score": 82,
"dimensions": { ... },
"issues": ["具体问题1", "具体问题2"],
"suggestions": ["修改建议1", "修改建议2"]
}
文章内容:
${$input.item.json.article}
`;
n8n 的 Switch 节点可以根据评分做条件路由:
total_score >= 75→ 进入格式化节点total_score < 75→ 进入修改节点,然后回到审核(最多循环 2 次)
Step 5: 错误处理和重试
n8n 内置了 Error Trigger 节点。我为每个 Agent 节点配置了:
- 超时:30 秒无响应则重试(Claude API 偶尔会慢)
- 格式错误:JSON 解析失败则重新请求,prompt 里加上 "严格输出 JSON,不要附加解释"
- API 限流:429 错误触发指数退避重试(1s, 2s, 4s)
// n8n 重试配置(在节点 Settings 里)
{
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 2000 // 毫秒
}
实战经验
生产数据
这套系统我跑了 50 篇文章的批量生产,数据如下:
| 指标 | 数值 |
|---|---|
| 单篇平均耗时 | 4 分 12 秒 |
| 调研 Agent token 消耗 | ~2,800 input / ~1,500 output |
| 写作 Agent token 消耗 | ~4,200 input / ~3,800 output |
| 审核 Agent token 消耗 | ~5,000 input / ~800 output |
| 单篇平均 API 成本 | $0.15 (Sonnet) + $0.03 (Haiku) = $0.18 |
| 一次通过率(≥75 分) | 72% |
| 修改一次后通过率 | 94% |
踩过的坑
坑 1:Agent 角色混淆。 最初我给写作 Agent 的 prompt 太简单,它有时候会"自作主张"做调研,输出的内容和调研 Agent 的数据不一致。解决方案:在 system prompt 里明确声明 "你只能使用提供的调研数据,不要补充额外信息"。
坑 2:n8n 的 AI Agent 节点和自定义 HTTP 节点选哪个? n8n 内置了 AI Agent 节点,支持直接连接 Anthropic。但我发现自定义 HTTP Request 更灵活——可以精确控制 prompt、temperature 和输出格式。内置节点适合快速原型,生产环境推荐自定义。
坑 3:并行执行的内存问题。 n8n 默认会将所有节点数据保存在内存中。5 个 Agent 同时处理长文章时,单个工作流的内存占用可以超过 500MB。解决方案:把批量任务拆成多个子工作流,每个子工作流处理一篇文章。
适用范围
适合的场景:
- 内容生产流水线(调研 → 写作 → 审核)
- 数据处理管道(提取 → 清洗 → 分析 → 报告)
- 客户工单自动分类和初步回复
不适合的场景:
- 需要 Agent 之间实时对话的场景(n8n 是顺序执行,不支持多轮对话编排)
- 需要复杂状态管理的场景(Agent 需要记住跨任务的上下文)
- 低延迟要求(< 1 秒响应)
对比选型
| 维度 | n8n + Claude API | LangChain/LangGraph | CrewAI |
|---|---|---|---|
| 学习曲线 | 低(可视化拖拽) | 中(需要写代码) | 中(角色抽象直观) |
| 灵活性 | 中(受限于节点类型) | 高(完全可编程) | 中(框架约束) |
| Debug 体验 | 优秀(可视化执行日志) | 一般(日志文本) | 一般 |
| 生产运维 | 内置监控和重试 | 需要自建 | 需要自建 |
| 自托管成本 | Docker 即可 | 自定义部署 | 自定义部署 |
| 适合团队 | 运营/产品团队 | 工程团队 | 工程团队 |
总结
三条核心 takeaway:
-
n8n 是 multi-agent 编排的最佳入门工具——可视化节点让你能直观看到数据流,内置的错误处理和重试机制省去大量基础设施代码。
-
质量门控是 multi-agent 系统的命脉——没有审核节点的 Agent 链就是一条没有刹车的流水线。用 Claude Haiku 做审核,成本低到可以忽略(每篇 $0.03)。
-
先跑通单条流水线,再考虑并行扩展——别一上来就搞 10 个 Agent 并行。先用一个简单的三节点流程(调研 → 写作 → 审核)验证逻辑,跑通之后再加节点、加并行。
如果你准备开始搭建自己的 Agent 团队,我建议从一个最简单的两节点工作流开始:一个 Agent 生成内容,一个 Agent 审核内容。两天之内你就能跑通,然后再迭代扩展。
你在搭 multi-agent 系统的时候遇到过什么问题?欢迎在评论区聊聊。