Gemini Enterprise Agent Platform 展示的 13 个动手演示,不只是 13 个彼此独立的样例,而是一条完整的工程路径:用 ADK 编写智能体,通过 MCP 和 A2A 接入工具与其他智能体,部署到托管运行时,再补齐持久状态、安全治理、可观测性和持续评估。
真正值得关注的变化,是智能体开发开始从“写一个能回答问题的提示词”转向“交付一个可暂停、可审计、可恢复、可评测的生产系统”。
四层能力拼出完整生命周期
这组演示大致可以分为构建、扩展、治理和优化四层。
构建层以代码优先的 ADK 为起点。开发者可以先创建基础 Gemini 对话智能体,再逐步加入图工作流、MCP 工具和 A2UI 动态界面。其中,费用审批案例包含了一条很有代表性的执行链:低金额费用由普通 Python 规则自动批准;高金额费用先经过 PII 脱敏和提示词注入防护,再交给 Gemini 分析合规性,最后暂停并等待人工确认。
扩展层解决状态与运行时间问题。Memory Bank 用于保留跨会话偏好,Agent Runtime 承担基础设施、扩缩容和会话管理。对于持续数天甚至数周的流程,演示给出了三种架构模式:持久状态机、事件驱动的空闲等待,以及带持久会话的检查点恢复。容器重启不能成为业务流程丢失的理由。
治理层覆盖开发和运行两个阶段。开发阶段可以采用 TDD、STRIDE 威胁建模、Semgrep 提交前检查和 PreToolUse 工具调用门禁;运行阶段则通过 Agent Gateway、独立身份、mTLS、IAP、IAM 和 Model Armor控制访问,并检查提示词注入与数据泄漏风险。
优化层把链路追踪和评测数据重新送回开发环节。五阶段质量闭环包括准备数据、运行推理、自动评分、分析失败聚类和定向优化。它解决的是一个常见问题:提示词在三个手工样例上变好了,却可能悄悄破坏另外十个场景。
协议比框架统一更现实
企业内部很难只保留一种语言或智能体框架。一个团队可能使用 Python 和 ADK,另一个团队维护 Go 服务,还有团队已经投入 LangGraph 或 CrewAI。与其强制重写,平台展示的方向是用协议明确边界。
MCP 面向“智能体如何调用数据和工具”。同一个 MCP 工具可以封装 BigQuery 查询、文件检索或内部 API,并被不同厂商、不同框架的客户端复用。
A2A 面向“智能体如何与智能体协作”。例如,Python 智能体先从合同中提取条款,Go 智能体再根据公司政策验证条款。ADK 的 RemoteA2aAgent 可以把符合 A2A 协议的远程服务包装成本地子智能体。更复杂的情况下,ADK 可以充当控制平面,把规划交给 LangGraph,把执行交给 CrewAI,并在步骤失败后重新规划。
这种架构的关键不在于框架名称,而在于稳定契约:输入输出模式、身份、超时、幂等规则、错误语义和审计字段都需要明确。
可以这样实践:先实现可暂停的审批骨架
下面是一个简化的本地示例,用于验证“事件进入、规则分流、人工暂停、恢复执行”这条核心链路。它不是 Agent Platform 或 ADK 官方 API 的复刻,但可以作为接入 Gemini、Pub/Sub 和持久状态存储之前的最小原型。
创建 requirements.txt:
fastapi==0.115.12
uvicorn==0.34.2
pydantic==2.11.4
创建 app.py:
from enum import Enum
from typing import Literal
from uuid import uuid4
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
app = FastAPI(title="Durable Approval Demo")
class Status(str, Enum):
APPROVED = "approved"
WAITING = "waiting_for_human"
REJECTED = "rejected"
class Expense(BaseModel):
employee: str
amount: float = Field(gt=0)
purpose: str
class Decision(BaseModel):
decision: Literal["approve", "reject"]
reviewer: str
sessions: dict[str, dict] = {}
AUTO_APPROVE_LIMIT = 1000.0
@app.post("/expenses")
def submit_expense(expense: Expense):
session_id = str(uuid4())
if expense.amount <= AUTO_APPROVE_LIMIT:
state = {
"id": session_id,
"status": Status.APPROVED,
"expense": expense.model_dump(),
"reason": "amount_below_auto_approval_limit",
}
else:
# Production flow: redact PII and inspect prompt injection here,
# then persist a model-generated compliance assessment.
state = {
"id": session_id,
"status": Status.WAITING,
"expense": expense.model_dump(),
"reason": "human_review_required",
}
sessions[session_id] = state
return state
@app.post("/sessions/{session_id}/resume")
def resume_session(session_id: str, decision: Decision):
state = sessions.get(session_id)
if not state:
raise HTTPException(status_code=404, detail="session not found")
if state["status"] != Status.WAITING:
raise HTTPException(status_code=409, detail="session is not paused")
state["status"] = (
Status.APPROVED if decision.decision == "approve" else Status.REJECTED
)
state["reviewer"] = decision.reviewer
return state
安装依赖并启动服务:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app:app --reload --port 8000
提交一笔需要人工审批的费用:
curl -s http://127.0.0.1:8000/expenses \
-H 'Content-Type: application/json' \
-d '{"employee":"alice","amount":1800,"purpose":"customer workshop"}'
从响应中取出 id,然后恢复暂停的流程:
SESSION_ID='替换为上一步返回的 id'
curl -s "http://127.0.0.1:8000/sessions/${SESSION_ID}/resume" \
-H 'Content-Type: application/json' \
-d '{"decision":"approve","reviewer":"manager@example.com"}'
进入生产环境前,需要把内存字典替换为事务型持久存储,为事件增加幂等键,并将安全检查放在调用大模型和工具之前。之后才适合接入 Gemini 合规分析、Pub/Sub 事件、OIDC 身份验证和托管运行时。
编辑器内自动化不能替代工程边界
Agents CLI 可以安装到 Codex、Claude Code 等编码智能体中,并提供面向 ADK 与 Agent Platform 的技能。开发者可以用自然语言要求编码智能体生成脚手架、执行评测、准备部署和查看监控,从而减少在编辑器、控制台和脚本之间切换的成本。
不过,生成部署配置并不等于完成生产设计。团队仍应明确以下检查项:
- 所有长流程是否拥有持久状态、检查点和幂等事件处理。
- 高风险工具是否经过调用前授权,而不是仅依赖模型自行判断。
- MCP 与 A2A 边界是否定义身份、超时、重试和错误契约。
- 人工审批是否记录操作者、原始输入、模型判断和最终决定。
- 每次提示词、模型或工具变更是否运行固定评测集。
- Trace、日志和分析数据是否避免保存不必要的敏感信息。
采用这套平台时,可以先完成基础 ADK 智能体,再选择一个真实但范围受控的审批流程验证暂停与恢复。等状态、安全和评测链路稳定后,再引入跨框架编排。这样更容易区分模型效果问题、协议问题和运行基础设施问题,也能避免把一个演示性质的对话机器人直接推成关键业务系统。