一、 开场:从”能用”到”好用”
大家好,我是老金。
上个月,我们团队上线了一个AI Agent项目。
功能测试全部通过,用户也觉得”挺智能的”。
但上线一周后,数据让我有点意外:
- 用户留存率:只有32%
- 平均使用时长:3.2分钟
- NPS评分:-5(用户不太愿意推荐)
我意识到:AI Agent不仅要”能用”,更要”好用”。
功能正确只是及格线,用户体验才是决定成败的关键。
今天这篇文章,我想聊聊AI Agent的用户体验设计——那些容易被忽视但至关重要的细节。
二、 AI Agent用户体验的核心原则
2.1 原则一:给用户”掌控感”
AI Agent最大的问题之一是:用户不知道它在干什么。
糟糕的体验:
用户:"帮我订一张明天去上海的机票"
AI:(长时间沉默,30秒后)
AI:"已经帮您订好了,航班号CA1234。"
用户全程不知道AI在做什么,只能干等。
好的体验:
用户:"帮我订一张明天去上海的机票"AI:"好的,我来帮您查询明天的航班。" [搜索中...]
AI:"找到3个符合条件的航班:
- CA1234 08:00-10:30 经济舱 ¥680
- MU5678 10:00-12:30 经济舱 ¥720
- CZ9012 14:00-16:30 经济舱 ¥650
您偏好哪个时间段?"用户:"早上的吧"
AI:"好的,正在为您预订CA1234航班..."
[预订中...]AI:"预订成功!已发送确认短信到您的手机。"
实现方法:
class StreamingAgent: async def execute(self, task): # 1. 先告诉用户要做什么 yield {"type": "status", "message": "正在查询航班信息..."}# 2. 展示中间过程 results = await self.search_flights(task) yield {"type": "options", "data": results} # 3. 等待用户确认 user_choice = await self.wait_for_input() # 4. 继续执行 yield {"type": "status", "message": "正在预订..."} result = await self.book_flight(user_choice) # 5. 返回最终结果 yield {"type": "result", "data": result}2.2 原则二:快速响应,渐进式展示
研究表明:用户对超过3秒的等待会感到焦虑。
AI调用LLM通常需要几秒到十几秒,如何优化体验?
方案1:首字快速响应
用户:"解释一下什么是RAG"AI:(0.5秒后开始输出) "RAG是Retrieval-Augmented Generation的缩写, 意思是检索增强生成。简单说,就是..."
(而不是等10秒后一次性输出全部内容)
方案2:骨架屏 + 占位内容
AI:"我来为您分析这个问题..."[显示加载骨架]
[逐步填充内容] "1. 首先..." "2. 其次..." "3. 最后..."
2.3 原则三:让用户可以干预
AI不总是正确的,用户需要能够干预和纠正。
设计要点:
- 显示AI的推理过程:让用户知道AI为什么这么做
- 提供确认步骤:关键操作前让用户确认
- 支持回滚:操作可以撤销
- 允许纠正:用户可以告诉AI”你理解错了”
AI:"我理解您想要查询订单#12345的物流信息,对吗?"
[是的,查询] [不对,重新说明]
用户:(点击"不对")
AI:"抱歉理解有误,请告诉我您具体想查询什么?"
2.4 原则四:管理用户预期
AI不是万能的,要让用户知道边界。
好的做法:
AI:"您好,我是智能客服助手小金。
我可以帮您:
✅ 查询订单状态
✅ 处理退换货申请
✅ 解答产品问题
我不能:
❌ 修改已发货订单
❌ 直接退款到银行卡
请问有什么可以帮您?"
三、 具体场景的UX设计
3.1 场景一:AI思考时间较长
问题:复杂任务需要几十秒甚至更长时间。
解决方案:
async def long_running_task(): # 1. 先给即时反馈 yield {"type": "ack", "message": "收到,我正在处理..."}# 2. 展示进度 for i, step in enumerate(steps): yield {"type": "progress", "current": i+1, "total": len(steps), "step": step.name} await execute_step(step) # 3. 适时提供"取消"选项 # 用户可以随时中断 # 4. 完成后总结 yield {"type": "complete", "summary": "任务已完成,共耗时45秒"}3.2 场景二:AI出错时
原则:承认错误、解释原因、提供替代方案。
❌ 差的处理: AI:"出错了,请重试。"✅ 好的处理: AI:"抱歉,查询航班信息时遇到了问题。
可能的原因: 1. 航班信息暂时不可用 2. 网络连接不稳定 您可以: • 稍后重试 • 直接拨打客服热线 400-xxx-xxxx • 换一个出发日期查询 需要我帮您做什么?"3.3 场景三:需要用户输入敏感信息
AI:"预订机票需要您的身份证号码。🔒 您的信息将被安全加密存储 📌 仅用于本次预订 🗑️ 订单完成后将自动删除
请输入身份证号码:" [安全输入框,内容被遮挡]
3.4 场景四:多轮对话
设计要点:
- 保持上下文一致性
- 让用户能看到对话历史
- 支持”重新开始”
AI:"刚才我们聊到您想订明天去上海的机票, 您选择了CA1234航班。现在需要您确认乘机人信息..."用户:"等等,我想换成下午的航班"
AI:"没问题,我们回到航班选择。
下午的航班有: 1. CZ9012 14:00-16:30 经济舱 ¥650 2. HU3456 16:00-18:30 经济舱 ¥700 您选哪个?"四、 常见的UX反模式
4.1 反模式一:过度拟人化
❌ AI:"亲爱的主人,我非常理解您的心情, 让我全心全意为您服务..."✅ AI:"好的,我来帮您处理这个问题。"
原则:专业、高效,不要过度情感化。
4.2 反模式二:信息过载
❌ AI:"关于您的问题,我查询了以下信息: 1. xxxxx(500字) 2. xxxxx(500字) 3. xxxxx(500字) 总共2000字..."✅ AI:"您的问题是X,答案是Y。
主要原因有3点: 1. ... 2. ... 3. ... 如需详细信息,请点击展开。"4.3 反模式三:没有确认就执行
❌ 用户:"把所有邮件标记为已读" AI:(直接执行,3000封邮件被标记)✅ 用户:"把所有邮件标记为已读" AI:"您确定要将全部3000封邮件标记为已读吗? 此操作无法撤销。" [确认] [取消]
4.4 反模式四:使用技术术语
❌ AI:"调用LLM API时发生504 Gateway Timeout错误"✅ AI:"服务暂时响应较慢,请稍后重试"
五、 UX设计检查清单
| 检查项 | 是否满足 |
|---|---|
| 用户始终知道AI在做什么 | □ |
| 首次响应时间 < 1秒 | □ |
| 长任务有进度提示 | □ |
| 关键操作需要用户确认 | □ |
| 错误信息对用户友好 | □ |
| 用户可以随时取消操作 | □ |
| 敏感信息有安全提示 | □ |
| AI能力边界清晰告知用户 | □ |
六、 写在最后
AI Agent的UX设计,本质上是在管理用户的预期和焦虑。
核心原则:
- 透明:让用户知道AI在做什么
- 可控:让用户能干预AI的行为
- 快速:减少等待焦虑
- 友好:用人话说,不做技术直男
功能正确只是基础,体验才是护城河。
如果你也在做AI Agent,建议对照这篇文章检查一下你的产品。
我是技术老金,我们下期见!
📌 往期精彩回顾