调用远程 Agent API,是过去两年开发者把 AI 嵌入应用的主流路径。这条路走得越深,痛点越明显:每次请求都要跨网络往返,延迟从几百毫秒飙到数秒;定制只能靠 prompt 拼凑,想改推理策略就得和平台方博弈;一旦服务端限流或断线,你的产品就跟着停摆。Google 在 I/O 2026 上发布的 Antigravity SDK,给出了另一条路——用纯 Python 在本地构建、定制和部署 Agent,20 行代码就能跑起来。
远程 Agent 的三道硬伤
先看问题。假设你用某家 Agent 平台的 REST API:
import requests
resp = requests.post(
"https://agent-platform.example.com/v1/run",
json={"prompt": user_input, "tools": ["search", "calculator"]},
headers={"Authorization": "Bearer <API_KEY>"},
)
result = resp.json()
这段代码背后藏着三个麻烦:
- 延迟不可控——每轮推理都要走一次 HTTPS 往返,工具调用更是多轮交互,网络抖动直接拖垮体验。
- 定制天花板低——你只能选平台预设的 tool 列表和模型参数,想加一个私有数据源检索,得等平台开放新插件。
- 强依赖网络——离线场景(边缘设备、内网环境)直接不可用,服务端故障时你没有任何 fallback。
Antigravity SDK 的核心思路:把 Agent 的编排引擎从云端搬到你的进程里。模型推理仍然可以调用远程 LLM,但工具注册、任务拆解、多轮循环这些编排逻辑全部本地执行——你拿到了完整的控制权。
20 行代码跑起一个本地 Agent
下面是基于 Antigravity SDK 的最小可运行示例。注意:SDK 的具体 API 签名以 Google 官方文档为准,以下代码根据发布摘要的描述构建,展示了核心用法模式,运行前需 pip install antigravity 并配置模型访问凭证。
from antigravity import Agent, tool, LocalRuntime
# 1) 定义工具——纯 Python 函数,自动被 SDK 识别
@tool(description="查指定城市的实时天气")
def get_weather(city: str) -> str:
# 实际项目中替换为真实天气 API 调用
return f"{city}:晴,25°C,湿度 40%"
@tool(description="做四则运算")
def calculate(expression: str) -> str:
return str(eval(expression)) # 生产环境请用安全解析库
# 2) 创建 Agent,声明可用工具和模型
agent = Agent(
name="weather_assistant",
tools=[get_weather, calculate],
model="gemini-2.5-flash", # 本地编排,模型推理走远程
)
# 3) 本地运行时——零网络依赖的编排引擎
runtime = LocalRuntime()
# 4) 执行任务
result = runtime.run(agent, "北京今天天气怎么样?如果气温乘以2是多少?")
print(result)
算上 import 和空行,刚好 20 行。几个值得注意的设计决策:
@tool装饰器把普通 Python 函数变成 Agent 可调用的工具,函数签名即接口定义,不需要额外写 JSON schema。LocalRuntime是关键——它负责在本地进程里完成"观察→思考→行动→观察"的循环,不依赖任何外部编排服务。- 模型参数只指定模型名,推理请求按 SDK 内置策略发出;你也可以换成本地 Ollama 端点,实现完全离线运行。
从 20 行到生产级:定制点在哪?
20 行能跑,但真实项目要的是可控。Antigravity SDK 的本地架构让几个关键定制变得自然:
自定义推理策略
远程平台通常只提供"单次调用"或固定 ReAct 循环。本地编排意味着你可以插手每一步:
from antigravity import Agent, LocalRuntime, Strategy
# 自定义策略:限制最大工具调用轮次,防止无限循环
class ConservativeStrategy(Strategy):
max_turns = 5 # 最多 5 轮工具调用
def should_continue(self, context):
if context.turn_count >= self.max_turns:
return False # 强制收束,返回当前最佳答案
return super().should_continue(context)
agent = Agent(
name="safe_assistant",
tools=[get_weather, calculate],
model="gemini-2.5-flash",
strategy=ConservativeStrategy(),
)
result = LocalRuntime().run(agent, "复杂查询...")
接入私有数据源
远程平台的 plugin 生态再丰富,也覆盖不了你的内部知识库。本地 Agent 直接调用你的 Python 函数,零适配成本:
@tool(description="查询公司内部订单状态")
def query_order(order_id: str) -> str:
# 直接读本地数据库,不需要暴露到公网
import sqlite3
conn = sqlite3.connect("orders.db")
row = conn.execute(
"SELECT status, amount FROM orders WHERE id=?", (order_id,)
).fetchone()
conn.close()
return f"订单 {order_id}:状态 {row[0]},金额 {row[1]}"
agent = Agent(
name="order_bot",
tools=[query_order],
model="gemini-2.5-flash",
)
函数跑在你自己的进程里,数据库连接不需要过公网——这是远程 API 方案做不到的。
离线与边缘部署
把 model 参数指向本地推理端点,整个 Agent 就完全离线:
agent = Agent(
name="edge_agent",
tools=[get_weather, calculate],
model="ollama://localhost:11434/qwen2.5:7b", # 本地 Ollama
)
适合工厂产线、车载系统、船舶等网络不稳定场景。
选 Antigravity 之前,想清楚这几件事
| 维度 | 远程 Agent API | Antigravity 本地 SDK |
|---|---|---|
| 延迟 | 每轮 HTTPS 往返 | 编排零网络延迟,推理仍可远程 |
| 定制 | 受平台插件限制 | Python 函数即工具,无限扩展 |
| 离线 | 不支持 | 可完全离线(配本地模型) |
| 运维成本 | 平台托管 | 你自己管进程和模型端点 |
| 多租户隔离 | 平台内置 | 需自行设计并发与资源隔离 |
本地编排不是银弹。你需要自己处理:
- 模型端点的可用性——如果推理仍走远程 LLM,那部分网络依赖依然存在;完全离线则要自建推理服务。
- 并发与资源——本地 Agent 跑在你的进程里,高并发场景需要设计 worker 池或异步调度。
- 安全边界——
@tool函数拥有和你应用相同的权限,计算工具示例里用了eval,生产环境务必替换为安全解析。
上手清单
pip install antigravity(SDK 发布后从 PyPI 安装)- 配置模型访问:Google Gemini 需 API Key;本地模型需先部署 Ollama 或 vLLM
- 从 20 行最小示例开始,先跑通一个单工具 Agent
- 逐步加入私有数据源工具和自定义 Strategy
- 压测并发场景,决定是否需要异步 Runtime 或多进程部署
Antigravity 的价值不在于"20 行"这个数字,而在于它把 Agent 的编排权从平台交回了开发者。当你需要低延迟、深度定制、或离线运行时,这个本地路径值得认真评估。