新增
Opper 与 API Route 供应商预设
- 新增 Opper 聚合供应商,支持 OpenAI Chat Completions、Responses 与 Anthropic 三种协议;模型可使用池化短名自动选路,也可用
provider/model固定线路,填写 API Key 后可拉取模型列表 - 新增 API Route 预设,使用
https://global.api-route.com/v1的 OpenAI Chat Completions 接口;按密钥权限拉取并导入模型,保留上游返回的完整模型 ID,不添加厂商前缀或预填过期模型目录
改动
用户供应商配置迁移到 providers.json,支持外部编辑热加载
- 用户添加的非托管供应商、模型别名与凭证改存到应用数据根目录的
providers.json,供应商与模型按 ID 组织,便于本地网关、脚本或手动编辑接入;托管nextcowork供应商仍留在数据库中 - 首次迁移前生成
nextcowork.pre-providers-file.db整库快照;已有文件只补缺失供应商,不覆盖已有条目,确认供应商已写入后再清理旧库记录;无法解密的凭证保留原密文,迁移失败时本次启动继续使用数据库 - 通过目录监听与 5 秒轮询拾取外部修改,兼容编辑器的临时文件替换写法;写入前重读磁盘,保留未改动条目的内容,文件解析失败时保留上一份有效配置并拒绝覆盖写入
- 外部变更刷新模型界面,但不因临时删除条目而永久改选默认模型;文件模式不再自动补回未配置的内置上游及对应默认模型
- 凭证存储变化:该文件包含明文 API Key,OAuth / 签名凭证以明文对象保存,应按敏感文件保管;写入时设置
0600权限(受平台和文件系统支持限制),托管供应商凭证仍沿用数据库加密存储
修复
Anthropic 思考档位与旧 Token 预算兼容
- 更新适用 Claude 型号的 adaptive thinking 声明,按模型能力发送
thinking.type=adaptive与output_config.effort;未收录的新版 Claude ID 采用保守推断,不猜测是否支持关闭思考 - 旧目录中未改动的预算配置随新版目录采用 adaptive 档位,保留用户手动预算与显式覆盖;必须使用 adaptive 的型号在读取和发送时转换,不改写已保存的预算,Claude 4.5 / 4.6 的手工预算继续可用
- 思考选择器与请求适配共用实际供应商协议和有效档位;保留预算裁剪前的原始档位选择,仅有旧预算参数的调用换算为受支持的强度,避免界面选择与实际请求不一致
- 仅在型号确认支持时提供关闭思考,关闭时清除残留的
output_config.effort;模型配置编辑器同步拦截不兼容的默认关闭设置 - 定时任务按目标模型归一化思考档位,不再直接套用模型不支持的工作区默认值,且不改写工作区设置或已保存的模型配置
后台子代理汇报送达确认与会话历史恢复
- 后台汇报只有收到同一消息 ID 的
message_commit才标记已送达,不再把入信箱或启动成功当作完成;运行正常结束但尚未消费的报告按原顺序优先重投,停止、报错或启动失败则退回待处理,避免误报已汇报或擅自续跑 - 「回传中」只作为运行期状态,未确认前持久化为待处理,兼容重启后重试旧版遗留状态;迟到的子代理结束事件、快照重放和工具回执不再覆盖已有汇报状态
- 历史回填按共同消息 ID 合并并保留早期页的位置,不按时间戳重排;恢复期间新加载的早期消息不会丢失,快照中的页外旧提交也不会被追加到对话末尾
- 新运行广播先于旧运行结束事件到达时,及时接管活动运行并重置事件游标,避免继续恢复旧运行或沿用上一轮的临时状态
测试
- 新增供应商文件存储、数据库迁移与 API Route 配置测试;补充 Anthropic 目录继承、旧预算转换、协议边界、关闭思考及定时任务档位归一化回归用例
- 补充后台汇报提交确认、未消费报告重投、崩溃后重试、汇报状态重放,以及历史分页位置与新旧运行交接的回归测试
- 相关 16 个测试文件共 648 项通过,
typecheck(node + web + plugins)与test:release(5 项)通过