从无状态到有状态:长时运行 Agent 的 5 种架构模式

简介: 本文详解长时运行AI Agent的5大生产级架构模式:Checkpoint-and-Resume实现断点续传;Delegated Approval支持原地暂停与人机协同;Memory-Layered Context分层管理长期记忆与工作记忆;Ambient Processing赋能无提示事件驱动;Fleet Orchestration实现多Agent协同治理——让Agent真正成为可靠、有状态、可运维的系统进程。

生产里真正有分量的工作流是能批量处理几千份保险理赔、跑完一周的销售触达节奏、跨系统对账等等的复杂工作,而这些是没办法塞进一次对话轮次里。因为他们的处理时间以天为单位,而不是秒。

一旦动手做这类长时运行的 agent,会遇到一个问题:大多数 agent 架构本质上是无状态的,每次交互都从数据库里把 context 重新拼回来。拼回来的过程中推理链丢了,软信号也丢了,那些让前一步决策看起来合理的置信度梯度也丢了。

Cloud Next 26 上 Google 宣布 Agent Runtime 开始支持长时运行 agent,状态可以维持七天。围绕这次发布,本文整理出五种把生产系统和脆弱 demo 区分开来的设计模式。

Fleet Orchestration

跨天工作流里最常见的崩盘方式就是 context 丢失。一个 agent 花四个小时处理 400 份文档,跑到第 301 份时报错——没有 checkpointing,整个流程要从零再来。

长时运行 agent 必须把执行状态持久化到一个安全的 cloud sandbox 里。agent 拥有 bash 命令权限和一个沙箱化的文件系统,所以可以把中间结果落到磁盘,把处理日志写下来这样故障时也能体面地恢复。

所以这里就需要把 agent 当成一个长期跑着的服务进程,而不是一次请求处理函数。就像写一条要吞掉几百万条记录的数据管道——进度要 checkpoint,部分失败要兜住,幂等性要保证。

每 30 份文档落一次盘,是在持久性和计算开销之间一个比较舒服的折中。出错时agent 直接从最近一次保存的状态接着跑。

# Pattern 1: Checkpoint-and-Resume
def process_documents(docs, checkpoint_file="state.json"):
    state = load_checkpoint(checkpoint_file) or {"processed": 0, "results": []}

    for i in range(state["processed"], len(docs)):
        try:
            result = agent.analyze(docs[i])
            state["results"].append(result)
            state["processed"] = i + 1

            # 每 30 份文档执行一次 checkpoint
            if (i + 1) % 30 == 0:
                save_checkpoint(checkpoint_file, state)

        except Exception as e:
            save_checkpoint(checkpoint_file, state) # 在崩溃前保存
            raise e

    return state["results"]

Delegated Approval(Human-in-the-Loop)

几乎每个框架都在宣传自己支持 human-in-the-loop。但落到实现层面,多数版本都很糙:把状态序列化成 JSON,发一个 webhook 出去,剩下的就指望有人会去看。

问题会越积越多。

JSON 序列化会丢掉那些隐式的推理 context;通知则要和几十条其他告警一起抢眼球。等到几小时后终于有人回过头来响应,agent 又得反序列化、重建 context,并默认期间一切照旧——这是个非常脆弱的假设。

长时运行 agent 的处理方式不一样。走到审批节点时,它就在原地暂停。整套执行状态完整保留下来:推理链、工作记忆、tool call 历史、待执行的动作,全都不动。

关键在于资源效率。agent 等 24 小时让人来点 Approve,这 24 小时对 agent 是死时间,对人是工作时间。暂停期间 agent 不消耗任何计算;亚秒级冷启动让恢复几乎没有延迟代价。

# Pattern 2: Delegated Approval
@agent.tool
def request_human_approval(action_plan: dict, context: str):
    """暂停 agent 执行并请求人类审核。"""
    approval_id = db.create_approval_request(
        plan=action_plan,
        context=context,
        status="pending"
    )

    # 将执行控制权交还给 orchestrator
    # 在 webhook 触发之前,agent 消耗 0 计算资源
    raise SuspendExecution(
        reason="human_approval_required",
        resume_webhook=f"/api/resume/{approval_id}"
    )

Memory-Layered Context

跑七天的 agent 需要的远不止 session 状态。它得记住前几次 session 里的东西、几周前用户留下的偏好,以及那些任何单次对话都装不下的组织信息。

Memory-Layered Context 把长期存储和工作记忆拆开,由严格的策略来管。

分层记忆在这里就变成必需品。一边是 Memory Bank——长期记忆,动态地把对话整理沉淀下来;一边是 Memory Profiles——工作记忆,专门服务那些低延迟、高准确度的细节查询。

但其中藏着一个坑:记忆漂移。agent 从少数几次非典型交互里"学到"某个程序性捷径可以接受,接下来可能就把这个捷径泛化到所有场景。多个 agent 共用同一个记忆池时,数据泄漏也是个真实存在的风险。

不能放任 agent 随便往向量数据库里写东西。治理它们的方式应当和治理 microservices 一样,由三个核心组件支撑:

Agent Identity:相当于 agent 的 IAM,决定它能访问哪些 memory bank 和 tool。

Agent Registry:相当于服务发现,记录哪些 agent 在跑、它们的 prompt 版本是哪一版、当前处于什么执行状态。

Agent Gateway:相当于 API gateway,根据组织策略评估每一次请求——比如阻止 agent 把 PII 写入长期记忆。

# Pattern 3: Memory-Layered Context
class AgentGateway:
    def __init__(self, identity_provider, policy_engine):
        self.iam = identity_provider
        self.policies = policy_engine

    def write_to_memory_bank(self, agent_id, data):
        # 1. 验证身份
        if not self.iam.can_write(agent_id, "long_term_memory"):
            raise UnauthorizedError()

        # 2. 执行策略(例如 PII 脱敏)
        safe_data = self.policies.redact_pii(data)

        # 3. 写入受管理的存储
        vector_db.upsert(
            collection="memory_bank",
            metadata={"source_agent": agent_id},
            content=safe_data
        )

Ambient Processing

不是所有长时运行 agent 都和人类有交互。还有一类是 ambient 的:盯着事件、消费数据流、在后台直接动手,全程不需要任何用户提示。

Ambient Processing 让 agent 在无人值守状态下持续运行,按事件触发动作。

举个例子:一个直接挂在

Pub/Sub

流上的内容审核 agent。它会跑上好几天,处理源源不断进来的用户内容,自己维护一份关于趋势和模式的状态,只在确实需要时才升级给人类。

这里最关键的架构决定又回到治理上。内容策略不应该被硬编码进 agent 本身,而应该在 Agent Gateway 里定义。策略一变,只更新一次 Gateway,整个 fleet 的 ambient agent 立刻拿到新规则。

# Pattern 4: Ambient Processing
async def ambient_moderation_agent(pubsub_stream):
    """持续运行,对事件做出反应而无需提示。"""
    async for event in pubsub_stream.listen("user_content"):

        # agent 自主评估内容
        analysis = await agent.evaluate(event.text)

        if analysis.flagged:
            if analysis.confidence > 0.95:
                # 高置信度时自动处理
                await api.ban_user(event.user_id)
            else:
                # 升级边缘案例
                await request_human_approval(
                    action_plan={"action": "ban", "user": event.user_id},
                    context=analysis.reasoning
                )

Fleet Orchestration

生产里很少出现一个 agent 单打独斗的情况。常见的形态是:一个 coordinator agent 把子任务分派给若干 specialist agent,每个 specialist 独立运行,时长各不相同。

Fleet Orchestration 用一个 coordinator 来统筹一群独立的 specialist agent。

拿销售开发流程举例:Coordinator Agent 把工作分给五个 specialist:Research Agent 负责收集每个 lead 的公开数据;Scoring Agent 按匹配度和意图信号给 lead 打分排序;Draft Agent 写出第一封个性化消息;Outreach Agent 选合适的渠道把消息发出去;Reporting Agent 收尾,把整轮跑完后的结果汇总。

每个 specialist 拥有独立的 Agent Identity,因此只能访问自己需要的资源;通过 Agent Gateway 走自己的策略校验;在 Agent Registry 里有独立条目。Coordinator Agent 维护全局状态,处理 specialist 之间的交接。

把每个 specialist 当成独立单元,一个直接的好处是更新可以分开做。Scoring Agent 的排序逻辑要改进,发新版本上去就行,不会牵连到 fleet 里的其他成员。

# Pattern 5: Fleet Orchestration
async def coordinator_agent(lead_list):
    results = []

    for lead in lead_list:
        # 1. Research Agent — 收集 lead 的公开数据
        research = await fleet.call("research_agent", target=lead)

        # 2. Scoring Agent — 根据匹配度和意图信号对 lead 排名
        score = await fleet.call("scoring_agent", data=research)

        if score > 80:
            # 3. Draft Agent — 撰写个性化的首条消息
            draft = await fleet.call("draft_agent",
                                     context=research,
                                     tone="professional")

            # 4. Outreach Agent — 通过合适的渠道发送消息
            await fleet.call("outreach_agent",
                             lead=lead,
                             message=draft)

            results.append({"lead": lead, "score": score, "draft": draft})

    # 5. Reporting Agent — 总结整个运行过程
    await fleet.call("reporting_agent", summary=results)

总结

这五种模式反映的是 AI agent 在真实世界里运转方式的一次推进。它们也直接对应着 agentic AI 的下一次转向——agent 不再只是被动响应,而是能够持续存在、自我治理、规模化协同。

底层原则其实很简单:结构化、有状态、被治理的执行,比无状态的请求-响应循环是更基础。

把确定性的 checkpointing 和概率性的推理拆开;用原地暂停取代序列化成 JSON 再恢复;让记忆通过身份和策略来约束,而不是盲目信任 agent 的写入行为——做到这几点,工作流里的推理链就能被保留下来,必要时还能复原。

agent 本身就是进程。其余的都是脚手架。

生产级 AI 不是单轮里把 agent 调得多聪明,而是看它能否在很多轮、很多天、很多次交接之间保持可靠。把已知和推断区分清楚的团队,以及一开始就把治理嵌进系统而不是事后再补的团队,会决定公司未来怎么用 AI。

https://avoid.overfit.cn/post/101285ed3b054326a6b07c84a1453fcd

作者:Ana Bildea, PhD

目录
相关文章
|
3月前
|
存储 设计模式 缓存
为生产级 AI Agent 构建持久化记忆:五阶段流水线与四种设计模式
LLM Agent需持久化记忆以支撑连续对话、用户画像、知识沉淀与崩溃恢复。但满上下文方案成本高、延迟大、易出错。本文提出五阶段流水线(抽取→整合→存储→检索→遗忘)与四种记忆类型(工作/情景/语义/过程记忆),结合结构化状态+向量搜索等设计模式,实现高效、可控、可审计的生产级记忆系统。
1077 9
为生产级 AI Agent 构建持久化记忆:五阶段流水线与四种设计模式
|
6月前
|
前端开发 算法
深度研究Agent架构解析:4种Agent架构介绍及实用Prompt模板
本文系统梳理了深度搜索Agent的主流架构演进:从基础的Planner-Only,到引入评估反馈的双模块设计,再到支持层次化分解的递归式ROMA方案。重点解析了问题拆解与终止判断两大核心挑战,并提供了实用的Prompt模板与优化策略,为构建高效搜索Agent提供清晰路径。
2366 10
深度研究Agent架构解析:4种Agent架构介绍及实用Prompt模板
|
4月前
|
存储 人工智能 NoSQL
理解 Agent 记忆:从无状态模型到持久化记忆架构
大语言模型本质无状态,对话历史无法自动留存。Agent需长期记忆支撑连续性任务,但简单堆砌上下文不可行。本文系统阐释Agent记忆的四层架构(工作/情景/语义/程序记忆),及其写入、检索与遗忘机制,并对比Mem0、Letta等主流方案,揭示记忆正成为AI Agent技术栈中独立、标准的关键基础设施。
1138 7
理解 Agent 记忆:从无状态模型到持久化记忆架构
|
5月前
|
存储 人工智能 搜索推荐
AI Agent 记忆系统:从短期到长期的技术架构与实践
本文系统阐述AI Agent记忆系统的核心技术:短期记忆(会话级上下文管理)与长期记忆(跨会话知识沉淀)。涵盖上下文工程策略(压缩、卸载、隔离)、Record/Retrieve架构、主流框架(ADK/LangChain/AgentScope)实现差异,及Mem0等开源方案集成,并探讨MaaS、多模态记忆等前沿趋势。(239字)
AI Agent 记忆系统:从短期到长期的技术架构与实践
|
6月前
|
设计模式 人工智能 架构师
从模块到良好:如何设计一个生产级的Agent架构?
本文探讨生产级Agent架构设计,涵盖感知、决策、记忆与执行四大核心模块,强调分层解耦、多Agent协同及确定性保护、状态一致性等非功能性约束,助力AI系统从“代码驱动”迈向“意图驱动”。
1694 3
|
SQL 人工智能 JSON
【AI大模型应用开发】2.2 Function Calling连接外部世界 - 【实战】查询数据库
【AI大模型应用开发】2.2 Function Calling连接外部世界 - 【实战】查询数据库
748 0
|
4月前
|
存储 人工智能 自然语言处理
MIT论文解读:LLM 会被自身历史回复拖累 ,上下文污染会导致多轮对话质量衰减
MIT 2026年重磅论文揭示:AI多轮对话中,保留自身历史回复反而导致“上下文污染”,引发幻觉累积与质量滑坡。实验证明,移除AI过往回复可缩减上下文达10倍,70%轮次质量不变。这挑战了行业默认设计,呼吁从“堆叠历史”转向“智能省略”。
862 2
MIT论文解读:LLM 会被自身历史回复拖累 ,上下文污染会导致多轮对话质量衰减
|
2月前
|
人工智能 API 网络安全
阿里云 OpenClaw(Clawdbot)汉化中文版全场景部署指南:一键脚本+Docker+npm三模式适配
OpenClaw(曾用名Clawdbot/Moltbot)作为GitHub星标120k+的开源个人AI助手平台,凭借“本地运行+多渠道交互+任务执行”的核心优势,成为AI工具领域的热门选择。其支持通过WhatsApp、Telegram、Discord等聊天软件触发邮件管理、日历规划、网页操作等实际任务,真正实现“聊天即操作”。但原版全英文界面给中文用户带来了使用门槛,开源社区推出的第三方汉化中文版完美解决这一问题——CLI命令行与Dashboard网页控制台深度汉化,每小时自动同步官方最新代码,提供稳定版与开发版双选择,开箱即用无需手动打补丁。本文将详细拆解Ubuntu环境配置、一键脚本/NP
425 0
|
3月前
|
人工智能 数据可视化 开发者
阿里云 OpenClaw / Hermes Agent 一键快速部署方案详解
OpenClaw与Hermes Agent是两大热门开源框架,支持文件整理、浏览器操控、代码编写及自进化。阿里云推出一键部署方案,仅两步即可快速启用,零代码、可视化配置,新用户享特惠。
541 135