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