快速结论:使用 n8n 内嵌 Chat 的 “Using Response Nodes” 模式时,点击消息上的 “repeat message” 会启动一次新执行,但前端没有像正常发送那样建立该执行对应的 WebSocket 连接,导致机器人回复无法送达界面,表现为聊天界面卡住(Chat “send message” freeze on “repeat message”)。优先排查 Repeat 路径是否丢弃了 sendMessage() 返回的 executionId / resumeToken。
适用环境:n8n 2.45.7(自托管,Docker),Node.js v26.12.1,Ubuntu 22.04 Server,SQLite 默认数据库,执行模式 main(regular),单实例。Issue 正文中 n8n 版本号前后不一致(Debug Info 为 2.45.7,正文填写的 n8n Version 为 25.4.7),以 Debug Info 的 2.45.7 为准。
最快修复方案:暂无确认的一步修复方案。可优先尝试:在 Repeat 路径中复用正常 Send 的后续处理,即等待 chatStore.sendMessage() 返回结果,若返回 executionId,则调用 setupWebsocketConnection(executionId, resumeToken) 或触发 Input 监听的 setupWebsocket 事件,保证重复消息的新执行被正确连接。
注意事项:上述改动来自 Issue 中的源码对比与函数级重放验证,并非已合并的上游修复,也没有经过挂载 UI 或真实 n8n 实例复现。Issue 讨论未确认无限循环(infinite loop)的具体表现,修改前需区分“等待回复”与“主动新发送”两条分支,避免破坏正常 Send 的现有连接逻辑。
问题场景
在 n8n 中创建带 Chat Trigger(“using response nodes”)的工作流,在 Chat 节点上配置 “send message” 且不等待消息,返回固定内容(如 “Hello, World!”)。通过内嵌 Chat UI 发送消息后,机器人正常回复;随后点击该消息上的 “repeat message”,触发 Chat “send message” freeze on “repeat message”,界面无法继续正常对话。
报错原文
Chat "send message" freeze on "repeat message"
The chat node will freeze in an infinite loop if you use the "repeat message" feature in the n8n chatbot UI
原因分析
可能原因(基于 Issue 中对 n8n@2.45.7 提交 01cb29d88764465197742803801c62eff1f71516 的源码对比):
- 正常发送(Input.vue,约 289–312 行)会 await chatStore.sendMessage(),当返回 executionId 时调用 setupWebsocketConnection(executionId, resumeToken) 建立该执行的聊天连接。
- 重复消息(MessageActions.vue,约 16–28 行)调用了同一个 store 方法,但丢弃了返回值,既没有建立新 WebSocket,也没有发出 Input 监听已有的 setupWebsocket 事件。
- 在 executionStarted 状态下(chat.ts,约 270–280 行),store 会在添加机器人消息之前先返回执行响应,于是 Repeat 可能启动了一次执行,但客户端没有连上该执行的聊天 socket,导致回复无法回传,界面表现为卡住。
以上属于源码层面的诊断观察和函数级重放,并未在真实 n8n 实例中复现,也尚未确立无限循环的成因,因此作为可能原因看待。
环境排查
- 确认 n8n 版本是否为 2.45.7(Issue 中该版本存在上述客户端代码差异)。
- 确认 Chat Trigger 是否使用 “using response nodes” 模式,且 Chat 节点配置为 “send message” 且不等待消息。
- 确认 Node.js 版本与部署环境(Issue 中为 Node.js v26.12.1、Docker 自托管、Ubuntu 22.04 Server、SQLite、main 执行模式、单实例)。
- 确认浏览器为 Chrome(Issue 中 userAgent 为 Chrome/156)。
- 观察点击 Repeat 后是否产生新的执行记录,但聊天界面没有收到对应回复。
解决步骤
- 复现问题:按 Issue 步骤建立工作流,Chat 节点 “send message” 返回固定文本,发送一条消息后点击 “repeat message”,确认是否出现“执行已启动但界面无回复”的现象。
- 对照源码确认差异:检查 normal Send 的处理路径是否在拿到 executionId 后调用 setupWebsocketConnection(executionId, resumeToken)。
- 检查 Repeat 处理路径:确认其是否丢弃了 chatStore.sendMessage() 的返回值,且未建立 WebSocket、未发出 setupWebsocket 事件。
- 可优先尝试修改:在 Repeat 中保留 sendMessage() 的返回值,若包含 executionId,则调用现有 setupWebsocketConnection 或触发 setupWebsocket 事件,并保留 resumeToken。
- 修改时区分分支:等待聊天回复的场景应沿用现有 socket 响应;Repeat 属于主动发起新发送,需确保新执行的 socket 正确连接。
- 补充回归测试:覆盖 “Using Response Nodes” 下的第二条消息,验证 Send 与 Repeat 都能连接到返回的 execution ID 并保留 resume token。
验证方法
按 Issue 步骤重新点击 “repeat message”,确认 Chat 节点再次发送 “Hello, World!” 且界面正常显示回复、不再卡住;同时检查网络请求中 Repeat 产生的执行是否建立了对应的 WebSocket 连接,并确认执行记录中没有持续堆积的异常执行。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![issue: [regression] [dev] a deleted channel, note or automation stays open in its tab](https://www.chat-gpts.plus/wp-content/uploads/2026/11/34290-1fa91c46-768x403.jpg)
