要在Dify工作流中让AI记住“北京”并用于后续操作,需关闭默认滑动窗口截断,启用上下文管理、强制保留system指令与变量赋值消息,用变量提取节点或结构化提示词锁定city变量,配置摘要压缩规则并加权保留关键消息,最后在HTTP节点中通过{{city}}绑定调用。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify工作流中让AI记住用户刚说的“北京”并用于后续查天气、订酒店等操作,必须绕过默认滑动窗口的随机截断,精准控制哪些信息该留、何时该压、怎么防丢。
设置上下文保留策略
进入工作流编辑页 → 点击右上角「设置」图标 → 打开「上下文管理」开关。
默认滑动窗口只保留最近5轮,但用户第一句“我想订酒店”和第三句“预算800以内”之间可能夹着两轮闲聊,这会导致关键槽位被挤掉。必须手动干预。
将「最大上下文长度」设为4096 token,并勾选【强制保留 system 指令与变量赋值消息】——否则Dify在截断时会把“请提取城市=上海”这类关键指令当成普通assistant回复一并清掉。
用对话变量锁定关键信息
方法一:在LLM节点前插入「变量提取」节点
拖入一个「变量提取」节点 → 输入字段填“user_message” → 输出变量名设为“city” → 正则表达式写`[北京|上海|广州|深圳]`。
方法二:在LLM提示词里加结构化指令
在LLM节点的系统提示中加入:“你必须将用户提到的城市名,以JSON格式输出到变量city中,格式为{"city": "xxx"}。此变量将用于后续所有步骤,不可丢失。”
注意:变量名必须全小写且不含空格或符号,否则后续节点无法识别。
配置上下文压缩规则
第一步:打开工作流「高级设置」→ 展开「上下文压缩」模块
第二步:启用「摘要模式」→ 设置「摘要触发轮次」为第4轮起 → 填写摘要提示词:“用一句话概括前3轮对话核心意图与已确认参数,忽略问候与重复确认。”
第三步:为system类消息单独设置保留权重为1.0,user类消息设为0.7,assistant类消息设为0.3——这样即使总token超限,角色设定和用户原始需求也不会被删。
第四步:点击「测试压缩效果」,输入6轮模拟对话,观察最终传给模型的消息序列是否仍含“城市=杭州”“入住日期=10月25日”等关键字段。
绑定变量到后续节点
在需要调用城市信息的HTTP请求节点中,URL路径写成https://api.example.com/hotels?city={{city}}&date={{check_in_date}}。
确保该节点的「变量注入」开关已开启,否则双花括号会被当纯文本发送。
若变量为空,节点将直接跳过执行——这不是报错,而是Dify的静默容错机制,需在前置节点加校验分支。


















