Repository navigation
v1.1.0
·
30 commits
to bd4689a39af7babf996c47e24821a257c1d68958
since this release
新增
- 导出凭证:账号池可以勾选账号后「导出凭证」,表头勾选框一次选中当前筛选结果,手机端在搜索框旁「全选」;单个账号在详情里导出。单个账号得到
workbuddy-<uid>.json,和数据目录里的凭证文件一模一样;多个账号得到一个 JSON 数组文件。文件里是能直接登录的凭证,请妥善保管。 - 企业版模型:每个国内版企业号单独拉一份自己的模型目录,拉的时候带齐企业身份(否则上游给的是个人号的名单)。只在企业号目录里出现的模型,比如企业开通的 Claude,会出现在
/v1/models和面板「模型与档位」里并标「企业专属」,请求只派给目录里有它的企业号;别的号能用、企业号自己目录里没有的模型,也不再派给这个企业号。做法参考了 dsh-workbuddy-connect 与 cli2api,见企业版模型。 - 导入认网关自己的凭证:「添加账号 → 导入 JSON」除了 cockpit tools 的文件,也能导入上面导出的文件(单个或批量),企业 ID、国内版 / 国际版、设备 token 原样保留,适合备份或迁到另一台网关。
变更
- Go 模块路径改为
github.com/yreidev/workbuddy2api-panel。只影响从源码编译或引用本仓库代码的人;镜像、二进制和配置不受影响。
修复
- 打开跨域负载均衡后,国际版账号几乎分不到不带前缀的请求:带会话的请求(客户端没传会话 id 时网关也会自己算一个,所以几乎是全部请求)分配账号时只在国内版号里挑。现在会话也在两域合池里分配,新会话可能绑到国际版号;已经绑定的会话不换号,等绑定过期(默认 30 分钟没有请求)、请求失败或绑定的号暂时用不了时才重新分配。
- 导入企业版账号时不再顺带签到(企业版没有签到,上游会拒绝)。
- 国际版企业号对话时不再声明「无企业」,改为带上企业 ID,与 cli2api、dsh-workbuddy-connect 的做法一致(国际版企业号尚未实测)。
- 客户端没传
conversation_id时,网关不再把自己算出的会话键当作X-Conversation-ID发给上游。这个会话键只由系统提示词和第一条用户消息决定,开头相同的两段不相干对话会得到同一个值,上游可能把它们当成同一个会话。prompt_cache_key仍按会话键区分不同对话,前缀缓存命中不受影响。 - 同样是客户端没传
conversation_id时,两段对话的内容撞上不再共用同一个X-Conversation-Request-ID:以前开头相同、中途走向不同的两段对话在同一位置发同一句话(比如「继续」),或者首轮逐字相同(同样的系统提示词和第一句话,中转站的渠道测试也是这样),上游会把它们并成一轮。现在每次用户发言新生成一个值,同一轮里的工具调用续轮凭网关转出去的工具调用 id 找回它,换号重试也沿用它,上游用量明细照旧按轮合并;网关重启时正在进行的那一轮会拆成两条记录,见会话粘性。 - 非流式请求:上游同时给了结构化的工具调用、正文里又带工具调用标记时,不再用从正文还原出来的调用覆盖真实的调用。
- 任务列表「全部接受」:常规任务都接受过时,不再直接回「所有任务均已接受」而漏掉还没接受的小程序任务(如小程序首对话)。
- 任务中心「使用平台专家」类任务:上游回复里同一段数据先出现别的 id、后出现服务端请求 id 时,不再误报「未找到服务端 requestId」。
- 国际版模型列表:
/v3/config探测全部失败、只剩企业端点而且它只给模型名时,不再当成探测失败(以前会把国际版号的模型列表清空);探测到的模型顺序也固定按 id 排列,不再每次刷新都变。 - 连登奖励日志:奖品内容超长截断时不再把中文切成半个字(日志里会出现乱码)。
- 命令行签到工具
signin_bin:token 在两小时内过期时先刷新再签到。以前时长单位写错,只有已经过期的 token 才会刷新,快过期的 token 可能在签到途中失效。
- Docker 镜像:
ghcr.io/yreidev/workbuddy2api-panel:1.1.0(同一镜像还有1.1、1标签) - 升级方法:见部署与运维
- 校验:
sha256sum -c --ignore-missing checksums.txt - 完整变更:v1.0.0...v1.1.0