Skip to content

Configuration

Sliverkiss edited this page Sep 14, 2026 · 1 revision

配置

网关所有配置项集中在 config.json(参考模板见仓库根目录 config.example.json)。启动流程为:

  1. 加载 config.json
  2. 应用 WB2A_* 环境变量覆盖(仅当环境变量非空时生效);
  3. 归一化校验(非法值回退默认 / 报错)。

未填写字段全部使用内置默认值。


顶层字段

{
  "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" }
}

listen

监听地址,默认 :7863

api_key

网关 Bearer 鉴权密钥。为空则关闭鉴权/v1/* 不再校验 Authorization 头,任何请求均可放行)。生产务必设置。

auth_dir

账号凭证目录,默认 ./auths。网关启动时扫描该目录下 workbuddy*.json 文件加载账号(见 Deployment 的凭证格式)。

state_file

池状态持久化文件路径,默认 ./data/state.json。每 5s 原子落盘(dirty 标志触发),进程退出前 Flush() 再写一次。启动时若配置了 upstash,会比较本地文件与 Redis 快照的新旧,采用较新者恢复。

server.max_body_mb

请求体上限(MB),默认 8。超限返回 413 request_body_too_largemax_body_mb <= 0 时启动报错。

cooldown

字段 默认 含义
soft_rate 600s 429 软冷却基础时长;连续触发按 2^(streak-1) 指数退避
soft_rate_max 2h 软退避封顶(未配置时内置默认亦为 2h)

schedule

四类定时任务各自独立排程,均默认启用。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

global

字段 默认 含义
enabled true 国际版总开关。true:国际版账号按 global 处理;false:全部账号按 CN 处理(纯 CN 部署锁死后门)
chat_base "" 国际版 chat 基础地址覆盖(默认 https://www.workbuddy.ai
billing_base "" 国际版 billing 基础地址覆盖(默认 https://www.workbuddy.ai

upstream

字段 默认 含义
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 头

features.sanitize_blacklist_fingerprints

默认 true。出站请求体做指纹黑名单字段清洗(见 Error-Handling 的脱敏段)。

prompt

字段 默认 含义
mode custom custom:网关自有提示词替换客户端 system/developer;passthrough:原样透传,遇内容拦截时自动降级为中性提示词重试
file "" 自定义提示词文件;为空使用内置提示词

upstash

字段 默认 含义
url "" Upstash Redis REST URL(留空则池状态仅本地落盘,并回退内存态)
token "" Upstash Redis REST token

配置后,池状态每 5s 异步镜像一份快照到 Redis(键 TTL 7 天),启动时与本地 state.json 择新恢复;会话粘性绑定同样可镜像(7 天 TTL)。连接失败自动回退内存态(Noop),不影响主流程。

pool

字段 默认 含义
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 闲置补偿上限

session_sticky

字段 默认 含义
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;
  • 其余非法值回退默认并打日志。

Clone this wiki locally