Skip to content

输入区组合态与发送锁 ​

状态:已实现 类型:局部产品交互差异 主要 Owner:web/src/utils/sendLock.js

需求与失败场景 ​

输入法组合过程中按回车会误触发送;用户在整理长输入或附件时需要显式锁定发送,避免键盘操作意外提交。发送锁的展示位置需要与当前输入状态保持一致。

必须保留的业务语义 ​

  • 输入法组合态回车不触发发送。
  • 手动发送锁开启时,键盘和按钮提交都不能绕过锁定条件。
  • 解锁后恢复原有发送能力,不改变后端请求协议。
  • 交互状态在当前输入组件内拥有,不成为持久业务状态。

与 Yuxi 的边界 ​

Yuxi 继续拥有消息发送、排队与 Run 创建。元垒只改变前端触发条件和控件布局,不改变 API、消息内容或后端授权。

稳定集成点 ​

集成角色当前 OwnerYuanlei 语义
锁定状态转换web/src/utils/sendLock.js统一判断能否提交
键盘与组合态AgentInputArea.vue、MessageInputComponent.vuecomposition event 优先于 Enter 发送
页面装配Agent chat 输入区域展示锁定状态并接续发送入口

上游依赖 ​

该交互依赖输入组件的 composition event、发送按钮和统一 submit 入口。上游重写输入组件时应通过真实事件测试重建行为,不保留旧组件结构。

合并判断 ​

  • 上游提供等价组合态保护:采用上游逻辑并删除重复判断。
  • 上游增加自己的发送锁:比较按钮、快捷键和程序化提交是否共享同一判定后合并状态。
  • 上游只调整布局:迁移控件位置,保留行为测试。

替换或删除条件 ​

上游完整覆盖组合态保护和发送锁后可以删除元垒实现。产品取消手动锁定需求时可以删除发送锁,但组合态保护作为独立输入正确性要求继续评价。

决策与证据 ​

  • 输入法组合期发送锁
  • web/src/utils/sendLock.js 与两个输入组件的接入是当前可定位证据;独立输入法事件序列测试仍缺失,保持 Decision 中的 Not run。

本项目基于 MIT License 开源,欢迎使用和贡献。