本篇 10 题|覆盖初级到高级|异步任务与流式交互。先用自己的话回答,再核对参考要点,最后练习工程追问。

本篇目录
- AGT-101 长任务为什么要异步执行?
- AGT-102 流式输出应该展示哪些事件?
- AGT-103 SSE 与 WebSocket 如何选择?
- AGT-104 事件流如何避免重复显示?
- AGT-105 进度百分比应该如何计算?
- AGT-106 如何防止任务排队无限增长?
- AGT-107 流式输出如何处理背压?
- AGT-108 任务取消后还可以返回结果吗?
- AGT-109 如何保证后台任务身份安全?
- AGT-110 如何处理人工输入中断?
AGT-101 长任务为什么要异步执行?
难度:中级
参考答案:避免连接超时并支持排队、恢复和进度查询。请求返回任务 ID,后台持久化执行,用户可重连查看真实状态,而不是依赖一次 HTTP 连接。
工程追问:客户端断开是否应取消任务?
AGT-102 流式输出应该展示哪些事件?
难度:中级
参考答案:展示开始、阶段进展、工具状态、可交付结果和结束原因。区分临时文本与最终结果,避免用户把尚未校验的内容当作已完成动作。
工程追问:工具失败后已输出的文本怎样处理?
AGT-103 SSE 与 WebSocket 如何选择?
难度:中级
参考答案:单向服务端推送常可用 SSE,双向高频交互可考虑 WebSocket。根据代理支持、重连、鉴权和消息语义选择,协议本身不解决任务持久化。
工程追问:断线重连如何补发事件?
AGT-104 事件流如何避免重复显示?
难度:中级
参考答案:为事件分配单调序号或稳定 ID,客户端按游标恢复并去重。服务端定义保留窗口与快照接口,防止重连时丢失关键状态。
工程追问:事件已过保留期怎么办?
AGT-105 进度百分比应该如何计算?
难度:中级
参考答案:只有可度量且相对稳定的工作量才给百分比。动态计划更适合展示已完成步骤和当前阶段,避免模型随意估计造成虚假的完成感。
工程追问:重新规划后进度倒退怎样说明?
AGT-106 如何防止任务排队无限增长?
难度:中级
参考答案:设置队列长度、等待期限和租户配额,超限时明确拒绝或延后。监测最老任务年龄,按业务优先级调度并防止低优先级长期饥饿。
工程追问:排队超时是否消耗用户额度?
AGT-107 流式输出如何处理背压?
难度:中级
参考答案:限制缓冲区并感知客户端消费速度,必要时降频、合并进度事件或断开并保留任务结果。不能无限缓存 token 导致内存耗尽。
工程追问:最终结果与进度事件能否采用不同策略?
AGT-108 任务取消后还可以返回结果吗?
难度:中级
参考答案:可以报告取消前已完成的产物与副作用,但应明确任务状态。取消只阻止后续工作,不能把已经发生的动作描述为未发生。
工程追问:取消请求是否需要幂等?
AGT-109 如何保证后台任务身份安全?
难度:中级
参考答案:任务绑定发起者、授权范围和过期策略,worker 使用受控服务身份执行并保留原始主体信息。查询和下载结果时也要重新鉴权。
工程追问:分享任务链接会不会泄露结果?
AGT-110 如何处理人工输入中断?
难度:中级
参考答案:将任务转为等待状态并保存所需问题、上下文和有效期。收到回复后校验其对应任务与版本,再恢复执行,避免把迟到回复用于新计划。
工程追问:用户同时回答多个任务如何关联?
复盘练习
任选一题,用“场景与约束 → 方案 → 验证方法 → 失败边界”组织一段回答。初级先讲清概念,中级补实现与测试,高级补成本、权限和故障取舍。难度标签是学习建议,同一题可继续深入。
延伸阅读
以下为本模块相关原始论文与官方文档,用于继续学习;本文为原创面试要点整理,具体框架行为以所用版本为准。