AI Agent 如何执行长任务
长任务不是让模型一次生成更长的回答,而是让 Agent 在较长时间内持续读取材料、调用工具、生成文件、等待审批、接收补充信息,并在多个执行阶段之间保留任务状态。
为什么部署在服务器端
xAgent 的任务执行发生在服务端,不依赖浏览器页面持续打开。用户关闭网页或个人电脑后,已经提交的任务仍可以继续运行。用户之后可以重新打开 Web 页面,也可以通过已连接的 IM 连接器查看进展、补充信息或处理审批。
这不代表所有任务都一定能够无人值守完成。缺少材料、模型或工具失败、外部系统不可用、等待审批和服务重启,都可能让任务暂停或失败。
一个长任务如何持续执行
长任务通常由同一个 Agent 会话承载:
- 用户提交目标、材料范围和交付要求。
- 会话装配当前提示词、历史、Skill、Tool、密钥引用、工作区文件和记忆等上下文。
- Agent 调用模型并按需要执行工具。
- 工具结果回到同一执行轮,Agent 决定继续调用工具、生成产物、等待用户,或者结束本轮任务。
- 外部消息、触发器和其他会话可以通过会话事件向目标会话投递新的任务信息。
主 Agent 也可以创建子会话分担工作。子会话有独立上下文和工作目录,结果再通过会话协作返回主会话。
上下文压缩如何保持连续性
每次模型请求都会计算完整请求规模,包括系统提示词、会话历史、工具定义和为模型输出预留的空间。当估算请求超过模型最大上下文的 80% 时,xAgent 会触发上下文压缩。
这里的压缩不是把聊天记录简单改写成一段摘要,而是生成当前会话的可继续执行状态快照,重点保留:
- 当前目标和最终交付物。
- 已完成进度和下一步。
- 仍然有效的约束、决定和工作事实。
- 未解决问题。
- 继续执行需要引用的关键文件和事件。
上下文压缩与长期记忆不是一回事。压缩服务于当前会话继续执行;记忆用于跨会话复用用户范围内的信息。
压缩会减少上下文占用,但不能保证完整保留所有历史细节。复杂任务仍建议使用 100k 以上上下文模型,并把关键要求、数据和中间产物保存为文件。
等待审批时会发生什么
当工具调用命中审批规则时,会话进入 waiting_approval。原始工具调用会被保留,用户同意后从该动作继续;拒绝后则不会执行该动作。
服务重启后能否继续
xAgent 会保存用于恢复的运行快照。服务启动后,Brain 会延迟约 30 秒扫描会话:
- 有有效运行快照的会话可以恢复执行。
- 未完成的上下文压缩会先按持久化状态恢复或回正。
waiting_approval等等待态会保持等待,不会绕过用户确认自动执行。- 缺少有效快照的异常运行态不会被当成可续跑任务盲目恢复。
因此,更准确的说法是“具备基于有效快照的任务恢复能力”,而不是保证任何中断都能无损、精确地从原位置继续。外部系统操作是否支持幂等和重复执行保护,仍取决于相应工具和外部服务。
运行中切换模型的边界
用户可以修改会话的模型配置,不需要创建新会话,也不需要丢弃已有历史和文件。但当前正在运行的同一轮模型与工具循环会固定使用本轮已经选定的模型,避免中途保存配置导致一次执行前后行为不一致。
新模型会在后续执行轮读取并生效。因此,当前版本支持“不重建会话地调整后续模型”,不应描述为正在进行的单次模型请求或同一工具循环会立即更换模型。
提高长任务完成率
- 第一条消息写清目标、材料范围、交付物和验收标准。
- 复杂任务先要求列计划,再分阶段确认。
- 关键数据和中间结果保存为文件,不只留在对话历史里。
- 为工具调用任务使用稳定支持 Tool Calling 的模型。
- 对外发送、删除和敏感数据操作配置审批策略。
- 连接外部系统前确认账号权限、连接状态和失败后的重试方式。