Durable-Workflow-Temporal与Agent控制面分工

0 阅读7分钟

Durable Workflow · Temporal 与 Agent 控制面分工

🏠 返回 04-README | ⬅️ 03-Java-Agent编排 | ➡️ 02-Buy领域智能体

定位:回答 Staff 白板 「LangGraph checkpoint 够了为什么还要 Temporal?」——Agent 环内状态 vs 跨天业务流程 的分工。Java 编排选型见 03;LangGraph interrupt 见 04-Agent框架;checkpoint 语义见 96 §2.013 §9.4


L1 · 是什么

1.1 一句话定义

Temporal(或同类 durable execution 引擎)管理 长寿命、多角色、强审计 的业务流程;Agent Runtime(Spring AI loop / LangGraph)管理 秒–分钟级 的推理–工具循环。二者通过 Activity 边界 衔接:Workflow 定「何时、谁批、是否可重试」;Agent 定「这一步怎么推理、调哪些 tool」。

1.2 选型决策树

flowchart TD
  Q[任务时长?] -->|秒–分钟| A[Agent Runtime<br/>LangGraph / Spring AI]
  Q -->|小时–天| B{需要人工审批链?}
  B -->|是| T[Temporal / Camunda]
  B -->|否| C{仅进程续跑?}
  C -->|是| CP[LangGraph Checkpoint<br/>Postgres/Redis]
  C -->|否| A
  T --> A2[每步 Activity 内调 Agent]
场景推荐反例
客服单轮 RAGSpring AI loop上 Temporal 过重
退款 3 天多级审批Temporal + Agent Activity纯 checkpoint 难审计 SLA
99% 完成 OOMLangGraph checkpoint 续跑Temporal 不替代步内状态
大促批处理补发Temporal 批 Workflow同步 HTTP Agent

1.3 与 Spring Statemachine 对照(03

方案甜区与 Temporal
Spring Statemachine单 JVM、表单式状态无跨进程 durability
Plan-Execute 自研中等复杂度自研持久化 ≈ 半套 Temporal
Temporal分布式、重试、定时器、审计生产首选(长流程)

L2 · 架构分工

2.1 两平面模型

flowchart TB
  subgraph temporal [Temporal 控制面]
    WF[RefundWorkflow]
    WF --> A1[Activity: collectSlots]
    WF --> A2[Activity: runAgentPlan]
    WF --> A3[Activity: waitHumanApproval]
    WF --> A4[Activity: executeRefund]
  end
  subgraph agent [Agent 数据面]
    AG[Spring AI / LangGraph]
    AG --> LLM[LLM]
    AG --> TOOL[Tools / RAG]
  end
  A2 --> AG
  A1 --> AG
  AG --> CP[(Checkpoint<br/>步内状态)]
  WF --> AUD[(Workflow History<br/>审计)]
存储内容续跑问题
Workflow History活动完成记录、定时器、信号「审批到了吗」
Agent Checkpointmessages、plan[]、tool 轨迹「这一步 LLM 跑到哪」
向量库知识「政策文本是什么」——不用于续跑

2.2 Activity 设计原则

  1. Activity 要幂等executeRefund(orderId, idempotencyKey)
  2. Activity 粒度 = 业务原子步,不是「一次 LLM call」。
  3. LLM 环放在 Activity 内,Activity 超时 > LLM P99 + 工具链。
  4. HITL 用 Workflow.awaitCondition / Signal,不要阻塞 HTTP 线程。

2.3 Java 示意(Temporal Java SDK · L1)

API 以 Temporal Java SDK 为准;以下为面试示意结构。

@WorkflowInterface
public interface RefundWorkflow {
  @WorkflowMethod
  RefundResult run(RefundRequest req);
}

public class RefundWorkflowImpl implements RefundWorkflow {
  private final RefundActivities acts = Workflow.newActivityStub(
      RefundActivities.class,
      ActivityOptions.newBuilder()
          .setStartToCloseTimeout(Duration.ofMinutes(5))
          .setRetryOptions(RetryOptions.newBuilder()
              .setMaximumAttempts(3).build())
          .build());

  @Override
  public RefundResult run(RefundRequest req) {
    SlotBundle slots = acts.collectSlots(req);
    AgentPlan plan = acts.runAgentPlan(req, slots);  // 内部 Spring AI + checkpoint
    acts.waitHumanApproval(req.orderId(), plan.riskSummary());
    return acts.executeRefund(req.orderId(), req.idempotencyKey());
  }
}

Agent Activity 内部仍可用 03 Plan-Execute + Redis checkpoint;Temporal 只保证 Activity 级 至少一次执行与超时重试。

2.4 LangGraph interrupt vs Temporal Signal

机制层次典型用法
LangGraph interrupt()Agent 图内人审单会话暂停/恢复
Temporal Signal业务流程经理手机点「批准」恢复 Workflow
Temporal Query只读状态工单系统展示进度

组合:客服 Agent 图内 interrupt 收集材料 → Workflow 进入 waitHumanApproval → Signal approved → 下一 Activity 调写工具。


L3 · 生产要点

3.1 版本与部署

对象策略
Workflow 代码Workflow.getVersion() 做兼容迁移(Temporal L1)
Agent 四维Activity 入参带 release_id11-Registry
Worker 部署Agent Worker 与 Temporal Worker 可同 Pod 可拆;拆则 gRPC 调 Agent 服务

3.2 失败模式

ID现象分工
RUN_99P_CRASH最后一步 OOMCheckpoint 续跑步内;Workflow 不重放已完成 Activity
RUN_99P_DUPLICATE_WRITE重试双写Activity 幂等键 + 业务去重表
RUN_RESUME_FULL_REPLAN恢复后计划漂移Checkpoint 存 plan[] 状态,禁止全量重规划(96 §4
ACTIVITY_TIMEOUTLLM 太慢调超时 / 环内降级小模型

3.3 观测

  • Workflow:workflow_id = order_id 等业务键。
  • Agent span:挂 parent_trace = Activity span。
  • 统一 release_id08-可观测

3.4 与 Camunda / Step Functions

引擎何时口述
Temporal云原生、代码即流程、强重试语义
Camunda已有 BPMN 资产、业务分析师改图
AWS Step Functions全 AWS、Agent 在 Lambda 内

Staff 原则:选已落地引擎,不为了面试换栈。


L4 · Staff 答辩

4.1 STAR-M-P:退款审批 3 天超时

要素内容
S退款需 L1/L2 审批,平均 2.8 天;纯 Redis session 丢状态
T可审计、可恢复、不重复退款
ATemporal Workflow;runAgentPlan Activity 内 Spring AI;审批 Signal;executeRefund 幂等键
M会话丢失因 无 durable workflow
P重复退款 0;审计 100% 关联 workflow_id

4.2 大厂追问答

Q1 · 全用 LangGraph 行不行?

步内可以跨天审批、定时器、多系统回调 应用 Workflow 引擎。否则自研调度 ≈ 重写 Temporal。

Q2 · Activity 里 LLM 调用 90s 怎么办?

startToCloseTimeout > P99;环内 streaming;超长则 拆 Activity 或异步回调 Pattern。

Q3 · Temporal 与 Kafka?

:Kafka 事件通知;Temporal 状态机与重试。Agent 侧「任务完成」可发 Kafka,编排不交给 Kafka 消费组随意重试

Q4 · Python Agent + Java Workflow?

:常见:Java Temporal Worker + Python Agent gRPC Activity(见 05-python-agent §集成)。契约:protobuf + release_id

Q5 · 何时用 Spring Statemachine 代替 Temporal?

单服务、无跨天、团队无 Temporal 运维 时 Statemachine 够用;多服务、审计、定时器 选 Temporal。

4.3 与 03 Supervisor 组合

模式TemporalSupervisor
跨服务退款审批Workflow 主Activity 内单次 runAgentPlan
同 JVM 多 Worker 争用不推荐EventBus + Supervisor
定时催办Workflow Timer

原则Supervisor 不解跨天;跨天用 Workflow 等 Signal。

4.4 部署拓扑(白板)

flowchart LR
  API[Spring Boot API] --> TW[Temporal Worker Pod]
  TW --> TC[Temporal Cloud / Self-hosted]
  TW --> AG[Agent Service]
  AG --> LLM[LLM Gateway]
  AG --> PG[(Checkpoint Postgres)]
  • APIstartWorkflow,不阻塞等 LLM。
  • Agent Service 可独立扩缩;Activity 通过 gRPC 调用。
  • Checkpoint 与 Workflow DB 分库——避免混表。

4.5 测试策略

测什么
WorkflowTemporal Test Workflow Environment(时间跳跃)
ActivityMock Agent;断言幂等键
AgentGolden trajectory(10

4.6 容量与 SLO

指标建议
Workflow 并发按审批人数量与峰值单量估算;与 Agent GPU 分开扩容
Activity 超时LLM P99 × 1.5 + tool 链
History 保留合规域 ≥1 年;与审计系统对接
Worker 版本release_id 联动;Workflow.getVersion 做兼容

4.7 常见追问速答

  • Q:能否用 Kafka 代替 Temporal? — Kafka 传事件,不负责「等到周三经理批准」这类状态;会自研调度器。
  • Q:Camunda BPMN? — 已有 BPMN 资产优先 Camunda;绿场 Java 云原生常用 Temporal。
  • Q:Serverless? — Activity 调 Lambda 可行;长连接 LLM 仍建议专用 Agent 服务。
  • Q:与 96 原型 G? — 批处理 G 用 Temporal;单会话 A/B 用 Agent checkpoint。

§8 决策速查表(面试翻牌)

症状首选
用户等 3 天审批Temporal + Signal
单会话 20 步工具环LangGraph checkpoint
每晚批处理 10 万单Temporal + 队列
仅 JVM 内 2h 流程Spring Statemachine 03
跨服务补偿Temporal Saga

§9 与 Registry / Eval 联动

Activity 入参必须带 release_id11)。Workflow 升级用 Workflow.getVersion()禁止 Activity 内隐式读「最新 prompt」。

发布前:Golden 含 长流程 用例(审批超时、Signal 恢复)→ eval/golden 扩展。


§10 白板 45min 脚本

画/说
决策树§1.2
两平面Workflow History vs Checkpoint
退款序列§2.3 Java 示意
Signal HITL§2.4
STAR§4.1

5. 面试前 Checklist

  • 决策树:checkpoint vs Temporal
  • 两平面:Workflow History vs Agent Checkpoint
  • Activity 四原则(幂等、粒度、超时、HITL Signal)
  • 对比 LangGraph interrupt vs Temporal Signal
  • 口述 STAR 退款审批
  • RUN_99P_* 与 Activity 重试关系

6. 导航

关联路径
Java 编排03-Java-Agent编排
LangGraph04-Agent框架
Playbook 可靠性13 §9.4
Registry11-Registry
参考架构27
96 Catalog96 §2.5 RUN_*

官方文档与源码(一级依据)

写作规范:docs/official-sources-registry.md §0

L1 · 官方文档

L2 · 官方源码