File size: 7,080 Bytes
c761692
 
 
 
 
 
 
 
831a8c8
c761692
 
 
 
831a8c8
c761692
 
 
 
831a8c8
c761692
 
 
 
 
831a8c8
 
 
 
 
 
 
 
 
 
 
 
 
c761692
 
 
 
 
fcb2d84
831a8c8
 
 
fcb2d84
c761692
 
 
831a8c8
 
 
 
c761692
 
 
831a8c8
 
 
 
c761692
 
 
831a8c8
 
 
 
c761692
 
 
 
 
831a8c8
 
c761692
831a8c8
 
 
 
5aff1af
831a8c8
 
 
 
 
 
5aff1af
c761692
 
 
831a8c8
 
 
 
 
 
 
c761692
 
 
831a8c8
 
 
5aff1af
831a8c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c761692
831a8c8
c761692
 
 
 
 
 
 
831a8c8
c761692
 
831a8c8
 
 
c761692
831a8c8
c761692
 
 
 
 
 
 
831a8c8
 
c761692
 
 
 
 
fcb2d84
 
bf58c8d
fcb2d84
 
 
 
 
 
 
 
 
 
 
 
 
 
c761692
 
831a8c8
c761692
831a8c8
c761692
 
 
831a8c8
 
 
 
 
c761692
 
 
 
f82773a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
# 常见问题

## 安装相关

### 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-自愈策略)。