# 常见问题 ## 安装相关 ### 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-自愈策略)。