ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

用Dify搭建AI复盘助手:工作流+知识库实现团队经验沉淀

用Dify搭建AI复盘助手:工作流+知识库实现团队经验沉淀 刚拿到“hindsight”这个名字的时候我盯着它看了很久。这个词在英文里是“后见之明”的意思英文世界有句老话叫“hindsight is 20/20”——事后看一切都清清楚楚。问题是我们绝大多数人并不是天然具备这种“事后看清楚”的能力项目做完了、决策做完了一堆经验教训就散落在聊天记录和脑海深处下次该踩的坑一个不落。我这次就用 Dify 搭了一个叫 hindsight 的 AI 复盘助手把我团队里的周复盘、项目复盘、个人反思全塞进去让 LLM 帮我们做结构化梳理和经验沉淀。这篇文章就完整记录一下这个项目的设计思路、搭建过程和避坑经验适合正在折腾 Dify、想用 AI 做团队知识管理的朋友参考。1. 项目整体设计与思路拆解1.1 复盘为什么需要 AI 介入——hindsight 要解决的真正问题先聊点实在的。复盘这个词在管理圈都快被说烂了但真正能把复盘做到位的团队极少。我观察到的常态是项目一结束大家写个简短的总结文档或者开个复盘会聊完就完事了很少有人会把复盘的结论变成下一次行动的输入。为什么会这样因为复盘这件事本身是反人性的。人的大脑天然擅长向前看——下一步要做什么、明天有什么安排这些我们记得很清楚。但“向后看”是件高能耗的事需要刻意回忆、对比、归因、抽象这一套流程走下来非常累。而且越是有压力的项目结束之后人越倾向于快速忘掉不愉快的部分这是心理防御机制。所以仅仅靠“让大家认真复盘”这个口号是推不动的需要有一个工具把复盘的流程标准化、轻量化让人低成本地完成高价值的反思。hindsight 这个项目就是奔着这个需求去的。它的核心价值不是让你写更多总结而是把“回顾目标—评估结果—分析差距—沉淀行动”这条主流程自动化。用户只需要用一两段话描述发生了什么AI 通过提问引导和结构化输出帮你把混乱的回忆整理成清爽的复盘结论。这个过程中 AI 替代的不是人的思考而是替代了“结构化整理”和“追问细节”的机械劳动。1.2 为什么选 Dify 而不是直接写代码调 API聊到技术选型我确实纠结过一段时间。早期我试过直接用 Python 调大模型 API 自己写脚本但很快就发现几个问题第一提示词迭代非常痛苦每次微调都要改代码、重启脚本试错成本很高第二我想把复盘结论存进知识库下次做类似项目时检索出来参考这一块自己搞 RAG 链路非常麻烦第三团队里其他同事也要用我不能要求每个人都去跑 Python 脚本得有个像样的交互界面。后来接触到 Dify这些问题基本都迎刃而解了。Dify 是一个开源的大模型应用开发平台你可以把它理解成一个“LLM 应用工坊”——通过可视化拖拽的方式编排提示词、模型、知识库、工作流然后直接发布成一个可访问的 Web 应用或 API。对我来说最核心的三个理由是工作流编排可视化。复盘这件事虽然是标准流程但中间有很多条件分支比如“这个项目是否需要知识库检索”“是否需要深度追问”这些逻辑在 Dify 里可以拖拖拽拽就搭出来完全不用写代码。内置完整的 RAG 链路。Dify 自带知识库功能支持上传文档并做向量化后续在复盘时自动检索历史经验这个能力自己从零搭一遍要费不少功夫。开箱即用的应用界面。Dify 自带聊天界面发布后团队直接打开链接就能用省去写前端的麻烦。当然如果你是个重度代码选手非要在代码里管理一切那 Dify 可能不是你的菜。但像我这种既要快速落地又要持续迭代的场景Dify 的性价比实在是高。1.3 核心功能拆解——hindsight 具体能做什么既然要做就把需求想清楚。我设计 hindsight 的时候给它规划了四个核心功能模块第一项目结项复盘。这是最刚需的场景。一个项目结束后把项目背景、目标、实际结果、关键事件输入进去AI 按照“目标回顾—结果评估—差距分析—根因追溯—行动计划”的框架输出一份完整的复盘报告。第二个人周度反思。每周花五分钟把这一周最值得记录的几件事丢进去AI 帮你提炼出“做得好的地方”“需要改进的地方”“下周的三个关键行动”。第三决策后视镜。这是我特别想做的模块。每次做了重要决策之后把决策背景、选项、最终选择、当时假设这些信息记录下来过一段时间再来回溯让 AI 帮你看当时的决策逻辑哪里对了哪里错了。这个模块的名字就来自 hindsight 的本义——事后看哪种选择更合理。第四经验知识沉淀。所有复盘产生的结论经过处理后进入知识库。下次做类似项目时可以主动检索历史复盘获取相关经验。这块做成了团队的经验就不再是散落在个人脑中的私有资产了。2. 核心细节解析与实操要点2.1 复盘方法论如何翻译成提示词工程这是整个项目最核心的一步。说白了复盘的思路再好如果不能变成大模型看得懂、执行得好的提示词那一切都白搭。我在搭 hindsight 的时候参考了多个复盘方法论最终确定了一套比较通用的提示词框架。我用的是“复盘四步法”作为底层骨架回顾目标、评估结果、分析原因、总结规律。但在实际落地时这套框架需要更细致地拆解。比如“回顾目标”不能只说“请你回顾一下目标”要让模型知道具体要提取哪些要素——目标要分定性目标和定量指标要区分“当初设定的目标”和“实际达成的目标”之间的差异。一个比较典型的结构化复盘提示词我是这样写的用在工作流里的核心 LLM 节点上你是一名资深的项目管理复盘教练擅长引导团队和个人进行深度反思。 你需要按照以下四个阶段完成复盘 阶段一回顾目标 - 请从用户的描述中提取原始目标是什么成功的标准是什么 - 如果用户没有说清楚目标请列出 2-3 个追问问题帮助用户澄清目标。 阶段二评估结果 - 实际的结果是什么与原始目标相比差距在哪里 - 请用量化的方式描述差距比如“超出预期”“基本达成”“未达成差距为 xx%”。 阶段三分析原因 - 达成或未达成的关键原因是什么请从主观因素决策、执行、协作和客观因素市场、资源、环境两个维度分析。 - 对于未达成的部分请追问这是流程问题、能力问题还是信息不足导致的 阶段四总结规律 - 形成 3-5 条可复用的经验每条经验必须包含“情景行动结果”三要素。 - 生成下一步行动计划明确到“谁在什么时间之前做什么事”。 输出格式要求 - 使用 Markdown 格式。 - 如果信息不足先输出追问清单不要强行生成复盘结论。 - 全程语气直接、务实不要泛泛而谈。写这份提示词的时候有两点我自己的心得第一一定要给模型“拒绝生成”的权力。以前我写复盘提示词模型总是在信息不足的时候强行编造复盘报告看起来很完整实则不可用。现在特意加了“信息不足时先追问”准确率提升了一个档次。第二提示词里的输出格式用 Markdown成本低、效果好而且团队的人看起来没有阅读障碍。2.2 工作流编排的节点设计——不是一个 LLM 就完事很多人觉得搭一个 AI 应用就是扔给 LLM 一段提示词就行了其实不是。尤其在复盘这个场景里如果只用一个 LLM 节点效果会非常不稳定。我在 Dify 里实际搭建的时候把整个流程拆成了多个节点。整个 hindsight 工作流的架构是开始节点接收用户输入 → 第一个 LLM 节点做信息整理和缺失信息判断 → 条件分支节点如果信息不足走追问路径如果信息充足走复盘路径→ 知识检索节点搜索历史经验 → 第二个 LLM 节点综合当前信息和历史经验生成复盘报告 → 结束节点输出。关键节点拆解开始节点。需要定义用户输入的变量我用的是event_description用户对项目或事件的描述、context_type复盘类型项目结项、个人周度、决策回溯、goal_input可选如果用户愿意先写目标。这个节点的设计要给用户足够的自由度让“不擅长复盘的人”也能只用一句话就开始。前置整理节点LLM。这个节点的作用是把用户输入的混乱信息转成有结构的“事件事实表”。它只做提取和追问判断不做全面复盘。这样做的原因是LLM 一次完成“理解判断复盘输出”四件事很容易在生成过程中混淆结构化拆分后每一步都简单、可靠。条件分支节点IF/ELSE。核心逻辑当前置整理节点输出is_information_sufficient false时走追问路径为 true 时走正式复盘路径。这个分支设计是整个工作流的“大脑”它能确保模型不会在不清楚项目背景的情况下胡编乱造。知识检索节点。连接 Dify 的知识库检索同类项目的历史复盘记录。检索的 query 我一般使用前置整理节点输出的摘要内容而不是用户原始输入因为原始输入太平淡了用摘要去做向量检索匹配度会高不少。复盘生成节点LLM。把“结构化事件事实 历史经验检索结果”一起塞进最终提示词生成完整的复盘报告。这个节点用的模型参数我一般设置为 temperature 0.3让输出更稳定。图中其实就是一个典型的 LLM 工作流应用范式输入预处理 → 条件判断 → 副本来 RAG 增强 → 主生成任务。如果你之前没有 Dify 编排经验记住一个原则每个节点只做一件事。宁可节点多用两个也别让一个节点干三种活。2.3 关键参数与模型选择的权衡模型选型这块也是踩了不少坑。Dify 支持各种各样的模型我主要试了 OpenAI 的 GPT-4o、Azure OpenAI 部署的模型还有国内的几个开源模型通过 Ollama 或 API 接入的 Qwen、DeepSeek 等。先简单说下我用不同模型的感受。GPT-4o 的总结归纳能力确实强尤其是多轮追问和结构化输出几乎不需要调教。但我在实际使用时发现如果提示词写得足够细致开源模型比如 DeepSeek-V3 或 Qwen2.5 也能达到八九成的效果性价比高很多。考虑到我们要团队内部用、可能会私有化部署最终我选择了 DeepSeek 的 API价格便宜输出质量也足够日常复盘用。温度参数temperature这里我要专门说明一下。温度控制的是输出的随机性数值越高回答越有创造性越低越稳定。复盘场景本质上是一个“分析归纳”场景不是“创意写作”所以温度不能高。我实测下来参数推荐值说明temperature0.2-0.4复盘报告追求准确和稳定不建议超过0.5max_tokens2000-3000复盘报告通常需要足够的长文本空间top_p0.7-0.9搭配低温度使用保持输出的多样性不失控presence_penalty0复盘任务不需要刻意避免重复设置为0最稳还有个参数我一开始忽略了后来才发现很重要——max_tokens。复盘的输出文本往往比较长如果 max_tokens 设得太小报告到一半就被截断了看起来非常奇怪。建议至少给到 2000 起步如果你希望 AI 输出追问问题清单和完整复盘报告两部分那 3000 更稳妥。3. 实操过程与核心环节实现3.1 从零创建 Dify 应用——环境与初始化先说一下 Dify 的部署方式。如果是个人玩直接去 Dify 官网的云服务注册账号是最快的路径开箱即用。如果是团队内部使用、数据要私有化那就用 Docker Compose 自托管部署。我因为在公司内网用选择了自托管方式部署过程不复杂准备一台至少 4 核 8G 的服务器安装 Docker 和 Docker Compose然后拉取 Dify 官方代码仓库中的 docker-compose.yaml 文件执行docker compose up -d一键启动即可。首次启动会拉取多个镜像耐心等一会就好。部署完成之后进入 Dify 控制台第一步是“添加模型供应商”。这一步要在设置里填模型的 API Key。我用的是 DeepSeek 的 API填进去之后在模型列表里就能看到可用的模型了。注意不同供应商的模型在 Dify 里可能需要单独配置模型类型LLM、Embedding、Rerank 等其中 Embedding 模型在创建知识库时会用到别漏了。接下来就是创建应用了。Dify 中有多种应用类型我们的目标场景是“用户输入一段描述AI 自动走完流程并输出复盘报告”这明显是一个工作流应用而不是简单的聊天助手。所以创建应用时我选择了“工作流”类型并给它起了名字hindsight。3.2 逐步搭建复盘工作流——从零到可跑通这个环节是整个项目最核心的“重活”我按节点顺序给各位拆解一遍我实际的操作流程。第一步配置开始节点。进入工作流编排画布后默认会有一个“开始”节点。我在开始节点里添加了几个输入字段event_description文本类型必填用于接收用户对项目或事件的描述。context_type下拉选择类型包含“项目结项复盘”“个人周度反思”“决策回溯”三个选项。goal_input文本类型选填如果用户愿意写出当初设定的目标就加到这一项里。开始节点的作用是“定义接口”相当于给整个应用定了输入协议。第二步搭建前置整理节点。从节点库里拖一个“LLM 节点”到画布上把它连接在开始节点后面。这个节点的系统提示词我专门写了一段“整理与判断指令”核心任务是提取事件涉及的领域、项目阶段、角色参与方。清理重复和无关的信息将用户描述转成结构化摘要。判断信息是否足以支撑完整复盘输出一个布尔值is_sufficient。如果信息不足输出 1-2 个你最需要的追问问题。注意这里的输出我定义了两个变量is_sufficient布尔值和structured_summary文本。这些变量后续会作为条件分支的输入。第三步配置条件分支节点。拖一个“条件分支”节点判断逻辑设置为当is_sufficient true 时进入“正式复盘路径”当is_sufficient false 时进入“追问路径”。这一步是整个工作流智能化的关键。追问路径其实很简单——直接把前置整理节点输出的追问问题透传出来以文本形式返回给用户。很多人觉得这样“不够智能”但这恰恰是最稳妥的产品设计信息不足就坦诚问清楚而不是用自己的脑补去填坑。第四步配置知识检索节点。在正式复盘路径上我先加了一个“知识检索”节点。这里需要提前在 Dify 的知识库模块里建好一个“历史复盘经验库”把团队过往的复盘文档、经验总结、项目案例全部上传进去并完成向量化。知识检索节点的工作原理是把输入的文本我用的是structured_summary转换成向量在知识库里做相似度检索返回最相关的若干条记录。之所以要在这里接知识库是因为团队复盘有个很强的上下文依赖——同类项目踩过的坑、前人总结的经验比大模型的通用知识要宝贵得多。让 AI 基于历史经验来总结规律产出才真正有团队特色。第五步配置复盘生成节点。这是最后一个大节点也是流程的核心产出方。我把结构化摘要、历史经验检索结果、用户输入的复盘类型、手动补充的目标信息全部注入到最终提示词中让它输出一份完整的复盘报告。提示词里我引用了 2.1 节提到的那套“复盘四步法”框架并明确要求生成格式包括目标回顾、结果评估、原因分析、经验总结、行动计划五个部分。第六步配置结束节点。结束节点里引用前面各节点的输出把复盘报告作为最终结果返回。一个可跑通的最小闭环就完成了。全部节点连接好之后我记得第一次点击“运行”按钮测试时看着画布上的节点一个个跑过去最后在输出面板看到完整复盘报告的那一刻成就感还是很强的。3.3 测试与迭代——用真实项目来调系统工作流搭出来之后最忌讳的就是拿“明天要做什么”这种虚拟问题去测试那测不出真实水平。我拿来试水的第一个案例是我们团队上个月底刚结束的一个官网改版项目。当时项目拖了两周、中间改了三次设计稿大家都很疲惫。我直接把项目描述丢给 hindsight开头第一版跑出的复盘报告说实话有点失望。问题是什么报告太“平稳”了。它确实按照四步法输出了结构但原因分析全是“沟通不充分”“需求变更频繁”这种正确的废话。我后来分析问题出在提示词缺少“对具体证据的要求”。AI 在复盘一个它完全不了解的项目时如果提示词不去约束它“必须基于用户描述中的事实来归因”它就会自动滑向最安全的大空话。于是我给复盘生成节点的提示词加了一条硬性要求在分析原因时必须引用用户描述中的具体事件作为依据。 例如用户提到“三次修改设计稿”那么原因分析中应围绕“需求澄清不彻底”展开并引用这一事件。 禁止输出空泛的、没有事实支撑的原因推断。改完之后的输出质量明显上了一个台阶报告里有了“某位同事在某个时间点提出某个需求但因为评审流程缺失导致返工”这种具体到过程的归因。我建议大家在调试时把这个“引用事实”的技巧用起来。另外我还在测试阶段发现了知识库的一个坑。初次建知识库上传文档时我用的是 Dify 默认的分段设置结果检索出来的历史经验总是片段化严重、不成体系。后来调整了分段规则按“标题层级”分段并且提高了分段重叠长度检索质量才好了起来。这一步细节等你们做知识库的时候绝对会遇到提前打个预防针。4. 常见问题与排查技巧实录4.1 复盘报告泛泛而谈、缺乏深度怎么办这个问题几乎每个用 AI 做分析场景的人都会碰到。大模型天生倾向于生成“看起来正确但没有信息量”的内容。我的排查套路分三个优先级先看提示词里有没有明确要求“基于事实归因”我上面说的那条技巧。没有的话加上。再看输入信息量是不是不足。如果用户就写了一句话“我们项目失败了”那模型再强也深度不起来。这时候不要硬调提示词而是应该让前置整理节点输出更有效的追问比如“目标是什么关键时间节点有哪些哪一步执行出了问题”把信息浓度提上来。最后看模型选择。同一个提示词在 DeepSeek 上输出稳定但在某个小模型上输出空洞果断换模型。记住一个简单直觉如果别的模型一跑就通那大概率不是模型问题而是提示词问题。4.2 知识库检索结果不准、答非所问我在做知识检索节点时踩的坑最多这里整理几个关键排查点查询词质量。最开始我用用户原始输入做检索 query效果很差。因为用户原始输入全是口语和情绪不适合向量匹配。后来改成用结构化摘要中的关键信息做 query准确率提升明显。Embedding 模型一致性。创建知识库时用的 Embedding 模型和知识检索节点配置的 Embedding 模型必须一致否则向量空间不同检索结果当然不准。这个坑我调了半小时才意识到。分段大小与重叠。Dify 默认分段可能不适合所有人的文档场景。如果文档本身是结构化的标题、段落分明的建议使用“按标题层级”分段重叠长度设 120-200 字符基本不会丢上下文。Rerank 环节。如果检索出来的候选结果依然不满意我后来给知识检索节点后面又加了一个 Rerank 节点用重排模型对检索结果精排。这一招对长文档库效果很显著推荐大家耐着性子研究一下。4.3 工作流分支永远只走一条路调试条件分支时我发现一个容易忽略的问题Dify 条件分支节点的变量类型必须和上游输出的类型严格一致。我在一开始把is_sufficient定义成字符串类型在条件分支写逻辑时用了布尔判断结果配置不生效分支永远按默认路径走。后来把变量类型修正为布尔值才解决。这个排查看起来低级但 Dify 的变量类型系统确实比较严格。大家在配置时养成习惯给每个变量清晰命名并规范类型在分支节点前先用一个测试运行确认变量输出值是什么再写判断条件。4.4 成本控制方面的实际经验API 调用的费用虽然不是这个项目的大头但长期用下来还是要注意。一次完整复盘流程可能需要 2-3 次 LLM 调用前置整理一次、知识检索一次、复盘生成一次。如果每个团队成员每周都做个人复盘几十次调用累计起来也相当可观。我的经验是前置整理节点用便宜的小模型比如 DeepSeek-chat 或者更小的开源模型只有复盘生成节点用强模型。这种“大小模型混合”的策略最高可以省下一半的成本而输出质量几乎没有损失。Dify 支持在每一个 LLM 节点单独选择模型和参数这个配置很容易就能实现。5. 经验沉淀与后续扩展hindsight 上线到现在差不多跑了两个月团队里已经有五六个人在稳定使用了。我最直观的感受是工具本身不创造洞察但它能把本来就该发生的反思变得不那么痛苦。以前我们项目结束开复盘会总有几个人在摸鱼因为他们觉得写那些文字很假。现在把复盘变成一个填充信息的过程AI 帮忙整理输出大家反而更愿意说出真实情况了。在后续扩展上我已经在尝试两个方向一是给 hindsight 接入飞书机器人用了 Dify 的 API 扩展能力可以在群里直接通过 机器人 触发复盘这样就不用专门打开 Web 页面了入口大大缩短体验是目前最爽的一个改动二是做一个“复盘日历”把每一次复盘结论沉淀到数据库里系统自动在下次同类任务开始时推送一条历史经验给负责人。这块后续我会继续完善Dify 的 API 对外暴露能力比较成熟扩展起来基本没有障碍。最后分享一个我贯穿始终的心得AI 复盘的边界在于它只能整理事实和生成建议不能替你做决定。hindsight 这个名字本身就是在提醒我们——事后之明不能替你做选择但它能让你有更高的概率在下一次做出更好的选择。把它当作一个随身教练而不是万能顾问这才是正确打开方式。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进