* feat(ui-chat,ui-conversation): 通过通用文本交互支持原文引用 * refactor(message-quotes): 插件化引用交互与文本扫描豁免 * test(message-quotes): 补齐插件装配预期与交互分发覆盖 * refactor(ui-conversation): 移除引用删除文案的语言切换刷新 * refactor(message-quotes): 移除引用扫描豁免并收窄文本交互接口 * fix(ui-chat): 修复引用浮层的滚动遮挡与恢复 * fix(ui-chat): 对齐 master 的聊天流注入与界面快照 * test(message-quotes): 补齐 Host 入口覆盖并固定子会话回放时序 * refactor(message-quotes): 清理文本依赖特例并修正引用按钮 * fix(ui-primitives): 让引用原文弹层按内容收缩 * fix(ui-primitives): 修复相邻引用悬停弹层重叠与误切换 * fix(message-quotes): 为引用悬停样式限定设备能力 --------- Co-authored-by: lsdsjy <[email protected]>
1.9 KiB
1.9 KiB
Agent Note: 从 Markdown 文本识别消息 quote
Status: implemented
English | 中文
问题
纯 quote content 索引重复了 Markdown 文本中的信息,并要求 prompt、source、回显与队列协同携带元数据。同样可见的 blockquote 会因创建方式不同而获得不同的展示与直接输入行为。
决策
消息包含普通 Markdown 文本。共享 blockquote 匹配器识别连续的显式标记行,用于 UserText 展示。手写与输入框创建的 blockquote 在发送后具有相同行为。Quote 预览直接展示还原后的文本,不对正文再次运行 UserText 规则。Session-reference 与 skill 处理照常作用于引用文本;已识别的 Session 标签与周围引用文字保持相同样式。
富文本 quote 功能保留原子草稿节点与语义恢复范围。本决策仅取代其持久 quote 索引区分。UserText 节点与识别范围仍是派生值。
考虑过的替代方案
保留纯 quote 索引。 索引保留手写与插入 quote 的区别,但发送后的消息无需这一区分,且要求每个生产方与渲染器协同处理元数据。
移除原子草稿范围。 纯文本无法恢复整节点编辑、撤销、Session 切换或发送失败恢复。草稿范围仍是浏览器拥有的编辑状态。
验证
匹配器测试覆盖原始偏移、显式行标记、空白摘录与字面的嵌套 quote。Composer 测试断言普通文本提交。已发布 Web 场景检查仅文本的持久化与刷新后的 quote 展示。
后果
消息无需 quote 字段或 content 索引。手写 blockquote 也显示为 quote,不改变直接输入处理。识别有意限定为显式引用行,不涵盖 Markdown 懒惰续行或代码围栏解析。来源导航仍需独立设计持久坐标。