基于 Dify + n8n 的无代码 Agent 闭环 PoC 实施方案
本方案旨在彻底抛弃复杂的底层代码编写,利用两款业界最强大的开源无代码/低代码工具(Dify 与 n8n),以全可视化拖拽的方式,在 2-3 天内快速拼装出“搭建 ──> 运行 ──> 遥测 ──> 反馈”的完整闭环。
一、 乐高式积木:核心工具选型
Dify (业务需求 Swarm ──> 概念层):
定位: 提供精美的用户聊天对话界面(Chatbot UI)和大模型工作流(Workflow)编排。
无代码作用:
拖拽出一个对话流,让用户输入自然语言。
使用 Dify 的 LLM 节点,把需求提炼为标准的 Logical-DSL(JSON 格式)。
使用 HTTP 请求节点,将 JSON 自动推给 n8n。
n8n (工程实施 Swarm & 遥测 ──> 物理层与闭环):
定位: 全球最火的开源工作流自动化引擎(类似于海外的 Make/Zapier,但对开发者更友好)。
无代码作用:
接收来自 Dify 的逻辑 JSON。
使用 HTTP Request 节点,直连飞书 Open API(创建多维表格、新建字段)。
提供 Webhook 接收节点,实时监听飞书界面的微调事件。
将捕获的差异(Diff)写入一个简单的“偏好收集表”中,完成闭环。
二、 极简架构链路图(可视化流转)
【 1. Dify 可视化对话框 】 (用户输入)
│
▼
【 2. Dify 工作流 (LLM) 】 ──(发送 L-DSL JSON)──> 【 3. n8n 接收 Webhook 】
│
▼
【 4. n8n 遍历创建飞书表 】
│ (用户手动在飞书微调)
▼
【 6. 偏好数据集 / 飞书日志表 】 <──(发送 Delta)─── 【 5. n8n 飞书事件监听器 】
三、 详细配置指南:3 步搭建可视化 PoC
第一步:在 Dify 中搭建“业务概念层” (10 分钟)
新建工作流: 登录 Dify 后台,创建一个 “工作流 (Workflow)” 应用。
编排节点:
开始 (Start) 节点: 接收用户输入(例如:{{sys.query}} = "帮我做一个采购申请表,包含供应商和单价")。
LLM 节点: 选择 GPT-4o 或 Claude 3.5。在 Prompt 中写入:
“请将用户的需求转化为一个极其简单的 JSON:{"appName": "xxx", "fields": [{"name": "字段名", "type": "STRING|NUMBER"}]},不要输出任何其他文本。”
HTTP 请求 (HTTP Request) 节点:
方法选择 POST。
URL 填写 n8n 的 Webhook 地址(在第二步中生成)。
Body 选择 JSON,内容直接绑定 LLM 节点的输出。
第二步:在 n8n 中搭建“工程实施层” (20 分钟 - 少量胶水代码)
在 n8n 中新建一个 Workflow,拖拽以下节点:
[ Webhook 接收 ] ──> [ Code 胶水节点 ] ──> [ 飞书 API 创建 Bitable ] ──> [ 循环创建 Fields ]
1. Webhook 节点 (Trigger)
拖入一个 Webhook 节点,它会自动生成一个 Production URL。将这个 URL 复制并粘贴回 Dify 的 HTTP 节点 中。
2. Code 节点 (少量胶水代码 - JS)
拖入一个 Code 节点(运行模式选择 Run Once for Each Item),用来简单处理一下 Dify 传过来的字段列表,以便后续循环调用飞书 API。
JS 代码极简示例:
// 转换 Dify 传过来的逻辑类型为飞书的物理数字类型 (1:文本, 2:数字)
const fields = item.json.fields.map(f => {
return {
field_name: f.name,
type: f.type === 'NUMBER' ? 2 : 1
};
});
return { appName: item.json.appName, fields: fields };
3. HTTP Request 节点 (创建多维表格)
拖入一个 HTTP Request 节点,调用飞书开放平台“创建多维表格”接口:
Method: POST
URL: https://open.feishu.cn/open-apis/bitable/v1/apps
Headers: 注入飞书的 Tenant-Access-Token(可以通过飞书自建应用获取)。
Body: {"name": "{{$json.appName}}"}。
4. Split In Batches 节点 & HTTP Request (循环建表)
使用 n8n 的 Split In Batches(循环节点),对刚才 Code 节点中处理好的 fields 数组进行循环。
循环体内部拖入第二个 HTTP Request 节点,调用飞书的“新增字段” API:
URL: https://open.feishu.cn/open-apis/bitable/v1/apps/{{app_token}}/tables/{{table_id}}/fields
Body: {"field_name": "{{$json.field_name}}", "type": {{$json.type}}}。
第三步:在 n8n 中搭建“反向遥测闭环” (15 分钟)
这是验证“用户微调 ──> 数据采集”的核心逻辑,完全在 n8n 中完成:
[ 飞书 Webhook 触发 ] ──> [ Filter 过滤器 ] ──> [ 写入日志表/飞书文档 ]
飞书 Webhook 触发器 (Trigger):
在 n8n 中拖入一个新的 Webhook 节点。
去飞书开发者后台,订阅 bitable.table.field.updated_v1(字段变更事件),将该 Webhook URL 填入飞书后台。
Filter (过滤器) 节点:
拖入一个 Filter 节点。设置规则:只保留 new_type 发生改变的事件(过滤掉无意义的字段重命名等噪点)。
HTTP Request / Bitable 节点 (保存反馈数据):
用户在飞书上将“单价”从单行文本改成了数字。
这个 Webhook 被触发,n8n 的 Filter 过滤出这一事件。
拖入一个存储节点(可以直接使用 n8n 的 Google Sheets 节点、Airtable 节点,或者直接向另一个飞书“AI 偏好日志多维表格”中追加一行记录):
写入内容: {"原始Prompt": "采购申请表", "字段名": "单价", "修改前": "STRING", "修改后": "DECIMAL"}。
四、 本方案的演示(Demo)效果与进化玩法
🎥 完美的汇报演示故事线:
输入需求: 打开 Dify 的 Web 界面,对 AI 说:“我想管采购,做一个采购表,包含‘商品名’和‘价格’。”
自动搭建: 进度条闪烁,AI 调用后台的 n8n 工作流。10 秒钟后,系统给出飞书链接。
打开飞书: 打开链接,飞书里已经多了一个“采购表”,里面有“商品名(文本)”和“价格(文本)”。
用户微调(Human-in-the-loop): 你在飞书界面上手动点击“价格”字段,把它的格式从 “单行文本” 改成 “数字”。
奇迹发生(闭环对齐): 打开我们的“AI 偏好日志表”,里面已经自动多了一条记录:“用户将‘价格’改为了数字型”。
自主演进: 这个日志表可以直接作为 Few-Shot Prompt 动态喂给 Dify。下次你再输入*“帮我做一个设备表,包含价格”*时,AI 在 Dify 端就会自动把价格设为 NUMBER,不再犯错!
