很多朋友看到 n8n 和 AI Agent 这两个词时,第一反应是“这是不是又要写一大坨 Python 代码?”,第二反应是“搭建知识库和自动化工作流,是不是只有程序员才能搞定?”。
其实并不是。
n8n 最大的价值在于把“系统集成”和“工作流编排”变成了可视化操作。你只需要把不同的节点像搭积木一样拖到一起,再把节点之间的参数配好,就能实现一套完整的自动化流程。如果再接入大模型 API,把其中的关键环节交给 AI Agent 来推理和决策,你就能搭建出一个具备“思考能力”的自动化应用。
本文会围绕 n8n + AI Agent 展开,从最基础的概念讲起,然后带你完成环境部署、凭证配置、工作流搭建、AI Agent 接入、知识库雏形,以及常见报错排查。整个过程中不需要你写一行业务代码,所有操作都通过 n8n 的可视化界面完成。
如果你目前正在做 AI 应用落地、知识库搭建、或者企业内部自动化流程改造,这篇文章可以直接作为一份入门到进阶的操作笔记来用。
1. 搞清楚 n8n 和 AI Agent 到底是什么
在开始搭建之前,先花几分钟把两个核心概念理清楚。概念清楚了,后面配置节点时才知道每个参数该填什么。
1.1 n8n 是什么
n8n 是一个开源的工作流自动化工具。你可以把它理解为“自动化流程图编辑器”加上“连接器仓库”。
传统开发中,如果我们要把 A 系统的数据同步到 B 系统,或者让系统每天定时跑一个任务,通常需要写脚本、部署服务、处理异常。n8n 把这个过程变成了可视化节点编排:
- 触发器节点:决定流程什么时候开始,比如定时触发、Webhook 触发、手动触发。
- 动作节点:执行具体操作,比如发送 HTTP 请求、读取数据库、发送邮件、写入表格。
- 逻辑节点:处理数据分支、条件判断、循环、数据转换。
- AI 相关节点:调用大模型接口、构建向量库、处理对话上下文。
n8n 是开源软件,可以自托管部署,也可以使用官方云服务。自托管意味着你的数据掌握在自己手里,这对企业级应用来说非常重要。
1.2 AI Agent 是什么
AI Agent(智能体)可以理解成一个“能自己规划和调用工具的大模型应用”。
单纯使用 ChatGPT 这类大模型时,你问一句它答一句,它只能基于训练数据回答,无法访问你的内部数据,也无法替你执行操作。而 AI Agent 不同:
- 它能理解你的目标。
- 它能把目标拆解成多个步骤。
- 它能根据步骤调用外部工具,比如搜索网页、查询 API、操作数据库。
- 它能根据工具返回的结果继续推理,最终生成回答或执行动作。
在 n8n 中,AI Agent 节点的作用是充当“大脑”。你可以给它配置大模型 API,然后告诉它有哪些工具可以用,它就会自动决定如何使用这些工具完成任务。
1.3 为什么把 n8n 和 AI Agent 结合
n8n 擅长连接系统和处理流程,AI Agent 擅长理解和决策。两者结合后,你的工作流不再只是“固定流程”,而是变成了“动态决策流程”。
举个例子:
- 普通工作流:定时抓取 RSS 文章 -> 提取全文 -> 发送到邮箱。这是一个固定流程,每次执行结果都一样。
- AI Agent 工作流:定时收集信息 -> AI Agent 根据预设目标决定保留哪些内容 -> 生成摘要 -> 发送到飞书群。AI 会筛选、总结、判断,输出质量远超固定流程。
这正是 n8n + AI Agent 在实际项目中最常见的用法之一。
2. 环境准备:部署 n8n 的几种方式
n8n 的部署方式很多,我这里推荐三种常见方案。版本选择上要留意,n8n 迭代速度比较快,具体版本号请以官网发布为准,本文重点演示的是配置思路和操作流程。
2.1 方式一:npm 本地安装(适合快速测试)
如果你本机已经安装了 Node.js 18 或更高版本,可以直接用 npm 安装 n8n:
npm install n8n -g安装完成后,命令行启动:
n8n start启动成功后,浏览器访问:
http://localhost:5678首次访问会让你创建管理员账号,填写邮箱和密码即可。
这种方式的优点是简单,适合本地快速体验。缺点是如果你要长期使用,进程管理、数据备份、环境隔离都需要自己额外处理。
2.2 方式二:Docker 部署(适合自托管和个人长期使用)
官方推荐使用 Docker 部署 n8n,尤其是需要持久化数据时。
先创建数据卷目录:
mkdir -p ~/n8n-data然后运行容器:
docker run -d \ --name n8n \ --restart unless-stopped \ -p 5678:5678 \ -v ~/n8n-data:/home/node/.n8n \ -e N8N_USER_MANAGEMENT_DISABLED=false \ n8nio/n8n参数说明:
-v ~/n8n-data:/home/node/.n8n:把 n8n 的数据文件挂载到宿主机,防止容器删除后数据丢失。N8N_USER_MANAGEMENT_DISABLED=false:启用账号管理功能。--restart unless-stopped:服务器重启后容器自动启动。
访问方式同样是:
http://服务器IP:5678如果你要把 n8n 暴露到公网访问,建议在前面加一层 Nginx 反向代理,并配置 HTTPS 证书,不要直接裸奔 5678 端口。
2.3 方式三:Docker Compose 部署(适合企业级)
如果是在企业环境长期使用,推荐用 Docker Compose 管理,方便定制环境变量和服务依赖。
创建一个docker-compose.yml文件:
version: "3.8" services: n8n: image: n8nio/n8n container_name: n8n restart: unless-stopped ports: - "5678:5678" environment: - N8N_HOST=your-domain.com - N8N_PROTOCOL=https - N8N_PORT=5678 - N8N_USER_MANAGEMENT_DISABLED=false - GENERIC_TIMEZONE=Asia/Shanghai - TZ=Asia/Shanghai volumes: - ./n8n-data:/home/node/.n8n启动:
docker compose up -d这里有两个环境变量值得注意:
N8N_HOST:你的域名或 IP,用于生成 Webhook 回调地址。GENERIC_TIMEZONE:默认时区,建议设置为你自己的时区,否则定时任务触发时间会和你预期不一致。
2.4 部署完成后做什么
部署完成后,第一件事不是急着建工作流,而是先熟悉界面。n8n 的工作台主要分三块:
- 左侧 Workflows(工作流列表)
- 中间 Canvas(画布区,拖拽节点)
- 右侧 Node Editor(节点参数配置面板)
你现在只需要知道这三个区域的位置即可,后面实战时自然会熟悉。
3. n8n 核心概念:节点、连接、凭证、数据流
如果你没有接触过可视化流程编排工具,刚开始可能会觉得“每个节点怎么这么多配置项”。但 n8n 的设计其实很统一,掌握核心概念后,上手速度会非常快。
3.1 节点(Node)
节点是工作流的最小执行单元。每个节点负责完成一件具体的事情。
常用节点类型:
| 类型 | 代表节点 | 作用 |
|---|---|---|
| 触发器 | Schedule Trigger、Webhook | 决定工作流何时启动 |
| 数据获取 | HTTP Request、RSS Read | 从外部系统获取数据 |
| 数据处理 | Code、Aggregate、SplitOut | 对数据进行加工和转换 |
| AI 能力 | AI Agent、Basic LLM Chain | 调用大模型,实现智能处理 |
| 输出动作 | Send Email、飞书/钉钉节点 | 把结果发送给用户或业务系统 |
每个节点都有输入、输出和参数配置。节点执行后会生成一份 JSON 数据交给下一个节点。
3.2 连接(Connection)
连接就是画布上两个节点之间的连线。连线表示数据从上游节点流向 下游节点。
当你拖出一条连线时,n8n 会问你要选择哪种输出类型,常见的是:
- Output:默认输出,节点正常执行后的结果。
- Error:节点执行失败时输出的错误信息。
- Done:节点完成但可能没有数据时的状态。
你可以在连线旁边看到当前节点输出的数据结构预览,这对排查问题非常有帮助。
3.3 凭证(Credentials)
凭证就是 n8n 帮你保存的“账号密钥”或“API 密钥”。
比如你要调用 OpenAI 接口,就需要在 n8n 中先保存一个 OpenAI API Key。以后每次使用 OpenAI 相关节点时,只需要选择这个凭证即可,不用反复填写密钥。
在左侧菜单点击 Credentials,再点击 Add Credential,可以添加各种应用的凭证,包括 OpenAI、Anthropic、飞书、钉钉、MySQL、Slack 等。
需要提醒的是:凭证保存的是敏感信息,请确保 n8n 实例有访问控制,不要暴露在公网且不做任何认证。
3.4 数据流(Data Flow)
n8n 内部处理的数据格式是 JSON。每一个节点执行后,输出结果都是一个 JSON 数组。
你可能觉得“我只想在工作流里加一个 HTTP 请求,为什么还要理解 JSON?”因为下游节点引用数据时,靠的就是 JSON 的路径。
比如你执行了一个 HTTP 请求节点,返回结果如下:
{ "title": "n8n 入门", "content": "这是一篇教程" }后续节点想引用title字段时,可以在表达式编辑器中写:
{{ $json.title }}如果数据是多层的:
{ "data": { "list": [ {"name": "张三", "age": 18}, {"name": "李四", "age": 20} ] } }要获取第一条记录的name,可以用:
{{ $json.data.list[0].name }}理解了这个规则,你就理解了大多数节点参数配置的核心逻辑。
4. 实战:搭建一个“AI 日报自动整理并推送飞书”的工作流
理论部分到这里,接下来是全文的核心。我们从一个最常见的场景入手:搭建一条工作流,定时抓取指定 RSS 源的文章,交给 AI Agent 筛选和总结,然后推送到飞书群。
这个场景同时覆盖了:
- 定时任务配置
- HTTP 请求获取外部数据
- AI Agent 节点的基本用法
- 飞书机器人推送
- 数据格式转换
整个过程不需要写代码,所有逻辑都用可视化节点完成。
4.1 场景需求说明
假设你在运营一个技术社群,每天需要从几个技术博客的 RSS 源中筛选出和“AI 大模型”“自动化工作流”“知识库搭建”相关的文章,整理成摘要后发送到飞书群。
如果人工完成,每天需要半小时。用 n8n 工作流,整个过程自动化完成:
- 每天上午 09:00 自动触发。
- 请求多个 RSS 源,获取最新文章标题和链接。
- 把标题列表交给 AI Agent,让它筛选出与主题相关的文章。
- 对筛选出的文章生成简要摘要。
- 将摘要以文本卡片的形式发送到飞书群。
4.2 第一步:创建定时触发器
在 n8n 画布中,点击右上角的 “+” 按钮添加节点,搜索并选择 “Schedule Trigger”。
配置参数:
- Trigger Times:每天
- 这里要看你使用的 n8n 版本界面,有的版本可以直接选择小时和分钟。
- 我们设置小时为 9,分钟为 0。
这样工作流会在每天上午 9 点自动执行。
4.3 第二步:用 HTTP Request 获取 RSS 数据
添加一个 HTTP Request 节点,连接在 Schedule Trigger 后面。
配置如下:
Method: GET URL: https://example.com/rss.xml注意:这里演示的是通用配置,你要替换成真实的 RSS 地址。
响应格式设置为 JSON。如果 RSS 源返回的是 XML 格式,n8n 也可以自动解析,你可以在 Response Format 中选择对应的格式。
为了让多个 RSS 源都得到处理,你可以使用节点右上角的 “Settings” 里的 “Loop” 功能,也可以添加多个 HTTP Request 节点。最灵活的方式是先把多个 RSS 地址放到一个 JSON 列表中,然后使用 “Split Out” 节点拆分,但这对新手稍微复杂。
这里先以单个 RSS 源为例。
4.4 第三步:把数据整理成“对话上下文”
AI Agent 节点不能直接理解 RSS 返回的 XML 或复杂 JSON,它需要你提供一段“文字上下文”。
添加一个 Code 节点,对上游数据进行格式化。
选择 JavaScript 语言,输入以下代码:
// 把 RSS 数据提取成纯文本列表 // 请根据实际 RSS 返回结构调整字段名 const items = $input.all().flatMap(item => { return item.json.items || item.json.rss?.channel?.item || []; }); const articleList = items.map((article, index) => { return `${index + 1}. ${article.title}\n 链接:${article.link || article.guid || ''}`; }); return [{ json: { context: articleList.join('\n') } }];这段代码的作用:
- 兼容不同结构的 RSS 数据。
- 把每篇文章的标题和链接提取出来。
- 拼接成一段纯文本,后续交给 AI Agent 使用。
如果你不确定上游返回的数据结构,可以在 Code 节点顶部点击 “Execute Node”,运行一次后查看输入数据的实际结构,再调整字段名。
4.5 第四步:配置 AI Agent 节点
添加一个 AI Agent 节点。
第一步是配置 Model,也就是大模型。n8n 支持 OpenAI、Anthropic、Google Gemini、本地 Ollama 等多种模型来源。
以 OpenAI 为例:
- 选择 OpenAI。
- 在 Credential 中选择你保存好的 OpenAI API Key。
- 选择模型,比如 gpt-4o-mini。
- 不要勾选 “Use Memory” 这个选项,因为我们只需要一次性的总结,不需要多轮对话记忆。
第二步是配置 Prompt。
在 System Message 中填入系统提示词,这里的内容很关键,它决定了 AI Agent 的行为方式:
你是一名技术内容编辑。你的任务是筛选文章标题,找出和以下主题相关的文章: 1. AI大模型 2. AI Agent 3. 自动化工作流 4. 知识库搭建 如果一篇文章标题和这些主题无关,直接忽略。 最终只输出和主题相关的文章,并对每篇文章写一句简短摘要,使用以下格式输出: - 标题:【文章标题】 摘要:【一句话摘要】(链接:【文章链接】)在 User Message 中填入我们前面格式化好的数据:
以下是筛选的文章列表: {{ $json.context }}注意:这里引用$json.context的前提是 Code 节点输出中的字段名就是context。
4.6 第五步:把结果发送到飞书
发送到飞书的方式有很多,最简单的方案是使用飞书自定义机器人 Webhook。
首先在飞书群里添加一个自定义机器人,获取 Webhook 地址,格式类似:
https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx然后在 n8n 中添加 HTTP Request 节点,配置如下:
Method: POST URL: 你的飞书机器人 Webhook 地址 Header Content-Type: application/json Body:Body 使用 JSON 格式:
{ "msg_type": "text", "content": { "text": "{{ $json.output }}" } }这里$json.output是 AI Agent 节点输出的文本内容。具体字段名要看 AI Agent 节点的输出结构,你可以先运行一次,查看节点输出后确认。
如果希望飞书展示更美观的消息卡片,可以改用飞书的interactive消息类型,并配置卡片 JSON。这里先演示最简单的文本消息。
4.7 运行与验证
节点配置完成后,点击画布右上角的 “Execute Workflow” 按钮手动触发一次。
检查步骤:
- 看 Schedule Trigger 是否输出数据。
- 看 HTTP Request 是否成功获取到 RSS 内容。
- 看 Code 节点输出的 context 是否为非空文本。
- 看 AI Agent 节点是否正常生成摘要。
- 看最后发送飞书的节点是否返回成功。
如果过程中某个节点报红,点击节点即可看到错误详情。大多数问题出现在“字段名引用错误”或“API Key 无效”两方面。
5. 知识库搭建:n8n 中的 RAG 基础玩法
知识库搭建是搜索热词中非常高频的一个方向。很多人以为知识库搭建必须要写复杂的向量检索代码,其实在 n8n 中也有比较成熟的可视化方案。
5.1 知识库的本质
知识库的核心流程是 RAG(Retrieval-Augmented Generation,检索增强生成):
- 把文档拆分成长度合适的分片。
- 通过 Embedding 模型把每个分片转换成向量。
- 用户提问时,把问题转换成向量,从向量数据库中检索最相关的分片。
- 把检索到的分片和问题一起交给大模型,生成回答。
n8n 自带多个节点可以帮助你完成这个过程,包括:
- Document 加载节点
- Text Splitter 节点
- Embedding 节点
- Vector Store 节点
5.2 使用 Workflow 的方式搭建知识库
在 n8n 中搭建知识库,通常分两条工作流:
第一条是“入库工作流”:
- 手动触发或 Webhook 触发。
- 读取文档内容。
- 文本拆分。
- 调用 Embedding 接口生成向量。
- 写入向量数据库。
第二条是“问答工作流”:
- Webhook 接收用户问题。
- Vector Store 中检索相关片段。
- AI Agent 根据检索结果回答。
n8n 支持的向量数据库包括 Qdrant、Pinecone、PGVector 等。如果你只是想本地测试,也可以使用 n8n 内置的临时向量存储,不过生产环境建议使用专门的向量数据库。
5.3 一个最小可运行的知识库配置思路
以 Qdrant 为例,你需要在 n8n 中配置 Qdrant 凭证,包括 Qdrant 地址和 API Key。
向量索引的配置大致如下:
Collection Name: my_knowledge_base Embedding: OpenAI Embedding 模型(例如 text-embedding-3-small)在“入库工作流”中,使用 Text Splitter 将文档切分。切分参数中chunk_size一般设置为 500 到 1000 字符,chunk_overlap设置为 50 到 100 字符。过大的分片会导致检索精度下降,过小则会让语义不完整。
在“问答工作流”中,使用 Vector Store Retriever 获取 Top K 相关的文档片段,一般 K 设置为 4 到 6 比较合适。
这里要强调:向量数据库和生产环境配置需要根据实际部署情况调整,n8n 版本不同,节点名称和参数也会有细微差异。关键是理解整个 RAG 流程,而不是死记某个参数。
6. 常见问题与排查思路
在实际使用 n8n 的过程中,下面这些问题出现频率最高。
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 节点状态为红色,提示 execution failed | 认证失败、字段引用错误、API 返回异常 | 点击节点查看错误详情;检查 Credentials 是否有效;检查表达式引用字段是否真存在 |
| HTTP Request 返回 401/403 | API Key 未配置、权限不足 | 重新配置凭证,检查目标系统 API 权限 |
| AI Agent 节点报错 “Connection failed” | 大模型 API 服务不可达、代理配置错误 | 检查模型服务是否正常,确认网络环境可以访问对应 API |
| RSS 返回内容无法解析 | 返回的是 XML 且结构变化 | 先用 Code 节点打印输入数据,再调整字段提取逻辑 |
| 飞书机器人发送失败,提示 “keyword not found” | 自定义机器人安全设置要求包含关键词 | 在飞书机器人安全配置中关闭关键词校验,或确保消息内容包含预设关键词 |
| 定时任务不触发 | 时区配置错误、默认时区是 UTC | 检查 GENERIC_TIMEZONE 环境变量,设置成 Asia/Shanghai |
| 数据量太大导致节点执行超时 | 单次处理数据过多 | 加入循环控制,或分批处理;必要时使用分页接口 |
| 使用 Python 开发自定义节点时提示 “请安装缺失的包以使用此工作流” | 代码节点需要额外 Python 依赖 | 在运行 n8n 的 Python 环境中安装对应依赖包,并重启服务 |
| 飞书多维表格记录很多时无法一次获取 | 飞书 API 有限制,需要分页 | 使用 n8n 的循环节点或分页游标,按 page_size 分批拉取 |
6.1 字段引用类的排查方法
引用字段报错是新手最容易踩的坑。建议养成一个习惯:在画布上点击某个节点,查看节点下方的“Output Data”区域,确认实际输出的 JSON 结构。
如果看到输出长这样:
{ "results": { "data": [ { "title": "xxx", } ] } }那你要引用的字段就是:
{{ $json.results.data[0].title }}不要凭记忆写字段名,一切以实际输出为准。
7. 最佳实践与工程建议
当你已经可以熟练搭建 n8n 工作流后,以下几个工程层面的建议能帮助你避免生产环境踩坑。
7.1 工作流命名和分组
给每个工作流起一个清晰的名字,例如:
daily-article-ai-summaryhr-resume-filtersupport-ticket-autoreply
建议在名称里同时体现“业务对象”和“动作”。如果工作流数量增多,可以使用文件夹或标签分组。
7.2 密钥和凭证管理
不要把 API Key 直接写在工作流节点参数里。n8n 提供 Credentials 功能,务必统一使用。
另外要注意:
- 每个凭证分配最小权限。例如飞书机器人只需要发送消息权限,就不要给它整个飞书应用的管理权限。
- 定期轮换 API Key,尤其是人员变动比较频繁的团队。
- 生产环境的 n8n 数据库要有备份策略。n8n 的工作流数据默认存储在 SQLite 中,如果你的 n8n 是 Docker 部署,记得把数据卷单独备份。
7.3 失败处理和告警
生产级工作流必须考虑“失败之后怎么办”。
建议:
- 在每个可能失败的节点后使用 Error Trigger 节点,把失败信息发送到企业微信群或飞书群。
- 给外部 API 调用节点设置重试次数。
- 对定时任务增加上次执行状态记录,方便事后追溯。
7.4 AI Agent 的 Prompt 设计
AI Agent 的发挥水平很大程度取决于 Prompt 质量。
几个基本建议:
- System Message 中明确角色、任务边界、输出格式。
- 不要一个 Prompt 包含太多目标,必要时拆分成多个 Agent 分工。
- 输出格式尽量用结构化描述,比如 “每行一条,格式为:标题|摘要|链接”,这样后续解析更稳定。
- 加上“如果信息不足,请明确说明”这类兜底指令,减少 AI 幻觉。
7.5 性能和数据量
如果遇到“处理大量记录”的需求,比如飞书多维表格有几万条记录,不要一次性拉取全部数据。
正确做法:
- 使用循环节点分批拉取。
- 每次拉取一个 page_size,比如 100 条。
- 处理完成后记录游标位置。
- 继续下一批,直到全部处理完。
这种方式虽然耗时多一些,但稳定性和可观测性远好于一次性拉取全部数据再处理。
7.6 关于版本升级
n8n 版本更新很快,每次升级前先阅读官方升级说明,重点看 Breaking Changes。如果生产环境工作流比较多,先在测试环境升级并完整跑一遍用例,再更新生产实例。
8. 总结
到这里,你已经了解了 n8n 与 AI Agent 结合的核心思路,并完成了一条“RSS 抓取 -> AI 筛选摘要 -> 飞书推送”的完整自动化工作流搭建,同时掌握了知识库(RAG)搭建的基础流程和常见问题排查方法。
如果你之前没有接触过 n8n,建议从最基础的节点开始练手:先搭一个“定时触发 + HTTP 请求 + 飞书通知”的简单流程,熟悉 JSON 数据流转逻辑后再加入 AI Agent。如果对 AI Agent 已经有使用经验,下一步可以重点深入研究“多 Agent 协作”和“知识库问答工作流”两个方向,这两块在企业内部落地场景中应用价值最大。
我在实际使用中最大的感受是:n8n 把“数据集成”和“智能决策”的门槛降得很低,以前需要后端开发好几天才能完成的事情,现在一小时就能跑通一个 demo。但注意,生产环境仍然需要关注安全、备份、监控和 Prompt 质量,这些才是决定一个 AI 自动化项目能否长期稳定运行的关键。
如果你在搭建过程中遇到具体报错,欢迎把报错信息和节点截图记录下来,按本文第 6 章的排查思路逐步定位。多跑几条工作流之后,你会慢慢建立起对 n8n 数据流和 AI Agent 行为的直觉。