Repository navigation
Releases: jin66god/workbuddy2api-panel
Releases · jin66god/workbuddy2api-panel
Release list
v1.20.1
文档
- 面板「出站 User-Agent」占位提示改为实际默认值:留空时按账号身份自动(CN
WorkBuddy/5.8.3、globalworkbuddy-ai/5.8.4,CLI 段2.161.0)。原提示写的CLI/2.63.2是历史遗留值,会让人误以为出站 UA 是另一套形态。 - README 清理过期版本标注:删除「当前版本」提示与历史 PR 合并记录,Go 要求与徽章同步为 1.27,镜像 tag 示例不再写死旧版本号。版本信息统一以 Releases 与
CHANGELOG为准。 - 同步修正配置项与注释里残留的旧默认值(
5.5.4、2.137.1),避免与代码实际默认不一致。
v1.20.0
新增
- 三个登录站点:面板「添加账号」与
login.sh都支持国内站(cn)、官方国际站(intl,www.codebuddy.ai)、旧桌面端国际版(workbuddy,www.workbuddy.ai)。国际站登录后自动完成注册地区、激活与试用额度领取,并跳过 CN 签到。 - 国际域按凭据
domain选主机:*.codebuddy.ai走 codebuddy.ai,*.workbuddy.ai走 workbuddy.ai。两个国际域同一后端,但 token 只在签发域可用;global.chat_base/billing_base仍可手工覆盖,已有账号行为不变。
修复
- 模型级冷却完整对齐上游重置墙钟:6004/6000 冷却不再被
soft_rate_max(默认 2h)截断;账号级软冷却的封顶逻辑保持不变。 - 429
code=6000按模型级限流处理:仅当文案同时包含「切换其他模型」时放宽为模型级,不带该提示的 6000 仍按账号级处理。 expiresAt毫秒自动归一:导入官方 CLI 凭据时不再算出公元 58800 年的到期时间,token 会正常刷新。- 登录终态许可错误立即报错:席位满
12005、许可证过期11212、试用到期11216直接把上游文案返回并停止轮询,不再空等到会话超时;11217/12151继续轮询。 - 模型未调工具的正常收尾降为 INFO:合法回合不再以 WARN 进入日志巡检。
变更
- 登录链路 UA 与授权链接
version参数对齐官方 CLI2.174.0;chat 侧 UA 仍按账号身份分档,不受影响。
v1.19.0
v1.19.0
新增
- 按模型查询可用容量:新增
GET /v1/capacity?model=<cn:|global:>模型名,返回该模型此刻可出票的账号数(model_available_accounts)与整池健康账号数(available_accounts)。纯本地台账、不打上游,供负载均衡/客户端判断某模型在本实例是否可服务;被models.hidden点名的模型恒报 0。鉴权与/status同口径。 - 保活临期窗口:周期 token 保活不再每天对全部账号轮换 refresh token,只刷新剩余有效期不超过窗口(默认 7 天)的凭证;已过期/无到期时间的账号始终刷新。面板「全部保活」手动入口仍全量,减少无谓轮换与风控暴露面。
修复
reasoning_effort=off/none现在真的关闭思考:此前off只被当作档位排序占位,会被降级管线抬成最弱正档,表现为「要求关闭思考却仍返回思维链」。DeepSeek 系改写为thinking.type=disabled并清除档位字段;其他模型清除非法档位值后透传。- 网关 401 不再误杀健康账号:refresh 失败时先分辨是「上游应用层明确判词」还是「边缘拦截/抖动」。只有明确判词(4xx 非 429、非 HTML 拦截页)才累计 session dead;HTML 401/403、5xx、429、传输错误只软冷却。chat 与搜索两条路径同口径;刷新成功后仍 401 的降级凭证也不再计死。
配置
schedule.keepalive_refresh_window(默认168h):周期保活的临期窗口,Go 时长格式;留空回落默认,非法或<=0启动报错。面板保存后热生效。
v1.18.0
新增
- 运行日志持久化:面板「运行日志」的 sys / task / chat 三频道同时写入
<state>/logs/panel-YYYY-MM-DD.jsonl,进程启动时回填最近 500 行。此前只有内存环形缓冲,更新面板或重启后历史日志全部消失;现在重启与升级后仍可查看。保留策略与请求归档同口径:默认 7 天、总量 50 MiB,超出按最旧删除。 - 运行日志导出:运行日志标题栏新增「导出」按钮与范围选择(今日 / 近三天 / 7 天 / 全部),下载 ZIP(
panel-logs.ndjson+meta.json)。导出前统一脱敏 token / api_key / Bearer / 手机号;单次上限 200 MiB,超限返回 413 并提示缩短范围;同一时刻只允许一个导出任务。
配置
logging.panel_log_persist_enabled(默认true):运行日志落盘开关logging.panel_log_retention_days(默认7):保留天数logging.panel_log_max_mb(默认50):落盘总量上限logging.log_export_max_mb(默认200):单次导出上限
v1.17.8
修复
- 图片请求检测容错:
hasImagePart改为逐条解析content,字符串 / null 形态不再让整个请求体解析失败,避免另一条消息里的image_url被漏判(错误提示会因此误指向「纯文本请求」)。 - 14003 等待不再提前醒来:等待时长由双向抖动(±25%)改为只向上浮动(0 ~ +25%)。此前抽到负向系数会在模型冷却未解除时醒来,把「每请求只等一次」的额度白花掉,客户端多等一轮后仍拿 503。
- 轮转耗尽也报
model_busy:末端补一次模型阻塞快照。此前走轮转耗尽 / WAF 止损路径时不经过选号失败分支,同一件「全池该模型繁忙」会退化成 429rate_limit_exceeded且没有 Retry-After(MaxRotate=1时必现)。 - 账号摊开按计划时刻遍历:修正 uid 序下「前面的号计划更晚、把后面的号逐个堵住」导致的执行时刻塌缩(多个账号挤在同一秒跑完)。
v1.17.7
修复
- 401 网关拒绝后的自愈:上游网关(APISIX)在 token 被提前吊销时会返回
401 Authorization Required的 HTML,没有业务信封。此前这类响应归入通用 4xx:对话请求只换号、余额任务只打日志,既不会刷新 token,也不会标记账号失效——表现为「全部账号 401、只能人工重登」,而且余额任务每 5 分钟无限空刷。现在单独分类为token_rejected:对话与余额刷新会先强制刷新一次 token,再用新 token 重试同一账号;刷新失败才按连续 3 次会话失效软着陆禁用,单次 401 不杀号。搜索端点的 401 语义不唯一(可能是该号未开通搜索),只换号、不累计会话失效。 - 企业切换会话不再阻断成长任务:
token_source=enterprise_switch只记录本次授权走了企业切换流程,不代表账号处于企业上下文。成长任务门控改为只看enterpriseId与静态 API Key,登录日志降为提示,修复微信扫码登录的个人号「成长任务无法执行」。
v1.17.6
安全修复
- 修复 CVE-2026-111943(Go
crypto/x509中间证书信任漏洞)
8 个私钥已外泄的 eMudhra / emSign 中间 CA 不再被信任:证书链只要包含这些中间证书,
验证即失败(x509: no valid chains built),避免被用于签发任意域名的伪造证书实施中间人攻击。
该过滤为硬编码、不可关闭,必须重新编译才会生效。
构建与发布
- 构建工具链升级到 Go 1.27.3(
go.mod的go指令与 Docker 构建镜像同步),
CI 与镜像构建均使用该安全版本。 - 预编译二进制与
ghcr.io/jin66god/workbuddy2api-panel多架构镜像(amd64 / arm64)均已用 1.27.3 重新构建。
v1.17.5
更新说明
新增
- 出站 TLS 指纹对齐官方客户端:18 个 cipher 顺序、12 个扩展顺序、9 项签名算法按真机抓包复刻,
直连 HTTPS 走 uTLS 自定义 ClientHello。实测JA3=1a3153f314dc13e133dc71d113a81b16、
JA4=t13d1812h1_5d04281c6031_ef7df7f74e48,与官方业务 API 逐位一致。
可用WB2_TLS_FINGERPRINT=0回退标准库。
修复
- 镜像构建:uTLS 依赖要求 Go ≥ 1.24,Dockerfile 构建镜像升级到
golang:1.24-alpine。
变更
- 镜像仅在打 tag 时构建,日常合并到 main 不再触发双架构构建。
- Release 日志只保留面向用户的更新说明。
v1.17.3
修复
- 发往上游的
conversationId/requestId/traceId/rootRequestId与自动化任务名不再带wb2api-前缀,也不再使用「前缀 + 毫秒时间戳」形状。 - 统一由
internal/upstream/official_ids.go生成:会话/请求 ID 为 UUID 形状,traceId 为 32 位十六进制,任务名使用官方产品名。 - 桌面专家对话的
X-Conversation-ID/X-Request-ID改为官方形状,不再自报家门。 - 覆盖
upstream/desktop.go、school.go、blackcat.go、panel/autotask.go(14 处)、scheduler/scheduler.go、scheduler/travel.go。
v1.17.2
本版重点
DSH(DeepSeek Harness)品牌词脱敏按消息角色收窄
- 裸品牌词
DeepSeek Harness只对system/developer改写成DeepSeekRuntime;user/assistant/tool里的同名文本原样保留。上游渠道校验只看系统提示词(实测同一短语放进 user 消息返回 200),改写用户输入、工具结果与读进来的文件内容没有必要,还会让对话记录对不上。 - 整句身份句
You are CodeBuddy Code仍改写为新版 CodeBuddy 首句,保留原标点与后续内容。 - 全局预检不再收裸品牌词:避免用户文本只含该词时被拖进清洗流程、末尾
TrimSpace静默裁掉首尾空白。
Token 刷新落盘加有界重试
refresh成功后写 auth 文件失败会重试 3 次(0 / 100 ms / 300 ms)。上游在刷新时已轮换 RT,落盘失败若进程重启会拿旧 RT 去换,账号可能直接被判「需要重新登录」。
验证
go build ./.../go vet ./.../go test ./... -count=1全绿(含新增 6 条脱敏回归)- Linux arm64 二进制启动冒烟:
/panel/api/overview返回"version":"1.17.2-panel" - Release 资产
sha256sum -c checksums.txt通过;二进制为 stripped ELF - 镜像
1.17.2/1.17/1指向同一 multi-arch index(linux/amd64 + linux/arm64)
升级
Docker:
docker compose pull && docker compose up -d二进制:下载对应平台包覆盖后重启进程。
镜像
ghcr.io/jin66god/workbuddy2api-panel:{1.17.2, 1.17, 1, latest}
资产校验
sha256sum -c checksums.txt完整变更:v1.17.1...v1.17.2