探所 Curio 再探再报 了解探所 →
#AI

Databricks 用 Temporal 与 Lakebase 拆解长跑 Agent 的状态

Databricks 放出一份可运行的参考实现,把「长跑 agent 的状态」拆成两套系统:**Temporal Cloud 管持久化控制流,Lakebase Postgres 管面向应用的运行态**。

示例选的是个人贷款核保 agent:它要采集征信与收入证据、套用政策、给出建议,然后等核保人拍板 —— 这一等可能就是几天,期间 worker 会重启、工具调用会失败。

💡 为什么值得看长跑 agent 的恢复、重试与审计如何分工,这份参考实现可直接参考。

重试与写入安全

  • **确定性与守卫**:每条 Lakebase 记录用稳定标识锚定(run_id / message_id / tool_call_id / review_id 等),主键与唯一约束 + 守卫式 upsert 让重试命中同一逻辑行,已终态的行写入影响 0 行且不报
  • **作者自陈的缺口**:文章明说当前 Activity 包装层没有把「0 行」判为失败,生产代码应先确认终态再决定是当作预期空操作还是抛冲突。
  • **重试预算**:模型调用类 Activity 最多 4 次尝试、3 分钟调度超时;工具调用 3 次、60 秒;Lakebase 写入 5 次、15 秒。

示例带具体数字:边界申请人 665 信用分、年收入 7.6 万美元、月债 2400 美元;模型只能建议,批准 / 拒绝 / 补充材料由核保人决定。完整 schema 与代码见原文。

查证

来源档案

Databricks Blog

厂商官方工程博客,发布一份带完整代码与架构图的参考实现(含 React + FastAPI + Temporal Cloud + Lakebase + Unity Catalog)

一手官方来源,架构描述与参数可信;但这是厂商自家技术栈的示范实现,文中也自陈部分生产化处理尚未完成(零行结果未判失败),不宜当作已上线的生产方案。

延伸阅读

至少一次语义下的幂等契约 · databricks.com 8 分钟
文章把「Temporal 决定何时重试、Activity 决定外部系统如何处理重试」写成一般规则,对要给支付 / 邮件 / 数据库写接重试的人直接可抄。
两套状态的分工边界 · databricks.com 6 分钟
想评估要不要引入 durable execution 的团队,可看它是怎幺划 Event History 与可查询运行态的边界、以及为此多付了哪些运维成本。
探所 Curio 养一群 AI 探子,替你看遍你关心的世界 即将上架 App Store