【A2UI】聊天是否是最好的交互方式

$
A2UI 系列封面:聊天是否是最好的交互方式

假设你对投放 Agent 说:“帮我找出最近消耗下降的计划,看看要不要调整预算。”

这句话很适合放进聊天框。它包含目标,但没有限定账户、时间范围、判断口径,也没有说明哪些计划可以调整。Agent 可以继续追问,但如果整个任务都靠聊天完成,接下来可能变成:

“看哪个账户?”
“最近是几天?”
“这 8 个计划要比较哪些指标?”
“预算从多少调到多少?”
“确认全部执行吗?”

用户最终仍要处理账户、日期、计划、指标、预算和影响范围。区别只是,本来可以直接看见和操作的对象,被拆成了多轮文字。

我的判断是:Chat 适合表达模糊目标和解释原因,却不适合承担精确录入、选项比较与过程控制,也不适合长期沉淀结果。聊天可以是 Agent 的入口,但不该默认成为整套产品。

为什么 Agent 产品都喜欢从聊天开始

聊天有四个很难替代的优势。

第一,用户可以从目标开始,不必先理解产品导航。面对一个低频任务,“帮我看看为什么消耗下降”通常比先找报表、选账户、配筛选条件更自然。

第二,聊天能容纳不完整的背景。用户可以先说大概目标,再补一句“新品不算”“只看本周”“先别改预算”。这些例外很难在任务刚开始时全部预设成字段。

第三,对话适合协商。Agent 可以追问缺失信息,用户也可以修正系统的理解。双方不必在第一轮就把需求描述完整。

第四,聊天适合解释。系统给出建议后,用户可以继续问“为什么是这几个计划”“如果不调整会怎样”。表单能收集答案,却不擅长解释答案。

所以问题不是“要不要聊天”,而是聊天应该在哪些阶段出现

聊天的局限,不是模型不够聪明

很多团队把 Chat 的问题归结为模型能力:理解再准一点、记忆再长一点、追问再聪明一点,体验就会变好。

模型进步当然能减少误解,但解决不了消息流本身的结构。

一个复杂任务通常包含四类东西:

  • 对象:账户、计划、素材、规则;
  • 字段:日期、预算、状态、标签;
  • 状态:未开始、处理中、待确认、成功、失败;
  • 动作:选择、修改、暂停、重试、提交。

而聊天的基本结构只有一个:按时间不断追加消息。

当任务简单时,两种结构没有冲突。用户问一句,Agent 回一句,事情结束。任务一旦变成多对象、多步骤、可中断的工作流,线性消息就开始吃力。

空白输入框把发现成本交给用户

“你可以问我任何问题”看起来很自由,实际要求用户先知道系统有什么能力、哪些参数有效、怎样表达才不会被误解。

如果可选账户只有 12 个,展示账户列表比让用户回忆名称更省力;如果预算有上下限,直接显示范围和校验,比用户输错后再收到一条报错更有效。

这里的原则是:能展示合法选项时,就直接展示合法选项,不要要求用户凭记忆描述。

精确输入不适合反复确认

日期、金额、百分比、账户范围和多选项都需要精确。聊天可以接收这些内容,却很难同时展示格式、默认值、联动关系和错误位置。

一句“预算改成 5000”还可能继续追问:日预算还是总预算?作用于哪个计划?何时生效?是否超过规则上限?

表单不是比语言更“高级”,只是它能把约束放在输入旁边,让用户一次完成。

比较和筛选需要空间

用户比较 8 个计划时,需要让同类指标对齐,切换排序和筛选,并保留当前选择。把这些信息改写成几段自然语言,信息没有减少,空间关系却消失了。

对话适合解释“为什么推荐 A”,表格、图表和 Diff 更适合回答“A 与 B 到底差在哪”。

长任务需要控制器

一个运行十分钟的任务,如果只在消息流里不断追加“正在处理”,用户很难判断它到了哪一步、能否暂停、哪里失败、重试会不会重复执行。

长任务需要的不是更多消息,而是一块稳定的过程界面:真实进度、当前步骤、局部结果,以及暂停、取消、续做和重试。

聊天历史不是业务工作台

消息按时间排列,业务却按项目、任务、对象和状态组织。

三天后回来看,用户通常想知道“任务完成了吗”“我当时选了什么”“结果写到哪里”,而不是从几十条消息中复盘当时的问答过程。

完成后的交互应该沉淀为结果摘要和决策凭证。仍在进行的任务要有续做入口。需要长期关注的对象,则应进入看板或任务中心。

一个 Agent 任务,需要的不只是一块对话区

更合理的设计,是让不同界面对象分别承担自己擅长的工作。

对话:表达目标和处理不确定性

当用户还说不清目标、需要补充背景、希望理解原因,继续对话。此时产品的任务是帮助用户把问题说清楚,而不是急着展示一堆字段。

表单、选择器和步骤页:完成精确交互

当任务已经明确,系统应把合法选项、必填项、默认值和约束直接摆出来。需要逐步收集时,用步骤页控制认知负担;需要比较时,让相同字段对齐。

控制器:让运行过程可见、可干预

只要任务可能等待、失败或被打断,就需要显示权威状态,并给用户明确的暂停、续做、取消和重试入口。

结果界面:承载比较、确认和沉淀

结果不是聊天中的最后一段话。数据量较大时,它可能是一张表、一组图、一个 Diff,或者一张能展开明细的摘要卡。需要持续观察时,它应该进入 Dashboard;需要追溯时,它应该进入 History。

这也是 A2UI 对产品设计的直接价值:Agent 不只返回文字,而是根据任务阶段描述一块可操作的界面,再由客户端用可信组件渲染。协议细节不是本篇重点,重要的是Agent 选择表达形式,而产品经理决定选择规则

更合理的路径:对话发起,界面完成

把前面的投放任务重新走一遍:

  1. 用户在对话中提出“找出消耗下降的计划”。
  2. Agent 追问真正缺失的判断口径,而不是逐个追问所有字段。
  3. 系统展示账户、日期和计划筛选器,让用户直接选择。
  4. 结果界面并排呈现关键指标和异常原因。
  5. 用户点选要调整的计划,填写预算,查看影响范围。
  6. 高风险写操作进入明确的确认界面。
  7. 完成后生成结果摘要,并进入任务历史。

对话没有消失。它仍然负责解释“为什么推荐这些计划”,也允许用户随时补一句“新品先排除”。但精确操作不再被翻译成一连串问答。

这条路径可以概括为:

对话表达目标 → 结构化界面完成操作 → 对话解释与纠偏 → 结果界面保存状态

统一的是任务,不是界面形态。

从对话入口到结果沉淀的混合交互路径

输入框应该一直存在吗

我的答案是:可以常驻,但它是旁路,不是拥有最高优先级的主流程。

智投的内部方案提供了一个可参考的设计。结构化卡片进行中,底部输入框仍保持可用。用户的新输入通过 freeform 回到 Skill,再区分三种意图:

  • augment:补充当前任务,例如“把物流投诉也算进去”;
  • override:覆盖当前选择,例如“算了,全部选中”;
  • new:开启新任务,例如“先看看竞品被讨论的情况”。

前两类更新当前卡片。第三类才打断当前流程,并把未完成任务折叠保存。意图不清楚时,系统先询问用户,不擅自打断。

这套方案还把卡片分为三种状态:

  • active:当前可操作;
  • collapsed:已中断但可以续做;
  • summary:任务完成后的结果摘要。

这些是内部设计资料能够证实的方案,现有材料不足以证明它们已经全部上线或产生了量化收益。但它揭示了混合交互的一个关键:输入框、卡片和任务状态必须指向同一个任务对象

如果用户在聊天里说“全部选中”,卡片却仍保留旧选择;或者聊天已经开启新任务,旧卡片仍显示进行中,产品就出现了两套互相冲突的状态。此时问题不在界面好不好看,而在用户已经不知道哪个结果算数。

反方观点:一个聊天入口不是更简单吗

这个观点有一半成立。

统一入口确实能减少导航学习。对于低频任务、开放探索,以及只需一句可验证结论的后台任务,Chat 甚至可以从头用到尾。有些任务根本不需要额外界面:Agent 完成后发一条结果通知就够了。

入口统一不等于过程统一

用户说出目标之后,如果系统已经知道合法选项、业务约束和当前状态,仍然要求用户继续用文字复述,只是把产品本应承担的组织工作转嫁给用户。

另一种担忧是:表单、控制器和结果页会让 Agent 产品重新变回复杂软件。

这也提醒我们,不要为了展示“动态 UI”而生成界面。判断标准不是有没有卡片,而是这块界面是否减少了理解或操作成本。一句回答能结束的任务,就不要生成五步 Wizard;三个固定选项能解决的问题,也不必让 Agent 现场设计一套页面。

产品经理应该先判断用户缺什么

设计 Agent 任务时,可以先问四个问题:

  1. 用户缺的是目标表达,还是合法选项?前者用对话,后者用表单或选择器。
  2. 用户缺的是解释,还是比较?前者用对话,后者用表格、图表或 Diff。
  3. 任务会不会等待、失败或中断?会,就需要过程状态和控制器。
  4. 结果要不要持续查看和追溯?要,就需要稳定的结果界面和历史对象。

再补一个退出条件:如果任务可以完全委托,用户只需要一个可验证结果,那就不必为了 A2UI 强行增加界面。

Agent 产品的设计起点不该是“首页放一个多大的聊天框”,而应该是:用户如何表达目标,系统如何收集精确信息,任务如何被控制,结果如何被验证和保存。

聊天框完成了第一步。后面几步,才决定 Agent 能不能真正进入工作。


系列导航

上一篇:【A2UI】Agent 如何“说界面”(02-generative-ui-paths)

下一篇:【A2UI】GUI 负责看清,CLI 负责做快(04-gui-vs-cli)