ARTICLE DETAIL

资讯详情

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

用Dify搭建AI复盘助手:从聊天记录到可执行行动项

用Dify搭建AI复盘助手:从聊天记录到可执行行动项 hindsight英文原意是“后见之明”说白了就是事后诸葛亮。放到AI应用开发的语境里尤其最近“hindsight dify”这个组合在社区里被反复提起我理解的是一件事把“复盘”这个动作交给大模型去工业化。复盘这件事客服团队做过、销售团队做过、项目经理更做过但大多数时候靠人肉翻聊天记录、靠感觉写结论最后产出一份没人再看的PDF。我花了大概两周时间在Dify社区版上从0到1搭了一个叫hindsight的复盘助手输入一段聊天记录、项目日志或者销售跟进备注输出一份带事实回顾、因果归因、可复用结论和可执行行动项的复盘报告。这篇文章不聊虚的把思路、工作流、提示词和踩过的坑完整摊开。1. 项目概述AI复盘助手到底在解决什么痛点1.1 传统复盘的“三座大山”先说说我为什么觉得传统复盘模式撑不住了。第一座山是记录成本。以客服团队为例一天几百条会话每条几十上百句想复盘就得一条一条翻聊天记录。我拿这个需求去问过几个做客服管理的人反馈基本一致“看十分钟眼睛就花了根本坚持不下来。”更别提还要把时间、人员、客户原话这些信息手动摘出来。人脑在处理这种高密度文本时效率和准确率都低得离谱。第二座山是提炼成本。信息量一上来人就只能盯着最近几条记录、或者最激烈的一次投诉去看容易被单点事件绑架。而且人是有情绪的刚被客户骂完写出来的归因往往带着怨气“客户无理取闹”这种话都不需要思考就出来了。这倒不是人不行是复盘这件事天然反人性人的注意力会被最近的一条对话带走会被最刺耳的抱怨影响判断。第三座山是落地成本。就算开两个小时的会最后整理出一页结论大概率也是“加强沟通”“提升响应速度”“优化流程”这种没法执行的车轱辘话。没有具体动作、没有负责人、没有验证手段下次复盘还是老样子。原因很简单因为没有机制逼着结论落到行动上。这三座山靠意志力翻不过去。而大模型最擅长的恰恰是信息压缩、结构化提取和模式发现所以在这个时间点把复盘做成一个AI辅助工具几乎是顺理成章的选择。1.2 为什么选择Dify作为底座做这个项目之前其实有几条路摆在面前。第一条路自己调大模型API裸写。技术上完全可行但一个人干不完整。流式响应、会话管理、知识库检索、多模型切换、日志标注这一整套做下来一个星期能跑通但一个月不一定维护得好。而且复盘这个场景对流程的确定性要求很高裸写意味着每一步都要自己定义、自己排错成本实在不划算。第二条路直接用现成的对话产品把聊天记录粘贴进去让它总结。这个方式我早期试过最大的问题是每个会话都是孤立的。它不记得上一次复盘得出的结论也没法把历史记录做成可检索的知识资产更没法对内开放成团队工具。偶尔用一次没问题作为日常机制完全撑不起来。第三条路就是Dify这类低代码平台。我选它的理由有三个可视化编排非工程师也能看懂整个复盘流程业务同学可以自己试着改流程自带知识库长历史对话切成片段灌进去做RAG解决了长效记忆的问题模型可插拔今天用这个模型明天换另一个不用重写应用结构。还有一点比较实际Dify社区版可以部署在自己的环境里客服录音、销售记录这类敏感数据不需要出内网。对企业来说这往往是能不能上的硬指标。1.3 这个项目不该做成“万能总结机”很多人一听到“AI复盘”就脱口而出“这不就是AI总结吗”我的回答是不一样。总结的任务是压缩把长篇内容浓缩成短内容它是在做“复述”。而复盘的目的是判断——找出实际发生的事和预期之间的差距解释为什么会有这个差距沉淀下次怎么改。两件事对信息处理的要求完全不同。做这个项目时必须把边界立住hindsight不替代人做决策它只是把决策需要的素材整理好把盲区指出来。它也不是一个能处理任意格式的通用工具最好限定在“文本型历史记录”这个范围比如聊天记录、会议纪要、工单描述、销售跟进备注。音频和视频得先转成文本再进入流程。2. 核心设计拆解把复盘方法论翻译成提示词2.1 四段式复盘结构回顾、归因、结论、行动复盘的成熟方法论并不少美军的AAR事后回顾、研发圈的KPT、PDCA循环都是经过大量实践验证过的。我在这套hindsight项目里做的是取各方法论的公约数收敛成一个四段式结构回顾、归因、结论、行动。为什么强调固定结构因为复盘结果要被二次使用。四段式结构稳定可以存表、可以对比、可以追进度。如果让模型自由发挥写散文今天三段明天五段后面想自动化没法弄。四个阶段的定位、要求和示例如下阶段核心问题内容要求输出示例回顾发生了什么只陈述原始记录中的客观事实、关键时间、关键数字禁止加入对人物动机的评价“客户3次提到等待时间长客服承诺2小时内答复但实际5小时才回复”归因为什么会这样区分内部原因和外部原因每个原因必须对应一条回顾中的事实不得凭空推测“内部原因是排班不足外部原因是物流公司当天系统故障”结论沉淀了什么经验总结1-3条可复用经验每条说明适用场景和不适用场景“承诺时限必须通过系统校验后才能发出适用于所有时效类客服承诺”行动下一步做什么每个行动包含具体动作、负责人、完成时限、验证方式“在客服后台增加承诺时限自动提醒技术组长牵头3天内上线以质检记录验证”这四个阶段不只是一个提示词模板更像是一个信息处理管线。回顾负责“把事实捞干净”归因负责“解释事实”结论负责“把解释变成经验”行动负责“把经验变成指令”。每一层都在榨干上一层的信息价值。2.2 一份能出活的提示词模板直接给一份我实测下来效果不错的提示词你可以在Dify的LLM环节里直接套用你是一名资深复盘教练。请根据用户提供的原始记录执行复盘。 复盘必须严格遵守四段式结构 1. 回顾只陈述原始记录中出现的客观事实、关键事件、关键数字禁止评价人物动机。 2. 归因区分内部原因、外部原因每个原因必须对应一条回顾中的事实不得凭空推测。 3. 结论总结1-3条可复用的经验每条说明“适用于什么场景、不适用于什么场景”。 4. 行动输出一个行动表每个行动必须包含[具体动作]、[负责人]、[完成时限]、[验证方式]缺少任一要素视为不合格并退回重写。 用户提供的原始记录如下 记录 {{原始记录}} /记录 历史结论如果有如下 历史结论 {{历史结论}} /历史结论 输出格式返回JSON。 { review: ..., attribution: ..., conclusion: ..., actions: [{action: ..., owner: ..., deadline: ..., verification: ...}] }这份提示词有几个容易被忽视的设计点逐条说。第一原始记录用尖括号标签包起来。这是为了防止用户粘贴的内容里混入“忽略上述指令”这类提示词注入。凡是要让模型读取外部文本都应该做隔离处理这是基本的输入卫生习惯。第二输出被硬性规定为JSON。为什么不直接用自然语言因为复盘结果要存库、要推送、要对比JSON能让下游零成本解析。如果你打算接企业微信机器人或者做周报自动汇总这个决定能帮你省很多事。第三行动项四要素的“缺少任一要素视为不合格并退回重写”不是装饰。这一条直接治“正确的废话”这个通病。模型很擅长写“加强沟通”但你把“负责人、时限、验证方式”都变成缺一不可的硬约束它就不得不去从文本里扒出具体的人和日期扒不出来就得坦诚地说信息不足。2.3 让系统“记住上一次”历史结论如何形成闭环第一个版本的hindsight有个明显缺陷它是失忆的。用户这周拿一份客服对话来复盘下周又拿一份新的对话来模型完全不记得自己上周说过什么。所以我在设计里加入了一条“历史结论回灌”的链路原理很简单每次复盘完成后把四段式输出以JSON形式存入外部数据库按主题字段做索引下一次用户发起同主题复盘时开始环节先去数据库查询最近一次复盘结论查询结果拼成一段文本注入提示词里的历史结论位置新一次的生成不再从零开始而是基于“上次定了什么、这次进展如何、缺口在哪”做增量复盘。这样hindsight就从单次总结工具变成了持续追踪的复盘系统。外部数据库这一步如果你不想引入额外系统可以先用Dify的会话变量做轻量缓存但要跨会话、跨周生效终究需要一个最小存储表。我自己的做法是写了一个简单的Flask接口接收复盘的JSON存入SQLite取用时按主题查询Dify里用HTTP请求环节调用即可。3. 实操落地在Dify上从零跑通hindsight3.1 创建应用为什么选对话流而不是普通工作流Dify里新建应用时常见的类型有对话型应用、Agent、工作流、Chatflow。对hindsight来说我建议直接用Chatflow也就是对话流。它和普通工作流最大的区别是普通工作流是无状态的批处理跑完就结束对话流可以保存会话状态、支持多轮追问用户说“再补充一条后台日志”也能自然接上。复盘这个场景天然是多轮交互的用户可能先丢来一段聊天记录第二次再说“顺便帮我把上周的结论也看看”所以对话流比裸工作流合适得多。创建好应用之后第一件事是配置模型。我的建议模型选当前接入的长文本能力较强的旗舰模型温度设0.3低温让输出更靠近事实复盘不需要创造性发挥最大Token设2000到3000复盘报告通常不会特别长但要给JSON结构留些余量。有人喜欢把温度调到0.8觉得“更有创造性”。复盘不需要创造性需要的是可预期、贴近事实的输出。温度调高只会增加“编造归因”的概率这是我实测后最明显的体感。3.2 搭一条主流程从记录清洗到结构化输出hindsight的主流程我用文字描述如下开始环节 → LLM环节A信息清洗与事实提取 → 条件分支判断历史结论是否为空 → LLM环节B四段式生成 → 输出环节一步步说配置。开始环节需要定义三个输入变量复盘主题、原始记录、历史结论。其中原始记录和历史结论都可以留空由用户在对话中随时补充。LLM环节A承担的是“清洗和事实提取”的工作。它的提示词大致是“从以下记录中提取所有客观事实、关键事件、关键数字剔除寒暄、广告、重复内容按时间线输出禁止加入任何主观评价。”温度可以设到0.2低一点更稳。这一步很多人会跳过我强烈建议保留。原因是原始记录里的噪音太多了——客服会话有开场白、有多轮“嗯嗯”的应声、有与主题无关的闲聊。如果你只是把原文直接丢给主提示词模型很容易被这些噪音带走把“客户说了一句‘好吧’”当成了重要事件。先清洗再分析结果质量会肉眼可见地提升。条件分支放在LLM环节A和B之间检查变量“历史结论是否为空”。为空就跳过历史注入直接进入主生成不为空就把历史结论拼进提示词。这个判断虽然简单但没有它空字符串就会以“历史结论无”的形式灌进模型让模型去做无中生有的对比分析。LLM环节B用的是2.2那份完整的提示词模板输入包含清洗结果和历史结论两个部分输出自然就是结构化四段式复盘。最后用一个输出环节把结果展示给用户。如果这套工作流是给别人用的最好在输出前对JSON做一次格式校验Dify里的代码环节可以处理这件事读取返回结果反序列化失败时给用户一段友好提示。3.3 知识库准备长历史对话怎么切分、怎么配参数hindsight迟早会遇到一笔长文本不是一次对话而是整整一周的客服会话几百个来回。把这几万字塞进上下文窗口一定爆。这时候就得靠知识库的切分和检索策略。我的做法分三步第一步把原始数据按“会话ID”分组。每个会话是一个完整的话轮序列不要混着切。第二步在每个会话内部按“每10轮对话”切成一个片段。为什么是10轮因为太少会让检索出来的片段缺乏上下文太多则单段过长。一段10轮的对话通常在1500字左右既保住了上下文连续又不至于浪费token。第三步在知识库的分段描述里写清楚元数据例如“2025年6月第2周-客户退款投诉-客服工号A”。这段描述在检索时会参与匹配是大有用处的。上传到Dify知识库之后检索模式建议选“混合检索”也就是向量检索加全文检索的双路召回。TopK设4Score阈值0.3到0.5之间。这里做一个实际的计算演示。假设一周客服会话共200轮平均每轮150字总字数约3万。按10轮切一段得到20段每段约1500字。TopK4时召回约6000字的片段主提示词和清洗结果约2000字加在一起8000字左右。如果你的模型窗口只有4K这个配置跑不动。这时候有三个选择把TopK降到2并把每段切短到5轮、换一个8K以上窗口的模型、或者对每个会话先做一次单会话摘要再灌给主流程。我在项目中采用的是“先摘要后聚合”的思路每个会话先用小模型压成300字摘要再把多段摘要汇总成完整复盘效果最稳代价只是多一两次模型调用。3.4 API封装与自动化调度把hindsight接进业务系统Dify应用发布之后在API访问页面能看到专属的API地址和密钥。这意味着hindsight不只能停留在Dify的聊天页里还可以被自己的业务系统调用。下面是一个最小可用的Python调用示例import requests url https://your-dify-instance.example.com/v1/chat-messages headers { Authorization: Bearer app-xxxxx, Content-Type: application/json } payload { inputs: {}, query: 复盘客服会话客户王先生投诉物流延迟客服承诺24小时回复但实际48小时才回复, user: ops-bot, conversation_id: } resp requests.post(url, jsonpayload, headersheaders, timeout60) print(resp.json())这个脚本可以放在服务器上用cron定时跑实现每周固定时间的批量复盘。一个典型的调度配置是0 21 * * 0 cd /opt/hindsight python3 trigger.py每星期天晚上9点脚本读取过去一周的客服记录循环调用hindsight把每份复盘结果汇总成一个Markdown周报推送企业微信群、钉钉群或者飞书群。到这一步hindsight才算真正融入团队的日常工作流而不是一个需要人记得打开的人工智能玩具。4. 常见问题与排错实录复盘效果差在哪、怎么修4.1 复盘结果全是“正确的废话”这是hindsight项目里出现频率最高的问题。模型输出“要加强沟通”“提升服务质量”“优化流程”每一句话都正确但没有一句有用。根因有两层一层是提示词没有硬约束模型默认用最安全、最通用的话术填内容另一层是温度设置偏高模型在“发挥”而不是“从文本里找事实”。解法我在前面提过但这里再展开一点。首先在提示词的行动部分明确写死“每个行动必须包含具体动作、负责人、完成时限、验证方式缺少任一要素视为不合格并退回重写。”其次在Dify工作流里再加一个代码环节做规则校验检查行动项文本里是否包含数字、是否包含“上线”“提交”“覆盖”这类动作性动词、是否包含“周”“天”“月”等时间词。三个条件全不满足就让模型重新生成连续两次不合格就把原始记录退回用户提示“材料颗粒度太粗建议补充更多事实细节”。实测下来的效果这个“硬约束规则校验”的组合把行动项合格率从三成提到了七成以上属于投入产出比非常高的一项改动。4.2 长文本塞爆上下文窗口有用户把一周的客服记录直接粘进来结果模型要么开始胡言乱语要么直接报错。排错顺序要讲究。第一步看API返回的报错如果明确显示超过上下文长度那就是长度问题第二步看输出如果模型只分析了开头的一部分很可能是前半段文本被截断或模型注意力被长文本稀释。解法分三个层级切段召回、分段摘要、更换长窗口模型。一次性的材料优先用“清洗摘要”两个LLM环节处理长期知识沉淀用知识库如果预算充足且场景确实需要全局理解再考虑换长上下文模型。很多人一上来就换大模型成本翻倍但问题未必解决。其实大多数场景下“分段摘要”就够了先让模型把每一段读一遍再汇总模型拿到的不是整篇原文而是提炼过的中间表示处理起来又稳又省。4.3 模型把“事实”和“推断”混在一起这个问题的典型表现是回顾阶段本该只写原文里出现的事实模型却写了一句“客户对我们的服务态度不满意”。原文里根本没有“态度”这个词更没有“不满意”这个结论但模型根据“客户说了一句‘唉算了’”推断出了这个意思。直接加提示词约束有一定效果但治本的做法是把事实提取单独拆成一个环节。在那个环节里要求“回顾部分每一句都必须有原文摘录允许原样引用客户原话如果是模型补全的信息标注[推测]如果找不到原文支撑就写‘信息不足’不要硬编”。这一招的本质是让回顾和归因分层把客观记录和主观解释分开读者一眼就能看出哪些是原始事实、哪些是模型推测复盘的可靠性会提升一大截。补充一个省钱经验事实提取这个环节的任务相对简单可以给它配一个更便宜的小模型很多轻量模型都能把这个活干得不错把旗舰模型的计算留给归因和行动项生成整体token成本能省不少。4.4 知识库召回不相关知识库建好后检索出来的片段经常和复盘主题毫无关系甚至召回了一堆表情包和闲聊段落。这个问题的源头基本都在数据预处理。聊天记录如果整个文件传上去没有按会话切分、没有标注主题、没有写元数据描述检索效果一定差。解法是把分段重新做一遍按会话分组每段描述里写清“时间范围-涉及的会话主题-主要角色”上传到知识库后开启混合检索TopK设4到6并在开始环节按会话主题做过滤。有一条经验值得记住知识库的源头数据质量是第一位的之后检索参数怎么调都是修补。最开始上传时就该把会话ID、时间、主题、参与人这些字段整理出来。如果上传时文档就是一团浆糊后续怎么调都救不回来。4.5 怎么快速判断一次复盘质量过不过关复盘没有绝对客观的标准我在项目里总结了一套4条快速自检表每条打1分3分以下就让模型重跑检查项通过标准检查方式事实覆盖关键事件、关键数字、客户原话出现在回顾部分人工扫一眼归因质量内部原因和外部原因至少各1条且每条能找到对应事实人工抽查行动可执行每条行动包含动作、负责人、时限、验证方式代码规则校验情绪浓度全文几乎没有情绪化词汇和攻击性表述规则过滤这套自检逻辑同样可以做成Dify里的条件分支但作为人工校验标准更有价值。先把规则立住再谈自动化。否则你连什么是“好复盘”都不定义清楚自动化出来的只是在快速产出垃圾。5. 从“后见之明”到“先见之明”hindsight的扩展方向5.1 三个典型业务场景客服质检、销售单复盘、项目周复盘hindsight这套工作流换一层提示词和知识库就能覆盖不同业务场景。场景输入提示词差异关键输出客服质检客服与客户的对话记录关注响应时效、情绪安抚、承诺一致性问题分级、话术建议销售复盘CRM跟进备注、通话记录关注推进节点、异议处理、丢单原因丢单归因、下一步策略项目周复盘里程碑日志、周会纪要关注延期风险、资源冲突、范围变化风险清单、行动表实现上不用建三个应用。在开始环节加一个“复盘类型”下拉枚举让用户先选择场景再粘贴记录。提示词里通过变量拼入对应的场景约束工作流主体保持不变。这个下拉枚举看起来是个小改动但它决定了后续所有分支逻辑的走向值得在一开始就设计好。5.2 从复盘到预警把历史教训变成实时规则这个方向是我最推荐的进阶玩法。hindsight每次复盘都会产出行动项行动项里带有“验证方式”。这些验证方式本质上是一批约束规则比如“客户承诺时限超过24小时的必须当日回访”“出现‘稍后回复’字眼必须附上具体时间”。把这些规则从行动项里抽出来配置到Dify应用的条件分支和代码环节里后续每一条新对话进来都可以实时检查。一旦命中就触发提醒或拦截。hindsight就从一个“事后总结”工具变成了“事前预警”机制。客服质检、销售合规这类场景对这个功能的需求非常强烈也是这套项目后续增值最大的方向。5.3 定时自动化让复盘按时发生复盘最怕的是“想做才做”一忙起来就被搁置。定时自动化解决的正是这个问题。技术上不复杂服务器上放一个Python脚本作用就是调用Dify API把指定时间窗口内的记录批量跑一遍汇总结果推送到工作群。用cron设置每周日晚上执行前端同学把它挂在已有的内部工具里也行。这里有两点要特别提醒。第一脚本要有失败重试机制Dify API偶尔超时重试三次能明显降低漏报率。第二一定要做幂等处理用记录ID或日期做去重防止定时任务重复执行时推送两份一模一样的复盘。我自己就栽过一次跟头有一周cron不知道什么原因重复跑了一次群里出现两份相同的周报虽然不算严重但挺尴尬。后来给脚本加了一个基于记录ID的Redis去重再没出现过。这个项目做完之后我最大的体会是hindsight这个名字起得很妙。AI并不会平白无故制造后见之明它只是把那些本来散落、被遗忘的信息重新捞出来变成一份可执行、可追踪、可沉淀的资产。模型能力其实不是瓶颈真正决定复盘质量的是你的原始数据有没有被组织好、提示词里的约束有没有写到位、行动项有没有人负责。就我个人来说最大的坑是迷信大模型能力以为丢一段聊天记录进去就能自动产出高质量复盘后来发现必须加上事实提取和规则校验这些“笨功夫”结果才真正可用。最后分享一个小技巧如果用Dify搭这个项目记得在开始环节把“复盘类型”做成下拉枚举让用户先选场景再粘贴记录——客服复盘的提示词和销售复盘的提示词差别很大这一步能省掉后续大量分支逻辑。
返回列表