跳转到内容

对话页

一条助手回复里同时摆着思考过程、工具调用、流式正文、代码块与批准闸门,外面是消息流与提示输入框。

关掉浮层时焦点要还给触发器,这条改动动了哪些地方?

助手 已完成

按你给的约束,改动落在一个文件里:

  • 事件仍从内核发出,视图不新增状态
  • 退场那一档交给动效令牌,组件里不写时长
export function onClose(reason: CloseReason) {  if (reason === "escape") return restoreFocus()  return dismiss()}

要动你的工作区

写回前先确认这两条范围。

读 src/ 下的文件
把这段改动写回去
Waiting for your decision

这一屏定了什么

  • 一条消息是一个容器,里面爱放几件放几件。 消息流只管集合语义、粘底跟随与那一个播报区;气泡、头像、时间、回复内部的结构全由你写。
  • 五件东西共用一个间距档。 思考过程、工具调用、正文、代码块、闸门竖着排,彼此的空隙是同一个值——这一档不统一,一条回复就会看着像五张卡片拼起来的。
  • 闸门不藏进折叠里。 审批常驻在回复末尾:必选范围没勾满就批不了,勾选与判定是原子的,不存在「已批准但范围还没同步」的窗口。
  • 状态由数据说了算。 思考过程给了起止时刻就自己显示「想了几秒」,工具调用按阶段换状态文案,代码视图标了 complete 才放心着色——组件不猜,宿主给什么它显示什么。
  • 发送键原位变停止。 提示输入框在生成期间把提交键换成停止,输入框仍可编辑:用户还要能改下一句。

换成你的项目

  • 正文走流式 Markdown:渲染器是有状态的,一个实例只喂同一条消息的全文。
  • 不分条、只往下追加的输出(构建日志、命令回显)用日志,它和消息流一样粘底,但不承担会话语义。
  • 消息条目上有 data-role,助手与用户两侧的排布差异按它写,不必给两套组件。

Released under The MIT License