Skip to content

Agent 任务执行链路方案

Agent 任务执行链路图

Draw.io 源文件 | 架构目录

1. 方案摘要

本方案把一次 Agent 任务定义为可追踪、可取消、可续跑的持久化生命周期。入口请求先完成身份、租户和触发判断,再取得 Chat ownership,固化 Agent/Model 快照,进入串行 Session 执行,最后发布事件并保存终态。

2. 设计目标与非目标

设计目标

  • 保证同一会话任务串行,避免并发写入破坏上下文。
  • 让取消、继续输入、工具调用和恢复都拥有持久化状态。
  • 把模型、工具、Prompt 和文件上下文固化到可审计的任务快照。

非目标

  • 不把模型 Provider 的重试算法当作任务状态机。
  • 不允许通过重复用户消息模拟恢复。
  • 不在任务链路中直接修改全局租户配置。

3. 架构范围与视图

一次任务如何从入口变成可恢复、可观测、可持久化的 Agent 执行?

本图聚焦单次任务生命周期,不展开各入口平台协议和多副本失联算法。

图中绿色实线表示当前能力,紫色虚线表示规划或待完善能力。图片用于建立空间关系,本文正文定义方案语义、边界和落地规则。

4. 组件与责任边界

组件责任
身份与租户确定用户、租户、Agent 与 chatId。
Chat / Task创建或读取 Chat,记录 task 状态和 ownership。
Dispatcher统一路由、内容过滤、bind 解析和预检。
Ledger / Trigger去重入站消息并判断是否触发 Agent。
Session串行化同一会话任务并维护 SDK session。
AgentRunner组装 prompt、workspace、model、tool 和 sandbox 选项。
Claude Agent SDK执行 query,产生消息、工具和终态事件。
EventBus / Reply把进度和结果推送到 Web、IM 或 OpenAPI。

组件之间只通过明确的输入、输出和生命周期契约协作。上层可以编排下层能力,但不能绕过下层的权限、租户和状态边界直接读写内部对象。

5. 核心设计决策

  • Ledger / Trigger 负责去重和触发判定,Dispatcher 负责统一路由和预检。
  • Session 是同一 Chat 的串行执行边界,AgentRunner 是一次 query 的执行边界。
  • 所有终态写入携带 ownership guard,旧执行者不能覆盖新 owner。

这些决策共同保证:入口可以替换、执行可以迁移、状态可以恢复,而不会改变用户可见的任务和会话语义。

6. 关键流程与时序

主流程

  1. 解析身份与租户
  2. 创建 / 读取 Chat
  3. Dispatcher + Ledger + Trigger
  4. 取得 Session 和 owner guard
  5. 固化 Agent / Model 快照
  6. AgentRunner 调用 query
  7. 处理工具与继续输入
  8. 发布流式事件
  9. 保存终态、用量与归档
  10. 释放 Session

流程解释

流程中的每一步都应产生可追踪的上下文:租户、Agent、Chat、Task、运行副本和结果引用。过程事件用于向用户反馈进度,终态写入和结果归档必须在事实源更新后再对外确认。

7. 数据、一致性与状态管理

  • Chat、Task、Session id、终态和用量写入以数据库为准。
  • Agent、Model、Skill、Tool 和配置在任务开始时形成快照。
  • 流式事件可以丢失或重放,但不能改变任务终态。

当前专题的关键约束

  • 配置热更新不改写进行中任务快照。
  • 同一会话的运行任务由会话队列控制。
  • 终态和 session id 写入必须符合 ownership 约束。

8. 异常、恢复与安全边界

  • 预检失败不启动 Agent query,并保留可解释的拒绝原因。
  • 工具失败、模型失败和用户取消分别记录,不把不同原因混成普通错误。
  • Runtime 直接关停造成的最后一个工具调用中断可由恢复流程续写;更早的拒绝语义继续有效。

异常处理遵循“先阻止错误扩散,再保留可恢复状态,最后由明确的补偿动作完成收口”。任何重试都必须具备幂等条件,任何恢复都必须重新校验租户、权限、版本和 ownership。

9. 部署与扩展边界

  • 任务执行可以在组合角色或 Runtime 副本完成。
  • Gateway 只负责入口和派发,不消费 Runtime 内存中的 pending tool。

部署形态可以变化,但不能把本地内存、临时文件或单副本事件队列当作跨副本事实源。需要横向扩展的能力应先明确共享状态、路由键、健康状态和故障补偿方式。

10. 当前能力与演进计划

当前已落地

  • 取消、继续输入、工具结果续跑和异常终态
  • 任务 ownership guard 与持久化终态

规划或待完善

  • 本专题暂未列出独立规划项。

演进方向

  • 补充任务级重试预算、工具幂等键和长任务 checkpoint。
  • 在不改变 Chat/Task 状态机的前提下增加新的 Agent Runner。

11. 方案验收要点

  • 重复入站不会产生重复任务。
  • 同一 Chat 同时只有一个有效执行 owner。
  • 恢复后续写原 assistant 消息,不新增用户消息。

验收时应同时检查正常链路、重复操作、空态或拒绝态、依赖不可用和副本切换,不能只验证图中最短路径。