快速结论:该问题出现在 Dify 1.18.0 自托管环境中,于 Studio 基础编排 Chatbot 的 Instructions 使用 Prompt Generator 生成提示词并点击 Apply 后,生成变量未写入 Variables,发布后 user_input_form 为空;优先排查前端 Apply 流程中变量状态是否被覆盖。
适用环境:Dify 1.18.0;Self Hosted(Docker);控制台语言为日语;Issue 未提供操作系统、Python、CUDA、显卡等环境信息。
最快修复方案:暂无确认的一步修复方案。Issue 讨论中给出一个仅在 UI 操作的临时手段(尚未经运行时验证):点击 Apply 后,先在生成的提示词内部点击,再点击其外部,若出现添加变量确认提示则接受,以触发 onBlur 中的 getVars() 变量扫描。
注意事项:该临时手段只是讨论中的推测性 workaround,作者明确表示未在运行时测试;使用前需检查 Variables 区及发布后 user_input_form 是否已生成变量。根本原因(Apply 后 onChange 用旧 modelConfig 覆盖新变量)同样属于推测,Issue 中未给出运行时确认。
问题场景
在 Dify 1.18.0(Self Hosted,Docker)中,于 Studio 以 Create from Blank → Chatbot(基础编排、简单提示词模式)新建应用,在 Instructions 区域点击 Generate,选择 Python debugger 模板后生成,再点击 Apply 并在 “Override existing configuration?” 对话框中确认。接口 POST /console/api/rule-generate 的响应已包含非空 variables 数组,但界面 Variables 区仍为空,提示词中 {{user_instruction}} 等以纯文本显示而非变量块;调试面板出现 “Formatting changed” 提示;发布后 model_config.pre_prompt 含占位符,而 model_config.user_input_form 为 [],应用没有对应输入字段。相同步骤在 1.17.1 上正常。
报错原文
Prompt Generator: Apply no longer adds the generated variables (1.18.0 regression)
Expected: variables returned by the generator are listed in the Variables section.
Actual: The Variables section stays empty. model_config.user_input_form is [].
原因分析
根据 Issue 提交者的分析,可能原因是前端状态更新顺序问题:handleAutomaticRes 先通过 PROMPT_EDITOR_UPDATE_VALUE_BY_EVENT_EMITTER 把新提示词推入编辑器,UpdateBlock 调用 editor.setEditorState() 和 editor.update(),触发编辑器 onChange;随后 handleAutomaticRes 才用 res.variables 设置 prompt_variables。onChange 调用的 handlePromptChange 会基于当前渲染的 modelConfig 重建配置,保留旧的 prompt_variables(新应用下为空)且不追加新变量。提交者推测某次 onChange 在 setModelConfig 之后执行但仍持有 Apply 前的 modelConfig,从而用 [] 覆盖生成变量;“Formatting changed” 提示也与此一致。该推测提交者未在运行时确认。讨论中另指出编辑器 onChange 传入空变量列表,而 onBlur 会通过 getVars() 扫描提示词并在缺变量时弹出确认,这构成一个独立的变量发现路径。
环境排查
- 确认 Dify 版本:问题在 1.18.0 复现,1.17.1 正常。
- 确认部署方式为 Self Hosted(Docker)。
- 确认控制台语言是否影响前端交互(复现环境为日语)。
- 在浏览器开发者工具中查看 POST /console/api/rule-generate 响应,确认 variables 数组非空。
- 发布后检查 GET /console/api/apps/<app_id> 中 model_config.pre_prompt 与 model_config.user_input_form 的实际内容。
- Issue 未提供 Python、CUDA、PyTorch、显卡等环境信息,无需据此排查。
解决步骤
- 可优先尝试(UI 临时手段,尚未经运行时验证):在 Instructions 中完成 Generate 并点击 Apply、确认覆盖后,先在生成的提示词内部点击一次,再点击编辑区外部。
- 若出现添加变量的确认提示,接受该确认,使 onBlur 中 getVars() 扫描到的 {{variable_name}} 变量写入配置。
- 检查 Variables 区是否已列出 user_instruction、programming_language、existing_code 等变量,缺失则手动补齐后再发布。
- 如临时手段无效,回退到 1.17.1 使用同一流程作为规避方案(Issue 记录该版本正常)。
- 如需定位根本原因,可在运行时确认 handlePromptChange 是否在生成配置写入之后执行、且仍持有 Apply 前的 modelConfig。
验证方法
在点击 Apply 并执行上述操作后,确认 Variables 区不再为空、提示词中的占位符以变量块显示;随后发布应用,调用 GET /console/api/apps/<app_id>,检查 model_config.user_input_form 是否包含对应变量、model_config.pre_prompt 中的变量是否可映射为输入字段;在应用对话界面确认出现相应输入框。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


![[Bug] dify-agent: plugin tool observations repeat JSON output that already arrived as text](https://www.chat-gpts.plus/wp-content/uploads/2026/11/45296-2b8ad6b6-768x403.jpg)