研究日期:2026-09-03 · GitHub: LiZhenNet/dsh-antigravity · 14⭐/6 forks · MIT · v0.0.4
这是什么
dsh-antigravity 是 DSH(DeepSeek Harness)的官方插件,让你不用装 Google 的 Antigravity IDE,直接用 Google 账号登录就能在 DSH 里跑 Gemini 3.x / Claude Opus 4.6 / GPT-OSS 120B 等顶级模型。
Google 给 Antigravity IDE 用户配了 Cloud Code Assist 配额(含 Claude Opus 4.6 这种平时单买很贵的模型)。这插件做的事情,就是把 IDE 里那块"调 Cloud Code Assist 流式 API + OAuth 登录 + Quota 仪表盘"的能力拆出来,打包成 DSH 能吃的菜端上桌。
一句话:你的 Google 账号 + DSH = 11 个高价值模型任选 + 实时看配额。
为什么值得关注
- DSH 生态首个明星插件:DeepSeek 8-13 发布 DSH,8-18(5 天后)社区就出了这个插件,14⭐/6 forks 在 2 周内达成,说明 DSH 架构的插件扩展性被验证了。
- 逆向官方 IDE 的工程范本:硬编码 Google Antigravity IDE 的 OAuth client_id + 直接调
cloudcode-pa.googleapis.com,等于把"付费 IDE 的云端能力"拆给所有人用。 - 包含 11 个模型 + 6 档推理 effort 路由:每个模型对应不同 runtime ID(带 thinking / low / high 等后缀),映射逻辑在静态 ROUTING 表里写得清清楚楚。
- 技术深度可观:3034 行服务端 + 661 行 React 客户端,覆盖 OAuth PKCE 流式回调、thoughtSignature 持久化、动态 catalog 匹配、secret redact、双语 i18n 等生产级细节。
它怎么转:四层逻辑
触发层
DSH 用户想用 Gemini 3.x / Claude Opus 4.6,但不想单独配 Anthropic / OpenAI / Google AI Studio 的 API Key → 走「我已经有 Google 账号 + Cloud Code Assist 订阅」这条路。
核心层
1. 安装(两种方式)
# 一行命令(推荐)
dsh plugin --profile web add github:LiZhenNet/dsh-antigravity
# 或本地打包
npm run pack:dist
dsh plugin --profile web add ./dist/dsh-antigravity-0.0.4.tgz
2. OAuth 登录(PKCE 流式回调)
- 起本地 51121 端口 loopback HTTP server
- 生成 PKCE verifier + state → 拼 AUTH_URL 跳 Google
- 浏览器回调 /oauth-callback → 拿 code → 换 access/refresh token
- 凭证落盘 $DSH_HOME/storages/antigravity-oauth.json(chmod 600)
3. 模型路由(最巧的一步)
- 用户选 Claude Opus 4.6 + reasoning effort=high
- 查静态 ROUTING 表 → 映射到 runtime ID claude-opus-4-6-thinking
- 同时调 /v1internal:fetchAvailableModels 拿后端真实 catalog,用正则 + 标签匹配确认 runtime ID 还活着
- 死了就 fallback 到降级档(如 gemini-3.6-flash-low)
4. 流式对话
- POST /v1internal:streamGenerateContent?alt=sse
- Headers 带 Authorization: Bearer ... + Client-Metadata: {ideType: ANTIGRAVITY} 假装是 IDE
- SSE 流回 → 解析 parts (text/thought/functionCall) → 还原带 thoughtSignature 的块
- DSH 拿到 block-start/text-delta/tool-call-delta 事件喂给前端
输出层
- DSH 模型选择器多出 11 个 Antigravity 模型(启用模型置顶)
- 每个模型副标题实时显示「Quota: 87%」
- Settings 页面有登录态、Quota 仪表盘、模型启用勾选器
- 持久化用户勾选到
$DSH_HOME/storages/antigravity-settings.json
卡点层
- 账号无 Cloud Code Assist 权限 → 登录成功但 quota 接口返回 403
- 端口 51121 被占用 → OAuth callback 失败(可用
ANTIGRAVITY_CALLBACK_PORT改) - ROUTING 表里写的 runtime ID 被 Google 改名 → 静态 fallback 兜底但不一定准
- 国内不通
cloudcode-pa.googleapis.com→ 必备梯子 - 非 Google AI Pro 订阅 只能看 Gemini 池 + 极少 Claude 池
它支持的 11 个模型
| 模型 ID | 名称 | 配额池 | 上下文 |
|---|---|---|---|
gemini-3.7-flash |
Gemini 3.7 Flash | Gemini 池(绿) | 1M |
gemini-3.6-flash |
Gemini 3.6 Flash | Gemini 池 | 1M |
gemini-3.5-flash |
Gemini 3.5 Flash | Gemini 池 | 1M |
gemini-3.1-pro |
Gemini 3.1 Pro | Gemini 池 | 1M |
gemini-3.1-flash-image |
Gemini 3.1 Flash Image | Gemini 池 | 1M |
gemini-3-flash |
Gemini 3 Flash | Gemini 池 | 1M |
gemini-2.5-pro |
Gemini 2.5 Pro | Gemini 池 | 1M |
gemini-2.5-flash |
Gemini 2.5 Flash | Gemini 池 | 1M |
claude-sonnet-4-6 |
Claude Sonnet 4.6 | Claude & GPT 池(青) | 200K |
claude-opus-4-6 |
Claude Opus 4.6 | Claude & GPT 池 | 250K |
gpt-oss-120b |
GPT-OSS 120B | Claude & GPT 池 | 131K |
两套池分账:Gemini 池(绿色进度条)和 Claude & GPT 3P 池(青色进度条)独立计算 5h 限额 + 周限额。
三档推理 Effort 路由
每个模型支持 off/minimal/low/medium/high/xhigh 六档 effort,映射到不同 runtime ID:
// lib/index.js 里的 ROUTING 表(简化)
"claude-opus-4-6": {
off: "claude-opus-4-6-thinking",
routing: {
minimal: "claude-opus-4-6-thinking",
low: "claude-opus-4-6-thinking",
medium: "claude-opus-4-6-thinking",
high: "claude-opus-4-6-thinking",
xhigh: "claude-opus-4-6-thinking",
},
defaultRequestId: "claude-opus-4-6-thinking",
}
"gemini-3.6-flash": {
off: "gemini-3.6-flash-low",
routing: {
minimal: "gemini-3.6-flash-low",
low: "gemini-3.6-flash-low",
medium: "gemini-3.6-flash-medium",
high: "gemini-3.6-flash-high",
xhigh: "gemini-3.6-flash-high",
},
defaultRequestId: "gemini-3.6-flash-high",
}
Claude 系列无论选什么 effort 都强制走 thinking 变体(白嫖思考能力);Gemini 3.6 Flash 才是真的分档位。
怎么升级:分三档
入门(5 分钟跑通)
- 一行命令装插件
- DSH Web → Settings → Antigravity → 登录
- 选
Gemini 3.5 Flash→ 发「你好」 - 验收:能正常流式回复 + Settings 页能看到绿色进度条
进阶(理解 routing + 调优)
- 读
lib/index.js的ROUTING常量,理解"用户选 X 模型 + Y effort → 后端用 Z runtime ID" - 任务分类选模型:
- 闲聊/简单问答 →
gemini-3.5-flash(快便宜) - 写代码 →claude-sonnet-4-6或gemini-3.1-pro-high- 复杂推理 →claude-opus-4-6-thinking(重模型,省着用) - 看 Quota 进度条:5h 限额触底就切到 3P 池或缓一缓
高手(fork + 魔改)
- 新增 runtime model:Google 上新模型时,PR 加 ROUTING 条目
- 自定义 fallback 链:修改
getFallbackRuntimeModel,让"3.7 不可用"时降级到 3.1 而不是 3.6 - 写 quota 监控:用
/antigravity/api/quota端点 + cron 跑脚本,quota < 20% 时通知飞书 - 替换 client_id:如果你有自己的 Google Cloud OAuth App,走
ANTIGRAVITY_CLIENT_ID/SECRET环境变量
场景迁移:两个直接可平移的方向
方向 1:把任何「付费 IDE 的隐藏 API」反向工程到 DSH
底层逻辑:「厂商给 IDE 的云端 API + OAuth 配额 ≠ 必须用 IDE」
可平移对象: - Cursor(已有 cursor-api,套进 DSH 同理) - Codeium / Windsurf Cascade - Trae IDE(字节,海外版) - Amazon Q Developer
迁移变量: - OAuth client_id / client_secret(不同 IDE 不同) - API endpoint(每个厂商一个) - 模型清单(要持续跟踪 IDE 版本更新)
方向 2:DSH 插件开发的样板
底层逻辑:「LlmAdapter + OAuth + Web UI 注入 = DSH 插件三件套」
本插件就是个教科书:
- 服务端:apply(ctx) → 注册 adapter + 注入 web API
- 客户端:window.__ModuleLoader__.load() → 注入 settings 页 + locale 翻译
- 配置:cordis.patch.yml 一行 insert 让 Cordis 自动加载
迁移变量: - LLM API 协议(OpenAI 兼容 / Anthropic 原生 / Google 流式) - 凭证存储(OAuth / API Key / Service Account) - UI 复杂度(要不要 quota 仪表盘 / 模型选择器 / 登录流程)
部署风险与收益
收益
- ✅ 白嫖 Google AI Pro / Ultra 订阅的 Cloud Code Assist 配额
- ✅ 11 个高价值模型(含 Claude Opus 4.6,平时单买很贵)
- ✅ DSH 统一 UI 里看 quota,不用切来切去
- ✅ 思考档/轻量档灵活切,省配额
风险
- 🔴 封号风险:非官方 client,理论上违反 Google ToS(实际检测力度未知)
- 🟡 可用性风险:Google 改 API 协议 = 插件失效,作者不一定跟得上
- 🟡 配额误读:UI 上 "85% 剩余" 是整个池子的,重模型消耗快(Claude Opus 一问可能掉 5%)
- 🟢 数据隐私:所有对话走 Google 后端,敏感数据别传
关键技术亮点
- OAuth PKCE + loopback callback server:用
node:http自起回调,无 headless 浏览器依赖 - 静态 ROUTING 表 + 动态 catalog 双保险:离线能用,运行时也能校正
- thoughtSignature 持久化:多轮思考签名能跨会话 replay,Claude/Gemini thinking 模式不丢上下文
- secret 自动 redact:错误信息里所有 ya29./1\//Bearer/client_secret 全替换为 [redacted]
- 安全 URL 校验:
assertSafeApiBaseUrl强制 https + 白名单 *.googleapis.com + 拒绝带 userinfo 的 URL - 写盘原子化:先写
.tmp再 rename,文件权限 0o600 - endpoints 故障转移:prod → sandbox,403/404/429/5xx 才切下一个
- 30min project/model cache + inFlight 去重:防并发请求重复打 API
项目元数据
| 维度 | 数据 |
|---|---|
| 仓库 | LiZhenNet/dsh-antigravity |
| 创建 | 2026-08-18(DSH 发布后 5 天) |
| Stars / Forks | 14 / 6 |
| Open issues | 8 |
| 版本 | 0.0.4(早期迭代) |
| License | MIT |
| 代码量 | lib/index.js 3034 行 / lib/client.js 661 行 |
| PeerDeps | @deepseek-ai/dsh-llm / dsh-home-paths / dsh-host-webserver / dsh-timeout |
一句话总结
dsh-antigravity 的灵魂 =「官方 IDE 给的云端能力不该被锁在 IDE 里」,把 Google Cloud Code Assist 拆成 DSH 能直接吃的 OAuth + 流式 API + Quota 仪表盘三件套。
它既是 DSH 插件生态的"开山之作",也是"逆向官方 IDE → 自托管用配额"模式的工程范本。如果你有 Google AI Pro 订阅但懒得装 Antigravity IDE,这个插件就是你的菜。
研究方法:阅读 RESEARCH.md → 克隆仓库 → 通读 lib/index.js (3034 行) + lib/client.js (661 行) + bin/antigravity-login.mjs + cordis.patch.yml + package.json + GitHub API 元数据 → 结合 DSH 本体研究(2026-08-14)上下文交叉验证。