资讯动态

Clawith架构深度剖析:FastAPI + LangGraph + PostgreSQL 持久化检查点执行链路(初学者完整指南)

发布时间:2026/9/25 3:57:22 来源:尧图企业网站定制
Clawith架构深度剖析FastAPI LangGraph PostgreSQL 持久化检查点执行链路初学者完整指南【免费下载链接】ClawithYour First AI Agents Company项目地址: https://gitcode.com/gh_mirrors/cl/ClawithClawith 是一款开源的多智能体协作平台Your First AI Agents Company它使用FastAPI构建 API 服务用LangGraph编排智能体执行逻辑并依赖PostgreSQL持久化检查点Durable Checkpoint让每个 AI 智能体拥有持久身份、长期记忆和跨会话的可靠状态。本文将带你完整理解这条从收到消息到落盘存档的执行链路无需深厚代码基础也能读懂。一、为什么选择这三件套很多初学者会问一个 AI 智能体平台凭什么要同时用到 Web 框架、图编排引擎和数据库三种技术答案在于职责分离技术栈在 Clawith 中的角色解决什么问题FastAPI统一 API 入口聊天、任务、触发器、IM 渠道高并发接入、鉴权、多租户隔离LangGraph智能体执行内核的控制流编排模型调用 → 工具执行 → 校验的状态机流转PostgreSQL持久化检查点存储langgraph_checkpoint模式进程重启、崩溃后智能体能接着上次继续三者各司其职FastAPI 负责接单LangGraph 负责干活PostgreSQL 负责记账。这就是 Clawith 架构最核心的设计哲学。二、执行链路全景图一条消息的旅程根据官方架构文档 01-architecture-overview.mdClawith 的所有持久化 Agent 逻辑都走同一条链路Web / 渠道 / 任务 / 触发器 / 心跳 / A2A │ ▼ RuntimeCommandIntake命令接入层 AgentRun AgentRunCommand写入数据库 │ ▼ Command Worker按线程串行执行 │ ▼ Clawith Agent Kernelcontext - model - tool - verify │ ▼ LangGraph PostgreSQL 持久化检查点整个过程可以拆成5 个关键步骤1️⃣ 请求接入所有入口殊途同归无论是网页聊天、Slack/Discord/飞书等 IM 渠道、定时触发器还是 Agent 之间互发消息A2A所有入口都不直接干活而是把请求转换成一条持久化命令start、resume、cancel三种写入agent_run_commands表。这一层的设计来自 02-backend-runtime-boundary.md 中的边界规则API 适配器绝不直接调用执行节点也不允许修改检查点状态。这样无论前端加多少种入口底层执行逻辑永远只有一份。2️⃣ 命令收件箱像邮件一样可靠agent_run_commands表就是一个收件箱——命令被接收后不会丢失即使服务重启未处理的命令依然躺在数据库里等待被领取。这是典型的At-Least-Once 投递设计为后面的幂等重试打下基础。3️⃣ Command Worker串行执行守门员command_worker.py 是整条链路的心脏。它的职责是从数据库认领一条待执行命令对同一会话Thread加锁串行执行避免两条消息交叉执行导致状态错乱调用 LangGraph 图执行执行完成后做幂等对账消息投递、通知推送可安全重试。 关键原则检查点是唯一权威状态。即使产品侧同步失败已提交的检查点依然有效对账逻辑可以无限重试直到一致。4️⃣ LangGraph 执行内核确定性控制流graph.py 定义了智能体运行的状态机节点依次为compact— 按需压缩过长的上下文model— 调用 LLM 模型tool— 执行工具调用带重试策略verify— 校验结果wait/terminal— 等待外部输入或进入终态。每个节点转换都会把状态写入检查点。这意味着模型调用到一半进程挂了没关系重启后 Worker 从上一个检查点resume继续就像游戏自动存档一样。5️⃣ PostgreSQL 检查点智能体的长期记忆checkpointer.py 使用langgraph-checkpoint-postgres的AsyncPostgresSaver把每一步执行状态序列化存入独立的langgraph_checkpointschema支持加密序列化防止状态泄露。这里有一个初学者容易混淆的概念Thread ≠ Run。一条 Thread会话线程上可以跑多个逻辑 Run直聊场景多个 Run 共享一个 Thread而群组和后台任务则各自独立。这个映射关系由runtime_thread_config()统一管理。三、四类事实严格分家稳定性密码Clawith 架构中最值得初学者记住的一条设计原则是四类事实分离详见 01-architecture-overview.md事实类型归属说明产品记录产品数据库表租户、用户、智能体、会话、群组命令收件箱agent_run_commands表已接收的 start/resume/cancel执行生命周期LangGraph 检查点PostgreSQL 持久化状态用户投递产品对账器幂等消息投递与外部通知铁律只有一条产品侧投影永远不能成为第二套 Agent 状态机。API 层不允许直接改检查点生命周期字段。这种单一事实来源设计正是企业级 Agent 平台区别于 Demo 级聊天机器人的关键。四、多租户隔离企业级的底线作为多租户系统03-multi-tenant-data-model.md 规定了三层隔离数据库层所有查询必须显式带上tenant_id过滤缓存层Redis 键统一使用tenant:{tenant_id}:{key}格式后台任务层Worker 执行前必须校验目标 Run 的租户归属。五、小结三条主线串起整个架构 FastAPI把一切入口聊天/渠道/触发器/A2A统一翻译成持久化命令LangGraph以确定性状态机驱动model → tool → verify循环每步都落检查点PostgreSQL既存命令收件箱又存执行状态保证永不丢任务、永远可续跑。理解了这条命令收件箱 → 串行 Worker → 检查点续跑的链路你就掌握了 Clawith 运行时 90% 的设计思想。想深入源码从这三个文件入手即可执行图定义backend/app/services/agent_runtime/graph.py命令工作器backend/app/services/agent_runtime/command_worker.py检查点接线backend/app/services/agent_runtime/checkpointer.py【免费下载链接】ClawithYour First AI Agents Company项目地址: https://gitcode.com/gh_mirrors/cl/Clawith创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑