-
Notifications
You must be signed in to change notification settings - Fork 213
Configuration
网关所有配置项集中在 config.json(参考模板见仓库根目录 config.example.json)。启动流程为:
- 加载
config.json; - 应用
WB2A_*环境变量覆盖(仅当环境变量非空时生效); - 归一化校验(非法值回退默认 / 报错)。
未填写字段全部使用内置默认值。
{
"listen": ":7863",
"api_key": "test_key",
"auth_dir": "./auths",
"state_file": "./data/state.json",
"server": { "max_body_mb": 8 },
"cooldown": { "soft_rate": "600s", "soft_rate_max": "2h" },
"schedule": {
"checkin_hours": [9, 21],
"travel_hours": [9, 21],
"activity_hours": [10],
"keepalive_hours": [22],
"checkin_enabled": true,
"travel_enabled": true,
"activity_enabled": true,
"keepalive_enabled": true
},
"global": { "enabled": true, "chat_base": "", "billing_base": "" },
"upstream": {
"timeout_seconds": 120,
"header_timeout_seconds": 120,
"idle_timeout_seconds": 300,
"user_agent": "",
"client_version": "",
"cli_version": "",
"device_token": "",
"device_token_file": "",
"client_name": "",
"passthrough_ip": false
},
"features": { "sanitize_blacklist_fingerprints": true },
"prompt": { "mode": "custom", "file": "" },
"upstash": { "url": "", "token": "" },
"pool": {
"max_in_flight": 3,
"breaker_threshold": 3,
"breaker_cooldown": "30m",
"breaker_cooldown_max": "6h",
"idle_weight_per_hour": 0.5,
"idle_weight_max": 5.0
},
"session_sticky": { "enabled": true, "ttl": "30m", "gc_interval": "5m" }
}监听地址,默认 :7863。
网关 Bearer 鉴权密钥。为空则关闭鉴权(/v1/* 不再校验 Authorization 头,任何请求均可放行)。生产务必设置。
账号凭证目录,默认 ./auths。网关启动时扫描该目录下 workbuddy*.json 文件加载账号(见 Deployment 的凭证格式)。
池状态持久化文件路径,默认 ./data/state.json。每 5s 原子落盘(dirty 标志触发),进程退出前 Flush() 再写一次。启动时若配置了 upstash,会比较本地文件与 Redis 快照的新旧,采用较新者恢复。
请求体上限(MB),默认 8。超限返回 413 request_body_too_large。max_body_mb <= 0 时启动报错。
| 字段 | 默认 | 含义 |
|---|---|---|
soft_rate |
600s |
429 软冷却基础时长;连续触发按 2^(streak-1) 指数退避 |
soft_rate_max |
2h |
软退避封顶(未配置时内置默认亦为 2h) |
四类定时任务各自独立排程,均默认启用。hours 为本地小时(0-23),空数组 = 未配置 → 使用默认时段(不是禁用);真正关闭某项任务须设 *_enabled: false。
| 字段 | 默认时段 | 含义 |
|---|---|---|
checkin_hours |
[9, 21] |
每日签到 |
travel_hours |
[9, 21] |
猫猫旅行巡检(派出 / 领奖闭环) |
activity_hours |
[10] |
对话活跃上报 |
keepalive_hours |
[22] |
token 保活刷新 |
checkin_enabled / travel_enabled / activity_enabled / keepalive_enabled
|
true |
各任务独立开关 |
活动上报条数 schedule.activity_report_count(顶层 schedule 段支持)默认 5;0 / 负值按 1 处理。详见 Scheduler。
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
国际版总开关。true:国际版账号按 global 处理;false:全部账号按 CN 处理(纯 CN 部署锁死后门) |
chat_base |
"" |
国际版 chat 基础地址覆盖(默认 https://www.workbuddy.ai) |
billing_base |
"" |
国际版 billing 基础地址覆盖(默认 https://www.workbuddy.ai) |
| 字段 | 默认 | 含义 |
|---|---|---|
timeout_seconds |
120 |
请求体写入超时 |
header_timeout_seconds |
120 |
响应头超时 |
idle_timeout_seconds |
300 |
空闲超时 |
user_agent |
"" |
UA 覆盖(默认按 realm 生成 WorkBuddy/<ver> WorkBuddy AI/<ver> CLI/<cliVer>) |
client_version |
5.5.4 |
客户端版本声明 |
cli_version |
2.137.1 |
CLI 版本声明 |
device_token |
"" |
固定 device token |
device_token_file |
"" |
device token 文件路径(容器内兜底读取,5 分钟缓存,>1KB 忽略) |
client_name |
"" |
注入 X-IDE-* 归属头(设置后启用) |
passthrough_ip |
false |
透传客户端 IP 头 |
默认 true。出站请求体做指纹黑名单字段清洗(见 Error-Handling 的脱敏段)。
| 字段 | 默认 | 含义 |
|---|---|---|
mode |
custom |
custom:网关自有提示词替换客户端 system/developer;passthrough:原样透传,遇内容拦截时自动降级为中性提示词重试 |
file |
"" |
自定义提示词文件;为空使用内置提示词 |
| 字段 | 默认 | 含义 |
|---|---|---|
url |
"" |
Upstash Redis REST URL(留空则池状态仅本地落盘,并回退内存态) |
token |
"" |
Upstash Redis REST token |
配置后,池状态每 5s 异步镜像一份快照到 Redis(键 TTL 7 天),启动时与本地 state.json 择新恢复;会话粘性绑定同样可镜像(7 天 TTL)。连接失败自动回退内存态(Noop),不影响主流程。
| 字段 | 默认 | 含义 |
|---|---|---|
max_in_flight |
3 |
单账号最大在途请求数(租约),0 = 不限 |
breaker_threshold |
3 |
连续失败达到该次数触发熔断 |
breaker_cooldown |
30m |
熔断基础时长 |
breaker_cooldown_max |
6h |
熔断退避封顶(base × 2^retryCount) |
idle_weight_per_hour |
0.5 |
闲置补偿:每小时增加的权重 |
idle_weight_max |
5.0 |
闲置补偿上限 |
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
会话粘性总开关 |
ttl |
30m |
会话绑定有效期,访问滚动续期 |
gc_interval |
5m |
过期绑定后台清理周期 |
全部可选,非空时覆盖同名字段。清单如下:
| 环境变量 | 覆盖字段 |
|---|---|
WB2A_LISTEN |
listen |
WB2A_API_KEY |
api_key |
WB2A_AUTH_DIR |
auth_dir |
WB2A_STATE_FILE |
state_file |
WB2A_MAX_BODY_MB |
server.max_body_mb |
WB2A_SOFT_RATE |
cooldown.soft_rate |
WB2A_SOFT_RATE_MAX |
cooldown.soft_rate_max |
WB2A_TIMEOUT_SECONDS |
upstream.timeout_seconds |
WB2A_HEADER_TIMEOUT_SECONDS |
upstream.header_timeout_seconds |
WB2A_IDLE_TIMEOUT_SECONDS |
upstream.idle_timeout_seconds |
WB2A_USER_AGENT |
upstream.user_agent |
WB2A_DEVICE_TOKEN |
upstream.device_token |
WB2A_DEVICE_TOKEN_FILE |
upstream.device_token_file |
WB2A_CLIENT_NAME |
upstream.client_name |
WB2A_CLIENT_VERSION |
upstream.client_version |
WB2A_CLI_VERSION |
upstream.cli_version |
WB2A_PASSTHROUGH_IP |
upstream.passthrough_ip |
WB2A_SANITIZE_FINGERPRINTS |
features.sanitize_blacklist_fingerprints |
WB2A_PROMPT_MODE |
prompt.mode |
WB2A_PROMPT_FILE |
prompt.file |
调试辅助:设置
WB2A_DUMP_REQ=1会在出站前打印请求体,用于排查改写后的 payload。
-
max_body_mb <= 0→ 启动报错; - 时长字段(
soft_rate等)解析失败 → 报错; -
prompt.mode仅接受custom/passthrough; -
schedule.*_hours数值须在 0-23; - 其余非法值回退默认并打日志。