Dify 1.15 人工介入功能详解:在AI工作流中嵌入审批与协同
🚀 30+款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度
如果你正在用 Dify 构建一个智能客服或内容审核工作流,是否遇到过这样的困境:AI 的回复大部分时候都很好,但偶尔会“一本正经地胡说八道”,或者在一些需要严格合规、涉及关键决策的环节,你不敢完全放手让它自动执行?你需要的可能不是一个更聪明的模型,而是一个能让人类在关键时刻“踩刹车”或“微调方向”的机制。
这就是 Dify 1.15 版本中“人工介入”(Human-in-the-Loop, HITL)功能要解决的核心问题。它不是一个简单的“审核”开关,而是一套将人类智慧无缝嵌入到自动化 AI 工作流中的系统性工程能力。过去,我们要么全自动,要么全手动,中间缺乏一个优雅的、可编程的协作层。Dify 1.15 通过引入审批节点和人工触发节点,正式填补了这一空白,让 AI 应用从“玩具”走向“生产工具”的关键一步得以实现。
本文将深入解析 Dify 1.15 的“人工介入”功能。我不会只告诉你按钮在哪里,而是会带你理解其背后的设计哲学、适用的核心场景,并通过一个从零构建的内容发布审批工作流实战案例,手把手展示如何配置审批流程、处理人工反馈,并最终将审批结果集成回自动化流程。你会发现,这不仅仅是多了一个节点,而是彻底改变了你设计和思考 AI 工作流的方式。
1. 这篇文章真正要解决的问题
在 AI 应用开发中,我们常常陷入一个两难境地:追求全自动化带来的效率,还是为了保证质量与安全而保留人工干预?Dify 1.15 之前的版本,工作流一旦启动便如离弦之箭,无法中途干预。这在很多真实业务场景中是行不通的。
想象以下几个场景:
- 智能客服:AI 生成的赔偿方案或重要政策解释,在发送给用户前,需要主管复核。
- 内容创作:AI 批量生成的营销文案或新闻稿,在发布前需要编辑进行润色和定稿。
- 数据查询与分析:AI 生成的复杂 SQL 语句或数据分析报告,在执行或交付前需要资深工程师确认其正确性。
- 审批流程:任何涉及费用、权限、合同等关键业务流程,AI 可以预处理,但最终决定权必须在人。
如果没有“人工介入”,上述场景的解决方案往往很笨重:要么将整个工作流拆成两段,中间通过外部系统(如邮件、OA)手动传递数据;要么干脆放弃自动化,回归全人工。这两种方式都破坏了工作流的连贯性和可维护性。
因此,本文要解决的核心问题是:如何在 Dify 构建的自动化 AI 工作流中,优雅、灵活地插入必须由人类完成的决策或修正环节,并确保流程数据不中断、状态可追踪?我们将通过 Dify 1.15 的新功能,给出一个标准化的答案。这篇文章适合所有正在或计划使用 Dify 构建严肃生产级应用的开发者、产品经理和业务负责人。
2. Dify 与“人工介入”核心概念解析
在深入实操前,有必要厘清几个关键概念,这能帮助你更好地理解 Dify 的设计思路。
2.1 Dify 是什么?再认识其定位
根据网络资料,Dify 被定义为一个“领先的智能体工作流构建器”。它集成了智能体工作流、RAG 管道、多种集成和可观测性能力。通俗地说,Dify 是一个低代码/无代码的 AI 应用开发平台,让你通过拖拽方式,将大语言模型、知识库、代码解释器、各种工具 API 连接起来,构建出复杂的 AI 应用。
它的核心价值在于“将 AI 能力工程化”。你可以像搭积木一样构建流程,而无需关心底层的模型调用、上下文管理、状态维护等复杂工程问题。Dify 负责提供稳定、可扩展的后端服务。
2.2 什么是“人工介入”?
“人工介入”是 AI 工程中的一个重要范式,指在自动化系统中,特意设计一些环节,允许人类操作员提供输入、做出决策或纠正错误。其目的不是取代自动化,而是增强它,确保系统的可靠性、安全性和合规性。
在 Dify 的语境下,“人工介入”特指在工作流执行过程中,主动暂停自动化执行,将特定数据(如 AI 生成的文本、建议的方案)发送给指定的人工审批者,等待其做出“通过”、“拒绝”或“修改后通过”的决定后,再决定工作流后续分支走向的能力。
2.3 Dify 1.15 实现人工介入的两大核心节点
Dify 1.15 主要通过两个节点来实现这一能力:
- 审批节点:这是最核心的节点。工作流执行到此节点时会暂停,并向预设的审批人(可以是具体的用户邮箱,或通过变量动态指定)发送审批通知。审批人可以在 Dify 的 Web 界面或集成到第三方系统(如 Slack、飞书)的消息中,查看待审批内容,并做出决定。审批结果(通过/拒绝)会作为变量传递给后续节点。
- 人工触发节点:这个节点用于启动一个需要人工输入的工作流。它更像是工作流的“门卫”,只有人工点击触发后,工作流才会开始执行。这适用于那些完全由人工事件驱动的场景,例如“用户提交表单后开始处理”。
本文将重点讲解更常用、也更复杂的“审批节点”,因为它代表了在自动化流程中嵌入人工决策的典型模式。
2.4 为什么这很重要?从“开环”到“闭环”的演进
在没有人工介入功能时,Dify 工作流是一个“开环”系统:输入 → 处理 → 输出,过程不可中断。加入审批节点后,系统变成了一个“闭环”:系统可以提出方案,人类进行评估和修正,系统再基于反馈继续执行或调整。这带来了几个根本性改变:
- 风险可控:在关键点设置检查站,防止 AI 幻觉或错误决策造成损失。
- 责任明晰:所有经过人工审批的环节都有记录,符合审计要求。
- 人机协同:人类负责需要创造力、伦理判断和深层领域知识的部分,AI 负责重复性、高计算量的部分,实现效率与质量的最优解。
理解这些概念后,我们就可以开始动手搭建一个包含人工介入的完整工作流了。
3. 环境准备与前置条件
在开始构建工作流之前,请确保你的环境已就绪。
3.1 Dify 环境要求
- Dify 版本:必须为1.15.0或更高版本。早期版本不支持审批节点。你可以通过 Dify 管理后台的“系统状态”或部署命令查看当前版本。
- 部署方式:无论是使用 Docker Compose、Kubernetes 还是直接源码部署,只要版本达标即可。本文示例基于 Docker Compose 部署的 Dify。
- 访问权限:你需要一个具有工作流创建和编辑权限的 Dify 账户。
3.2 模型配置准备
由于工作流中会用到 LLM 生成内容,你需要确保 Dify 中已配置好至少一个可用的语言模型。
- 推荐:OpenAI GPT 系列、 Anthropic Claude 系列或国内可访问的同等性能模型。
- 备用:通过 Ollama 部署的本地模型(如 Llama 3、Qwen 等)。确保模型在 Dify 的“模型供应商”中已正确配置且状态可用。
3.3 第三方工具集成(可选但推荐)
为了让审批通知更及时,建议配置一个消息推送工具。Dify 支持多种 Webhook 和消息平台集成。
- 常用选择:配置 Slack、飞书、钉钉或企业微信的“传入 Webhook”。
- 作用:当审批任务产生时,Dify 可以自动发送通知到这些协作工具,审批人无需一直刷新 Dify 页面。
3.4 明确我们的实战目标
我们将构建一个“智能内容创作与发布审批”工作流。其业务逻辑如下:
- 用户输入一个文章主题。
- AI 根据主题生成一篇草稿。
- 工作流自动暂停,将草稿发送给“编辑”角色的人工审批者。
- 审批者在 Dify 界面(或通过集成的 Slack)审阅草稿,可以选择:
- 通过:工作流继续,将文章发布到预设的频道(模拟)。
- 拒绝:工作流结束,并通知申请人文章被拒。
- 修改后通过:审批者提供修改意见,工作流将意见和原草稿一起交给 AI 进行修订,修订后再走一次审批流程(或直接发布)。
- 整个过程的每个状态(待审批、已通过、已拒绝、修订中)都应有日志记录。
接下来,我们将分步实现这个工作流。
4. 工作流核心设计与节点拆解
让我们在 Dify 的工作流编辑器中,一步步搭建这个系统。
4.1 创建工作流并设置变量
首先,创建一个新的空白工作流。我们需要定义几个关键变量,用于在不同节点间传递数据:
article_topic:字符串类型,用户输入的文章主题。article_draft:字符串类型,AI 生成的草稿。approval_result:字符串类型,存储审批结果(approved,rejected,revised)。editor_feedback:字符串类型,存储审批者提供的修改意见。final_article:字符串类型,存储最终定稿的文章。
你可以在工作流编辑器的“变量”面板中预先定义它们。
4.2 节点1:开始与主题输入
使用“对话开场白”节点或“文本输入”节点作为起点,让用户提供article_topic。这是一个简单的交互节点。
4.3 节点2:LLM 生成草稿
添加一个“LLM”节点。
- 连接:将其连接到“开始”节点。
- 配置:
- 模型:选择你配置好的一个模型(例如 GPT-4)。
- 系统提示词:编写一个提示词,指导 AI 扮演专业撰稿人。
你是一位专业的科技专栏编辑。请根据用户提供的主题,撰写一篇结构清晰、观点明确、语言流畅的短文草稿(约500字)。草稿应包含引人入胜的开头、扎实的论据和简洁的结尾。- 用户输入:引用变量
{{article_topic}}。 - 输出处理:将 LLM 的回复(即生成的草稿)赋值给变量
article_draft。
至此,自动化部分完成了内容创作。
4.4 节点3:关键一步 - 插入“审批”节点
这是本文的核心。从节点库中找到并添加“审批”节点。
- 连接:将其连接到“LLM 生成草稿”节点。
- 配置:这个节点的配置项较多,需要仔细设置。
- 审批人:这是最重要的设置。有两种方式:
- 指定邮箱:直接输入审批人的邮箱地址,如
editor@yourcompany.com。该邮箱必须对应一个有效的 Dify 用户账户。 - 变量指定:更灵活的方式。例如,你可以创建一个“编辑团队”列表,通过上游节点动态计算本轮审批人,并将其邮箱赋值给一个变量(如
assigned_editor),然后在此处引用{{assigned_editor}}。
- 指定邮箱:直接输入审批人的邮箱地址,如
- 审批标题:定义审批任务的标题,如
“待审批文章草稿:{{article_topic}}”。使用变量使其更清晰。 - 审批内容:这里需要定义发送给审批人查看的内容。通常我们会将 AI 生成的草稿和一些上下文信息格式化后放入。
以下是由 AI 根据主题“{{article_topic}}”生成的文章草稿,请审阅: --- {{article_draft}} --- 请决定:通过、拒绝,或提供修改意见后通过。 - 审批表单(高级):你可以为审批人提供结构化的输入字段。例如,添加一个“多行文本”字段,变量名设为
editor_feedback,标签为“修改意见”。这样审批者就可以在做出“修改后通过”决定时,直接填写意见。 - 超时设置:可以设置审批等待的超时时间(如24小时)。超时后,可以配置默认行为(如视为拒绝或通过)。
- 审批人:这是最重要的设置。有两种方式:
配置完成后,这个节点就像一个闸门。工作流执行到这里会暂停,并在 Dify 后台生成一个待办的审批任务。
4.5 节点4:根据审批结果进行分支
添加一个“条件判断”节点(If/Else)。
- 连接:将其连接到“审批”节点。
- 配置:我们需要根据审批结果变量
approval_result的值来决定流程走向。- 条件1:
approval_result等于approved- 连接后续的“发布文章”节点。
- 条件2:
approval_result等于rejected- 连接后续的“通知申请人被拒”节点。
- 条件3:
approval_result等于revised(或你自定义的其他值)- 连接后续的“根据意见修订文章”节点。
- 默认分支:可以处理超时或其他未知状态。
- 条件1:
4.6 节点5-7:处理不同分支
现在我们来构建各个分支的细节。
分支A:审批通过 -> 发布文章
- 添加一个“代码”节点或“HTTP 请求”节点来模拟发布动作。
- 示例(代码节点 - Python):
# 这是一个模拟发布的函数 # 在实际应用中,这里可以调用 WordPress API、内容管理系统 API 等。 def publish_article(article): # 模拟发布逻辑 print(f"文章已发布到官网频道。内容预览:{article[:100]}...") # 你可以在这里返回发布后的文章ID或URL return {"status": "published", "article_id": "sim_123456"} # 调用函数,使用上游传来的 final_article 或 article_draft result = publish_article(inputs.get('final_article', inputs.get('article_draft'))) # 将结果输出到变量 outputs['publish_result'] = result - 最后可以连接一个“文本回复”节点,通知用户文章已成功发布。
分支B:审批拒绝 -> 通知申请人
- 添加一个“文本回复”节点。
- 内容可以配置为:
很抱歉,您关于“{{article_topic}}”的文章草稿未通过编辑审核。请修改主题或重新撰写。 - 此分支即为工作流终点。
分支C:修改后通过 -> 修订并循环这是最复杂也最能体现人机协同价值的路径。
- 添加一个新的“LLM”节点,用于修订。
- 系统提示词:
你是一位乐于接受反馈的撰稿人。以下是一篇草稿和编辑给出的修改意见。请根据意见,对草稿进行修改和优化,保留原意和优点,同时解决编辑指出的问题。直接输出修改后的全文。 - 用户输入:
原始草稿: {{article_draft}} 编辑意见: {{editor_feedback}} 请输出修改后的文章: - 输出处理:将修订后的文章赋值给变量
article_draft(覆盖原草稿)或新的revised_draft。
- 系统提示词:
- 决策点:修订后,是直接发布,还是再次送审?
- 方案一(简化):修订后直接跳转到“发布文章”节点。这适用于对编辑意见充分信任的场景。
- 方案二(严格):修订后,再次连接到一个新的“审批”节点,让编辑进行复审。这可以形成多轮人机交互闭环。注意避免无限循环,可设置最大修订次数。
4.7 节点8:结束与日志
无论哪个分支,最终都应汇聚到明确的结束状态。你可以使用“结束”节点。建议在关键节点(如生成草稿后、审批动作发生后、发布完成后)添加“日志”节点,将重要变量和状态记录到工作流执行历史中,便于审计和调试。
至此,我们完成了整个工作流的逻辑设计。它包含了自动生成、人工审批、条件分支和循环修订等核心模式。
5. 完整工作流配置示例与代码解读
让我们将上述设计转化为具体的 Dify 工作流配置。由于 Dify 工作流主要通过图形化界面配置,这里我将用 YAML 格式描述其核心结构,并辅以关键节点的配置代码片段。你可以根据此结构在 Dify 编辑器中复现。
5.1 工作流整体结构 YAML 描述
Workflow: Content_Approval_Demo Variables: - name: article_topic type: string required: true - name: article_draft type: string - name: approval_result type: string - name: editor_feedback type: string - name: final_article type: string Nodes: - id: start type: conversation_start outputs: - variable: article_topic - id: llm_generate type: llm model: gpt-4 prompt: system: “你是一位专业的科技专栏编辑...” user: “请撰写关于 {{article_topic}} 的文章...” outputs: - variable: article_draft - id: human_approval type: approval assign_to: editor@company.com # 或 {{assigned_editor}} title: “待审批文章:{{article_topic}}” content: “草稿:\n{{article_draft}}\n\n请审批。” form: - field: editor_feedback type: textarea label: “修改意见(如需)” outputs: - variable: approval_result - variable: editor_feedback - id: condition type: if-else conditions: - if: “{{approval_result}} == ‘approved‘” goto: publish - if: “{{approval_result}} == ‘rejected‘” goto: notify_reject - if: “{{approval_result}} == ‘revised‘” goto: revise default: notify_reject - id: revise type: llm model: gpt-4 prompt: system: “你是一位乐于接受反馈的撰稿人...” user: “原始草稿:{{article_draft}}\n编辑意见:{{editor_feedback}}\n请修改:” outputs: - variable: article_draft # 覆盖原草稿 goto: human_approval # 修订后返回审批节点复审(注意:实际中需加循环限制) - id: publish type: code language: python3 code: | # 发布逻辑模拟 import json def publish(title, content): # 模拟API调用 return {“status“: “success“, “id“: “pub_001“} result = publish(variables[“article_topic“], variables.get(“final_article“, variables[“article_draft“])) outputs[“publish_result“] = json.dumps(result) outputs: - variable: publish_result goto: notify_success - id: notify_success type: answer answer: “文章 ‘{{article_topic}}‘ 已成功发布!发布ID: {{publish_result.id}}” - id: notify_reject type: answer answer: “文章 ‘{{article_topic}}‘ 未通过审核。意见:{{editor_feedback}}”注:以上为逻辑描述性 YAML,并非 Dify 直接导入的格式,但清晰展示了节点类型、连接关系和变量流转。
5.2 关键节点配置详解:审批节点
在 Dify 图形界面中,“审批”节点的配置表单包含以下关键字段:
- 审批人 (Assignees):输入邮箱。支持多个,以逗号分隔。所有被指定的人都会收到通知,但只需其中一人操作即可。
- 标题 (Title):支持变量插值,使任务列表更清晰。
- 描述 (Description):详细的审批说明,可以使用丰富的 Markdown 格式,并嵌入多个变量。
- 表单字段 (Form Fields):这是实现“修改后通过”的关键。你可以添加“单选框”、“下拉框”、“多行文本”等字段。例如:
- 字段1:
action(单选框),选项:通过、拒绝、需修改。 - 字段2:
feedback(多行文本),仅当action为需修改时显示(Dify 支持条件显示逻辑)。审批人填写的意见会自动存入变量。
- 字段1:
5.3 关键节点配置详解:代码节点(发布模拟)
在“发布文章”分支,我们使用“代码”节点来执行自定义逻辑。以下是更完整的 Python 示例,包含错误处理:
# Dify 代码节点 - Python 示例:发布文章到模拟的 CMS import requests import json import traceback def main(inputs: dict, context: dict) -> dict: """ 将文章发布到内容管理系统。 输入: inputs 字典,包含 ‘article_topic‘, ‘article_draft‘ 等变量。 输出: 包含发布结果的字典。 """ topic = inputs.get(‘article_topic‘, ‘Unknown Topic‘) content = inputs.get(‘final_article‘) or inputs.get(‘article_draft‘, ‘‘) if not content: return {“error“: “发布内容为空“} # 1. 准备发布数据 payload = { “title“: topic, “content“: content, “status“: “publish“, # 或者 ‘draft‘ 根据审批结果定 “author“: “AI-Assisted Writer“ } # 2. 模拟 API 调用 (实际使用时替换为真实的 CMS API URL 和 Token) # api_url = “https://your-cms.com/wp-json/wp/v2/posts“ # headers = {“Authorization“: “Bearer YOUR_TOKEN“} # response = requests.post(api_url, json=payload, headers=headers) # 3. 模拟成功响应 # 实际开发中,请根据 response.status_code 和 response.json() 处理 print(f“[模拟发布] 文章 ‘{topic}‘ 发布请求已发送。内容长度:{len(content)}“) # 模拟响应 simulated_response = { “success“: True, “message“: “Article published successfully“, “article_id“: “sim_” + str(hash(topic))[:8], “url“: f“https://example.com/articles/sim_{hash(topic)[:8]}“ } # 4. 返回结果,供后续节点使用 outputs = { “publish_status“: “success“ if simulated_response[“success“] else “failed“, “publish_details“: json.dumps(simulated_response), “article_url“: simulated_response.get(“url“, ““) } # 你也可以将结果记录到工作流日志 context[“log“](f“发布完成,状态:{outputs[‘publish_status‘]}“) return outputs # 在 Dify 中,代码节点的返回值会自动绑定到输出变量。这个代码节点展示了如何将工作流中的数据与外部系统(如内容管理系统)进行集成,是工作流价值落地的重要一环。
6. 运行、测试与效果验证
配置完成后,让我们来测试这个工作流。
6.1 启动测试运行
- 在 Dify 工作流编辑器的右上角,点击“发布”按钮,将工作流发布为一个应用。
- 进入该应用的聊天窗口或使用其 API 端点。
- 输入一个测试主题,例如:
“人工智能在医疗诊断中的最新进展”。 - 点击发送。
6.2 观察自动化阶段
工作流会首先运行“LLM 生成草稿”节点,你会在聊天窗口看到 AI 正在思考并生成一篇短文。生成完毕后,流程会暂停。聊天界面可能会显示“等待审批”或类似的提示。
6.3 模拟人工审批
- 使用你指定的审批人邮箱(如
editor@company.com)登录 Dify 的另一个浏览器或标签页。 - 进入“工作区”或“待办”区域(具体位置取决于 Dify 的界面设计,通常在顶部导航栏或侧边栏)。
- 你应该能看到一个待审批任务,标题为“待审批文章:人工智能在医疗诊断中的最新进展”。
- 点击该任务,查看完整的草稿内容。
- 进行审批操作:
- 测试通过:直接点击“通过”。然后返回原聊天窗口,观察工作流是否继续,并最终收到发布成功的通知。
- 测试拒绝:点击“拒绝”,并可选填原因。观察聊天窗口是否收到被拒通知。
- 测试修改后通过:选择“需修改”或类似选项,在“修改意见”框中输入具体意见,如“请在第二部分增加一个关于伦理挑战的段落。”然后提交。观察工作流是否跳转到修订节点,生成新草稿后,是直接发布还是产生了新的审批任务(取决于你的循环设计)。
6.4 验证关键结果
- 流程正确性:不同审批选择是否触发了正确的分支路径?
- 数据传递:审批意见 (
editor_feedback) 是否正确地传递给了修订 LLM 节点? - 状态持久化:刷新页面后,工作流是否仍处于暂停状态?审批任务是否还在?
- 通知机制(如果配置了):检查 Slack/飞书等渠道是否收到了审批通知。
6.5 通过 API 集成测试
对于生产环境,工作流通常通过 API 调用。你可以在应用的“API 访问”页面找到调用方式。
# 示例:使用 curl 调用工作流 API curl -X POST \ ‘https://your-dify-domain/v1/workflows/run‘ \ -H ‘Authorization: Bearer your-api-key‘ \ -H ‘Content-Type: application/json‘ \ -d ‘{ “inputs“: { “article_topic“: “API 测试主题“ }, “response_mode“: “blocking“, # 或 ‘streaming‘ “user“: “test-user-001“ }‘调用后,你需要通过 Dify 的后台管理界面或专门的审批 API 来查询和处理审批任务。
7. 常见问题与排查思路
在实际使用“人工介入”功能时,你可能会遇到以下问题:
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 工作流在审批节点无限期等待,无任何通知。 | 1. 审批人邮箱未注册 Dify 账户。 2. 审批人邮箱填写错误。 3. 消息推送渠道(如 Slack Webhook)未配置或配置错误。 | 1. 检查审批节点配置的邮箱地址。 2. 登录该邮箱账户,查看 Dify “待办”列表。 3. 检查 Dify 后台的“外部集成”设置,测试 Webhook。 | 1. 确保审批人是有效的 Dify 用户。 2. 使用变量动态指定审批人时,确保上游节点正确输出了邮箱变量。 3. 正确配置并启用通知渠道。 |
| 审批人操作后,工作流未继续执行。 | 1. 工作流执行实例因超时等原因已关闭。 2. 条件判断节点对 approval_result变量的值判断有误。3. 网络或服务异常导致回调失败。 | 1. 在工作流“日志与历史”中查看该次执行的状态和详情。 2. 检查条件节点的逻辑条件是否与审批节点输出的值完全匹配(注意大小写和空格)。 3. 查看 Dify 服务日志。 | 1. 适当增加工作流执行超时时间。 2. 在条件判断中使用 trim()函数处理变量,或确保审批表单输出的值是预期的。3. 重启 Dify 相关服务。 |
| 审批表单中的修改意见未传递给后续节点。 | 审批表单字段的“变量名”设置错误,或后续节点引用变量名错误。 | 1. 在审批节点的配置中,确认表单字段的“变量名”。 2. 在后续的 LLM 修订节点中,检查提示词里引用的变量名是否一致。 | 1. 使用简单、明确的变量名,如feedback。2. 在工作流调试模式下,查看每个节点的输入/输出变量,确认数据流向。 |
| 多轮修订循环导致无限循环。 | 修订后重新送审的逻辑缺少终止条件。 | 检查工作流设计,修订后是否无条件跳回审批节点。 | 在循环路径上增加一个“计数器”变量(如revision_count),每次修订后加1,并在条件判断中检查是否超过最大次数(如3次),超过则跳转到终止或人工处理节点。 |
| 通过 API 触发的工作流,审批人如何知晓? | 默认仅依赖 Dify 站内通知,审批人可能不登录。 | API 调用后,查询返回的task_id或workflow_run_id。 | 1.最佳实践:配置强通知(Slack/飞书等),将审批链接直接发到协作群。 2. 通过 Dify API 定期轮询任务状态,并集成到自己的通知系统。 |
8. 最佳实践与工程建议
将“人工介入”可靠地用于生产环境,需要考虑以下几点:
审批人管理策略:
- 避免硬编码邮箱:尽量不要在流程中直接写死审批人邮箱。可以通过上游节点根据业务规则(如文章类型、部门)从数据库或配置中心动态查询并赋值。
- 审批人组与后备:支持设置多个审批人(会签或或签),并指定后备审批人,防止因单人缺席导致流程阻塞。
- 权限隔离:确保审批人只能看到和操作其权限范围内的任务。
超时与异常处理:
- 设置合理超时:根据业务紧急程度设置审批超时(如2小时、24小时)。超时后应自动执行预设动作(如升级给上级、自动拒绝或通过)。
- 设计补偿流程:对于因系统故障导致审批状态丢失的情况,应有后台巡检任务或手动干预界面,能重新驱动停滞的工作流。
安全与审计:
- 完整日志:确保工作流执行日志、审批操作日志(谁、何时、做了什么决定、修改意见是什么)被完整记录,并可供查询。
- 数据不落地:如果审批内容敏感,考虑在传输和展示时进行加密或脱敏。Dify 本身提供企业级安全特性,但部署架构也需符合公司规范。
用户体验优化:
- 审批界面友好:在审批节点的“描述”字段中,使用 Markdown 将 AI 输出、原始输入、上下文信息清晰地格式化展示,帮助审批人快速决策。
- 提供默认选项:在审批表单中,为“通过”和“拒绝”提供常见的预设意见选项(如“内容合规,准予发布”、“事实有误,请核实”),减少审批人输入负担。
- 移动端适配:确保审批通知链接在手机端也能方便地打开和操作。
与现有系统集成:
- 深度集成:不要将 Dify 工作流视为孤岛。审批完成后,触发的结果(如发布文章、创建工单、更新 CRM)应通过 HTTP 请求或插件,无缝对接到你的 OA、CRM、CMS 等核心业务系统。
- 状态同步:考虑将重要的审批最终状态同步回你的主业务数据库,保持数据一致性。
Dify 1.15 的“人工介入”功能,本质上是为 AI 自动化流程装上了可调节的“方向盘”和“刹车”。它没有削弱自动化的力量,而是通过引入人类的判断力,让自动化变得更加可信、可靠和合规。从简单的文本审核到复杂的多步骤业务审批,这个功能极大地拓展了 Dify 在真实企业场景中的应用边界。
🚀 30+款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度
