在 PicoClaw 中使用 Antigravity 提供商:从 OAuth 认证到模型管理的完整实战指南 📅 发布时间:2026/9/20 10:56:26 👁 浏览次数: 在 PicoClaw 中使用 Antigravity 提供商从 OAuth 认证到模型管理的完整实战指南【免费下载链接】picoclawTiny, Fast, and Deployable anywhere — automate the mundane, unleash your creativity项目地址: https://gitcode.com/gh_mirrors/pi/picoclaw本指南系统讲解如何在 PicoClaw 中接入AntigravityGoogle Cloud Code Assist提供商从前提条件、OAuth 登录含无界面/VPS 手动验证流程、模型列表查看与切换到 Coolify/Docker 环境下的部署配置与常见故障排查。读完本文你将能独立完成 Antigravity 的认证、选模与日常调用并理解其底层认证与 API 调用机制。Antigravity 是什么Antigravity 是 Google 提供的Cloud Code Assist服务通过 Google 云基础设施托管访问 Claude如claude-opus-4-6-thinking与 Gemini如gemini-3-flash等模型。在 PicoClaw 中它被实现为一个独立的 OAuth 提供商不需要手动填写 API Key认证完成后即可通过antigravity/或google-antigravity/协议前缀引用模型。从源码结构看Antigravity 相关的实现主要分布在以下文件pkg/providers/oauth/antigravity_provider.go —— 提供商核心实现请求构建、SSE 解析、项目 ID/模型列表获取pkg/auth/oauth.go —— OAuth 2.0 with PKCE 流程实现pkg/auth/store.go —— 认证凭据存储~/.picoclaw/auth.jsoncmd/picoclaw/internal/auth/helpers.go ——auth login/auth models等 CLI 命令pkg/providers/factory_provider.go —— 协议分发case antigravity前提条件在开始之前请确认拥有一个Google 账户。已启用Google Cloud Code Assist通常通过 Gemini for Google Cloud 引导流程获取。已安装 PicoClaw 命令行工具picoclaw。其中第 2 点尤为关键Antigravity 的可用模型与配额都绑定到你的 Google Cloud 项目配置未启用该服务时登录流程可能失败或返回空模型列表这一点在helpers.go中也有体现登录时若无法获取项目 ID会提示 You may need Google Cloud Code Assist enabled on your account.。1. 身份验证OAuth 登录使用以下命令发起 Antigravity 认证picoclaw auth login --provider antigravity--provider同时支持antigravity与google-antigravity两个别名。从 cmd/picoclaw/internal/auth/helpers.go 可以看到authLoginCmd将两者统一路由到authLoginGoogleAntigravitycase google-antigravity, antigravity: return authLoginGoogleAntigravity(noBrowser)命令执行后会经历如下流程对应 pkg/auth/oauth.go 中的LoginBrowserWithOptions生成 PKCE 验证器/挑战码与随机stateCSRF 防护。在本地51121 端口启动 OAuth 回调服务器listenOAuthCallback并尝试自动打开浏览器。浏览器跳转到 Google 授权页登录并同意授权。Google 重定向回http://localhost:51121/auth/callback?code...。PicoClaw 用授权码 code_verifier 向https://oauth2.googleapis.com/token交换访问令牌与刷新令牌。随后自动获取用户邮箱userinfo接口与 Cloud Code Assist 项目 IDloadCodeAssist接口一并写入凭据存储。登录成功后CLI 会输出类似信息并自动更新配置将默认模型设置为gemini-flash映射到antigravity/gemini-3-flash并提示可用picoclaw agent -m Hello world验证。小提示命令支持--no-browser标志picoclaw auth login --provider antigravity --no-browser可在纯终端环境手动复制 URL 打开浏览器见 cmd/picoclaw/internal/auth/login.go。手动验证无界面 / VPS 环境如果你在服务器Coolify / Docker上运行且无法访问localhost请按照以下步骤操作运行上述登录命令可加--no-browser。复制终端打印出的授权 URL并在本地浏览器中打开。使用 Google 账户完成登录。浏览器将重定向到localhost:51121URL页面将无法加载这是正常的。从浏览器地址栏复制该最终 URL包含?code...。将其粘贴回 PicoClaw 正在等待的终端中。PicoClaw 会从粘贴的完整 URL 中自动解析code参数并完成令牌交换。这一机制的源码实现在 pkg/auth/oauth.go终端同时监听本地回调服务器与标准输入一旦检测到粘贴内容会调用url.Parse并提取查询参数中的code。认证超时时间为 5 分钟超时后需重新执行命令。凭据存储与令牌刷新认证完成后凭据以 JSON 形式持久化到~/.picoclaw/auth.json结构如下对应 pkg/auth/store.go 中的AuthCredential{ credentials: { google-antigravity: { access_token: ya29..., refresh_token: 1//..., expires_at: 2026-01-01T00:00:00Z, provider: google-antigravity, auth_method: oauth, email: userexample.com, project_id: my-project-id } } }令牌管理遵循以下规则源码可验证过期时间设置5 分钟缓冲区NeedsRefresh()会在expires_at前 5 分钟即触发刷新time.Now().Add(5 * time.Minute).After(c.ExpiresAt)防止竞态。每次发起 Chat 请求前createAntigravityTokenSource 会检查凭据状态需要刷新且存在刷新令牌时自动调用 Google 令牌端点换取新令牌并回写存储。若project_id缺失还会尝试调用loadCodeAssist端点自动补全。2. 管理模型列出可用模型查看你的项目可以访问哪些模型并检查其配额picoclaw auth models该命令从v1internal:fetchAvailableModels端点拉取模型列表并标注每个模型的配额状态。输出中✓表示可用✗ (quota exhausted)表示该模型配额已耗尽例如Available Antigravity Models: ----------------------------- ✓ gemini-3-flash (Gemini 3 Flash) ✓ gemini-2.5-flash-lite ✗ (quota exhausted) claude-opus-4-6-thinking从实现看cmd/picoclaw/internal/auth/helpers.go命令会先读取凭据并自动刷新令牌随后调用providers.FetchAntigravityModels。需要注意的是该命令要求凭据中已有project_id否则会提示重新登录。切换模型你可以在~/.picoclaw/config.json中更改默认模型或通过 CLI 覆盖# 为单个命令覆盖 picoclaw agent -m Hello --model claude-opus-4-6-thinking在~/.picoclaw/config.json中通过agents.defaults.model_name设置默认模型并在model_list中声明对应的 Antigravity 模型条目。配置示例参见 config/config.example.json{ model_name: gemini, model: antigravity/gemini-2.0-flash, auth_method: oauth }model字段使用antigravity/模型短ID或google-antigravity/模型短ID格式。发送请求前AntigravityProvider.Chat 会自动剥离google-antigravity/与antigravity/前缀并将空模型名回退到默认模型gemini-3-flash。注意模型 ID 应使用gemini-3-flash这类短 ID不要使用完整路径。默认模型与自动配置登录命令执行成功后会自动完成两件事见authLoginGoogleAntigravity若model_list中没有 Antigravity 条目则追加一个默认条目ModelName: gemini-flash、Model: antigravity/gemini-3-flash、AuthMethod: oauth同时把agents.defaults.model_name设为gemini-flash。这与 pkg/config/defaults.go 中内置的默认 Antigravity 条目保持一致也就是说即使不手动写配置PicoClaw 也预置了一条可用的 Antigravity 模型定义。3. 实际使用Coolify / Docker如果你通过 Coolify 或 Docker 部署请按照以下步骤进行测试环境变量export PICOCLAW_AGENTS_DEFAULTS_MODELgemini-flash该环境变量覆盖agents.defaults.model_name用于在容器/服务器中快速指定默认模型。身份验证持久化 如果你已在本地登录可以将凭据复制到服务器scp ~/.picoclaw/auth.json useryour-server:~/.picoclaw/或者如果你有终端访问权限可以在服务器上运行一次auth login命令配合本文档第一节的手动验证流程完成无界面登录。复制凭据文件后请确保目标目录~/.picoclaw/存在且权限正确同时容器内挂载了该目录以便进程读取auth.json与config.json。凭据文件同时包含刷新令牌过期后 PicoClaw 会在运行时自动刷新并回写因此服务器上无需频繁重新登录。4. 故障排除空响应如果模型返回空回复可能是该模型在你的项目中受到限制。请尝试gemini-3-flash或claude-opus-4-6-thinking。底层实现中Chat 方法 会对成功但内容为空的响应显式报错model returned an empty response避免静默失败常见于项目无权限的预览版或受限模型。429 速率限制Antigravity 有严格的配额限制。如果触发限制PicoClaw 将在错误消息中显示重置时间。错误解析逻辑位于 parseAntigravityError429 响应会从 Google 错误结构的details[].metadata.quotaResetDelay字段提取配额重置时长并输出类似antigravity rate limit exceeded: ... (reset in 4h30m28s)的提示方便你规划重试时间。404 未找到确保你使用的是picoclaw auth models列表中的模型 ID。请使用短 ID例如gemini-3-flash而非完整路径。令牌已过期 / 认证失败重新运行picoclaw auth login --provider antigravity刷新 OAuth 凭据。项目未找到 / 模型未出现在列表中确认 Google Cloud 项目已启用 Gemini for Google Cloud检查~/.picoclaw/auth.json中google-antigravity条目的project_id与email是否正确必要时重新登录。5. 可用模型总结根据项目文档中的测试记录以下模型最为可靠模型 ID特点gemini-3-flash快速高可用性同时也是提供商的默认模型gemini-2.5-flash-lite轻量级claude-opus-4-6-thinking强大包含推理能力需要说明的是可用模型列表取决于你的 Google Cloud 项目配置——不同项目被授权的模型不同配额也各自独立。建议以picoclaw auth models返回的实时结果为准上表仅作为常规场景下的参考。附录Antigravity 底层调用链理解底层调用链有助于排查问题。一次典型的 Antigravity Chat 请求流程如下依据 pkg/providers/oauth/antigravity_provider.go从凭据存储加载 access token 与 project ID必要时自动刷新。将消息列表转换为 Gemini 格式system prompt、user/assistant 内容、functionCall/functionResponse 工具调用、thought signature。将 Gemini 请求包装进 v1internal 信封{project, model, request, requestType: agent, userAgent: antigravity, requestId}。POST 到https://cloudcode-pa.googleapis.com/v1internal:streamGenerateContent?altsse携带Authorization: Bearer token及X-Goog-Api-Client、Client-Metadata等头。解析 SSE 流每条data: {...}中的response.candidates[].content.parts[]会被拆分为文本、推理内容与工具调用usageMetadata被映射为 token 用量MAX_TOKENS完成原因被映射为length。文档与测试中涉及的其它相关材料docs/security/ANTIGRAVITY_AUTH.zh.md —— Antigravity 认证流程、OAuth 细节与 API 端点的深入说明docs/guides/providers.zh.md —— PicoClaw 各提供商总览docs/guides/configuration.zh.md —— 配置详解docs/migration/model-list-migration.md —— 模型列表迁移指南config/config.example.json —— 完整配置示例含 Antigravity 条目【免费下载链接】picoclawTiny, Fast, and Deployable anywhere — automate the mundane, unleash your creativity项目地址: https://gitcode.com/gh_mirrors/pi/picoclaw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考