fix(admin): repair model discovery and simplify model setup
This commit is contained in:
+17
-1
@@ -2492,7 +2492,7 @@
|
||||
|
||||
## BUG-146 | staging 后台写请求把 Caddy 上游协议误当公开来源
|
||||
|
||||
- 状态:resolved(local candidate,未 push / deploy)
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-08-07
|
||||
- 最近更新:2026-08-07
|
||||
- 影响面:所有经 `requireAdminMutation` 的后台写接口、`admin.staging.jyotisha.chat` 模型管理写操作;普通 staging 用户域名、其他后台功能的通用 `ReasonActionModal` 与 production 未改动。
|
||||
@@ -2520,3 +2520,19 @@
|
||||
- 相关记录:BUG-124、BUG-135、BUG-145、BUG-146
|
||||
- 复发自:无
|
||||
- 修复版本:待本次 staging SHA
|
||||
|
||||
## BUG-148 | Node 22/24 all-address lookup 使模型发现 DNS pinning 失效
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-08-08
|
||||
- 最近更新:2026-08-08
|
||||
- 影响面:共享 `requestAllowedModelProvider` 的固定 DNS HTTPS 请求;OpenAI-compatible 供应商模型发现无法到达已通过公网 SSRF 校验的上游。支付网关、SSRF 边界、重定向拒绝、超时与响应大小限制未放宽。
|
||||
- 用户现象:staging Web 容器内使用同一 DNS pinning/request 链路请求模型列表时失败,脱敏错误为 `ERR_INVALID_IP_ADDRESS`,已固定的地址族为 IPv4。
|
||||
- 触发条件:Node 22/24 的 `https.request` / `net.connect` 以 `lookup` 选项 `all=true` 调用自定义 DNS callback;旧实现无条件调用 `callback(null, address, family)`,而 all-address 契约要求第二参数为 `[{ address, family }]`。
|
||||
- 根因:共享 HTTPS helper 只实现了旧的单地址 lookup callback 形态,没有根据 Node 传入的 `options.all` 切换返回值;因此安全校验和 DNS 解析均成功后,Node 在建连前把字符串结果按地址数组读取并抛出 `ERR_INVALID_IP_ADDRESS`。discover route 的 provider 读取、密钥解密、`/models` URL、响应解析和错误翻译均不是本次失败根因。
|
||||
- 修复:抽出 `pinnedAddressLookup` 供共享 HTTPS 请求使用;`options.all=true` 时返回单元素已验证地址数组,其他模式继续返回 `address, family`。仍只使用已通过完整公网校验的固定地址,不重新解析、不跟随重定向,也不删除任何 SSRF/信任边界校验。
|
||||
- 验证:`npx tsx --test tests/model-provider-encrypted-credentials.test.ts` 的真实本地 TCP 回归在修复前稳定失败为 `ERR_INVALID_IP_ADDRESS`(4 passed / 1 failed),修复后对 `autoSelectFamily=true` 的 all-address 模式和 `autoSelectFamily=false` 的单地址模式均实际建连成功(5 passed / 0 failed)。
|
||||
- 防复发:DNS-pinned 请求测试必须通过 Node 网络栈实际调用自定义 lookup,并同时覆盖地址数组与单地址 callback 契约;不得用只匹配源码字符串的断言替代该回归。
|
||||
- 相关记录:BUG-146、BUG-147
|
||||
- 复发自:无
|
||||
- 修复版本:2026-08-08 staging 变更
|
||||
|
||||
Reference in New Issue
Block a user