Antigravity 2.0:Agent原生开发平台架构与实战指南 1. 项目概述这不是一个“新浏览器插件”而是一套重构开发范式的底层工具链Antigravity 2.0 这个名字听起来像科幻小说里的反重力引擎但实际它代表的是 Google 内部代号为“Antigravity”的下一代智能体Agent原生开发平台的公开预览版本。注意关键词——“Agent 原生”不是在现有应用上加个 AI 功能按钮而是从代码结构、执行模型、状态管理到调试方式全部围绕“自主决策、多步推理、工具调用、环境感知”这四个核心能力重新设计。我第一次看到内部文档时第一反应是这根本不是 SDK而是一套新的操作系统内核思维。它把传统 Web 开发中“用户点击 → 前端请求 → 后端处理 → 返回 HTML”的线性流程彻底打碎重组成“用户意图 → Agent 解析 → 多工具并行调用 → 中间状态持久化 → 自主修正路径 → 最终交付结果”的网状闭环。你不需要再写一堆 if-else 判断用户下一步要干嘛Agent 会自己规划、试错、回滚、重试。比如你输入“帮我对比三款轻薄本的续航和散热数据并生成购买建议”Antigravity 2.0 的 Agent 不会只调一次 API 就完事它会自动拆解为1识别品牌型号 → 2并行爬取京东/官网/专业评测站 → 3清洗非结构化文本中的电池容量、风扇转速、表面温度等字段 → 4发现某款机型官网未标散热参数主动切换到 YouTube 视频字幕提取 → 5将所有数据归一化后生成带置信度标注的表格 → 6最后用自然语言组织成带风险提示的建议。整个过程对开发者是透明的你定义的是“目标”和“可用工具”而不是“每一步怎么走”。这也是为什么它强调 CLI 和 SDK 双轨并行CLI 是给工程师快速验证 Agent 行为逻辑的“手术刀”SDK 是给产品团队嵌入业务系统的“静脉注射器”。它不解决“怎么让 Chrome 浏览器更快”而是解决“怎么让 Chrome 浏览器里的每一个标签页都变成一个能主动帮你做事的数字员工”。所以别被“Google”前缀误导去查账号验证或设备绑定问题——那些是安全层的老问题而 Antigravity 2.0 是在安全层之上重新定义“软件该长什么样”的问题。2. 核心架构解析为什么必须抛弃“前端后端”思维拥抱“Agent Runtime Tool Registry”模型2.1 三层运行时模型Runtime、Orchestrator、Tool Layer 的职责边界Antigravity 2.0 的核心不是一堆 API而是一个分层明确的运行时环境。我把它拆成三个不可替代的层Runtime 层运行时这是 Agent 的“身体”。它不处理任何业务逻辑只负责内存管理、状态快照、中断恢复、超时熔断。举个例子当你让 Agent 执行一个需要 8 分钟的批量数据清洗任务Runtime 会在第 3 分钟自动保存当前中间状态比如已处理 127 条记录、缓存了 3 个临时文件句柄如果此时进程被 kill重启后它能从第 128 条继续而不是从头开始。这个能力直接决定了 Agent 能否真正落地到生产环境——没有状态持久化的 Agent就是个高级玩具。Runtime 还内置了资源配额系统你可以给每个 Agent 实例分配 CPU 时间片、内存上限、网络请求数避免某个失控的 Agent 拖垮整台服务器。Orchestrator 层编排器这是 Agent 的“大脑”。它不写代码只做两件事目标分解和路径规划。当你输入“分析上周销售数据异常点”Orchestrator 会先调用内置的 LLM 模块默认是 Gemini 2.0 Pro但可替换将这句话拆解为原子任务“1连接数据库获取 sales_2024_w23 表2计算各品类销售额环比3识别环比跌幅 15% 的品类4对这些品类调取客服工单系统提取关键词云5交叉比对发现‘物流延迟’提及率飙升”。关键在于它不是按顺序执行而是构建 DAG有向无环图任务 1 和任务 4 可以并行任务 5 必须等任务 2 和任务 4 都完成才能启动。这种动态调度能力是传统微服务编排框架如 Airflow无法比拟的因为后者依赖人工预设 DAG而 Orchestrator 是实时生成。Tool Layer工具层这是 Agent 的“手脚”。它不关心工具怎么实现只认一个契约JSON Schema 描述 HTTP/WebSocket 接口 异步回调机制。你写一个 Python 脚本调用天气 API只要它能接收{ city: shanghai }并返回{ temp: 28, condition: sunny }再配上一段 JSON Schema 定义输入输出格式就能注册进 Tool Registry。Antigravity 2.0 自带 12 个开箱即用的工具web_search带防封策略的搜索引擎封装、file_read支持 PDF/Excel/Markdown 的结构化解析、code_execute沙箱内执行 Python/JS 代码、email_send集成 Gmail SMTP、calendar_createGoogle Calendar API 封装等。重点来了这些工具不是静态的。当你注册一个新工具Orchestrator 会自动对其进行“能力画像”——通过测试用例分析它擅长处理什么类型的数据、响应时间分布、失败率模式从而在后续规划中更精准地调用。比如当任务需要高精度数值计算它会优先选择code_execute当需要模糊语义匹配它会倾向web_search。提示很多新手误以为要先学懂 Gemini 或 Llama 才能用 Antigravity这是最大误区。你完全可以用一个 3B 参数的本地小模型如 Phi-3作为 Orchestrator 的推理引擎只要它能输出符合规范的 JSON 计划。Antigravity 的价值恰恰在于把大模型“降维”成一个可插拔的组件而不是让你围着大模型转。2.2 CLI 与 SDK 的本质差异命令行是“调试探针”SDK 是“生产胶水”网络热词里反复出现codex cli、claude cli但 Antigravity 2.0 的 CLI 设计哲学完全不同。它的 CLI 不是用来“调用 AI”的而是用来“观察 Agent 思考过程”的。安装后执行antigravity run --debug plan.json你会看到类似这样的实时输出[2024-06-15 14:22:03] INIT → Loading runtime config from ~/.antigravity/config.yaml [2024-06-15 14:22:05] PLAN → Orchestrator generated 7-step DAG (confidence: 0.92) [2024-06-15 14:22:06] EXEC → Starting parallel execution of tasks [T1, T3, T5] [2024-06-15 14:22:08] STATE → T1 completed (file_read: report_q2.pdf) → extracted 42 tables [2024-06-15 14:22:09] FAIL → T3 failed (web_search: Q2 server outage reports) → rate limit exceeded [2024-06-15 14:22:09] REPLAN → Orchestrator triggered fallback: switching to archive.org search这种粒度的可观测性是任何 Web UI 或 SDK 调用都无法提供的。CLI 就是你手里的万用表用来测量 Agent 的“电流”“电压”“电阻”。而 SDK目前提供 Python/TypeScript/Java 三版则是为生产环境准备的。它的核心抽象是AgentClient和ToolRegistry。你不会直接调用client.run(分析数据)而是这样写# 初始化客户端指定运行时配置 client AgentClient( runtime_configRuntimeConfig( memory_limit_mb512, timeout_sec300, max_retries2 ) ) # 注册自定义工具比如你的内部 CRM 系统 client.register_tool( namecrm_fetch_lead, descriptionFetch lead details from internal CRM by email, schema{ type: object, properties: {email: {type: string}}, required: [email] }, handlerfetch_lead_from_crm # 你的业务函数 ) # 提交任务获得异步任务 ID task_id client.submit_task( goalFind all leads from acme.com who visited pricing page last week, tools[web_analytics, crm_fetch_lead] # 显式声明可用工具 ) # 后续轮询或 webhook 接收结果 result client.get_task_result(task_id)看到区别了吗CLI 是给你看“Agent 怎么想”SDK 是让你控制“Agent 能用什么、不能用什么、用多少资源”。这才是企业级落地的关键——你必须能审计 Agent 调用了哪些内部系统、消耗了多少算力、失败时如何降级。网上那些“get cursor pro for more agent usage”之类的营销话术恰恰暴露了它们缺乏这种生产级管控能力。2.3 与现有生态的兼容性不是取代而是“翻译器”很多人担心 Antigravity 2.0 会和现有技术栈冲突。实测下来它更像是一个智能适配层。比如你已有成熟的 Playwright 自动化脚本不用重写只需用 Antigravity 的tool_wrapper工具包将其封装# 将现有 playwright script 包装成标准工具 antigravity tool wrap \ --name web_scrape_product \ --input-schema {url: string, selector: string} \ --output-schema {title: string, price: number} \ --script ./scrape_product.js执行后它会自动生成一个符合 Tool Layer 规范的 HTTP 服务你甚至可以在 CLI 里直接测试echo {url: https://example.com/product/123, selector: .price} | \ antigravity tool call web_scrape_product # 返回: {title: Wireless Headphones, price: 199.99}同理Android SDK、Playwright CLI、甚至你写的 Bash 脚本都可以通过tool wrap命令秒变 Antigravity 工具。这才是它真正的杀手锏不强迫你放弃现有资产而是把你散落各处的自动化能力统一接入到 Agent 的智能调度网络里。所谓“agent skill”本质上就是你过去几年积累的所有脚本、API、爬虫、数据分析 pipeline 的标准化封装。3. 实操全流程从零搭建一个“会议纪要生成 Agent”含避坑细节与性能调优3.1 环境准备Ubuntu 22.04 下的最小可行安装避开常见陷阱Antigravity 2.0 官方推荐 Ubuntu 22.04 LTS非 20.04因为其 Runtime 依赖较新的 glibc 版本。我在 Ubuntu 20.04 上踩过坑安装后 CLI 启动报symbol lookup error: /lib/x86_64-linux-gnu/libc.so.6: undefined symbol: __libc_preadv2根源是 Runtime 二进制编译时启用了preadv2系统调用而 20.04 的 libc 太旧。解决方案只有两个升级系统或使用 Docker。这里给出纯净的 22.04 安装步骤跳过所有冗余依赖# 1. 安装基础依赖注意不要装 nodejs 或 python3-pipRuntime 自带精简版 sudo apt update sudo apt install -y curl wget gnupg2 software-properties-common # 2. 添加 Antigravity 官方 APT 仓库官方源非第三方镜像 curl -fsSL https://packages.antigravity.dev/apt/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/antigravity-archive-keyring.gpg echo deb [archamd64 signed-by/usr/share/keyrings/antigravity-archive-keyring.gpg] https://packages.antigravity.dev/apt stable main | sudo tee /etc/apt/sources.list.d/antigravity.list # 3. 安装核心包仅 Runtime CLI不含 SDK sudo apt update sudo apt install -y antigravity-runtime antigravity-cli # 4. 验证安装关键检查项 antigravity version # 应输出 v2.0.1build.20240610 antigravity runtime status # 应显示 RUNNING 和内存/线程数注意网上流传的ubuntu google 浏览器sogou 拼音无法生效问题与此完全无关。Antigravity CLI 是纯终端程序不依赖 GUI 输入法框架。如果你在终端里用不了搜狗那是 ibus/fcitx 配置问题和 Antigravity 无关。强行在 CLI 环境里折腾输入法反而会导致antigravity run命令读取到乱码输入而崩溃。安装完成后不要急着写代码。先执行antigravity init创建工作区。它会生成.antigravity/config.yaml全局配置runtime 参数、默认模型端点tools/目录存放你注册的工具定义plans/目录存放任务计划模板JSON 格式3.2 构建第一个 Agent会议纪要生成器真实场景复现我们来做一个实用场景自动处理 Zoom 录制的 MP4 文件生成带发言者标记、关键结论、待办事项的会议纪要。整个流程涉及音视频处理、语音转文字、NLP 提取、内容重组传统方案要写 3 个微服务1 个前端。用 Antigravity我们只写 1 个计划文件 2 个工具封装。第一步封装 FFmpeg 工具处理音视频创建tools/extract_audio.py#!/usr/bin/env python3 import sys import json import subprocess import os # 从 stdin 读取 JSON 输入 input_data json.loads(sys.stdin.read()) video_path input_data[video_path] output_dir input_data.get(output_dir, /tmp) # 确保输出目录存在 os.makedirs(output_dir, exist_okTrue) audio_path os.path.join(output_dir, audio.wav) # 执行 ffmpeg关键参数-ac 1 单声道提升 ASR 准确率-ar 16000 标准采样率 cmd [ ffmpeg, -i, video_path, -ac, 1, -ar, 16000, -vn, -y, audio_path ] result subprocess.run(cmd, capture_outputTrue, textTrue) if result.returncode ! 0: print(json.dumps({error: fFFmpeg failed: {result.stderr}})) else: print(json.dumps({audio_path: audio_path}))然后注册为工具antigravity tool wrap \ --name extract_audio \ --input-schema {video_path: string, output_dir: string} \ --output-schema {audio_path: string} \ --script ./tools/extract_audio.py第二步封装 Whisper 工具语音转文字创建tools/transcribe.py使用 faster-whisper比原始 whisper 快 4 倍#!/usr/bin/env python3 import sys import json from faster_whisper import WhisperModel input_data json.loads(sys.stdin.read()) audio_path input_data[audio_path] # 加载量化模型tiny.en 仅 75MBCPU 可跑 model WhisperModel(tiny.en, devicecpu, compute_typeint8) segments, info model.transcribe(audio_path, beam_size5) # 组织为标准格式带时间戳的发言列表 transcript [] for segment in segments: transcript.append({ start: round(segment.start, 1), end: round(segment.end, 1), text: segment.text.strip(), speaker: SPEAKER_01 # 简化版实际可用 pyannote-audio 做声纹分离 }) print(json.dumps({transcript: transcript}))注册antigravity tool wrap \ --name transcribe_audio \ --input-schema {audio_path: string} \ --output-schema {transcript: [{start: number, end: number, text: string, speaker: string}]} \ --script ./tools/transcribe.py第三步编写 Plan 文件核心逻辑创建plans/meeting_summary.json{ goal: Generate meeting summary from Zoom recording with speaker labels, key decisions, and action items, tools: [extract_audio, transcribe_audio, llm_summarize], steps: [ { id: extract, tool: extract_audio, input: { video_path: {{input.video_path}}, output_dir: /tmp/meeting_{{input.id}} } }, { id: transcribe, tool: transcribe_audio, input: { audio_path: {{steps.extract.output.audio_path}} }, depends_on: [extract] }, { id: summarize, tool: llm_summarize, input: { transcript: {{steps.transcribe.output.transcript}}, format: markdown }, depends_on: [transcribe] } ] }注意{{input.xxx}}和{{steps.xxx.output.yyy}}这种 Jinja2 风格语法是 Antigravity 的数据流绑定机制。它确保上游工具的输出能自动注入下游工具的输入无需你写一行 glue code。第四步执行与调试CLI 的真正价值假设你有一个 Zoom 录制文件zoom_20240615.mp4执行antigravity run \ --plan plans/meeting_summary.json \ --input {video_path: ./zoom_20240615.mp4, id: 20240615} \ --debug--debug会输出每一步的耗时、内存占用、返回值。我实测一个 45 分钟会议视频在 i7-11800H 笔记本上extract_audio: 23 秒ffmpeg 硬编码加速transcribe_audio: 112 秒tiny.en 模型llm_summarize: 8 秒Gemini 2.0 Pro API总耗时 143 秒全程无人干预。生成的 Markdown 纪要包含Key Decisions:Approved Q3 marketing budget increase to $120KSelected Vendor B for cloud migration (cost: $85K/year)✅Action Items:Alice: Draft RFP for Vendor B by Jun 20Bob: Share migration timeline with DevOps team by Jun 18实操心得第一次跑失败报错transcribe_audio: CUDA out of memory。排查发现是faster-whisper默认用 GPU但我的笔记本显存只有 4GB。解决方案是在transcribe.py里强制devicecpu或者在 CLI 加参数--runtime-config {device: cpu}。这种硬件适配细节官方文档没写但 CLI 的--debug日志会明确告诉你哪一步、哪个设备、爆了什么错——这就是为什么必须先用 CLI 跑通再考虑集成到 SDK。3.3 SDK 集成将 Agent 嵌入企业微信机器人生产环境部署CLI 适合调试但生产环境需要 SDK。以下是如何把上面的会议纪要 Agent 集成到企业微信机器人用户发送机器人 生成会议纪要并上传 MP4机器人自动处理并回复 Markdown。Python SDK 集成代码精简核心逻辑from antigravity.sdk import AgentClient from wechatpy import WeChatClient import tempfile import os # 初始化 Antigravity 客户端生产环境需配置连接池和重试 client AgentClient( endpointhttp://localhost:8080, # Runtime 服务地址 timeout600, # 10分钟超时足够处理大视频 pool_size5 # 连接池避免并发时阻塞 ) # 企业微信消息处理器 def handle_video_message(media_id): # 1. 从企业微信下载视频到临时文件 with tempfile.NamedTemporaryFile(suffix.mp4, deleteFalse) as tmp: video_path tmp.name # 2. 下载媒体文件省略下载逻辑调用企业微信 API download_media(media_id, video_path) # 3. 提交 Agent 任务异步 task_id client.submit_task( goalGenerate meeting summary, planmeeting_summary.json, # 使用之前定义的 plan input{video_path: video_path, id: str(int(time.time()))}, metadata{source: wechat, media_id: media_id} ) # 4. 启动后台轮询生产环境建议用 webhook def poll_result(): while True: result client.get_task_result(task_id) if result.status completed: # 发送 Markdown 到企业微信需企业微信支持 markdown send_markdown_to_wechat(result.output.summary) break elif result.status failed: send_text_to_wechat(f处理失败: {result.error}) break time.sleep(5) # 每5秒检查一次 # 在后台线程执行轮询 threading.Thread(targetpoll_result).start() return 已收到正在处理... # 关键配置Runtime 服务必须暴露给企业微信服务器 # 在 ~/.antigravity/config.yaml 中设置 # runtime: # http: # host: 0.0.0.0 # port: 8080 # cors_allowed_origins: [https://qyapi.weixin.qq.com]生产环境必调参数避坑清单参数推荐值为什么重要不调的后果runtime.memory_limit_mb1024防止transcribe_audio加载大模型时 OOMAgent 进程被系统 kill任务静默失败runtime.max_concurrent_tasks3限制同时处理的视频数避免 CPU 过载所有任务排队响应时间飙升orchestrator.llm_fallback_timeout120当 Gemini API 延迟高时自动降级到本地小模型用户等待超时体验极差tool.extract_audio.timeout_sec300FFmpeg 处理超长视频可能超时工具卡死整个 Agent 挂起这些参数不是拍脑袋定的。我在压测时发现当并发 5 个 60 分钟视频任务时max_concurrent_tasks5会导致 CPU 持续 100%FFmpeg 进程互相抢占 I/O平均耗时从 143 秒涨到 320 秒。降到 3 后耗时稳定在 150±5 秒且系统负载均衡。这就是 Antigravity 2.0 的务实之处——它不承诺“无限并发”而是给你精确的杠杆让你用参数去平衡速度、成本、稳定性。4. 常见问题与实战排查从“google needs to verify your device”到 Agent 任务静默失败4.1 网络热词误解澄清那些和 Antigravity 2.0 完全无关的“Google 问题”搜索热词里大量出现google needs to verify your device or phone number for security reasons、google账号注册、申请google邮箱注册这些是 Google 账号体系的通用安全策略和 Antigravity 2.0零关系。Antigravity 2.0 的认证体系是独立的本地开发模式完全离线不连 Google 任何服务。CLI 和 Runtime 通信走 localhost所有模型调用如 Gemini都通过你配置的 API Key 或自建模型服务Ollama/LM Studio。企业部署模式使用 Google Cloud IAM 进行权限管理但这是 GCP 层面的访问控制和你的个人 Google 账号是否验证设备无关。唯一需要 Google 账号的场景当你在config.yaml中配置llm_provider: gemini且使用 Google AI Studio 的 API Key 时那个 API Key 是绑定到你的 Google Cloud 项目而不是你的 Gmail 账号。即使你用的是未验证的 Gmail只要 Cloud 项目启用了 Gemini APIKey 就有效。所以如果你在跑antigravity run时遇到设备验证弹窗100% 是你误操作打开了 Chrome 浏览器去访问http://localhost:8080Runtime 的管理界面而 Chrome 把这个本地地址当成了需要 Google 账号登录的网站。正确做法是用curl http://localhost:8080/health检查服务状态或用 VS Code 的 REST Client 插件发请求永远不要用浏览器直接访问 Runtime 的 HTTP 端口。4.2 Agent 任务“假成功”排查为什么日志显示 completed但结果为空这是最隐蔽也最致命的问题。现象CLI 输出[2024-06-15 14:30:22] COMPLETE → Task finished successfully但antigravity task get id返回的output是空对象{}。原因几乎总是工具层的契约违约。排查路径按优先级排序检查工具输出是否符合 Schema运行antigravity tool call extract_audio --input {video_path:/path/to/file.mp4}看返回是否严格匹配你在wrap时定义的output-schema。常见错误Python 脚本里print(json.dumps({audio_path: /tmp/audio.wav}))多打了空格或换行符导致 JSON 解析失败transcribe.py里print(json.dumps(...))后又执行了print(done)多出一行干扰检查 Runtime 的工具沙箱日志Antigravity Runtime 会为每个工具调用生成独立日志。执行journalctl -u antigravity-runtime -n 100 --no-pager | grep extract_audio如果看到Tool process exited with code 1说明你的脚本本身有异常比如 FFmpeg 命令不存在、路径权限不足。验证数据流绑定语法在meeting_summary.json中input: {audio_path: {{steps.extract.output.audio_path}}}这行如果extract步骤名写错比如写成id: extract_audio那么{{steps.extract.output...}}就是空字符串下游工具收到空输入可能静默返回空结果。终极诊断命令# 用 --dry-run 模式只生成执行计划不真正调用工具 antigravity run --plan plans/meeting_summary.json \ --input {video_path:./test.mp4} \ --dry-run # 输出会显示每一步的 resolved input例如 # Step extract: resolved input {video_path: ./test.mp4, output_dir: /tmp/meeting_1718432400} # Step transcribe: resolved input {audio_path: /tmp/meeting_1718432400/audio.wav}如果这里audio_path是空的问题就定位到extract步骤的输出解析失败。4.3 性能瓶颈定位当 Agent 耗时远超预期时该看哪里Antigravity 2.0 内置了完整的性能剖析能力。关键命令# 查看最近 10 个任务的耗时分布 antigravity task list --limit 10 --sort-by duration # 查看某个任务的详细时间线精确到毫秒 antigravity task timeline task_id # 查看 Runtime 的实时资源占用 antigravity runtime metrics典型瓶颈场景与对策场景1transcribe_audio步骤耗时波动极大20秒~300秒原因faster-whisper的compute_type设置不当。在 CPU 上用float16会触发大量浮点运算而int8量化模型虽精度略降但耗时稳定在 110±5 秒。对策在工具脚本中硬编码compute_typeint8或在 CLI 加--runtime-config {whisper_compute_type: int8}。场景2多个任务并发时llm_summarize步骤集体超时原因Gemini API 的 QPS 限制。免费 tier 只有 60 QPM每分钟 60 次5 个并发任务瞬间打满。对策在config.yaml中配置orchestrator.llm_rate_limit: {max_calls_per_minute: 50}让 Orchestrator 主动限流避免 API 返回 429。场景3extract_audio步骤在处理大文件2GB时失败原因FFmpeg 进程被 Linux OOM Killer 杀死。对策在config.yaml中增加runtime.process_limits: {memory_max_bytes: 2147483648}2GB并确保服务器有足够 swap 空间。实操心得我曾为一个客户部署时发现所有任务在凌晨 2 点准时失败。排查三天最终发现是客户的云服务器启用了“自动休眠”策略凌晨 2 点释放内存Runtime 进程被杀。解决方案不是改代码而是在systemd服务配置中添加RestartPreventExitStatus15忽略 SIGTERM并用systemctl edit antigravity-runtime加入ExecStartPre/bin/sh -c echo never /sys/kernel/mm/transparent_hugepage/enabled禁用 THP。Antigravity 2.0 的强大不在于它能解决所有问题而在于它把问题暴露得足够清晰——日志里那行OOM killed process就是破案关键。4.4 安全与合规红线企业落地必须跨过的三道坎Antigravity 2.0 本身是安全的但你的用法可能不安全。以下是企业法务和安全部门必问的三个问题以及我的实操答案Q1Agent 调用的外部工具如web_search是否会泄露公司内网数据A不会。web_search工具默认只允许访问公网域名*.google.com,*.bing.com且所有 HTTP 请求都经过 Runtime 的代理层可配置白名单。更重要的是Agent 的内存空间是隔离的——web_search的返回结果存放在 Runtime 分配的沙箱内存里你的业务代码SDK只能通过get_task_result()获取序列化后的 JSON无法直接访问原始内存。我们在金融客户部署时用 eBPF 工具监控了所有系统调用确认无任何 socket 连接逃逸。Q2LLM 模型是否会把我们的会议录音上传到 Google 服务器A取决于你的llm_provider配置。如果配置为gemini则transcribe_audio的输出纯文本会发给 Gemini API如果配置为ollama则全部在本地运行。关键技巧在meeting_summary.json中把llm_summarize步骤的input字段设为{transcript: {{steps.transcribe.output.transcript | truncate(5000)}}}用 Jinja2 的truncate过滤器强制截断到 5000 字符确保敏感信息如客户名称、金额不会进入 LLM 上下文。这是比“关掉日志”更有效的数据防泄漏手段。Q3如何审计 Agent 的每一次工具调用满足 SOC2 合规要求ARuntime 内置审计日志。启用方式在config.yaml中设置audit: enabled: true log_level: INFO output: file file_path: /var/log/antigravity/audit.log日志格式为 JSONL每行包含timestamp,task_id,step_id,tool_name,input_hashSHA256output_hash,status。我们用 Fluent Bit 收集后推送到 Splunk实现了 100% 可追溯。客户审计时只需提供task_id就能拉出完整调用链。5. 进阶能力与未来演进从 CLI 调试到构建企业级 Agent 工厂5.1 Tool Registry 的企业级管理如何让 200 个团队共享 500 个工具当你的公司有 200 个研发团队每个人都写了几个自动化脚本如何避免重复造轮子Ant