# Dify 对话变量教程

原创虚构输入与人工预期输出。未运行产品实例、未调用模型、未外发或发布。config.json 为字段教材，不是可导入 n8n/Dify/Flowise/Langflow 工作流。

## 1. 先确定三项必收需求
本例只收集产品、输出语言和交付形式。缺少项目暂时为空，不让模型补公司、预算或截止日；下一轮询问尚未确认的第一项。

## 2. 在 Chatflow 创建会话变量
创建 product、language、deliverable 三个 String 和 completed 数组。官方说明会话变量在同一聊天会话多轮保留，普通工作流变量不具备这段生命周期。

## 3. 让当前输入只更新明确字段
提取当前轮明确提供的字段并校验。第 1 轮产品为台灯，只更新 product；后两轮补充语言和交付形式，不把每轮空字段覆盖已经收集的值。

## 4. 用 Variable Assigner 保存值
对应 String 采用 Overwrite；确认首次完成后将字段名加入 completed。先检查是否已存在再 Append，避免用户重复回答导致进度数组重复。

## 5. 在回答中展示完整需求快照
第三轮返回三项汇总，请用户确认。展示来源轮次，修改 language 时只覆盖该项；确认完整需求不等于已生成或发布文案。

## 6. 清空重开并检查会话隔离
增加用户明确“重新开始”的分支，用 Clear 清空变量。测试新会话为空、原会话仍为自己的值；会话变量不替代外部数据库或用户身份隔离。

## 离线验收
运行 python3 check-fixture.py，仅检查固定输入与人工预期关系，不验证真实模型、产品节点或工作流执行。

## 官方来源
- [Dify 官方：Variable Assigner 与会话变量](https://docs.dify.ai/en/cloud/use-dify/nodes/variable-assigner)