Skip to content

[Bug][P1] 司南交互表单重复生成,未等待用户提交即推进多智能体工作流 #183

Closed

Description

@lyyzka

问题概述

在司南的学习规划对话中,模型生成了需要用户选择并点击「提交」的信息收集表单,但没有正确等待用户提交:相同表单在聊天记录中连续出现约 6 次,随后司南在没有收到用户提交的情况下直接推进学习规划,并向明理、砺思智能体分配任务。

这是 Human-in-the-loop(用户参与)交互节点未正确阻塞下游执行 的问题,同时伴随疑似重复生成/渲染问题。具体根因尚需结合日志定位。

复现步骤

  1. 打开司南对话页面,发起学习请求:

    第三讲子网划分,我在原理和实际解题方面还有问题,请你帮助我进行学习

  2. 司南生成标题为「第三讲子网划分 — 先确认两件事」的交互表单,要求选择课程资料情况、学习薄弱环节,并提供「提交」按钮。
  3. 不选择、不点击提交,继续观察对话和工作流状态。
  4. 观察到同一表单约重复 6 次,之后司南直接生成「原理 → 解题 → 检验」的学习路线,并给 @明理 / @砺思 下达教学任务。

实际行为

  • 同一信息收集表单在聊天内容中连续出现约 6 次。
  • 用户尚未完成表单选择,也未触发「提交」。
  • 司南没有停留在等待用户的状态,而是自行继续规划并执行多智能体任务分配。
  • 用户反馈未能成为后续规划的真实输入。

预期行为

  1. 同一个交互节点只展示一个有效的表单(历史展示与执行重试需保持幂等)。
  2. 交互表单发出后,工作流进入可持久化的 waiting_for_user 状态,暂停所有依赖此表单结果的后续规划和下游调度。
  3. 只有收到与该交互节点匹配、完成校验并持久化的用户提交事件,才恢复执行一次。
  4. 未提交、断线重连、页面刷新、模型/工具重试、事件重复投递,都不能自动填充或跳过必需的用户输入。
  5. 司南恢复后依据用户实际提交内容制定教学计划,而不是擅自假定其选择。

建议排查

  • 运行时暂停/恢复边界:表单是否只是对话中渲染的 UI,还是确实注册了需要外部提交才能解锁的 interrupt / approval / human-input barrier?生成表单后本轮 Run 是否仍在继续产出内容?
  • 交互节点身份及幂等:表单生成、工具调用、消息持久化和事件投递是否绑定稳定的 interaction_id / run_id?重试是否产生多个逻辑相同的表单?
  • 重复显示来源:分别检查模型多次产出、工具重试、消息重复写入、事件重复投递、前端 reconciliation/渲染是否重复。不要仅通过 UI 去重掩盖后端重复执行。
  • 提交协议:前端 submit 事件是否携带交互节点 ID、校验数据及幂等键,后端是否明确完成「验证 → 持久化 → 解除等待 → 恢复执行」事务链路?
  • 多智能体调度前置条件:学习计划和教学智能体委派是否显式依赖用户输入节点的完成状态;是否有绕过等待的路径?
  • 可观测性:在日志中关联 run、message、interaction、tool_call、submit 和 resume 事件,确认 6 次表单出现的实际层级,以及第一次下游派发的时间点。

验收标准

  • 同一轮信息收集仅生成/呈现一个可操作的有效交互节点。
  • 不提交表单时,司南不会自动推进依赖该输入的规划或下游智能体任务。
  • 正常提交后,数据正确传入司南,且对应 Run 只恢复一次。
  • 刷新、断线重连、模型/工具重试、重复提交或重复事件不会重复生成有效交互节点或重复触发后续任务。
  • 异常情形可以重试或明确报错,不会静默跳过用户确认。

测试证据

2026-10-17 的网页测试中,截图可见:(1)聊天中重复出现「第三讲子网划分 — 先确认两件事」交互卡片;(2)用户未提交但司南已输出学习路线和 @明理 / @砺思 的任务分配。

截图目前保留在原测试对话中;此 Issue 先以复现步骤与现象描述提交,后续可补充图片和相应 Run/事件日志。

建议优先级:P1(阻断核心学习交互的用户决策边界;若属于生产环境可能波及其他需要用户确认的流程)。

Activity

  1. lyyzka commented on Oct 19, 2026

    @lyyzka
    ContributorAuthor

    本轮集成协调:当前 main 最大迁移为0043,#183 的表单持久化迁移预留0044,#187案例库使用0045。请保持事务及前向兼容,由唯一合并/发布会话核验空库、现有数据升级与第二次执行无变更;本项可能依赖的LingxiOS公开契约补丁按上游PR→精确包→产品接线顺序集成。

  2. lyyzka commented on Oct 19, 2026

    @lyyzka
    ContributorAuthor

    本轮已通过 发布 PR194 正常上线;发布工作流 成功,Komodo 已返回 Complete / success=true。生产实际镜像、Web/API 与 Worker readiness、版本及迁移均已核验,源码为 b76c4cc0,正式 LingxiOS 3.5.3。

    关闭依据:PR190 与 LingxiOS PR29 落实持久化用户输入屏障、稳定交互身份、有效提交后一次恢复,以及耗尽/过期恢复租约后的显式重试。正式包专项通过 66 项相关集成(含迁移)、107 项服务端、92 项前端和 8 项浏览器检查,全部零跳过;覆盖未提交不推进、重复/失效提交、刷新重连、恢复失败及只读已提交卡片。

    问卷验收及重试截图保留源提交、正式包完整性和首轮执行 0 测试的命令错误。生产功能验证未使用故障注入;上线后的长期耐久仍由历史 issue 单独跟进。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions