🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Gemini 账号池 qikairo7/dsh-gemini-pool

DeepSeek Harness
qikairo77 天前有提交已提供中文文档扫描:含敏感能力

多账号 Google Gemini 提供商DSH…

38.3/100
综合分
6
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add qikairo7/dsh-gemini-pool
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · vision
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-gemini-pool(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 14:39:12

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 46 处,展示前 40 条)
  • 发起网络请求
    lib/index.js:154
    return await fetch(TOKEN_URL, init);
  • 发起网络请求
    lib/index.js:398
    const response = await fetch(`${endpoint}/v1internal:listCloudAICompanionProjects`, {
  • 发起网络请求
    lib/index.js:426
    const response = await fetch(`${endpoint}/v1internal:loadCodeAssist`, {
  • 发起网络请求
    lib/index.js:605
    const response = await fetch(`${endpoint}/v1internal:fetchAvailableModels`, {
  • 发起网络请求
    lib/index.js:676
    const response = await fetch(`${endpoint}${path}`, {
  • 发起网络请求
    lib/index.js:706
    const response = await fetch(`${endpoint}/v1internal:fetchAvailableModels`, {
  • 读取本地文件
    lib/index.js:1063
    if (existsSync(filePath)) {
  • 读取本地文件
    lib/index.js:1064
    data = readFileSync(filePath).toString("base64");
  • 读取本地文件
    lib/index.js:1071
    if (!data && typeof attachment.path === "string" && existsSync(attachment.path)) {
  • 读取本地文件
    lib/index.js:1073
    data = readFileSync(attachment.path).toString("base64");
  • 读取本地文件
    lib/index.js:1088
    if (existsSync(filePath)) {
  • 读取本地文件
    lib/index.js:1089
    data = readFileSync(filePath).toString("base64");
  • 请求外部主机www.googleapis.com
    lib/index.js:1692
    const response = await fetch("https://www.googleapis.com/oauth2/v1/userinfo?alt=json", {
  • 执行外部命令固定命令
    lib/index.js:1772
    spawn("open", [url], { stdio: "ignore", detached: true });
  • 执行外部命令固定命令
    lib/index.js:1774
    spawn("cmd", ["/c", "start", "", url], { stdio: "ignore", detached: true });
  • 执行外部命令固定命令
    lib/index.js:1776
    spawn("xdg-open", [url], { stdio: "ignore", detached: true });
  • 写入本地文件
    lib/index.js:2079
    await mkdir(dirname(this.#file), { recursive: true });
  • 写入本地文件
    lib/index.js:2081
    await writeFile(tempFile, JSON.stringify(credentials, null, 2), { mode: 0o600 });
  • 写入本地文件
    lib/index.js:2082
    await rename(tempFile, this.#file);
  • 删除本地文件
    lib/index.js:2100
    await unlink(this.#file);
  • 写入本地文件
    lib/index.js:2140
    await mkdir(dirname(this.#file), { recursive: true });
  • 写入本地文件
    lib/index.js:2142
    await writeFile(tempFile, JSON.stringify({ ...normalized, updatedAt: Date.now() }, null, 2), { mode: 0o600 });
  • 写入本地文件
    lib/index.js:2143
    await rename(tempFile, this.#file);
  • 发起网络请求
    lib/client.js:845
    const response = await fetch(`${API}${path}`, {
  • 读取本地文件
    bin/antigravity-login.mjs:24
    if (existsSync(legacy.path())) {
  • 读取本地文件
    lib/pool.js:59
    if (existsSync(this.#file)) {
  • 读取本地文件
    lib/pool.js:62
    raw = JSON.parse(await readFile(this.#file, "utf8"));
  • 读取本地文件
    lib/pool.js:108
    if (this.#accounts.length === 0 && existsSync(this.#legacyFile)) {
  • 读取本地文件
    lib/pool.js:110
    const legacy = JSON.parse(await readFile(this.#legacyFile, "utf8"));
  • 写入本地文件
    lib/pool.js:140
    await mkdir(dirname(this.#file), { recursive: true });
  • 写入本地文件
    lib/pool.js:156
    await writeFile(tempFile, JSON.stringify(payload, null, 2), { mode: 0o600 });
  • 写入本地文件
    lib/pool.js:157
    await rename(tempFile, this.#file);
  • 写入本地文件
    lib/image-tool.js:99
    await mkdir(dirname(absPath), { recursive: true });
  • 写入本地文件
    lib/image-tool.js:100
    await writeFile(absPath, bytes);
  • 发起网络请求
    lib/vision-tool.js:139
    const response = await fetch(url, { redirect: "manual", signal: AbortSignal.timeout(URL_FETCH_TIMEOUT_MS) });
  • 读取本地文件
    lib/vision-tool.js:197
    const entries = existsSync(bucket)
  • 读取本地文件
    lib/vision-tool.js:198
    ? (await readdir(bucket)).filter((name) => name.toLowerCase().startsWith(hex))
  • 读取本地文件
    lib/vision-tool.js:208
    const bytes = await readFile(resolvePath(bucket, entries[0]));
  • 读取本地文件
    lib/vision-tool.js:239
    if (!existsSync(filePath)) {
  • 读取本地文件
    lib/vision-tool.js:242
    const bytes = await readFile(filePath);
扫描于 2026/10/31(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:www.googleapis.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-host-webserver@deepseek-ai/schemastery@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-llm@deepseek-ai/dsh-timeout
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

4 张 · 点击查看大图

功能亮点

  • 按剩余额度选账号
  • 429指数退避切换
  • 后台探活禁用账号
展开完整介绍(71 字)↓

多账号 Google Gemini 提供商(DSH 插件):按剩余额度挑选账号,遇 429 指数退避切换,后台探活已禁用账号,附中英双语设置页

README

由 DeepSeek 最新模型翻译生成
dsh-gemini-pool DSH 用上 Gemini 的方式 —— 让你的 Google AI Pro 订阅,成为编程模型池 English · 简体中文 Issues ·讨论区 ·更新日志 ·安全策略 · DeepSeek Harness ·上游项目 ✨ 这是什么 DeepSeek Harness(DSH) 本身无法直连 Gemini。这个插件补上这条通路:通过 Google Antigravity / Cloud Code Assist 通道,把你已有的 Google AI Pro 订阅直接接入 DSH。不用另买 API key,订阅额度即用即扣。 Gemini 的强项正好落在编程场景上:多模态看图、前端与 UI 代码生成质量出色,还能生图做界面素材。装上插件后,这些能力按订阅额度直接在 DSH 里使用。 不止一个 Google 账号?全部加进来组成账号池:额度自动均衡、429 无感切换、坏账号自动冷却与探活恢复。设置页里每个账号一张卡片,每周与 5 小时额度实时可见。
展开完整文档(README 剩余 1 节)
dsh-gemini-pool

DSH 用上 Gemini 的方式 —— 让你的 Google AI Pro 订阅,成为编程模型池

English · 简体中文

Issues ·讨论区 ·更新日志 ·安全策略 · DeepSeek Harness ·上游项目

✨ 这是什么

DeepSeek Harness(DSH) 本身无法直连 Gemini。这个插件补上这条通路:通过 Google Antigravity / Cloud Code Assist 通道,把你已有的 Google AI Pro 订阅直接接入 DSH。不用另买 API key,订阅额度即用即扣。

Gemini 的强项正好落在编程场景上:多模态看图、前端与 UI 代码生成质量出色,还能生图做界面素材。装上插件后,这些能力按订阅额度直接在 DSH 里使用。

不止一个 Google 账号?全部加进来组成账号池:额度自动均衡、429 无感切换、坏账号自动冷却与探活恢复。设置页里每个账号一张卡片,每周与 5 小时额度实时可见。

🆚 为什么需要它

装与不装,同一个 Google AI Pro 订阅是两种用法:

| | 不装:订阅只在网页版 | 装:订阅接入 DSH |
| Gemini 多模态(看图) | ❌ 编程时用不上 | ✅ 对话里直接丢图 |
| 前端 / UI 代码生成 | ❌ 网页版没有工程上下文 | ✅ 直接读懂你的项目 |
| 生图做界面素材 | ⚠️ 来回切换复制 | ✅ antigravity_image_generate 自动出图入库 |
| 多账号额度 | — | ✅ 全池调度,429 无感切换 |
| 额度情况 | ❌ 黑盒 | ✅ 每账号实时额度条 |
| 坏账号 | ❌ 反复撞死号 | ✅ 自动禁用 + 探活复活 |

主模型本身没有视觉能力(纯文本模型)时,贴图会由池内 Gemini 自动转述成文字回喂主模型,默认开启,详见「👁 无视觉主模型的看图旁路」。

使用本插件前,请先阅读下方的「⚠️ 封号风险」。

⚠️ 封号风险,使用前必读

本插件是非官方第三方工具,通过复用 Antigravity 客户端身份访问 Google 接口。Google 已官方确认:使用第三方工具访问 Antigravity 资源属于服务条款违规,并已实施过大规模封禁(见 gemini-cli 官方公告,2026 年 2 月,付费用户亦被波及)。

处罚机制(Google 官方公布):

- 首次违规 → 邮件通知 + 填表重新认证 → 1~2 天自动解封
- 第二次违规 → 永久封禁
- 封禁范围:多数报告为 Antigravity / Gemini 通道被封(已购订阅额度一并作废);是否连坐整个 Google 账号(Gmail / Drive),Google 被社区两次追问均未正面回答——请按最坏可能对待
- 执法为抽查式:大量第三方工具用户数月无事,但没有人能保证下一个不是你

降低风险的三条建议:

1. 用小号:专门注册一个 Google 账号。不要用绑着重要资产的主力号。
2. 克制用量:内置的指数退避与冷却机制能降低风险。不要刻意压测额度上限。
3. 做好通道随时失效的准备:接口属于 Google,政策随时可能收紧。

使用本插件即表示你已理解并自愿接受上述风险。本项目与 Google 无任何关联。

💰 和 API 中转站有什么区别

也可以去中转站按 token 付费买 Gemini API——那是另一种取舍:

| | API 中转站 | dsh-gemini-pool |
| 钱 | 按 token 加价,站长赚差价 | 订阅费固定,用多少都是那份钱 |
| 模型真假 | ⚠️ 可能被悄悄降级,难察觉 | ✅ 直连官方端点,模型永远是真的 |
| 数据隐私 | ⚠️ 代码/对话/截图全部经过站长服务器 | ✅ 进程内直连 Google,不经过任何中间人 |
| 额度透明 | 只剩一个「站点余额」数字 | 每账号每周 / 5 小时实时进度条 |
| 跑路风险 | 站点跑路降质是常态,余额一夜清零 | 无第三方经手你的钱 |

中转站的真实优势只有一条:封号砸的是站长的号,你的账号干净。所以分界线很简单:怕账号出事、用量小、想试用,选中转站;有订阅、重隐私、要真模型、长期用,选这里。

🚀 快速开始

环境要求:DSH 0.2.0-rc.2(当前验证版本)。运行 dsh --version 查看本机版本。

1. 安装插件

dsh plugin --profile web add github:qikairo7/dsh-gemini-pool

2. 登录 Google 账号

打开 DSH 设置 → Antigravity → 点击「+ 添加 Google 账号」完成授权。账号数量不限。

3. 完成

模型选择器里勾选要用的模型,开始对话。额度刷新、账号调度全部自动。

用的模型看不了图?也能贴图。图片会由池内 Gemini 自动转述给当前模型(默认开启,见「👁 无视觉主模型的看图旁路」)。

离线安装 / 手动安装

npm run pack:dist
包名带 package.json 里的当前版本号,按 dist/ 下实际生成的文件名安装
dsh plugin --profile web add ./dist/dsh-gemini-pool-*.tgz

若 DSH 版本不支持 dsh plugin add,手动复制包到 $DSH_HOME/profiles/web/node_modules/,并在 cordis.patch.yml 中添加:

- insert:
- id: dsh-gemini-pool
name: dsh-gemini-pool

🧱 网络环境(需要代理时)

插件自身不含任何代理代码:所有 Google 请求都是进程内 fetch,用宿主装好的全局 HTTP 通路。宿主只在启动时从 harness home 的 .env 读取 HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / NO_PROXY(这几个名字写在其它任何位置的 .env 里会被宿主直接拒绝),并据此为插件装好代理。

⚠️ 「浏览器授权成功,但 DSH 里始终没有账号 / 刷新数据报无法获取」最常见的原因就是:代理文件放错了 home。

| 你用的是 | 代理文件写在这里 |
| CLI(dsh ...) | ~/.dsh/.env |
| DSH Desktop | Windows:%APPDATA%\dsh-desktop\harness\.envmacOS:~/Library/Application Support/dsh-desktop/harness/.env |

桌面版有自己的 harness home,不是 ~/.dsh;只放 ~/.dsh/.env 在桌面版上不会生效。(顺带:桌面版的 $DSH_HOME 就是上表那一格,账号文件在 <该目录>\storages\antigravity-pool-accounts.json。)

内容三行即可,端口按自己的代理改:

HTTP_PROXY=http://127.0.0.1:7897
HTTPS_PROXY=http://127.0.0.1:7897

- 写完后必须完全退出并重启 DSH:代理只在启动时读一次,刷新页面没用。
- 回环地址(设置页 GUI、OAuth 回调用的本地端口)由宿主自动绕过,不需要写 NO_PROXY。
- 自检:登录或额度刷新失败时,如果报错里是 UND_ERR_CONNECT_TIMEOUT 或 fetch failed,基本可以断定这条路没走代理。把 https://oauth2.googleapis.com/token 直连与走代理各请求一次即可确认(走通会返回 400,因为没带请求体)。
- 不需要、也不建议给插件加代理代码:宿主 Node 里 import('undici') 不可用,而进程内 fetch 会自动跟随宿主装的代理。

💧 账号池与调度

三种调度策略,设置页一键切换:

- 智能均衡(推荐) — 自动挑选剩余额度最健康的账号
- 主备切换 — 固定主账号,额度耗尽自动切备用
- 手动指定 — 锁定单一账号,用于调试或专跑

日常操作走对话命令:

| 命令 | 作用 |
| /antigravity-login | 登录 Google 账号 |
| /antigravity-quota | 查询各账号额度 |
| /antigravity-doctor | 自检诊断(视觉旁路排障见下文) |
| /antigravity-logout | 登出并移除账号凭证 |
凭证存储在 $DSH_HOME/storages/antigravity-pool-accounts.json(桌面版为 %APPDATA%\dsh-desktop\harness\storages\...),包含 access 与 refresh token,请妥善保管。旧版单账号凭证升级时自动迁移,无需重新登录。

🧊 冷却与自愈

账号遇到 429 后自动进入指数退避冷却。连续失败达到阈值时,插件禁用该账号并转入后台探活。额度恢复后账号自动回归,全程无需人工干预。

| 参数 | 默认值 | 说明 |
| cooldownMs | 1 分钟 | 首次冷却时长,之后逐次翻倍 |
| cooldownMaxMs | 1 小时 | 冷却时长上限 |
| disableThreshold | 5 次 | 连续失败达到即禁用该账号 |
| probeIntervalMs | 5 分钟 | 后台探活间隔,恢复即自动启用 |

被禁用的账号在设置页显示红色标签,可点「重新启用」一键恢复。以上参数均可在设置页「冷却与恢复」折叠区调整。

👁 无视觉主模型的看图旁路

主模型不支持看图时(如纯文本模型),贴图由池内 Gemini 代看后以文字回喂,分两条路:

- 自动转述(主路径,无感):贴图后,插件把发往模型的请求里的图片替换为池内 Gemini 的文字转述。主模型直接读到文字描述,无需任何操作。同一张图只转述一次(进程内缓存);会话历史里反复出现的图不重复消耗额度。转述附带原始图片哈希。转述失败时自动退回宿主占位路径,不阻塞对话。
- antigravity_read_image 工具(备用路径):想对某张图细看时,主模型可显式调用(参数为转述文本里的哈希前缀,也接受工作区内本地路径 / data: URL / http(s) 公网图片链接),实时重新转述。

- 数据流向:图片会经池内 Google 账号处理,与对话 / 生图同池同额度。
- 默认开启。关闭方式任选其一:
- 设置环境变量 ANTIGRAVITY_VISION_ENABLED=false
- 在设置页「视觉旁路」卡片一键关闭
- 经 /antigravity/api/config 在 accounts.json 里配置 visionEnabled: false

开关同时控制贴图准入与自动转述;关闭后,贴图行为恢复宿主原样。visionModel 指定代看模型;留空则自动挑选,设置页卡片可直接选择。
- 已知依赖:自动转述依赖宿主 llm/stream 事件、贴图准入依赖 resolveModelInfo 行为,宿主大版本升级后若贴图行为异常,需重审本节(当前在 DSH 0.2.0-rc.2 验证)。
- 排障:贴图后模型仍收到占位文本时,先运行 /antigravity-doctor,查看 visionBridge / visionShim 两行。两行显示 registered + installed 即为正常。服务端日志里,[Antigravity Pool Vision] 前缀的行记录桥的每一步判定(请求进入、模型判定、改写结果或放行原因)。贴图后一条前缀行都没有,说明事件没有到达桥。

🤖 模型一览

设置页勾选即用,已勾选的模型自动置顶,每个模型实时显示池内最高可用额度。

| 模型 | 额度池 |
| Gemini 3.8 / 3.7 / 3.6 / 3.5 Flash | Gemini |
| Gemini 3.1 Pro · Gemini 3.1 Flash Image(生图) | Gemini |
| Gemini 3 Flash · Gemini 2.5 Pro / Flash | Gemini |
| Claude Opus 4.6 · Claude Sonnet 4.6 · GPT-OSS 120B | Claude & GPT |

同一额度池内共享每周与 5 小时额度;额度按 token 成本比例消耗,越重的模型消耗越快。

🧭 架构

flowchart LR
subgraph HOST["DSH 宿主"]
LLM["llm/stream 请求流"]
SEL["模型选择器 / 设置页"]
end
subgraph PLUGIN["dsh-gemini-pool"]
CORE["插件主体命令与 API 路由"]
POOL["账号池管理调度 · 冷却 · 探活"]
VB["视觉旁路桥图片转文字"]
TOOLS["工具集read_image · image_generate"]
end
STORE[("凭证存储antigravity-pool-accounts.json")]
GOOGLE["Google Antigravity API"]

SEL --> CORE
LLM --> VB --> POOL
CORE --> POOL
TOOLS --> GOOGLE
POOL --> GOOGLE
POOL --> STORE

请求经宿主进入插件:视觉旁路桥改写无视觉模型的图片请求,账号池按调度策略选号并处理 429 冷却与探活,全部调用进程内直达 Google 官方端点。

🤝 贡献

欢迎 Issue 与 PR,用法与想法也可以到 讨论区 交流。提交前请先跑通本地检查:

npm install # 安装依赖
npm run check # 语法检查 + 测试

📄 许可证与致谢

本项目基于 MIT License 授权。
基于 @LiZhenNet 的 dsh-antigravity 构建,感谢 @Lukeknow0、@miuzel、@grloper、@sereineele 的社区贡献。
预览分享卡片长什么样 ↓qikairo7/dsh-gemini-pool
分享 · DeepSeek Harness Hub
qikairo7/dsh-gemini-pool

多账号 Google Gemini 提供商DSH…

回到顶部