![[Bug]: Unconsidered await response in an Agent](https://www.chat-gpts.plus/wp-content/uploads/2026/07/16758-516736fa.jpg)
[Bug]: Unconsidered await response in an Agent
快速结论:该 Bug 发生在 RAGFlow Agent 的 LLM 消息构建阶段。即使模板变量正确解析,用户提示的变量内容也可能在发送给 LLM 之前被清空,或者因为模型配置中 max_tokens=0 而被丢弃。优先检查 RAGFlow 版本是否包含 PR #16413(2026年7月1日后合并的版本),以及模型配置中的 max_tokens 是否不为 0。
问题场景
在 RAGFlow 的 Agent 编辑器中,工作流编排为:Begin(任务)→ Await response(等待用户输入)→ Agent(LLM节点)→ Message(消息输出)。用户希望将 “Await response” 中用户输入的内容通过变量传递给 “Message” 输出,但实际消息输出为空或回显了 Begin 节点的初始内容,而非用户在 “Await response” 中输入的内容。
报错原文
Agent's log correctly shows the variable content but the answer doesn't reflect it
_sys_prompt_and_msg method skips appending the current user prompt
message_fit_in() treats [max_tokens=0] as a literal zero context window and wipes both system and user content
原因分析
这不是一个简单的变量解析失败问题。主要可能原因有两个:
- LLM 提示组装逻辑缺陷: 在 Agent 节点的
_sys_prompt_and_msg方法中,当画布历史消息的最后一条已经是user角色时,该方法会跳过追加当前的用户提示,导致最终发送给 LLM 的用户内容为空。这就解释了为什么 Agent 日志中变量解析正确,但实际回答却丢失了用户输入。 - 模型配置
max_tokens=0: 如果你的租户模型配置中max_tokens被设置为 0,message_fit_in()方法会将其视为零上下文窗口,从而清空系统提示和用户提示内容。
环境排查
- 确认 RAGFlow 版本号:你当前使用的是基于 commit
a3e3bdd的版本。 - 检查对应的 PR #16413 是否已被合并到当前版本(2026年7月1日后合并)。
- 检查 Workflow 的画布历史中,是否存在多余的 user 角色消息导致跳过追加。
- 检查租户(tenant)模型配置中的
max_tokens参数是否不为 0。
解决步骤
- 首要步骤:更新版本 —— 将 RAGFlow 更新到包含 PR #16413 的版本,该修复于 2026年7月1日合并。这是最直接的解决方案。
- 临时工作区(变通方案): 在 Agent 节点里,将 “Await response” 的变量放在系统提示(
system_prompt)框中,而不是用户提示(user_prompt)框中。此路径的代码逻辑不受此 Bug 影响。 - 检查模型配置: 在模型配置页面对话模型条目,确保
max_tokens参数设置为正数(如 2048 或 4096),而不是 0。 - 检查工作流历史: 如果问题持续,检查 “Begin” 节点的模式设置。如果开启了 “Conversational” 模式,可能会导致画布历史中预填 content,干扰后续提示拼接逻辑,可尝试关闭该模式。
验证方法
按原复现步骤重新测试:从 “Begin (Task)” 开始 → 使用 “Await response” → 将变量放入 Agent 的系统提示(临时方案)或升级后放入用户提示 → 运行。确认 “Message” 块输出的是用户在 “Await response” 中输入的内容,而非 Begin 的初始内容或空值。



