AutoTeam-F / docs /troubleshooting.md
ZRainbow's picture
fix: 对齐注册轮转链路和 CloudMail 配置提示
5aff1af
|
Raw
History Blame Contribute Delete
7.08 kB
# 常见问题
## 安装相关
### Playwright 安装失败
```bash
uv run playwright install chromium
uv run playwright install-deps chromium
```
### macOS 上 Playwright Sync API 报错
```text
playwright._impl._errors.Error: It looks like you are using Playwright Sync API inside the asyncio loop.
```
设置环境变量:
```bash
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
uv run autoteam rotate
```
### Windows 启动时出现编码报错
如果历史 `.env` 文件含有 GBK / ANSI 编码或旧版内联注释格式,建议:
1.`.env` 保存为 UTF-8
2. 确认配置值格式为:
```env
AUTO_CHECK_INTERVAL=300 # 5 分钟
```
新版本已兼容 UTF-8 与尾部注释。
## 登录相关
### Codex OAuth 登录失败:未获取到 authorization code
常见原因:
1. **IP 被标记** — VPS 的 IP 被 OpenAI/Cloudflare 拦截,建议换住宅代理
2. **Cloudflare 验证** — 浏览器环境被检测,需更新 Chromium 或切换网络
3. **workspace 选择失败** — 页面结构变化,查看 `screenshots/codex_04_*.png`
4. **自动回调不可达** — 如果浏览器和 AutoTeam 不在同一台机器,`localhost:1455` 回调可能不会到达 AutoTeam,此时请改用手动粘贴回调 URL
5. **本地回调被代理拦截** — 如果启用了 `PLAYWRIGHT_PROXY_URL`,建议同时设置 `PLAYWRIGHT_PROXY_BYPASS=localhost,127.0.0.1`
### 登录后 plan 显示 free 而不是 team
通常是 `state.json` 中的 `workspace_name``account_id` 不正确。
检查:
```bash
cat state.json | python -m json.tool
```
确认:
- `account_id` 是有效 UUID
- `workspace_name` 是 Team 名称
### 验证码一直获取失败
- 检查 CloudMail 是否正常
- 检查邮箱域名 `CLOUDMAIL_DOMAIN`
- 系统会按 **邮件 ID** 跳过已经尝试过的验证码邮件,而不是按 6 位数字去重
- 如果浏览器长时间停在 `email-verification`,通常说明新的验证码邮件没有到达,或拿到的是旧邮件
## 轮转相关
### rotate 没有补号
先看 `get_team_member_count` 是否失败。若返回 `-1`,说明 Team API 调用异常:
- 确认管理员已登录(`state.json` 有 session token)
- 确认 `account_id` 是有效 UUID
### rotate 的目标人数为什么算不准
`rotate 3` / `fill 3` 中的 `3` 指的是 **Team 总人数目标**
也就是说:
- owner
- 外部成员
- 本地管理成员
都会一起计入这 3 个席位。当前自动轮转契约最多保留 `1 owner + 2 managed children`
### 旧号一直被复用但额度不够
旧号复用前会先验证额度。
如果验证返回 `auth_error`(token 失效),系统会参考:
- `last_quota`
- `quota_resets_at`
判断是否值得继续复用。5h 重置时间过后,旧数据会视为过期。
### Team 超员但没有清理
`rotate` 会自动清理超员成员。如果没生效,可手动执行:
```bash
uv run autoteam cleanup 3
```
## CPA 同步相关
### 反向同步后本地 token 似乎“变旧了”
新版本会比较本地与 CPA 两侧文件的:
- `last_refresh`
- `expired`
只有 CPA 文件更“新”时,才会覆盖本地文件。
如果你怀疑历史版本已经把旧 token 写回本地,可以先重新登录目标账号,再执行:
```bash
uv run autoteam pull-cpa
```
查看日志里的:
- `local_kept_newer`
- `cpa_duplicates_deleted`
- `local_duplicates_deleted`
### 同账号在 CPA / 本地出现多个文件名不同的认证文件
新版本会在同步时按同账号去重:
- CPA 侧只保留一份
- 本地也只保留一份
- 并统一重写为本地命名规范
如果你怀疑之前版本遗留了重复文件,执行一次:
```bash
uv run autoteam pull-cpa
```
## Docker 相关
### 容器一直重启
```bash
docker compose logs
```
通常是配置缺失或连通性验证失败。
### `data` 目录没有写权限
入口脚本会自动 `chmod -R 777 /app/data`。若仍有问题:
```bash
sudo chmod -R 777 data/
```
### 重建容器后配置丢失
确认 `docker-compose.yml` 中有:
```yaml
volumes:
- ./data:/app/data
```
### 容器里访问不到宿主机 SOCKS5 代理
如果代理在宿主机上,比如 `host.docker.internal:1080`,请先确认容器内可以解析并访问宿主机代理地址;不同 Docker / Podman 环境的宿主机别名配置方式可能不同。
然后在 `data/.env` 中配置:
```dotenv
PLAYWRIGHT_PROXY_URL=socks5://host.docker.internal:1080
PLAYWRIGHT_PROXY_BYPASS=localhost,127.0.0.1
```
如果代理需要认证,可以直接写成:
```dotenv
PLAYWRIGHT_PROXY_URL=socks5://username:password@host.docker.internal:1080
```
## Web 面板相关
### 页面显示 `JSON parse error`
说明后端返回了非 JSON 响应(通常是 500 错误)。查看后端日志定位具体异常。
### 操作按钮全部禁用
轮转 / 补满 / 清理等账号池操作需要先在「设置」页完成管理员登录。
### Team 成员页的 owner 为什么没有“移出”按钮
`account-owner` 角色不会显示“移出”按钮,因为这类账号通常无法通过普通成员删除接口移出。
### 刷新后数据没更新
点击侧边栏底部的「刷新数据」按钮手动刷新。
### 配置保存后 401 创建邮箱失败
issue#1 错配的典型表现:配置时填的是 maillab 的 `*_BASE_URL`,但 `MAIL_PROVIDER` 还是默认的 `cf_temp_email` → 启动校验在 `/admin/address` catch-all 路由上误回 200,但创建邮箱阶段被 maillab 拒回 `code:401`
修复路径见 [配置说明 → ⚠️ 协议错配排查](configuration.md#-协议错配排查issue-1) 与 [SetupPage 4 步状态机](getting-started.md#25-邮箱后端归属验证)。
## 邮箱后端
### 5 个常见错配场景与对应 `error_code`
| 场景 | 触发条件 | 报错 `error_code` | 修复 |
|---|---|---|---|
| issue#1 错配 | 选 `cf_temp_email` 但 base_url 是 maillab(或反向) | `PROVIDER_MISMATCH` | SetupPage 切换 provider 后重试 |
| 域名后台为空 | maillab `/setting/websiteConfig.domainList` 为空 | `EMPTY_DOMAIN_LIST` | 在 maillab 后台先添加可用域名 |
| 凭据错误 | 管理员密码或 username/password 错 | `UNAUTHORIZED` | 重置密码或确认主账号 |
| 启用了登录验证码 | maillab 后台 captcha = ON | `CAPTCHA_REQUIRED`(warning) | 关闭 captcha 或改用 admin 直登 |
| 域名未授权 | maillab 设置了 `addVerify=1` 拒绝创建非白名单域名 | `DOMAIN_REJECTED` | 在管理后台添加域名白名单 |
### 紧急逃生口
如果嗅探阻断了你已确认无误的配置,可以临时:
```bash
export AUTOTEAM_SKIP_PROVIDER_SNIFF=1
uv run autoteam api
```
仅在确诊误报时使用,生产环境不建议长期开启。
### maillab 401 自愈
`MaillabClient` 业务方法被装饰器包裹,任何一次响应 `code:401` 会自动触发 re-login 并重试。如果重试仍 401,会抛 `MaillabAuthFailed`(日志关键字 `[maillab] token 已自愈` 表示自愈成功)。详细策略见 [mail-provider-design.md §8](mail-provider-design.md#8-401-自愈策略)。