人工智能AI Agent即时通讯后端本地部署语音【免费下载链接】openclaw-cn中文社区版OpenClaw同原版保持定期更新已内置钉钉、企业微信、飞书、QQ、微信以及国内网络环境优化。你的专属个人AI助手。支持所有操作系统和平台。项目地址https://gitcode.com/gh_mirrors/op/openclaw-cn点击查看免费下载本篇指南聚焦 openclaw-cn 官方内置的google-antigravity-auth提供商插件讲解如何通过一条命令启用插件、使用models auth login完成 Google OAuthPKCE登录并深入剖析插件源码中的授权码流程、本地回调服务、令牌刷新与模型路由细节。读完本文你将能够在自己部署的 openclaw-cn Gateway 上完成 Google AntigravityCloud Code Assist的接入与排障。一、插件是什么面向 Google Antigravity 的 OAuth 提供商google-antigravity-auth是 openclaw-cn 内置bundled的 OAuth 提供商插件为Google AntigravityCloud Code Assist提供认证能力。它本质上是一个ClawdbotPlugin通过插件 SDK 的api.registerProvider()在运行时注册一个 id 为google-antigravity的模型提供商见 插件主实现。插件元信息定义在 openclaw.plugin.json{ id: google-antigravity-auth, providers: [google-antigravity], configSchema: { type: object, additionalProperties: false, properties: {} } }providers声明该插件负责的提供商 IDconfigSchema为空对象说明该插件不需要任何额外的配置项认证所需信息Client ID、Scopes 等全部内置于源码常量中包清单 package.json 通过clawdbot.extensions字段声明入口文件./index.ts。注册的提供商信息源码 index.tsapi.registerProvider({ id: google-antigravity, label: Google Antigravity, docsPath: /providers/models, aliases: [antigravity], auth: [{ id: oauth, label: Google OAuth, hint: PKCE localhost callback, kind: oauth, run: ... }], });可以看到该提供商支持别名antigravity其唯一的认证方法是oauth提示语为 PKCE localhost callback即 PKCE 授权码 本地回环回调。registerProvider的底层注册逻辑位于 src/plugins/registry.ts插件加载后该提供商会被写入 openclaw-cn 的提供商注册表随后即可被模型选择、models auth login等命令识别。二、启用插件两步命令openclaw-cn 的 bundled 插件默认处于禁用状态google-antigravity-auth也不例外。官方文档 docs/concepts/model-providers.md 与插件 README 给出了相同的启用步骤openclaw-cn plugins enable google-antigravity-auth启用后需要重启 Gateway才能生效README 明确要求 Restart the Gateway after enabling.。从实现层面看plugins enable最终调用的是 src/plugins/enable.ts 中的enablePluginInConfig它会对配置做三件事若全局plugins.enabled false直接拒绝启用返回reason: plugins disabled若插件位于plugins.deny拒绝列表同样拒绝reason: blocked by denylist否则在plugins.entries[pluginId]中写入enabled: true并自动把插件 ID 追加到plugins.allow白名单ensureAllowlisted确保插件真正被加载器允许加载。三、执行认证models auth login插件启用并重启 Gateway 后执行登录openclaw-cn models auth login --provider google-antigravity --set-default各参数含义对应 src/cli/models-cli.ts 中的 auth login 子命令--provider id指定提供商 ID这里即插件注册的google-antigravity--method id可选的认证方法 ID缺省时使用该提供商唯一的方法oauth--set-default认证成功后自动应用该提供商的默认模型推荐。插件登录成功会返回defaultModel: google-antigravity/claude-opus-4-6-thinking并写入agents.defaults.models配置补丁因此这条命令也是登录 一键设为默认模型的快捷方式。需要说明的是登录过程无需把任何 Client ID / Secret 填进openclaw.json。正如 docs/concepts/model-providers.md 所述CLI 登录流程会把令牌存入 Gateway 主机上的 auth profiles认证配置文件中Client 凭据由插件内部常量提供。四、OAuth 流程源码剖析PKCE 本地回调google-antigravity-auth采用PKCERFC 7636授权码流程。整个loginAntigravity()核心实现见 index.ts可拆解为以下阶段。4.1 内置常量与 Scopes源码顶部定义了 OAuth 所需常量index.tsconst CLIENT_ID decode(...base64...); // Google OAuth Client ID const CLIENT_SECRET decode(...base64...); // Client Secret服务端换码用 const REDIRECT_URI http://localhost:51121/oauth-callback; const AUTH_URL https://accounts.google.com/o/oauth2/v2/auth; const TOKEN_URL https://oauth2.googleapis.com/token; const DEFAULT_PROJECT_ID rising-fact-p41fc; const DEFAULT_MODEL google-antigravity/claude-opus-4-6-thinking;其中 Client ID / Secret 以 base64 编码硬编码在源码中并注释说明从 pi-ai 的 base64 编码值解码以保持同步REDIRECT_URI固定指向本机回环地址127.0.0.1的51121端口。申请的 OAuth Scopes 共 5 个const SCOPES [ https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile, https://www.googleapis.com/auth/cclog, https://www.googleapis.com/auth/experimentsandconfigs, ];cloud-platform用于访问 Google Cloud 项目资源cclog与experimentsandconfigs是 Cloud Code AssistAntigravity内部服务所需的授权域userinfo.email/profile用于拉取用户邮箱信息。4.2 生成 PKCE 挑战码与授权 URLgeneratePkce()index.ts生成 32 字节随机verifierhex 编码并对其做 SHA-256 后以base64url得到challengebuildAuthUrl()index.ts拼装授权 URL包含client_id、response_typecode、redirect_uriscope上面 5 个 Scope 空格连接code_challengecode_challenge_methodS256PKCE 核心参数state16 字节随机 hex用于防 CSRF登录成功后会被校验access_typeoffline申请刷新令牌与promptconsent强制展示同意页保证能拿到 refresh_token。4.3 两种回调方式本地服务器与手动粘贴loginAntigravity根据运行环境自动选择回调方式index.tsfunction shouldUseManualOAuthFlow(isRemote: boolean): boolean { return isRemote || isWSL2(); }本机运行非远程、非 WSL2调用startCallbackServer()在本机127.0.0.1:51121启动一个 HTTP 回调服务器index.ts随后自动用系统浏览器打开授权 URL等待 Google 把授权码回调到/oauth-callback。回调成功后服务器立即返回一个 Authentication complete HTML 页面并自动关闭整个等待超时时间为 5 分钟。远程环境或 WSL2因为远端/虚拟化环境无法访问本地localhost:51121回调插件改为手动流程在终端打印授权 URLparams.log会把 URL 原样输出便于复制源码注释提到这是修复 #1772 的做法等待用户登录完成后把完整重定向 URL 粘贴回终端。parseCallbackInput()index.ts会校验粘贴内容必须是合法 URL 且包含code与state参数否则报错并提示请粘贴完整重定向 URL不只是 code。WSL 检测逻辑index.ts通过读取/proc/version判断是否包含microsoft/wslWSL以及wsl2/microsoft-standardWSL2从而决定是否走手动流程。4.4 校验 state 并换取令牌无论走哪种回调拿到code后都会先做state 校验若回调返回的state与本地生成的state不一致立即抛错 OAuth state mismatch. Please try again.index.ts。随后exchangeCode()index.ts向https://oauth2.googleapis.com/token发起表单 POST携带client_id、client_secret、code、grant_typeauthorization_code、redirect_uri与 PKCE 的code_verifier换取access_token、refresh_token和expires_in。实现上有几个值得注意的细节强校验缺少access_token或refresh_token都会分别抛错绝不静默接受不完整响应过期时间预留缓冲expires Date.now() expiresIn * 1000 - 5 * 60 * 1000即把有效期提前 5 分钟视为过期避免令牌在边缘时间失效导致请求失败。4.5 拉取用户信息与项目 ID换码成功后插件并行完成两项信息补充fetchUserEmail()index.ts调用https://www.googleapis.com/oauth2/v1/userinfo?altjson获取用户邮箱失败时静默返回undefinedfetchProjectId()index.ts依次向CODE_ASSIST_ENDPOINTS中的两个 Cloud Code Assist 端点发起v1internal:loadCodeAssist请求从响应中的cloudaicompanionProject字段解析 Antigravity 绑定的 Google Cloud 项目 ID两个端点都失败时回退到默认项目rising-fact-p41fc。const CODE_ASSIST_ENDPOINTS [ https://cloudcode-pa.googleapis.com, https://daily-cloudcode-pa.sandbox.googleapis.com, ];4.6 登录成功后的落盘与配置补丁整个run返回的认证结果会交给 openclaw-cn 的认证基础设施index.tsprofileIdgoogle-antigravity:email邮箱缺失时回退为google-antigravity:default。这与 docs/concepts/model-failover.md 描述的 OAuth 多账号失效转移约定一致——provider:email形式的 profile 可用于按账号区分与故障切换credential记录type: oauth、provider、access、refresh、expires、email、projectId等字段令牌持久化到 Gateway 主机的 auth profiles 存储中configPatch把google-antigravity/claude-opus-4-6-thinking写入agents.defaults.models并通过defaultModel字段声明默认模型——这就是--set-default的落点notes向用户提示 Antigravity uses Google Cloud project quotas. 与 Enable Gemini for Google Cloud on your project if requests fail.。五、令牌的后续使用与自动刷新登录只是开始。openclaw-cn 的 OAuth 令牌消费逻辑在 src/agents/auth-profiles/oauth.tsbuildOAuthApiKey()oauth.ts特别指出google-gemini-cli与google-antigravity两个提供商需要projectId因此会把{ token: access, projectId }序列化为 JSON 作为 API Key 使用refreshOAuthTokenWithLock()oauth.ts在每次调用前检查Date.now() cred.expires未过期直接复用过期则通过getOAuthApiKey()走刷新流程并且整个读写过程使用proper-lockfile对 auth store 加锁避免多进程并发刷新互相踩踏。六、运行时模型侧集成工具净化与模型兼容接入 Antigravity 后openclaw-cn 在模型运行时侧也做了针对性适配这些代码位于 src/agents/pi-embedded-runner/ 与 src/agents/pi-embedded-helpers/google.ts工具 Schema 净化sanitizeToolsForGoogle()针对google-antigravity与google-gemini-cli提供商剔除 Antigravity 后端不支持的 JSON Schema 关键字如minProperties、maxProperties避免工具调用被拒logToolSchemasForGoogle()还会在运行时输出净化后的工具索引便于调试Thinking 块净化sanitizeAntigravityThinkingBlocks()通过 base64 风格签名正则ANTIGRAVITY_SIGNATURE_RE识别并处理 Antigravity 返回的思考块保持助手消息内容合法模型目录前向兼容resolveAntigravityOpus46ForwardCompatModel()model.ts针对 pi-ai 模型目录可能滞后于真实平台的问题——当google-antigravity的模型 ID 包含opus-4-6或opus-4.6但注册表中还没有时会克隆claude-opus-4-5模板以保证google-gemini-cli的 API 与 baseUrl 正确沿用Claude 模型识别pi-embedded-helpers/google.ts 通过modelId是否包含claude判断是否需要对 Antigravity 模型启用 Claude 相关的特殊处理。这些适配说明google-antigravity不只是一个能登录的提供商openclaw-cn 在模型路由、工具序列化、思维链解析层面都对其做了深度兼容。七、注意事项与故障排查结合插件 README 的 Notes 与源码实现接入时请重点核对以下几点配额与启用检查README 原文Antigravity uses Google Cloud project quotas. —— Antigravity 消费的是 Google Cloud 项目配额登录绑定的项目配额不足时请求会失败If requests fail, ensure Gemini for Google Cloud is enabled. —— 若请求失败请先在 Google Cloud 控制台确认该项目已启用Gemini for Google Cloud服务。启用插件后必须重启 Gateway否则注册的提供商不可见同时确认全局未设置plugins.enabled: false、插件未被加入plugins.deny见 src/plugins/enable.ts。远程服务器 / WSL2 环境OAuth 回调走手动粘贴流程。登录完成后浏览器地址栏会显示形如http://localhost:51121/oauth-callback?code...state...的 URL请把完整 URL粘贴回终端而不是只粘贴codeparseCallbackInput会严格校验。回调端口冲突回调服务器固定监听127.0.0.1:51121若该端口被占用插件会自动降级为手动粘贴流程startCallbackServer失败时callbackServer null不影响最终完成登录。令牌过期插件在exchangeCode阶段就把过期时间提前了 5 分钟之后由 src/agents/auth-profiles/oauth.ts 的加锁刷新流程在过期后自动续期日常使用通常无需手动重新登录。八、延伸阅读官方模型提供商总览docs/concepts/model-providers.md其中 Google Vertex / Antigravity / Gemini CLI 一节给出了与本文一致的启用与登录命令OAuth 多账号与模型失效转移provider:emailprofile 约定见 docs/concepts/model-failover.md认证健康检查与诊断src/agents/auth-health.test.ts 与 src/agents/auth-profiles/ 中包含了 auth store 的读写与刷新行为测试同类插件对照Gemini CLI 的 OAuth 插件google-gemini-cli-auth见 extensions/google-gemini-cli-auth/两者的启用、登录与令牌存储方式一致可互为参考。赞分享人工智能AI Agent即时通讯后端本地部署语音【免费下载链接】openclaw-cn中文社区版OpenClaw同原版保持定期更新已内置钉钉、企业微信、飞书、QQ、微信以及国内网络环境优化。你的专属个人AI助手。支持所有操作系统和平台。项目地址https://gitcode.com/gh_mirrors/op/openclaw-cn点击查看免费下载相关推荐PicoClaw 接入 Google Antigravity 认证与集成完全指南从 OAuth 2.0 PKCE 到流式调用PicoClaw 接入 Google Antigravity 认证与集成完全指南从 OAuth 2.0 PKCE 到流式调用 本指南系统讲解 PicoCl人工智能AI 应用AI Agent交互助手工具调用MCP ClientsAgent 记忆PicoClaw 接入 Google AntigravityCloud Code AssistOAuthPKCE 认证、模型管理与企业级集成实战指南PicoClaw 接入 Google AntigravityCloud Code AssistOAuthPKCE 认证、模型管理与企业级集成实战指南 P人工智能AI 应用AI Agent交互助手工具调用MCP ClientsAgent 记忆PicoClaw 接入 AntigravityGoogle Cloud Code Assist供应商OAuth 认证、模型管理与生产部署实战指南PicoClaw 接入 AntigravityGoogle Cloud Code Assist供应商OAuth 认证、模型管理与生产部署实战指南 导读本人工智能AI 应用AI Agent交互助手工具调用MCP ClientsAgent 记忆创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考