聊天窗口很适合告诉 Agent“我要什么”,但真的不适合看它“干到哪了”
昨天 GitHub 发了一篇挺有意思的文章,题目直接点出了一个越来越明显的问题:
Chat is great for intent, but agent work gets lost in the scroll.
我很认同。
过去两年,我们几乎默认了一个 UI 逻辑:
AI = Chat
用户输入一句话,AI 回复一大段。
可 Agent 一旦从“回答问题”变成“执行任务”,这个界面开始变得别扭。
比如一个 Coding Agent 正在做:
理解需求
→读 18 个文件
→拆 7 个任务
→修改 5 个文件
→跑测试
→修 3 个失败
→再跑测试
→等待人工确认
最后这一切都被塞进一条越来越长的聊天记录。
问题就来了。
我真正想看的不是它说了什么,而是它现在是什么状态
用户问:“现在做到哪了?”
聊天记录可能已经有 80 屏。
真正应该回答的是:
任务:登录模块重构
总步骤:7
完成:4
进行中:1
阻塞:1
待人工:1
已修改:
- AuthService.java
- JwtFilter.java
- LoginController.java
测试:
32 passed
2 failed
预算:
$1.82 / $3.00
这不是 Chat UI。
这是任务控制面。
GitHub 那篇文章里提到的一个现实问题很关键
Agent 生成代码的速度,已经开始超过人类 Review 的速度。
以前瓶颈是写代码,现在慢慢变成看 Agent 到底改了什么。
所以产品界面如果仍然只展示模型消息,人会越来越累。
因为 Review 需要的不是完整过程日志,而是:
变更
证据
状态
差异
决策点
一个 Agent Run,我希望至少有四个视图
Goal
最上面固定显示用户真正要完成什么。
例如:
修复登录偶发401,
不能改变现有Token格式,
必须通过全部Auth测试。
Agent 跑了半小时以后,人不用重新翻第一条消息。
Plan
[✓] 复现401
[✓] 定位Token刷新逻辑
[✓] 增加并发测试
[→] 修改Refresh流程
[ ] 全量测试
[!] Security Review
Plan 能改,但修改要显示 Diff。
Artifact
Agent 产生的代码Diff、测试报告、截图、查询结果和分析文档应该单独展示,不是埋在消息里。
Decisions
只列需要人的节点:
是否允许修改数据库Schema?
是否接受删除兼容逻辑?
是否发布到10% Canary?
这才是人真正需要参与的地方。
为什么“完整过程都可见”反而不等于可观测
很多 Agent 产品喜欢显示:
Thinking...
Reading...
Searching...
Calling tool...
Analyzing...
很热闹。
但如果出了问题,还是答不上:
哪一步失败?
失败以后重试几次?
用了哪个版本?
哪个Tool产生了副作用?
最终结果基于哪些Artifact?
真正的可观测需要结构化事件。
{
"event": "STEP_COMPLETED",
"step_id": "run-tests",
"status": "FAILED",
"duration_ms": 18342,
"artifact": "test-report-92",
"error_code": "TEST_FAILURE",
"retryable": true
}
UI 只是把这些事件画出来。
我会把 Agent UI 做成“事件投影”
后端事实:
RunCreated
PlanCreated
StepStarted
ToolCalled
ArtifactCreated
StepCompleted
ApprovalRequested
RunFinished
前端不是自己猜状态,而是:
消费事件
→生成Projection
→画界面
这样刷新页面、断线重连、多人同时看,都不会丢状态。
聊天仍然重要,只是不应该承担全部职责
Chat 最适合:
- 设定目标;
- 补充信息;
- 修改要求;
- 提问;
- 给反馈。
Canvas/Run View 最适合:
- 看进度;
- 看Artifact;
- 看Diff;
- 看风险;
- 看预算;
- 做审批。
两者应该并存。
一个具体的交互例子
用户:
把这个Spring Boot项目升级到Java 25。
聊天区:
Agent:
我会先检查JDK、Spring Boot、插件、
CI和Docker镜像兼容性。
任务区立即出现:
Java 25 Upgrade
1. Inspect build files
2. Check Spring Boot compatibility
3. Update Maven compiler
4. Update CI
5. Update Docker
6. Run tests
7. Review breaking changes
执行 5 分钟后:
4 / 7 completed
Changed files: 6
Tests: 128 passed, 3 failed
Blocked: Mockito agent warning
Needs decision: Upgrade Mockito?
用户不需要再问“现在进展怎么样?”。
Agent 越自治,越需要视觉化控制面
这是个看起来矛盾的结论。
很多人觉得 Agent 越自动,人越不需要看。
我反而觉得:
Agent越自动
人越不能只看最后一句话
因为中间发生的事情更多。
例如:
修改20个文件
调用8个工具
花掉5美元
读了3个系统
等待1次审批
重试4次
如果界面只给最终结果“任务已完成”,这不是自动化,是黑箱。
我最希望看到的几个组件
Timeline
09:12 Run started
09:13 Plan approved
09:14 Repo scanned
09:18 6 files changed
09:20 Tests failed
09:23 Fix applied
09:25 Approval requested
Artifact Diff
只显示真正变化:
pom.xml
Dockerfile
ci.yml
Budget
Model calls: 14
Tool calls: 28
Tokens: 184K
Cost: $2.31
Risk
LOW: Read repo
MEDIUM: Modify source
HIGH: Deploy
Human Queue
只把必须由人决定的事情推出来。
不要把“Canvas”理解成另一种白板
我这里说的 Canvas,不一定是某个产品功能名称。
更准确地说,是:
Agent Run 的结构化工作界面
它可以是 DAG、看板、时间线、文件树、流程图或状态面板。
关键不是画得漂亮,而是从 Message-oriented 变成 State-oriented。
最后一个判断
聊天框不会消失。
但我觉得纯 Chat Agent 的黄金期正在过去。
未来真正复杂的 Agent 产品,很可能都会长成:
Chat
+Run
+Plan
+Artifact
+Approval
+Observability
因为人和 Agent 的关系已经不是“我问,你答”,而越来越像“我交代一个目标,你去执行,我在关键节点介入”。
当交互模型变了,UI 迟早也要跟着变。
接下来谁能把“Agent 到底干了什么”做得比“Agent 会说什么”更清楚,可能才是更重要的产品差异。
更多企业级 AI 应用、Agent、RAG 与模型工程化内容,我会继续整理在 智元界:
https://www.zyentor.com/