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

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]
场景 推荐 反例
客服单轮 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 两平面模型

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 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 为准;以下为面试示意结构。

java 复制代码
@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 部署拓扑(白板)

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 测试策略

测什么
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 · 官方源码

相关推荐
被考核重击2 小时前
面试复盘总结
面试
JAVA9653 小时前
JAVA面试-并发篇 09-LockSupport 和 waitnotify 的区别
java·开发语言·面试
蝎子莱莱爱打怪3 小时前
XZLL-IM干货系列 01|万字拆解分布式 IM 架构:7 个微服务 + 自研 Flutter SDK
java·后端·面试
ShineWinsu4 小时前
对于Linux:内核是如何组织管理IPC资源的解析
linux·服务器·c++·面试·笔试·线程·ipc
ShineWinsu5 小时前
对于Linux:进程信号的解析—下
linux·运维·服务器·面试·笔试·进程·信号
早睡早起9165 小时前
Android View 绘制与事件分发
面试
我是一颗柠檬5 小时前
【Redis】Redis面试高频考点汇总Day15(2026年)
数据库·redis·缓存·面试
IT策士5 小时前
Docker 常见面试问题
docker·容器·面试
SiYuanFeng5 小时前
大模型 / RAG / Agent 面试高频题
人工智能·面试·transformer·agent·rag