内容
# Gemini 账户切换工具 (Rust)
> 一个高性能的 Rust 扩展程序,适用于 [Gemini CLI](https://github.com/google/gemini-cli),添加了多账户支持,并带有智能后台监视器,用于配额管理。



---
## 为什么?
Gemini CLI 通常只允许一个 Google 账户。对于大量工作,您可以快速达到免费层配额的限制。此工具允许您:
- **切换多个账户** 以绕过单账户限制。
- **即时切换** 通过 Gemini 会话中的斜杠命令。
- **后台监视器** 实时登录以检测 `RESOURCE_EXHAUSTED` 错误,并提示立即切换到您最“休息”的账户。
## 功能
- **MCP 集成**:完全符合 Model Context Protocol 服务器,暴露账户工具。
- **智能自动切换**:在您被阻止时自动识别剩余配额最多的账户。
- **后台监视器**:实时日志监控,带有原生桌面通知。
- **会话安全**:在每次切换前自动备份您的活动会话。
- **原生性能**:单个二进制文件,低内存占用,快速的文件操作。
## 架构
1. **MCP 服务器 (`mcp`)**:处理来自 Gemini CLI 的工具调用(列表、保存、切换、删除)。
2. **监视器 (`watch`)**:后台循环,扫描日志,跟踪使用情况,并提供交互式切换 UI。
---
## 安装
### 1. 从源代码构建
```bash
cargo build --release
```
二进制文件将在 `target/release/gemini-account-switcher-rs` 处生成。
### 2. 注册扩展程序
通过确保您的 `gemini-extension.json` 存在于项目根目录中,将扩展程序链接到您的 Gemini CLI:
```json
{
"name": "GeminiAccountSwitcherRs",
"version": "0.1.0",
"mcpServers": {
"accountSwitcher": {
"command": "/absolute/path/to/target/release/gemini-account-switcher-rs",
"args": ["mcp"]
}
}
}
```
---
## 使用
### 步骤 1:保存您的账户
在 Gemini CLI 中,将当前会话保存为一个名称:
```
/accounts:save main
/accounts:save secondary
```
### 步骤 2:启动监视器
在单独的终端窗口中,保持监视器运行:
```bash
./target/release/gemini-account-switcher-rs watch
```
### 监视器输出示例
```text
╔══════════════════════════════════════════════════╗
║ Gemini 账户切换工具 — 监视器 (Rust) ║
╚══════════════════════════════════════════════════╝
👤 当前账户:main
📊 今日使用情况:
main: 847 请求 — 成功
secondary: 12 请求 — 成功
👁️ 监视 Gemini CLI 日志中的配额错误...
```
当配额耗尽时,监视器会提示您:
```text
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 配额耗尽:main
切换到:secondary(今日已使用 12 请求)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
是否切换?(y/n):y
✅ 已切换到 secondary。请重启您的 Gemini CLI 会话。
```
---
## 工作原理
### 账户存储
Gemini CLI 将凭证存储在 `~/.gemini/` 中。此工具为每个账户在 `~/.gemini-accounts/<name>/` 中创建一个配置文件,并在切换时交换文件(`oauth_creds.json` 等)。
### 配额检测
监视器每 5 秒轮询一次 `~/.gemini/tmp/*/logs.json`。它使用高性能流读取来检测 `RESOURCE_EXHAUSTED` 字符串,而无需每次重新读取整个日志文件。
### 选择逻辑
当需要切换时,工具会扫描所有未标记为“今日已耗尽”的已保存账户,并选择 `daily_requests` 计数最低的账户。
---
## 文件和文件夹位置
| 项目 | 位置 |
| :--- | :--- |
| **已保存账户** | `~/.gemini-accounts/` |
| **使用情况跟踪器** | `~/.gemini-accounts/_usage_tracker.json` |
| **会话备份** | `~/.gemini-accounts/_previous_session/` |
| **Gemini CLI 日志** | `~/.gemini/tmp/*/logs.json` |
---
## 许可证
Apache License 2.0