ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

用Dify搭建AI复盘工作流:从想法到落地的完整实践

用Dify搭建AI复盘工作流:从想法到落地的完整实践 hindsight 这个词我一直觉得很难翻译得传神。“后见之明”太书面很多人第一眼反应就是“事后诸葛亮”。但真做过项目管理、带过团队的人应该都有同感复盘这件事恰恰是“事后”才值钱。事情没发生之前谁都是盲人摸象事情发生之后带着结果倒回去看才看得清哪一步错了、哪一步侥幸对了。我最近在 Dify 上把“复盘”做成了一套可复用的 AI 工作流名字就叫 hindsight你把手头的事件描述、聊天记录、会议纪要、项目回顾丢进去它帮你按一套专业的复盘方法论输出结构化报告。Dify 是目前圈子里用得比较多的开源 LLM 应用开发平台不写前端不搞后端拖拖节点就能把大模型编排成一条可用的流水线。这套组合的实际价值在于它把“复盘”从一句口号拆成了可执行、可配置、还能沉淀成团队知识资产的标准动作。这篇文章把我从想法到落地、再到调优的完整过程写出来方案怎么定的、工作流怎么搭的、提示词怎么写才能让它不说废话、上线后又踩了哪些坑。适合两类人看一是在团队里想把复盘真正落地、但一直觉得流于形式的管理者二是想用 Dify 做 AI 工作流、需要完整案例参考的开发者。只要你有基础的 Dify 操作经验跟着走一遍一两个小时就能出一版能用的复盘助手。1. 先想清楚hindsight 到底要解决什么问题1.1 复盘为什么总是流于形式我做团队管理那几年最头疼的会就是复盘会。每次项目结束把人凑齐流程千篇一律项目经理过一遍时间线谁迟交付了、谁改了需求然后就是长久的沉默。好一点的会有人承认“当时判断错了”但你要追问他“为什么错、在当时那个信息条件下应该怎么办”基本说不出所以然。这真不是个人能力问题是复盘这件事本身踩着几个天然的大坑。第一信息碎片化。项目跨度一长关键信息散落在聊天记录、会议纪要、邮件、工单里人的记忆只能挑那些带情绪的片段留存真正支撑因果链的细节早就丢了。第二情绪干扰。复盘稍微不小心就变成追责现场尤其出了事故的时候。人一旦进入防御状态第一反应是解释不是分析说出口的每句话都在为“当时的自己”辩护。第三归因偏差。心理学里的“基本归因错误”自己做错了怪环境别人做错了怪人品。这个偏差在复盘里格外常见最后出来的结论不是“流程有系统性问题”而是“某个人不行”。第四没有方法论。就算大家情绪稳定、愿意聊如果脑子里没有一套结构化的分析框架结论也是散的最终只会停留在“以后要注意”这种没有操作性的层面。这四个坑叠在一起复盘会就变成了情绪内耗现场开一次伤一次。我当时就在想能不能有个东西把信息先结构化再按稳定的方法论分析把情绪剥离出去只留下事实和逻辑。这就是 hindsight 最初的出发点。1.2 用 LLM 做复盘解决的是“人”的短板有人可能觉得复盘的事用个 Excel 模板就够了何必上大模型说实话我试过。模板化的复盘表结构是有了但填不填、填多深全靠自觉而且模板是死的没法根据项目类型调整分析角度。真正跑几轮下来那表格基本就是个形式主义的存档文件。LLM 做复盘逻辑不太一样它先把“事实”和“判断”分开然后按方法论走完一整套分析。具体有几件事是大模型特别擅长的长文本清洗与结构化。三个月搬家的聊天记录丢进去它能按时间、参与方、决策点重新组织把散落的信息拧成一条时间线。多维度归因。人一下子能想到的原因通常只有两三个但 prompt 里明确定义了分析维度之后模型会把技术、流程、人员、沟通、外部环境这些层面都过一遍帮你看到盲区。不带情绪地指出问题。它不会因为某人是资历深的老同事就嘴下留情也不会因为事故牵涉到自己就不自觉地防御。当然这个特性也有副作用就是输出可能太过温和后面我会详细讲怎么调。结论可以沉淀。生成的复盘报告是文本天然可以做检索、归档配合 Dify 知识库下次启动类似项目时直接把历史教训捞出来避免在同一个坑里栽第二次。1.3 输入输出先定义清楚再谈技术动手做任何方案前我习惯把输入输出定清楚。hindsight 的定位是输入原始素材输出结构化复盘报告。具体到输入我设计了三个参数原始素材 raw_material核心输入可以是聊天记录、会议纪要、项目总结、一段事件描述。背景信息 background可选比如项目目标、团队构成、时间约束、外部环境。背景越多分析越准。复盘视角 perspective可选默认全局复盘也可以指定“只分析用户留存”“只分析技术架构”“只分析团队协作”。输出侧是一份包含六个部分的报告事实还原、关键决策点、多维归因分析、经验与教训、行动清单、待确认与追问。这六块不是随便拍的它对应复盘方法论里“发生了什么 → 为什么发生 → 能学到什么 → 下一步怎么做”的完整逻辑链细节我会在第三节展开。1.4 为什么选择 Dify而不是自己写代码方案想了半天最后决定不自己写服务直接拿 Dify 做。原因特别实际。第一是编排效率。hindsight 不是单次调大模型就完事中间有文本清洗、事件抽取、分支判断、知识库检索、报告生成多个环节。用 Dify 的 Chatflow 把节点拖一拖半小时就出能跑的版本换成写代码光接口和状态管理就要忙几天。第二是自带知识库能力。复盘最有价值的部分其实是“历史教训能被检索出来”Dify 内置知识库我直接把过去项目的复盘报告脱敏之后传进去做向量化不需要单独搭向量数据库。第三是调试和发布体验。每个节点的输入输出可以单独看prompt 改完立刻生效。发布之后可以弹出一个对话页面给团队用也可以接 API 给内部系统调用省掉一整个前端。我自己的 Dify 是用 Docker 在服务器上部署的社区版部署本身很成熟按官方文档跑起来就行。选型逻辑一句话总结这件事的核心是编排大模型完成一套分析流程Dify 就是干这个的。2. 在 Dify 上搭建 hindsight 工作流节点配置与参数详解2.1 应用类型选 Chatflow 还是 WorkflowDify 新建应用的时候会让你选聊天助手、Agent、文本生成、Chatflow、Workflow 这些类型。我第一次选的是 Workflow因为它听起来更像“流水线”符合我对一个自动化流程的想象。结果做着做着发现不对复盘这个场景用户大概率会在拿到报告之后追问比如“第二个行动项具体怎么落地”“归因分析能不能再细化一下”。Workflow 跑完一次就结束了没有多轮对话能力。后来切到了 Chatflow。Chatflow 本质上也是可视化编排但每条消息都能走一遍流程还保留多轮上下文。听起来是个小差别实际使用体验差很多用户拿到复盘结论之后可以接着追问模型记得前面聊的内容整个产品才真正像一个“复盘助手”而不是一次性脚本。如果你确定业务场景只跑一次、不需要追问用 Workflow 完全够。否则我建议直接 Chatflow。2.2 工作流整体链路先把逻辑想清楚再拖节点我搭的 hindsight最终是下面这条链路每个方块对应编辑器里的一个节点开始节点 → 模板转换节点截断长文本 → LLM 节点事实抽取器 → 条件分支是否启用知识库检索 → 知识检索节点召回历史复盘 → LLM 节点复盘报告生成器 → 模板转换节点Markdown 渲染 → 结束节点这个链路里最关键的设计决策是把“事实抽取”和“观点生成”拆成了两个独立的 LLM 节点。我一开始是合在一个节点里做的让模型看完素材直接写报告结果模型经常把素材里的主观断言当事实引用报告越写越虚。拆开之后先让模型把客观事件抽成结构化数据再基于这些数据做分析输出的可信度明显上一个台阶。这个“先抽取再分析”的模式在很多长文本应用中其实都值得借鉴。2.3 节点配置逐个拆解从开始到结束先看开始节点。我定义了四个输入变量raw_material文本必填、background可选、perspective可选、history可选用来放用户粘贴的历史复盘摘要。有个很实际的细节直接把这几个变量丢给后面的 LLM 用大概率会遇到一个常见问题——用户输入超长。所以我建议在开始节点后面立刻接一个模板转换节点把 raw_material 先裁剪。我的模板用的是 Jinja2 语法{% if raw_material | length 20000 %}{{ raw_material[:20000] }}{% else %}{{ raw_material }}{% endif %}20K 字符是我根据模型上下文窗口估算的不是拍脑袋。你如果用的模型上下文更大可以往上调但如果给后续的“报告生成器”留的上下文太少它输出质量会下滑。这块需要你在自己的模型组合下做一两次调试。然后是第一个 LLM 节点也就是事实抽取器。我给它的任务是把素材里的客观事件、决策点、待确认信息分别提取出来并且只输出 JSON。模型我在备选池里放了几种当前日常用的 Claude Sonnet 系列和 GPT-4o 系列都试过长文本中文处理都不错。temperature 我设成 0.1这一步不允许模型自由发挥。Dify 的 LLM 节点可以在 UI 里配置输出变量我建了 events事件列表、decisions决策列表、raw_material_truncated截断后的原文字段。这一步的配置很重要没定义结构化输出的话后面节点拿到的就是一整段自由文本处理起来很难受我踩过这个坑后面细说。接着是条件分支。我加了一个变量 is_knowledge_enabled默认 true。走“是”就进入知识检索节点。我在 Dify 里建了一个叫 hindsight-knowledge 的知识库里面放了三类文档脱敏过的历史复盘报告、复盘方法论说明、团队约定俗成的“红线问题”清单。检索参数我调过几轮最后 top_k 设为 4score 阈值大概 0.35。太低了会召回一堆不相关的内容太高了经常什么都查不到这个值得根据自己的语料调。然后进入第二个 LLM 节点——复盘报告生成器。它的输入是前面抽取的结构化事件、决策点、背景、视角以及检索到的历史复盘。这个节点的 prompt 是整个应用的核心我会在第三节贴出完整版本。这里先强调一个原则这个节点不要和事实抽取器合并。模型在生成观点时天然带推理语气如果事实描述也由同一个节点产出时间线和证据就会被“我觉得”“可能”这类语气污染。最后是模板转换节点和结束节点。模板转换主要是把结构化输出渲染成漂亮的 Markdown## 事实还原 {{ report.facts }} ## 关键决策点 {{ report.decisions }} ...结束节点把渲染后的内容以文本返回。如果你要对接内部系统也可以在这一步输出 JSON 而不是文本团队后端拿到直接入库。2.4 模型与参数选型不要无脑设 0.7模型这块我三个大方向的对比都做过GPT-4o、Claude Sonnet、几个常见的开源模型。复盘任务的特点是长文本理解和多步推理小模型在事实抽取环节就开始漏内容漏到后面报告就没法看。我日常用 Claude Sonnet理由不复杂长上下文表现稳中文语义理解好成本适中。预算特别紧的时候用 GPT-4o-mini 跑最基础版也能凑合但归因深度会明显下降。temperature 这个参数我在事实抽取节点设 0.1在报告生成节点设 0.3。很多人上来就无脑 0.7这样生成的报告文采是有了但事实部分会开始自由发挥这是复盘场景绝对不能接受的。max_tokens 我一般给到 4000 到 8000取决于报告预期长度。复盘报告动辄两三千字路给短了会被截断后面模板转换接上一段没写完的 Markdown截图发群里都很尴尬。3. 提示词设计让 hindsight 输出真正“有用”的复盘结论3.1 一个核心原则把模型当成严格的复盘引导师很多人写复盘应用的 prompt上来就是“你是一个资深项目经理请帮我分析”没了。这样出来的结果十有八九是“做得好的地方是 XXX需要改进的是 XXX以后应该 XXX”这种正确的废话。关键问题在于你没告诉它复盘该按什么方法论走、结论要落在哪个层面。我的处理方式是在系统提示词里给出一套明确的流程和硬性约束让模型像一个受过训练的复盘引导师而不是一个专门和稀泥的通用模型。3.2 系统提示词全文可以直接抄下面这个版本已经迭代过好几轮可以直接复制到 Dify 的 LLM 节点里使用你是一名专业的复盘引导师正在帮助一个团队完成一次结构化复盘。你的目标不是安慰任何人也不是和稀泥而是基于事实梳理因果关系形成可执行的经验资产。 请严格按以下流程工作 第一步区分事实与判断。把原始素材中的客观事实谁、何时、做了什么、产生了什么结果与主观判断“我觉得”“可能”“大概”分开。只把可验证的事实写入“事实还原”部分拿不准的内容单独标注为“待确认”。 第二步识别关键决策点。从时间线中找到对结果产生了关键影响的 3-5 个决策点。对每个决策点写清楚当时的选项有哪些为什么选择了当前方案当时的信息约束是什么 第三步多维度归因。从以下六个维度分析成败原因每个维度必须有证据支持禁止只给结论不给依据 1) 技术/方案维度 2) 流程/执行维度 3) 人员/协作维度 4) 信息/沟通维度 5) 外部环境维度 6) 资源配置维度 同一类现象如果重复出现说明是系统性问题请单独标记。 第四步提炼经验与教训。经验必须是“下次遇到类似情况可以提前做什么”教训必须是“如果再来一次什么地方会做得不同”。每条经验/教训都要绑定它在事实部分的依据。 第五步输出行动清单。行动清单每项必须满足三条约束具体到人或角色、有截止时间、有验收方式。禁止出现“加强沟通”“重视用户反馈”这类无法验收的建议。 输出格式严格遵循 ## 事实还原 ## 关键决策点 ## 多维归因分析 ## 经验与教训 ## 行动清单 ## 待确认与追问这个 prompt 里有几个容易踩的坑我直接说破。第一不要用“请给出建议”这种开放指令。指令越开放模型越倾向于输出安全的模糊结论。上面五步流程每一步都有明确的产出要求模型只能按格子走。第二“必须”和“禁止”要敢于用。prompt 语气重一点效果是实在的因为大模型的默认行为就是和稀泥你不强势它就滑回去了。第三专门留一个“待确认与追问”板块。复盘是证据和逻辑的游戏原始素材经常不完整与其让模型硬猜不如让它明确说出缺什么。报告会显得严谨用户也能顺着追问。3.3 用户输入模板让用户“会说话”用户输入端的提示词模板我的做法是这样的请对以下素材进行复盘分析{% if background %}背景信息如下{{ background }}{% endif %}{% if perspective %}复盘请重点关注{{ perspective }}{% endif %}。 原始素材 {{ raw_material }}看起来简单但有两个细节要说一下。一是背景和视角用条件句子包起来了用户不填就不输出不会污染 prompt。二是开头直接用祈使句把任务定死不会变成“聊天助手”随便聊。你别小看这个区别同样一个模型指令式的输入和聊天式的输入输出质量能差出一截。3.4 结构化输出让后面的节点能稳定引用我在事实抽取器这个节点配置了三个结构化输出变量并用表格整理了它们的定义输出变量含义要求events结构化事件列表每条含时间、事件、参与方、影响decisions关键决策点列表每条含选项、选择、信息约束raw_material_truncated截断后的原文供报告生成器引用关键的经验是如果你没定义输出变量Dify 默认把 LLM 输出当一整段文本后面的节点只能拿整段文本来拼模板转换时处理的都是超长字符串写模板写得想吐。所以强烈建议一开始就定义 JSON 格式的输出变量并且在 prompt 里明确“只输出 JSON不要输出任何解释文字”。4. 上线踩坑实录与排查方法五个必看的调优技巧4.1 第一个坑输出全是“正确的废话”第一个版本跑通时我挺高兴拿一个真实项目素材去试结果报告读完就沉默了。“团队沟通有待加强”“项目进度需要更好把控”“用户反馈值得重视”全是这种话一条能落地的都没有。原因很简单第一版提示词就是这个水平“你是一个资深项目经理请复盘这个项目。”模型根本不知道复盘方法论也没人要求它把结论绑定到证据更没人禁止模糊表达。排查思路也很直接看输出报告哪一步先摆烂。我发现是“多维归因分析”那块模型每个维度一句话带过没有任何细节。于是我在提示词里加了一条硬约束“每个维度必须包含原文中的具体事件作为证据否则视为无效输出。”同时把温度从 0.7 压到 0.3。改完一轮质量立刻不一样了。4.2 第二个坑素材太长模型上下文直接爆掉复盘场景最大的敌人就是长文本。一个季度归档的聊天记录十万字都很正常。我第一次调试把一个月的数据粘进去LLM 节点直接报 context length exceeded面板上一片红。当时的临时方案是分几步走先用模板转换节点截断到 2 万字符内再在提示词里要求模型“先读前 3000 字如果关键事件在后半部分再补充读取”。这个方案治标不治本最靠谱的做法还是把长素材做成知识库用检索替代全量塞入。后来我把聊天记录导出成文档传进知识库hindsight 改成先检索、再分析长文本问题基本根治。4.3 第三个坑知识库检索不到历史复盘加了知识库之后我预期模型能自动参考过去的复盘结论结果它经常检索不到东西。查了一圈发现是两个原因叠加。一个是文档格式。我传进去的历史报告有 PDF 扫描件Dify 解析器对扫描件支持有限很多内容根本没进向量库。解决方式不复杂把 PDF 转成干净的 Markdown 或纯文本再传。另一个是检索参数。score 阈值我一开始设 0.6结果大多数查询都差一点被过滤掉。后来把阈值降到 0.35打开多路召回再加了一个重排序模型效果才算正常。这一块没有标准答案完全取决于你的语料和查询风格只能慢慢调。4.4 第四个坑多轮对话时上下文污染严重Chatflow 支持多轮这件事本身是加分项但如果不处理轮次之间的上下文就会出现一种很微妙的错误第一轮生成的复盘报告留在上下文里第二轮用户贴了新素材模型开始把上一轮的内容混进新一轮的归因输出前后矛盾。我的处理思路是“变量隔离”把历史聊天摘要放在对话变量 history 里本轮原始素材只存在临时变量 raw_material 里新一轮开始前把上一轮完整报告从上下文里摘出去只保留必要摘要。在 Dify 里做这个操作要花点心思核心原则就一句话让每一轮流程只看到它该看的数据别偷懒把所有东西都塞给模型。4.5 第五个坑变量命名混乱改 bug 改到怀疑人生最后这个坑说起来有点丢人但浪费时间是真的。Dify 的 LLM 节点引用变量用的是{{ }}语法变量名打错一个字母报错信息根本不指向问题所在。我最初定义了 material、raw_material、material_truncated 三个相似名字结果一天到晚改错节点引用。后来我定了一套命名规范简单但极有用所有输入变量统一in_前缀中间结果用tmp_前缀最终输出用out_前缀。变量名清晰了之后工作流复杂起来也不怕这个习惯强烈建议早点养成。5. 个人体会与后续扩展这套工作流跑了快一个季度hindsight 已经变成团队月度复盘的标准工具。我自己的一个体会是LLM 应用真正有价值的点往往不在“模型本身多聪明”而在于你用工作流、知识库、提示词这三样东西把团队里一件反人性的事情坚持了下来。复盘这件事最怕形式大于内容而 hindsight 至少把两件事做好了一是把素材变成有结构的事实让大家不再凭记忆聊二是把结论逼到有执行人、有截止时间、有验收标准的行动项让“下次注意”这种话无处遁形。后续我有两个方向想继续扩展。一个是把每个季度的复盘报告持续喂进知识库让新项目启动前自动“查历史”真正形成组织的长期记忆。另一个是把行动清单接到待办系统里到点自动提醒对应负责人验收让复盘结论真正产生闭环。如果你也想在 Dify 上搭这类流程建议从最简单的版本开始跑先跑通一条主链路再慢慢加分枝。等你自己写完 prompt、调完参数、被长文本坑过几次之后就会理解我现在说的这套东西的价值了。
返回列表