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 选型决策树

秒–分钟

小时–天

任务时长?

Agent Runtime
LangGraph / Spring AI

需要人工审批链?

Temporal / Camunda

仅进程续跑?

LangGraph Checkpoint
Postgres/Redis

每步 Activity 内调 Agent

场景 推荐 反例
客服单轮 RAG Spring AI loop 上 Temporal 过重
退款 3 天多级审批 Temporal + Agent Activity 纯 checkpoint 难审计 SLA
99% 完成 OOM LangGraph checkpoint 续跑 Temporal 不替代步内状态
大促批处理补发 Temporal 批 Workflow 同步 HTTP Agent

1.3 与 Spring Statemachine 对照(03

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

L2 · 架构分工

2.1 两平面模型

Agent 数据面

Temporal 控制面

RefundWorkflow

Activity: collectSlots

Activity: runAgentPlan

Activity: waitHumanApproval

Activity: executeRefund

Spring AI / LangGraph

LLM

Tools / RAG

Checkpoint
步内状态

Workflow History
审计

存储 内容 续跑问题
Workflow History 活动完成记录、定时器、信号 「审批到了吗」
Agent Checkpoint messages、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 最后一步 OOM Checkpoint 续跑步内;Workflow 不重放已完成 Activity
RUN_99P_DUPLICATE_WRITE 重试双写 Activity 幂等键 + 业务去重表
RUN_RESUME_FULL_REPLAN 恢复后计划漂移 Checkpoint 存 plan[] 状态,禁止全量重规划(96 §4
ACTIVITY_TIMEOUT LLM 太慢 调超时 / 环内降级小模型

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 可审计、可恢复、不重复退款
A Temporal 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 组合

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

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

4.4 部署拓扑(白板)

Spring Boot API

Temporal Worker Pod

Temporal Cloud / Self-hosted

Agent Service

LLM Gateway

Checkpoint Postgres

  • APIstartWorkflow,不阻塞等 LLM。
  • Agent Service 可独立扩缩;Activity 通过 gRPC 调用。
  • Checkpoint 与 Workflow DB 分库——避免混表。

4.5 测试策略

测什么
Workflow Temporal Test Workflow Environment(时间跳跃)
Activity Mock Agent;断言幂等键
Agent Golden 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编排
LangGraph 04-Agent框架
Playbook 可靠性 13 §9.4
Registry 11-Registry
参考架构 27
96 Catalog 96 §2.5 RUN_*

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

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

L1 · 官方文档

L2 · 官方源码

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐