mirror of
https://git.openapi.site/https://github.com/desirecore/config-center.git
synced 2026-10-21 02:24:36 +08:00
feat: 建立版本化模型目录与规范字段生成链路 (#116)
This commit is contained in:
@@ -10,3 +10,4 @@
|
||||
- [非模型来源与策略](data-sources/README.md)
|
||||
- [运行时官方来源](runtime-sources/README.md)
|
||||
- [官网缺失与来源不明独立清单](source-gaps/README.md)
|
||||
- [旧字段迁移、版本门控、域名退役与规格优化 PLAN](plans/catalog-contract-migration/PLAN.md)
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
|
||||
- 核验日期:2026-10-03。
|
||||
- 配置范围:29 个 Provider、11 个套餐、23 个共享规格文件。
|
||||
- 当前模型记录:619 条(同一模型在不同接入面会分别计数)。
|
||||
- 346 条 `partial`:只核实表中列出的字段,可能仅确认官网出现该 ID;不是整条规格全通过。
|
||||
- 当前模型记录:626 条(同一模型在不同接入面会分别计数)。
|
||||
- 353 条 `partial`:只核实表中列出的字段,可能仅确认官网出现该 ID;不是整条规格全通过。
|
||||
- 272 条 `pending`:登记官网入口,但尚未取得该条模型的字段级证明。
|
||||
- 346 条 partial 中,214 条仅确认 ID,132 条还核实过其他字段;仍不代表整条通过。
|
||||
- 353 条 partial 中,216 条仅确认 ID,137 条还核实过其他字段;仍不代表整条通过。
|
||||
- 1 条 `historical`:匿名模型的历史兼容记录,不证明当前平台可用。
|
||||
|
||||
没有把所有存量数据写成已核实。当前确认的是本轮明确核对的字段、官网公共目录以及本地配置契约;没有执行逐供应商账号的收费模型调用。
|
||||
|
||||
@@ -60,3 +60,21 @@
|
||||
}
|
||||
```
|
||||
<!-- source-metadata:end -->
|
||||
|
||||
## compute/model-specs/qwen.json:精确绑定
|
||||
|
||||
仅登记既有接入精确身份;官网字段证据待核,不能把本记录当作完整能力合同。
|
||||
|
||||
<!-- source-details: {"config":"compute/model-specs/qwen.json","id":"qwen3-coder-next"} -->
|
||||
```json
|
||||
{
|
||||
"spec.description": "精确绑定已有接入型号,参数未核实;identity-only规格不继承旧family能力、窗口、协议或自动路由资格。"
|
||||
}
|
||||
```
|
||||
<!-- source-details:end -->
|
||||
|
||||
<!-- source-config: compute/model-specs/qwen.json -->
|
||||
|
||||
| 模型 ID | 上下文 / 输出 | 计价 | 已核字段→来源 | 来源入口 | 状态 | 数据指纹 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| `qwen3-coder-next` | 未声明 / 未声明 | 非计价主数据 | `id`→[qwen-coding](../SOURCES.md#qwen-coding) | [qwen-coding](../SOURCES.md#qwen-coding) | partial | `949ea8dd99a8c45948115ff0c61db7e27a400298c62bce1382db9cf8817eb00f` |
|
||||
|
||||
@@ -60,3 +60,21 @@
|
||||
}
|
||||
```
|
||||
<!-- source-metadata:end -->
|
||||
|
||||
## compute/model-specs/qwen.json:精确绑定
|
||||
|
||||
仅登记既有接入精确身份;官网字段证据待核,不能把本记录当作完整能力合同。
|
||||
|
||||
<!-- source-details: {"config":"compute/model-specs/qwen.json","id":"qwen3-coder-plus"} -->
|
||||
```json
|
||||
{
|
||||
"spec.description": "精确绑定已有接入型号,参数未核实;identity-only规格不继承旧family能力、窗口、协议或自动路由资格。"
|
||||
}
|
||||
```
|
||||
<!-- source-details:end -->
|
||||
|
||||
<!-- source-config: compute/model-specs/qwen.json -->
|
||||
|
||||
| 模型 ID | 上下文 / 输出 | 计价 | 已核字段→来源 | 来源入口 | 状态 | 数据指纹 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| `qwen3-coder-plus` | 未声明 / 未声明 | 非计价主数据 | `id`→[qwen-coding](../SOURCES.md#qwen-coding) | [qwen-coding](../SOURCES.md#qwen-coding) | partial | `ff635ac15fb8f0c970c6fb96543068b82b956d47c314031ec47d3b1b634259fa` |
|
||||
|
||||
@@ -57,6 +57,25 @@ GPT-6.1 Sol 的窗口、输出、推理档位与直连计价已再次核对。AP
|
||||
|
||||
`extra.responsesOnly` 是为工具调用采用的保守协议收紧。官网要求工具调用走 Responses;普通无工具的 Chat Completions 仍支持,不能把此配置理解为原厂完全不支持 Chat Completions。
|
||||
|
||||
### realtime21-spec
|
||||
|
||||
- 入口:[realtime21-spec](https://developers.openai.com/api/docs/models/gpt-realtime-2.1.md)
|
||||
- 读取状态:`fetched`;只确认精确型号、总窗口与最大输出;不证明接入协议已验收。
|
||||
|
||||
### realtime21mini-spec
|
||||
|
||||
- 入口:[realtime21mini-spec](https://developers.openai.com/api/docs/models/gpt-realtime-2.1-mini.md)
|
||||
- 读取状态:`fetched`;只确认精确型号、总窗口与最大输出;不证明接入协议已验收。
|
||||
|
||||
### realtimetranslate-spec
|
||||
|
||||
- 入口:[realtimetranslate-spec](https://developers.openai.com/api/docs/models/gpt-realtime-translate.md)
|
||||
- 读取状态:`fetched`;只确认精确型号、总窗口与最大输出;不证明接入协议已验收。
|
||||
|
||||
### openai-deprecations
|
||||
|
||||
- 入口:[openai-deprecations](https://developers.openai.com/api/docs/deprecations.md);本轮读取正文,Nano停止日2027-04-01,当前只deprecated。
|
||||
|
||||
<!-- source-metadata:start -->
|
||||
```json
|
||||
{
|
||||
@@ -153,6 +172,46 @@ GPT-6.1 Sol 的窗口、输出、推理档位与直连计价已再次核对。AP
|
||||
"checkedAt": "2026-10-03",
|
||||
"contentSha256": "3dd20e2c95f09f3efb19c6255387a4e07d4d7c213367cca0a015e162a8f5b4e0",
|
||||
"resolvedUrl": "https://developers.openai.com/api/docs/models/gpt-5.4-nano.md"
|
||||
},
|
||||
{
|
||||
"id": "realtime21-spec",
|
||||
"url": "https://developers.openai.com/api/docs/models/gpt-realtime-2.1.md",
|
||||
"kind": "official-doc",
|
||||
"scope": "原厂精确模型、窗口与输出;接入协议独立验收",
|
||||
"retrieval": "fetched",
|
||||
"checkedAt": "2026-10-03",
|
||||
"contentSha256": "4ab3318598ef8f29b919a3da13125b84b54c463ad71e67dee644aa6adc78a408",
|
||||
"resolvedUrl": "https://developers.openai.com/api/docs/models/gpt-realtime-2.1.md"
|
||||
},
|
||||
{
|
||||
"id": "realtime21mini-spec",
|
||||
"url": "https://developers.openai.com/api/docs/models/gpt-realtime-2.1-mini.md",
|
||||
"kind": "official-doc",
|
||||
"scope": "原厂精确模型、窗口与输出;接入协议独立验收",
|
||||
"retrieval": "fetched",
|
||||
"checkedAt": "2026-10-03",
|
||||
"contentSha256": "bec9dbe2d4ea92540cbc688f85a935916dbe6b0f3605405dc8ae2bc034e1094b",
|
||||
"resolvedUrl": "https://developers.openai.com/api/docs/models/gpt-realtime-2.1-mini.md"
|
||||
},
|
||||
{
|
||||
"id": "realtimetranslate-spec",
|
||||
"url": "https://developers.openai.com/api/docs/models/gpt-realtime-translate.md",
|
||||
"kind": "official-doc",
|
||||
"scope": "原厂精确模型、窗口与输出;接入协议独立验收",
|
||||
"retrieval": "fetched",
|
||||
"checkedAt": "2026-10-03",
|
||||
"contentSha256": "a95860e250772faa38ba78b08834abde51619679962f081c9c3b1b2f0636ab13",
|
||||
"resolvedUrl": "https://developers.openai.com/api/docs/models/gpt-realtime-translate.md"
|
||||
},
|
||||
{
|
||||
"id": "openai-deprecations",
|
||||
"url": "https://developers.openai.com/api/docs/deprecations.md",
|
||||
"kind": "official-doc",
|
||||
"scope": "原厂宣布deprecated与正式停止服务日期分开;不把未来停止日当当前退役",
|
||||
"retrieval": "fetched",
|
||||
"checkedAt": "2026-10-03",
|
||||
"contentSha256": "ac78c7daedd9543728f7a2c6ed453afce3bcbdcf590535fb4b65a7d2e7c43481",
|
||||
"resolvedUrl": "https://developers.openai.com/api/docs/deprecations.md"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -79,3 +79,25 @@
|
||||
}
|
||||
```
|
||||
<!-- source-metadata:end -->
|
||||
|
||||
## compute/model-specs/openai.json:精确绑定
|
||||
|
||||
官方规格页本轮核实窗口与输出;未扩大自动路由资格。
|
||||
|
||||
<!-- source-details: {"config":"compute/model-specs/openai.json","id":"gpt-5.4-nano"} -->
|
||||
```json
|
||||
{
|
||||
"spec.contextWindow": 400000,
|
||||
"spec.maxOutputTokens": 128000,
|
||||
"spec.description": "GPT-5.4 Nano;官网确认400000总窗口、128000最大输出。2026-10-01宣布deprecated,停止服务日2027-04-01;当前不据此退役。独立输入上限未由本页确认。"
|
||||
}
|
||||
```
|
||||
<!-- source-details:end -->
|
||||
|
||||
<!-- source-config: compute/model-specs/openai.json -->
|
||||
|
||||
| 模型 ID | 上下文 / 输出 | 计价 | 已核字段→来源 | 来源入口 | 状态 | 数据指纹 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| `gpt-5.4-nano` | 400000 / 128000 | 非计价主数据 | `id`→[gpt-5-4-nano-api](../SOURCES.md#gpt-5-4-nano-api);`spec.contextWindow`→[gpt-5-4-nano-api](../SOURCES.md#gpt-5-4-nano-api);`spec.maxOutputTokens`→[gpt-5-4-nano-api](../SOURCES.md#gpt-5-4-nano-api) | [gpt-5-4-nano-api](../SOURCES.md#gpt-5-4-nano-api) | partial | `f0253fa24e58c6c0ca971fa1e53fb87d5d140e843f09cfdab303b92ecf5e0664` |
|
||||
|
||||
生命周期独立证据:[官方退役公告](../SOURCES.md#openai-deprecations)列出的停止日为2027-04-01;2026-10-01公告deprecated,不代表2026-10-03已不可调用。
|
||||
|
||||
@@ -78,3 +78,23 @@
|
||||
}
|
||||
```
|
||||
<!-- source-metadata:end -->
|
||||
|
||||
## compute/model-specs/openai.json:精确绑定
|
||||
|
||||
官方规格页本轮核实窗口与输出;未扩大自动路由资格。
|
||||
|
||||
<!-- source-details: {"config":"compute/model-specs/openai.json","id":"gpt-5.4-pro"} -->
|
||||
```json
|
||||
{
|
||||
"spec.contextWindow": 1050000,
|
||||
"spec.maxOutputTokens": 128000,
|
||||
"spec.description": "官方独立Pro规格;Responses协议限制由实际接入面执行,不沿用基础型号或其他代际family。"
|
||||
}
|
||||
```
|
||||
<!-- source-details:end -->
|
||||
|
||||
<!-- source-config: compute/model-specs/openai.json -->
|
||||
|
||||
| 模型 ID | 上下文 / 输出 | 计价 | 已核字段→来源 | 来源入口 | 状态 | 数据指纹 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| `gpt-5.4-pro` | 1050000 / 128000 | 非计价主数据 | `id`→[gpt-5-4-pro-api](../SOURCES.md#gpt-5-4-pro-api);`spec.contextWindow`→[gpt-5-4-pro-api](../SOURCES.md#gpt-5-4-pro-api);`spec.maxOutputTokens`→[gpt-5-4-pro-api](../SOURCES.md#gpt-5-4-pro-api) | [gpt-5-4-pro-api](../SOURCES.md#gpt-5-4-pro-api) | partial | `8782422b1170ce65415e84a43ff59f3668e49a4ece33e439676ef306a8c4cdbb` |
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
|
||||
| 模型 ID | 上下文 / 输出 | 计价 | 已核字段→来源 | 来源入口 | 状态 | 数据指纹 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| `gpt-5.4` | 1050000 / 128000 | 非计价主数据 | `id`→[gpt-5-4-api](../SOURCES.md#gpt-5-4-api);`spec.contextWindow`→[gpt-5-4-api](../SOURCES.md#gpt-5-4-api);`spec.maxOutputTokens`→[gpt-5-4-api](../SOURCES.md#gpt-5-4-api) | [gpt-5-4-api](../SOURCES.md#gpt-5-4-api) | partial | `0d0981e9f7c721fe920d732cd24fb349a81e9ef4ffec5d1c809c9bf315e09fa5` |
|
||||
| `gpt-5.4` | 1050000 / 128000 | 非计价主数据 | `id`→[gpt-5-4-api](../SOURCES.md#gpt-5-4-api);`spec.contextWindow`→[gpt-5-4-api](../SOURCES.md#gpt-5-4-api);`spec.maxOutputTokens`→[gpt-5-4-api](../SOURCES.md#gpt-5-4-api) | [gpt-5-4-api](../SOURCES.md#gpt-5-4-api) | partial | `cd59f54965cdd4dd1a82ca3045c38f8d9e97e6ccc20d81ba71454dfec7cab9ac` |
|
||||
|
||||
本轮读取该模型官方明文规格页,确认原厂直连窗口、输出、标准价格与推理合同。Pro 仅限 Responses;GPT-5.4 Pro 官方默认 medium,修正旧 high。none 在产品层映射 off,schema 不接受将 none 写成 defaultEffort,故未伪造其他显式默认档。
|
||||
|
||||
|
||||
@@ -66,3 +66,23 @@
|
||||
}
|
||||
```
|
||||
<!-- source-metadata:end -->
|
||||
|
||||
## compute/model-specs/openai.json:精确绑定
|
||||
|
||||
官方规格页本轮核实窗口与输出;未扩大自动路由资格。
|
||||
|
||||
<!-- source-details: {"config":"compute/model-specs/openai.json","id":"gpt-realtime-2.1-mini"} -->
|
||||
```json
|
||||
{
|
||||
"spec.contextWindow": 128000,
|
||||
"spec.maxOutputTokens": 32000,
|
||||
"spec.description": "官方精确型号与窗口/输出已核;独立实时协议适配与账号验收由接入面决定,不继承通用Chat合同。"
|
||||
}
|
||||
```
|
||||
<!-- source-details:end -->
|
||||
|
||||
<!-- source-config: compute/model-specs/openai.json -->
|
||||
|
||||
| 模型 ID | 上下文 / 输出 | 计价 | 已核字段→来源 | 来源入口 | 状态 | 数据指纹 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| `gpt-realtime-2.1-mini` | 128000 / 32000 | 非计价主数据 | `id`→[realtime21mini-spec](../SOURCES.md#realtime21mini-spec);`spec.contextWindow`→[realtime21mini-spec](../SOURCES.md#realtime21mini-spec);`spec.maxOutputTokens`→[realtime21mini-spec](../SOURCES.md#realtime21mini-spec) | [realtime21mini-spec](../SOURCES.md#realtime21mini-spec) | partial | `8483f11c3358f3850450c28725fdc9164005a3e17b8f9e9755a11020a7590d18` |
|
||||
|
||||
@@ -68,3 +68,23 @@
|
||||
}
|
||||
```
|
||||
<!-- source-metadata:end -->
|
||||
|
||||
## compute/model-specs/openai.json:精确绑定
|
||||
|
||||
官方规格页本轮核实窗口与输出;未扩大自动路由资格。
|
||||
|
||||
<!-- source-details: {"config":"compute/model-specs/openai.json","id":"gpt-realtime-2.1"} -->
|
||||
```json
|
||||
{
|
||||
"spec.contextWindow": 128000,
|
||||
"spec.maxOutputTokens": 32000,
|
||||
"spec.description": "官方精确型号与窗口/输出已核;独立实时协议适配与账号验收由接入面决定,不继承通用Chat合同。"
|
||||
}
|
||||
```
|
||||
<!-- source-details:end -->
|
||||
|
||||
<!-- source-config: compute/model-specs/openai.json -->
|
||||
|
||||
| 模型 ID | 上下文 / 输出 | 计价 | 已核字段→来源 | 来源入口 | 状态 | 数据指纹 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| `gpt-realtime-2.1` | 128000 / 32000 | 非计价主数据 | `id`→[realtime21-spec](../SOURCES.md#realtime21-spec);`spec.contextWindow`→[realtime21-spec](../SOURCES.md#realtime21-spec);`spec.maxOutputTokens`→[realtime21-spec](../SOURCES.md#realtime21-spec) | [realtime21-spec](../SOURCES.md#realtime21-spec) | partial | `fe4e41e7e4fe5ac90c1d9eb640253765b7b16964a461a706e98ce12cda178de4` |
|
||||
|
||||
@@ -63,3 +63,23 @@
|
||||
}
|
||||
```
|
||||
<!-- source-metadata:end -->
|
||||
|
||||
## compute/model-specs/openai.json:精确绑定
|
||||
|
||||
官方规格页本轮核实窗口与输出;未扩大自动路由资格。
|
||||
|
||||
<!-- source-details: {"config":"compute/model-specs/openai.json","id":"gpt-realtime-translate"} -->
|
||||
```json
|
||||
{
|
||||
"spec.contextWindow": 16000,
|
||||
"spec.maxOutputTokens": 2000,
|
||||
"spec.description": "官方精确型号与窗口/输出已核;独立实时协议适配与账号验收由接入面决定,不继承通用Chat合同。"
|
||||
}
|
||||
```
|
||||
<!-- source-details:end -->
|
||||
|
||||
<!-- source-config: compute/model-specs/openai.json -->
|
||||
|
||||
| 模型 ID | 上下文 / 输出 | 计价 | 已核字段→来源 | 来源入口 | 状态 | 数据指纹 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| `gpt-realtime-translate` | 16000 / 2000 | 非计价主数据 | `id`→[realtimetranslate-spec](../SOURCES.md#realtimetranslate-spec);`spec.contextWindow`→[realtimetranslate-spec](../SOURCES.md#realtimetranslate-spec);`spec.maxOutputTokens`→[realtimetranslate-spec](../SOURCES.md#realtimetranslate-spec) | [realtimetranslate-spec](../SOURCES.md#realtimetranslate-spec) | partial | `e08efc78bf3d8f98e7a16988a3beb7f7a343c0f3e61da7bcc06914809750cd03` |
|
||||
|
||||
1131
docs/plans/catalog-contract-migration/ADAPTER-DECISIONS.json
Normal file
1131
docs/plans/catalog-contract-migration/ADAPTER-DECISIONS.json
Normal file
File diff suppressed because it is too large
Load Diff
62
docs/plans/catalog-contract-migration/ADAPTER-DECISIONS.md
Normal file
62
docs/plans/catalog-contract-migration/ADAPTER-DECISIONS.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# 原生协议适配核查决定
|
||||
|
||||
本次是源码注册/真实派发路径核查,未作账号或媒体生成实测。机器明细:[ADAPTER-DECISIONS.json](ADAPTER-DECISIONS.json)。
|
||||
|
||||
openai-responses/openai-completions只声明通用对话协议。Realtime WebSocket/实时翻译、原生图像/视频任务、批量ASR/TTS各有不同endpoint、请求/响应和流式状态机;同域/Bearer认证或同名apiFormat不证明模型协议适配。
|
||||
|
||||
- 3条Realtime、21条媒体和12条ASR/TTS接入确认当前没有对应注册适配器,保留候选信息,标记protocol unsupported;不猜最低版本。
|
||||
- 图像/视频工具在findProvider后按实际provider slug查getAdapter,undefined立即返回失败,没有通用Provider.apiFormat兜底。
|
||||
- Speech Registry仅TTS/ASR;OpenAI兼容表只tts-1/tts-1-hd/whisper-1,三个Realtime型号既不在兼容表,也无独立session/WebSocket/翻译实现。
|
||||
- 已注册MiniMax/火山/百炼视频、云/NewAPI图像视频、六类语音协议未因本清单被误关。新型号是否完全符合这些已注册协议仍需其单型号协议/账号验收,当前核查没有把provider slug注册当全部型号实测。
|
||||
|
||||
| 配置 | 型号 | 缺少适配 |
|
||||
| --- | --- | --- |
|
||||
| `compute/providers/dashscope.json` | `qwen-image-3.0` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/dashscope.json` | `qwen-image-3.0-pro` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/dashscope.json` | `paraformer-v2` | missing-speech-profile-and-compatibility |
|
||||
| `compute/providers/dashscope.json` | `wan2.7-image-pro` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/dashscope.json` | `wan2.7-image` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/dashscope.json` | `wan2.6-t2i` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/dashscope.json` | `wan2.2-t2i-plus` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/dashscope.json` | `wan2.2-t2i-flash` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/dashscope.json` | `qwen-image-2.0-pro` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/dashscope.json` | `qwen-image-2.0` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/kling.json` | `kling-v3` | no-registered-video_gen-provider-adapter |
|
||||
| `compute/providers/kling.json` | `kling-v2-5-turbo` | no-registered-video_gen-provider-adapter |
|
||||
| `compute/providers/kling.json` | `kling-v2-5-turbo-pro` | no-registered-video_gen-provider-adapter |
|
||||
| `compute/providers/kling.json` | `kling-v2` | no-registered-video_gen-provider-adapter |
|
||||
| `compute/providers/kling.json` | `kling-v2-master` | no-registered-video_gen-provider-adapter |
|
||||
| `compute/providers/local-whisper.json` | `whisper-large-v3` | missing-speech-profile-and-compatibility |
|
||||
| `compute/providers/minimax.json` | `speech-2.8-hd` | missing-speech-profile-and-compatibility |
|
||||
| `compute/providers/minimax.json` | `speech-2.8-turbo` | missing-speech-profile-and-compatibility |
|
||||
| `compute/providers/minimax.json` | `speech-2.6-hd` | missing-speech-profile-and-compatibility |
|
||||
| `compute/providers/minimax.json` | `speech-2.6-turbo` | missing-speech-profile-and-compatibility |
|
||||
| `compute/providers/minimax.json` | `speech-02-hd` | missing-speech-profile-and-compatibility |
|
||||
| `compute/providers/minimax.json` | `speech-02-turbo` | missing-speech-profile-and-compatibility |
|
||||
| `compute/providers/openai.json` | `gpt-image-2.5-sunburst` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/openai.json` | `gpt-image-2.5-flare` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/openai.json` | `gpt-image-2` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/openai.json` | `gpt-realtime-2.1` | no-model-specific-realtime-adapter |
|
||||
| `compute/providers/openai.json` | `gpt-realtime-2.1-mini` | no-model-specific-realtime-adapter |
|
||||
| `compute/providers/openai.json` | `gpt-realtime-translate` | no-model-specific-realtime-adapter |
|
||||
| `compute/providers/stability.json` | `stable-diffusion-3.5-large` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/providers/xiaomi.json` | `mimo-v2.5-tts-voicedesign` | missing-speech-profile-and-compatibility |
|
||||
| `compute/providers/xiaomi.json` | `mimo-v2.5-tts-voiceclone` | missing-speech-profile-and-compatibility |
|
||||
| `compute/coding-plans/dashscope-token-plan.json` | `wan2.7-image-pro` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/coding-plans/dashscope-token-plan.json` | `wan2.7-image` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/coding-plans/dashscope-token-plan.json` | `qwen-image-3.0-pro` | no-registered-image_gen-provider-adapter |
|
||||
| `compute/coding-plans/minimax-coding.json` | `speech-2.8-hd` | missing-speech-profile-and-compatibility |
|
||||
| `compute/coding-plans/minimax-coding.json` | `speech-2.8-turbo` | missing-speech-profile-and-compatibility |
|
||||
|
||||
## 真实派发证据
|
||||
|
||||
- `packages/agent-service/src/media/adapters/registry.ts`:getImageAdapter/getVideoAdapter只查映射。
|
||||
- `packages/agent-service/src/builtin-tools/generate-image.ts`:execute调用后无adapter立即返回失败。
|
||||
- `packages/agent-service/src/builtin-tools/generate-video.ts`:同样无adapter返回失败。
|
||||
- `packages/speech-core/src/providers/index.ts`:六类已注册ASR/TTS协议。
|
||||
- `packages/speech-core/src/model-compatibility.ts`:精确OpenAI语音兼容表,不含Realtime。
|
||||
- `packages/agent-service/src/speech/speech-resolver.ts`:无speech profile/兼容项时fail,不猜协议。
|
||||
|
||||
源文件路径相对客户端工作区 `/Users/wangyi/.codex/worktrees/catalog-contract-client/desirecore`;机器清单保存实际读取文件摘要,便于适配新增后重新核查。
|
||||
|
||||
ASR/TTS额外12条由实际recognize/synthesize → resolveSpeechCompute → resolveProfile核实:无显式modelOrigin/speech且兼容表精确/前缀均不命中,立即报missing_model_profile。包括paraformer-v2、whisper-large-v3、MiniMax六种speech版本(含两条套餐副本)和MiMo voicedesign/voiceclone。不是据供应商slug缺失推断;也未发现local-whisper按名称另走本地执行的特殊分派。默认service-map引用whisper-large-v3仍须完成实际profile适配,不能仅凭默认映射声明ASR可用。
|
||||
39
docs/plans/catalog-contract-migration/CLIENT-VERSIONS.md
Normal file
39
docs/plans/catalog-contract-migration/CLIENT-VERSIONS.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# 最低生效客户端版本
|
||||
|
||||
[PLAN](PLAN.md)
|
||||
|
||||
## 已确认与尚未确定
|
||||
|
||||
| 项目 | 已核状态 |
|
||||
| --- | --- |
|
||||
| 最新正式release(本次读取) | v10.0.177,2026-09-27发布,非draft/prerelease,targetCommitish=dev;[发布页](https://github.com/desirecore/desirecore/releases/tag/v10.0.177) |
|
||||
| 主仓main | 412e05b043656d1f3ba2b56307ef5ceabbf8a77a,package.json仍为10.0.100,不能拿它或目录里的工作树作为已发布能力证明 |
|
||||
| 既有Provider要求 | anthropic-claude=10.0.83、github-copilot=10.0.132;其余38份Provider/套餐未声明。既有数字需在P0查当时发布包重新确认,不自动沿用 |
|
||||
| v10.0.177实际门控 | getProviderGating、前端选择器、InspectModels及Smart候选使用Provider级门控;不能据此宣布显式调用、媒体/后台任务全覆盖 |
|
||||
| Spec/模型/数据集版本门控 | 当前本仓model-specs schema没有对应字段;V2和迁移器仍需实现 |
|
||||
| V_contract | 待P1代码与正式发布确认的实际版本;本PLAN不猜10.0.178或其他未来版本 |
|
||||
|
||||
## 版本计算
|
||||
|
||||
P0为每种字段、协议、凭据、能力和迁移登记“实现commit、第一个包含该commit的正式tag、对应实际行为测试”。必要时以一个已验证的较新版本作保守下限,并明确这不是历史最早版本。不能用release标题、主仓版本字符串或schema存在代替实际出站行为。
|
||||
|
||||
V_contract取支持整个V2合同和迁移器的首个已验收正式版本。每个接入模型的有效最低版本取 max(数据格式/迁移下限、Provider协议/凭据下限、模型绑定能力下限、相关退役规则实现下限)。适配器不存在时为“不可用/待适配”,不能填一个未来版本号假装支持。
|
||||
|
||||
## 生效位置
|
||||
|
||||
1. **加载前**:读取版本化manifest后,检查formatVersion与客户端兼容性,再解析/合并ModelSpec和Provider。遇到不支持的新格式保留最后已知可消费快照,不破坏compute.json和启动。
|
||||
2. **同步/保存**:受管条目写入、动态模型发现、构建默认包、编辑API和客户端迁移都检查;新模型自己的门槛不能因为Provider整体已支持而漏掉。
|
||||
3. **实际调用**:统一resolver在发请求、验证Key、余额检查、媒体submit/poll、后台摘要、SDK与工作流调用前再判定。调用方传明确providerId不能绕过。
|
||||
4. **UI/Agent**:同一结果派生“需更新客户端”及原因,不向Agent提供实际不可用候选;取消/升级路径不依赖隐藏整个供应商。
|
||||
5. **异常版本**:受管已发布数据的非法最低版本/未知格式拒绝;自建配置给明确错误和修复入口。当前compareSemver非法要求fail-open的行为需P1决定并测试,不直接一刀切覆盖所有用户数据。
|
||||
|
||||
## 过渡方案
|
||||
|
||||
- 旧客户端不认识新门控,单加requiredClientVersion不能阻止它读取新字段。因此先发布会识别V2目录和门控的客户端;V1路径保持受frozen schema约束的兼容投影/冻结快照。
|
||||
- 只支持Provider级门控的客户端如果需要精确到模型,应先升级;临时只能在不可安全拆分时提高该Provider整体门槛,清楚记录受影响的仍可用旧型号。默认方案为新客户端的逐模型门控。
|
||||
- 未铺开的客户端不能先收到已知enum扩值或删除required字段。现有frozen provider schema与manifest schema不直接改造成V2;新增版本化schema后分别校验。
|
||||
- 下发V2、停止旧写入、删除旧读取兜底和归档旧投影是四个独立动作。发布报告写明低于V_contract的行为与无法远程强制修复的旧二进制范围。
|
||||
|
||||
## 跨版本验收
|
||||
|
||||
覆盖门控前旧版、现有正式版177、V_contract-1、V_contract、最新版、缺失/非法版本、离线启动、不支持format、已有用户覆写,以及直接指定Provider/SDK/后台/媒体绕过反例。测试版本指构建产物有效__APP_VERSION__,不是测试源码package.json中的常量。
|
||||
33
docs/plans/catalog-contract-migration/DOMAIN-RETIREMENT.md
Normal file
33
docs/plans/catalog-contract-migration/DOMAIN-RETIREMENT.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# 域名与接入下架计划
|
||||
|
||||
[PLAN](PLAN.md)
|
||||
|
||||
## 判定边界
|
||||
|
||||
退役单位优先为 Provider/地域/协议/host/path,而不是整个供应商或根域。模型下架、官网换域、API路径迁移、暂时失败、停服域名是不同事件。DNS失败、证书错误、403/404、JS页面壳或公共目录缺少一个ID都不足以宣布整个域名停服。
|
||||
|
||||
官方停止服务/迁移公告、官方文档明确替代端点与生效时间、官方支持确认是主证据;DNS/TLS/不带凭据的HTTP结果只能补充。是否已实际下架预设则用本仓Git历史证明,两类证据分开登记。
|
||||
|
||||
## 首批清单
|
||||
|
||||
| 对象 | 当前已知 | P0/P4动作 |
|
||||
| --- | --- | --- |
|
||||
| api.lingyiwanwu.com/v1;provider-lingyiwanwu-001 | 本仓commit a998e18(#84)已移除Provider和索引;v10.0.177退役名单仅见provider-internal-testing-001 | 查受管旧compute配置、别名/默认引用和启动迁移;补本产品接入退役记录。官方域名停止服务时间本轮未取得,不据此封锁整个lingyiwanwu.com及AgentBox子域 |
|
||||
| api.minimaxi.com 与 api.minimax.cn 等MiniMax域名 | 当前预设仍用minimaxi;来源文档出现minimax.cn。官方minimaxi平台仍可读,未取得旧API域名退役公告 | 核国内/国际和key账号范围、官方端点变更及媒体baseUrl,确认哪些是别名/迁移而非停服;不得仅按拼写统一域名。官方参考:[平台](https://platform.minimaxi.com/zh/cooperate)、[套餐入口](https://platform.minimaxi.com/subscribe/coding-plan) |
|
||||
| spark-api-open.xf-yun.com 的/v1、/v2、/x2 | X2已独立/x2,旧/v1保留Ultra,/v2同名spark-x指X1.5 | 保留按路径/型号限定的合同,不因X2推出封锁同一host上所有旧有效接入 |
|
||||
| 百川、Infini、摩尔线程、可灵、火山文档入口 | 87条记录的入口不可读;不是API域名退役证明 | 继续列为待核,获取公告/官方合同后决定,不使用读取失败自动下架 |
|
||||
| Perplexity Sonar→Agent API | 记录的是协议/接口迁移,旧同步/流式兼容与异步服务状态不同 | 核路径和请求形状,先适配Agent API;不是删除api.perplexity.ai根域 |
|
||||
|
||||
实施P0时完整扫描baseUrl、mediaBaseUrl、coding/tokenPlan余额/额度endpoint、模型端点和taskQueryEndpoint、API-provider、云端下发端点、已发客户端内置包及受管存量配置。历史来源页与tools归档引用不计作活跃残留。
|
||||
|
||||
## 退役注册与迁移
|
||||
|
||||
新增版本化退役注册(建议字段):规则ID、providerId/受管来源、exactHost、可选路径/地域/协议、产品退役理由、官方证据/状态、effectiveAt、替代接入、credential迁移边界、最低客户端版本。产品决定下架但厂家未停服时必须显式区分。
|
||||
|
||||
- 仓库:移除活跃Provider/索引,清理services/默认映射;模型移除用tombstones。ModelSpec按原厂生命周期/历史用途处置,不因一个网关下架就删原厂规格。
|
||||
- 客户端:受管旧Provider退役/停用、缓存与动态发现过滤、任务轮询停止、默认引用修复;由统一出站resolver检查host/path,禁止透明redirect把Authorization带到未经确认的其他域。
|
||||
- 用户数据:保护自建Provider和用户覆写,不能根据label模糊删除;对确证停止服务的host阻止调用并给原因。默认保留Key引用和秘密值,不复用当前cleanupRetiredProviders的自动删Key行为去清所有厂商。
|
||||
- 替代端点:核相同主体/地域/账号与key适用范围后再给可审阅迁移;不自动把不同币种、不同套餐、不同接收域名的凭据转发过去。
|
||||
- 验收:退役规则生效前/后、离线/缓存、直接SDK和后台请求、同host其他有效路径、共享apiKeyRef、自建同名Provider、重复迁移、回滚全部覆盖。确认退役范围出站为零,但审计来源历史链接保留。
|
||||
|
||||
当前仅能确认上述历史预置接入下架;需要P0补证之后才能给出完整“厂商已停止服务的域名”名单,本PLAN不伪造新域名退役结论。
|
||||
28
docs/plans/catalog-contract-migration/EXECUTION.md
Normal file
28
docs/plans/catalog-contract-migration/EXECUTION.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# 实施任务与证据
|
||||
|
||||
权威Plan:PLAN.md revision 3。以下为当前任务进度,不替代已核字段来源。
|
||||
|
||||
| 阶段 | 状态 | 负责人 | 完成证据 |
|
||||
| --- | --- | --- | --- |
|
||||
| P0 字段/能力/来源清单 | 分类已完成;实际消费验收中 | 编译工作线与主工作线 | FIELD-DECISIONS、SPEC-DECISIONS,正式版本待发布验收 |
|
||||
| P1 客户端加载、迁移、版本与出站门控 | 实现及真实服务验证完成,等待合并发布 | 客户端工作线 | 340条解析一致、迁移及预算回归、版本426/退役400,客户端构建通过 |
|
||||
| P2 canonical/兼容编译与旧字段迁移 | 编译完成;存量迁移验收中 | 编译工作线 | 286 Spec/40接入/340模型,13项编译反例回归,完整V1投影一致 |
|
||||
| P3 规格精确身份/参数差异完善 | 已完成分类与有证修正 | 规格工作线 | 新增7条Spec,45差异及58spec-only均有决定;缺证保持unknown |
|
||||
| P4 受管退役接入/域名规则 | 实现及实际出站拦截验证完成 | 客户端工作线与主工作线 | 受管零一万物原host/path规则,保留凭据,自建接入不按名称删除 |
|
||||
| P5 正式客户端、数据发布和远端复查 | 等待P1验收 | 主工作线 | 不预填已发布版本 |
|
||||
|
||||
保留原工作区logs;客户端原checkout的docs改动未触碰。客户端隔离worktree的子模块更新结果与无关gitlink将单独记录。
|
||||
|
||||
客户端worktree子模块已按--remote更新:docs=b1394223efe77583330dbe51b961d868306b3256、drawio=88ee1f5ab4d40603a8f3aaa0d9d6dc3794c6b3f0。docs较初始dev gitlink前进,原checkout用户docs改动未触碰;本任务所需文档将在该已拉最新子模块上增量编辑后单独发布。
|
||||
|
||||
## 截至2026-10-04的消费验证
|
||||
|
||||
- 原始626来源记录维持353 partial/272 pending/1 historical,216仅ID,137有其他字段证明。缺证事实没有被编译伪装官方核验。
|
||||
- canonical/编译与V1完整投影16项反例通过;340条实际resolver结果与客户端比较,40接入/286规格Schema逐条通过。
|
||||
- 36条原生协议未适配(含原默认ASR)明确禁止调用但保留记录;3条API实参别名单独保留,不由metadata恢复入wire。
|
||||
- 客户端已通过changed typecheck消费闭包与完整构建;目前SDK真实正文预算、存量迁移、最后有效配置/启动、权限版本和retirement为范围回归,正式发布还未执行。
|
||||
- 实际token计数或保守文本份额检查与媒体估算区分;embedding逐item预算、ASR不把base64当文本token,多模态不是厂商精确usage验收。
|
||||
|
||||
真实standalone重启与HTTP证明:higher-floor incoming目录不破坏合法local配置,GET config200保留2测试Provider,未来Provider changing-keyref返回426,retired managed原域changing-keyref返回400,原测试Key保留。证据仅提供fakeKeys,没有厂商账号调用。
|
||||
|
||||
文档先行发布:desirecore-docs PR #535 已合并,客户端 docs gitlink 为 `3e600afc3b3da2686e83981f72090966b3ea0f93`。包含 ADR 207、算力模块说明及隔离真实服务验证报告。目录首批版本128为 candidate;客户端正式版本未核实前 requiredClientVersion 维持 null。
|
||||
155
docs/plans/catalog-contract-migration/FIELD-DECISIONS.md
Normal file
155
docs/plans/catalog-contract-migration/FIELD-DECISIONS.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# 字段归属与消费核查
|
||||
|
||||
全部既有149条路径已分域;静态消费路径是核查候选,不宣称正式发布支持。无消费证明的值进入非运行时metadata,V1投影保留,不自动扩大能力。正式V2发布前须补实际客户端测试和版本。
|
||||
|
||||
| 字段 | owner | 消费候选 | 发布版本 |
|
||||
| --- | --- | --- | --- |
|
||||
| `extra.adaptiveThinking` | request | packages/agent-service/src/compute/resolver.ts<br>packages/shared/src/compute/thinking-profiles.ts | 待正式发布 |
|
||||
| `extra.aliases` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.asyncHeader` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.asyncMode` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.audioCachedInputPrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.audioFormats` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.audioInputPrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.audioOutputPrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.audioOutputPricePerMinute` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.authHeader` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cachedInputPrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cacheHitPrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cachePricing.audioInputCacheRead` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cachePricing.inputCacheRead` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cachePricing.inputCacheReadOver200k` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cachePricing.read` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cachePricing.storagePerMillionTokensPerHour` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cachePricing.write1h` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cachePricing.write5m` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cacheReadPrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cacheStoragePrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cacheStoragePricePerMillionTokenHour` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.cacheWritePrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.codingPlanLongContextModelId` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.concurrencyLimit` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.decodeSpeed` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.defaultDimension` | intrinsic | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.deprecated` | lifecycle | packages/agent-service/src/compute/preset-merge.ts<br>packages/schemas/src/agent-service/preset-updates.ts<br>packages/shared/src/compute/model-availability.ts | 待正式发布 |
|
||||
| `extra.deprecationNotice` | lifecycle | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.dimensions` | intrinsic | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.endpoint` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.features.chatPrefixCompletion` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.features.fimCompletion` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.features.jsonOutput` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.features.toolCalls` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.forcedToolChoiceUnsupported` | intrinsic | packages/agent-service/src/compute/resolver.ts<br>packages/shared/src/compute/request-constraints.ts | 待正式发布 |
|
||||
| `extra.fps` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.imageCachedInputPrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.imageInputPrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.inputModalities` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.latencyMs` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.legacy` | lifecycle | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxAudioDuration` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxAudioLength` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxAudioSize` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxBatchItems` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxBatchSize` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxCloneSamples` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxFusionImages` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxInputTokensPerItem` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxLyricsLength` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxN` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxPromptLength` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxReferenceAudios` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxReferenceImages` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxReferenceVideos` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxTextLength` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.maxVideoDuration` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.mediaInputTypes` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.minCloneDuration` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.modelOrigin.canonicalModelId` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/schemas/src/agent-service/compute.ts | 待正式发布 |
|
||||
| `extra.modelOrigin.family` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/schemas/src/agent-service/compute.ts | 待正式发布 |
|
||||
| `extra.modelOrigin.vendor` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/schemas/src/agent-service/compute.ts | 待正式发布 |
|
||||
| `extra.outputFormats` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.outputSpeedTps` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.preserveThinkingDefault` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.pricePerGeneration` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.pricePerImage` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.pricePerMillionCharacters` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.pricePerSongUpToFiveMinutes` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.pricingNote` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.pricingNotes` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.pricingTiers` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.priorityPricingTiers` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.promptCacheMinTokens` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.reasoning.defaultEffort` | request | app/services/compute-api.ts<br>packages/agent-service/src/agent/query.ts<br>packages/agent-service/src/approval/ai-approve.ts | 待正式发布 |
|
||||
| `extra.reasoning.supportedEfforts` | request | app/services/compute-api.ts<br>packages/agent-service/src/agent/query.ts<br>packages/agent-service/src/approval/ai-approve.ts | 待正式发布 |
|
||||
| `extra.replacedBy` | lifecycle | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.requestPricingPer1k.high` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.requestPricingPer1k.low` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.requestPricingPer1k.medium` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.responseFormats` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.responsesOnly` | request | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.sampleRate` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.samplingParametersDeprecated` | intrinsic | packages/agent-service/src/compute/resolver.ts<br>packages/shared/src/compute/request-constraints.ts | 待正式发布 |
|
||||
| `extra.serverSideWebSearch.dialect` | request | packages/agent-service/src/auth/sapi-client.ts<br>packages/agent-service/src/compute/server-side-web-search.ts<br>packages/schemas/src/agent-service/compute.ts | 待正式发布 |
|
||||
| `extra.serverSideWebSearch.enabled` | request | packages/agent-service/src/auth/sapi-client.ts<br>packages/agent-service/src/compute/server-side-web-search.ts<br>packages/schemas/src/agent-service/compute.ts | 待正式发布 |
|
||||
| `extra.serverSideWebSearch.fallbackPriority` | request | packages/agent-service/src/auth/sapi-client.ts<br>packages/agent-service/src/compute/server-side-web-search.ts<br>packages/schemas/src/agent-service/compute.ts | 待正式发布 |
|
||||
| `extra.serverSideWebSearch.searchRequestPriceUsd` | billing | packages/agent-service/src/auth/sapi-client.ts<br>packages/agent-service/src/compute/server-side-web-search.ts<br>packages/schemas/src/agent-service/compute.ts | 待正式发布 |
|
||||
| `extra.serverSideWebSearch.toolType` | request | packages/agent-service/src/auth/sapi-client.ts<br>packages/agent-service/src/compute/server-side-web-search.ts<br>packages/schemas/src/agent-service/compute.ts | 待正式发布 |
|
||||
| `extra.sizeShortcuts.1K` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.sizeShortcuts.2K` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.sizeShortcuts.4K` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.snapshot` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.speech.defaultVoice` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/agent-service/src/speech/speech-resolver.ts<br>packages/speech-core/src/adapter-registry.ts | 待正式发布 |
|
||||
| `extra.speech.inputFormats` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/agent-service/src/speech/speech-resolver.ts<br>packages/speech-core/src/adapter-registry.ts | 待正式发布 |
|
||||
| `extra.speech.languageHints` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/agent-service/src/speech/speech-resolver.ts<br>packages/speech-core/src/adapter-registry.ts | 待正式发布 |
|
||||
| `extra.speech.modes` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/agent-service/src/speech/speech-resolver.ts<br>packages/speech-core/src/adapter-registry.ts | 待正式发布 |
|
||||
| `extra.speech.outputFormats` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/agent-service/src/speech/speech-resolver.ts<br>packages/speech-core/src/adapter-registry.ts | 待正式发布 |
|
||||
| `extra.speech.protocol` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/agent-service/src/speech/speech-resolver.ts<br>packages/speech-core/src/adapter-registry.ts | 待正式发布 |
|
||||
| `extra.speech.protocolVersion` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/agent-service/src/speech/speech-resolver.ts<br>packages/speech-core/src/adapter-registry.ts | 待正式发布 |
|
||||
| `extra.speech.sampleRates` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/agent-service/src/speech/speech-resolver.ts<br>packages/speech-core/src/adapter-registry.ts | 待正式发布 |
|
||||
| `extra.speech.voices` | intrinsic | packages/agent-service/src/compute/speech-model-profile.ts<br>packages/agent-service/src/speech/speech-resolver.ts<br>packages/speech-core/src/adapter-registry.ts | 待正式发布 |
|
||||
| `extra.streamingSupported` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedAspectRatios` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedAudioFormats` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedFormats` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedImageFormats` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedImageSizes` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedInputFormats` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedLanguageCount` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedLyricsStructures` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedModes` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedRatios` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedResolutions` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedSizes` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedStyles` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportedVideoFormats` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsChatApi` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsColorPalette` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsIncrementalStreaming` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsIntelligentDuration` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsNegativePrompt` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsOutputAudio` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsParallelToolCalls` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsPromptExtend` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsResponsesApi` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsSeed` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsThinking` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsThinkingMode` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.supportsWatermark` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.taskQueryEndpoint` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.textCachedInputPrice` | billing | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.thinking.default` | request | packages/agent-service/src/approval/ai-approve.ts | 待正式发布 |
|
||||
| `extra.thinking.disabledTemperature` | request | packages/agent-service/src/approval/ai-approve.ts | 待正式发布 |
|
||||
| `extra.thinking.disableSupported` | request | packages/agent-service/src/approval/ai-approve.ts | 待正式发布 |
|
||||
| `extra.thinking.mode` | request | packages/agent-service/src/approval/ai-approve.ts | 待正式发布 |
|
||||
| `extra.thinking.preserveReasoningContent` | request | packages/agent-service/src/approval/ai-approve.ts | 待正式发布 |
|
||||
| `extra.thinkingDefault` | metadata | packages/agent-service/src/approval/constants.ts | 待正式发布 |
|
||||
| `extra.thinkingMaxTokens` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.thinkingOnly` | intrinsic | app/components/chat/ModelReasoningPill.tsx<br>packages/agent-service/src/approval/ai-approve.ts<br>packages/agent-service/src/approval/constants.ts | 待正式发布 |
|
||||
| `extra.thinkingRoundTrip.allowEmptySignature` | request | packages/agent-service/src/compute/thinking-roundtrip.ts | 待正式发布 |
|
||||
| `extra.thinkingRoundTrip.enabled` | request | packages/agent-service/src/compute/thinking-roundtrip.ts | 待正式发布 |
|
||||
| `extra.thinkingRoundTrip.protocol` | request | packages/agent-service/src/compute/thinking-roundtrip.ts | 待正式发布 |
|
||||
| `extra.thinkingRoundTrip.scope` | request | packages/agent-service/src/compute/thinking-roundtrip.ts | 待正式发布 |
|
||||
| `extra.thinkingToolTurnValidation` | request | packages/agent-service/src/compute/thinking-roundtrip.ts<br>packages/agent-service/src/runtime/thinking-tool-turn-guard.ts | 待正式发布 |
|
||||
| `extra.urlExpiry` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.vectorDimensions` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
| `extra.voices` | metadata | 未识别;记录性隔离 | 待正式发布 |
|
||||
157
docs/plans/catalog-contract-migration/FIELD-INVENTORY.md
Normal file
157
docs/plans/catalog-contract-migration/FIELD-INVENTORY.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# extra 字段全量盘点基线
|
||||
|
||||
[字段迁移规则](FIELD-MIGRATION.md) · [PLAN](PLAN.md)
|
||||
|
||||
2026-10-03,presetDataVersion 127。149种叶路径,233条记录包含extra。以下只是现存位置/数量;不能据此判断全部是旧字段。每项的消费点、正式版本、目标字段、语义和迁移决定在P0填写;已声明不消费的thinkingDefault已在专题中区分。数组作为一个路径,不把每个音色/价阶当新字段。
|
||||
|
||||
| 字段路径 | Provider记录 | 套餐记录 | Spec记录 | P0处置 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `extra.adaptiveThinking` | 10 | 1 | 8 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.aliases` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.asyncHeader` | 13 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.asyncMode` | 6 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.audioCachedInputPrice` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.audioFormats` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.audioInputPrice` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.audioOutputPrice` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.audioOutputPricePerMinute` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.authHeader` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cachedInputPrice` | 19 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cacheHitPrice` | 26 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cachePricing.audioInputCacheRead` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cachePricing.inputCacheRead` | 7 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cachePricing.inputCacheReadOver200k` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cachePricing.read` | 5 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cachePricing.storagePerMillionTokensPerHour` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cachePricing.write1h` | 5 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cachePricing.write5m` | 5 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cacheReadPrice` | 8 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cacheStoragePrice` | 8 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cacheStoragePricePerMillionTokenHour` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.cacheWritePrice` | 8 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.codingPlanLongContextModelId` | 0 | 1 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.concurrencyLimit` | 4 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.decodeSpeed` | 6 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.defaultDimension` | 4 | 0 | 4 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.deprecated` | 6 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.deprecationNotice` | 6 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.dimensions` | 1 | 0 | 4 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.endpoint` | 18 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.features.chatPrefixCompletion` | 4 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.features.fimCompletion` | 4 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.features.jsonOutput` | 4 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.features.toolCalls` | 4 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.forcedToolChoiceUnsupported` | 4 | 0 | 3 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.fps` | 2 | 0 | 2 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.imageCachedInputPrice` | 5 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.imageInputPrice` | 5 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.inputModalities` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.latencyMs` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.legacy` | 6 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxAudioDuration` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxAudioLength` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxAudioSize` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxBatchItems` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxBatchSize` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxCloneSamples` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxFusionImages` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxInputTokensPerItem` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxLyricsLength` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxN` | 7 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxPromptLength` | 4 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxReferenceAudios` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxReferenceImages` | 4 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxReferenceVideos` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxTextLength` | 6 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.maxVideoDuration` | 15 | 0 | 4 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.mediaInputTypes` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.minCloneDuration` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.modelOrigin.canonicalModelId` | 0 | 0 | 2 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.modelOrigin.family` | 0 | 0 | 2 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.modelOrigin.vendor` | 0 | 0 | 2 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.outputFormats` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.outputSpeedTps` | 6 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.preserveThinkingDefault` | 2 | 2 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.pricePerGeneration` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.pricePerImage` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.pricePerMillionCharacters` | 6 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.pricePerSongUpToFiveMinutes` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.pricingNote` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.pricingNotes` | 51 | 1 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.pricingTiers` | 21 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.priorityPricingTiers` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.promptCacheMinTokens` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.reasoning.defaultEffort` | 40 | 12 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.reasoning.supportedEfforts` | 44 | 12 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.replacedBy` | 6 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.requestPricingPer1k.high` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.requestPricingPer1k.low` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.requestPricingPer1k.medium` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.responseFormats` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.responsesOnly` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.sampleRate` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.samplingParametersDeprecated` | 7 | 0 | 8 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.serverSideWebSearch.dialect` | 19 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.serverSideWebSearch.enabled` | 19 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.serverSideWebSearch.fallbackPriority` | 19 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.serverSideWebSearch.searchRequestPriceUsd` | 19 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.serverSideWebSearch.toolType` | 19 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.sizeShortcuts.1K` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.sizeShortcuts.2K` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.sizeShortcuts.4K` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.snapshot` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.speech.defaultVoice` | 0 | 0 | 1 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.speech.inputFormats` | 0 | 0 | 1 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.speech.languageHints` | 0 | 0 | 1 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.speech.modes` | 0 | 0 | 2 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.speech.outputFormats` | 0 | 0 | 1 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.speech.protocol` | 0 | 0 | 2 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.speech.protocolVersion` | 0 | 0 | 2 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.speech.sampleRates` | 0 | 0 | 1 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.speech.voices` | 0 | 0 | 1 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.streamingSupported` | 4 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedAspectRatios` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedAudioFormats` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedFormats` | 7 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedImageFormats` | 7 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedImageSizes` | 8 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedInputFormats` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedLanguageCount` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedLyricsStructures` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedModes` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedRatios` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedResolutions` | 15 | 0 | 2 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedSizes` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedStyles` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportedVideoFormats` | 4 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsChatApi` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsColorPalette` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsIncrementalStreaming` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsIntelligentDuration` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsNegativePrompt` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsOutputAudio` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsParallelToolCalls` | 0 | 2 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsPromptExtend` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsResponsesApi` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsSeed` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsThinking` | 4 | 7 | 6 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsThinkingMode` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.supportsWatermark` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.taskQueryEndpoint` | 13 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.textCachedInputPrice` | 5 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinking.default` | 13 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinking.disabledTemperature` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinking.disableSupported` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinking.mode` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinking.preserveReasoningContent` | 3 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinkingDefault` | 9 | 9 | 14 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinkingMaxTokens` | 6 | 2 | 1 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinkingOnly` | 8 | 4 | 10 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinkingRoundTrip.allowEmptySignature` | 10 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinkingRoundTrip.enabled` | 10 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinkingRoundTrip.protocol` | 10 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinkingRoundTrip.scope` | 10 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.thinkingToolTurnValidation` | 10 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.urlExpiry` | 2 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.vectorDimensions` | 1 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
| `extra.voices` | 4 | 0 | 0 | 查消费点、归属和语义后定keep/migrate/metadata/retire |
|
||||
40
docs/plans/catalog-contract-migration/FIELD-MIGRATION.md
Normal file
40
docs/plans/catalog-contract-migration/FIELD-MIGRATION.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# 字段迁移:全量清单与规则
|
||||
|
||||
[PLAN](PLAN.md) · [149种现有extra路径清单](FIELD-INVENTORY.md)
|
||||
|
||||
## 全量的含义
|
||||
|
||||
覆盖 Provider、套餐、ModelSpec、索引/manifest、API-provider合同、客户端本地compute.json、构建内置包、云端同步结果、编辑API和UI保存路径。每个字段登记“来源位置 → schema → 写入点 → 运行时读取点 → 首个正式支持版本 → 新位置 → 冲突规则 → 迁移方式 → 测试”。仅rg命中注释、schema或i18n不算证明字段被运行时消费。
|
||||
|
||||
当前149种extra叶路径是盘点起点,不是149个废弃字段。所有路径都须归类:有效规范字段保留;旧别名映射;记录性字段转metadata;接入协议专用字段有独立owner;未识别字段隔离待审。禁止为了“全迁移”把有意义的有效字段重新命名一遍。
|
||||
|
||||
## 首批映射与禁止的转换
|
||||
|
||||
以下目标中除已存在的extra.reasoning、ModelSpec.extra.speech等外,其余是待P1客户端/schema实现的V2结构建议,不得现在写入预设。
|
||||
|
||||
| 当前字段/形态 | 分类/目标 | 转换约束 |
|
||||
| --- | --- | --- |
|
||||
| extra.reasoningEffort、defaultReasoningEffort、扁平defaultEffort | 已清除仓内残留;存量受管配置迁至extra.reasoning的明确支持集合/默认值 | API编辑DTO的reasoningEffort可能是有效输入名,不按同名全部删除;必须追到落盘位置。新旧同存时规范字段优先并记录冲突,不丢掉high/none |
|
||||
| thinkingDefault、supportsThinking、thinkingMaxTokens、extra.thinking.* | 分开处理官方默认说明、固有“不能关闭”、接入开关/预算及本仓默认;归入相应V2思考/请求约束或metadata | v10.0.177的thinkingDefault明确不改变行为,true不能推导effort或thinkingOnly;supportsThinking没有消费证明前不用于扩大能力 |
|
||||
| cachedInputPrice、cacheHitPrice、cacheReadPrice、cachePricing.read | 接入面V2 billing/cache-read价签,同币种/模态/计价单位才可规范 | 原价、平台价、加价后的价格分开;不混USD/CNY或每token/每百万token;有阶梯/过期条件必须保留 |
|
||||
| cacheWritePrice、cachePricing.write5m/write1h、cacheStoragePrice* | 分别规范为写入TTL价/缓存存储价,仍属接入面 | 5分钟与1小时写价不能合并;缓存存储计费必须保留时间维度 |
|
||||
| pricePerImage、pricePerGeneration、pricePerMillionCharacters、pricePerSong*、audioOutputPricePerMinute、requestPricingPer1k | 接入面统一计价条目,保留unit、currency、modality、tier、effective范围 | 不生成虚假的inputPrice/outputPrice;未知价缺省,动态API -1不变成免费 |
|
||||
| Provider.contextWindow/maxOutputTokens/defaultTemperature/defaultTopP等规格副本 | 作者数据迁到canonical规格;合法平台差异改为显式access override;旧Provider字段由编译投影生成 | 45处不同值不是45个错误;先分型。最大输入、总窗口、输出独立,不能output<=input一刀切 |
|
||||
| audioFormats、supportedAudioFormats、supportedFormats、outputFormats、voices、sampleRate、endpoint、authHeader等 | 先按ASR/TTS/图像/视频具体语义分组;稳定语音profile可复用extra.speech;端点/认证留Provider协议绑定 | 同名格式不同模态不能合并;声音ID/采样率/默认声音、batch与streaming、协议版本均须保留;不能把http auth字段移进原厂身份 |
|
||||
| dimensions、vectorDimensions、defaultDimension | 规范embedding维度与接入限制,原厂可选集合和当前端点支持集合分别记录 | Cohere原生Embed维度不能让compatibility端点发送dimensions;默认返回维度不等于可选择该参数 |
|
||||
| legacy、deprecated、replacedBy、deprecationNotice、retiredAt | V2模型/接入生命周期与本仓兼容状态分开 | legacy不等于退役;客户端软deprecated不等于原厂停服;retiredAt当前仅记录性,需P1运行时门控 |
|
||||
| ModelSpec内的reasoning/thinkingRoundTrip/thinkingToolTurnValidation/serverSideWebSearch | 不属于原厂统一规格,回到接入面合同;已有合法声明保留 | 已发布applySpec会排除这些接入键,不能通过“补Spec”来使其生效;平台搜索价同样留接入面 |
|
||||
|
||||
## 存量迁移
|
||||
|
||||
1. 基于正式发布包与实际读写路径生成dry-run,不仅扫描本仓JSON;受管preset、synced/cloud、自建和userOverrides分别处理。
|
||||
2. 新客户端读旧值后内存规范化,运行时只读规范结构;保存时仅写新结构,记录migrationEpoch并保留一次可恢复的本地基线。基线包含敏感配置时沿用已有保护,不提交或回显。
|
||||
3. 规范值存在优先保留;无法判断的旧值进入待处理记录,不用静默覆盖来制造幂等。用户覆写与厂商原值分别保存。
|
||||
4. 第二次迁移结果应逐字段一致;自建ID、providerId、apiModelId、凭据引用、币种/单位和用户选择保持。未覆盖的任意自定义extra不按名称猜测删除。
|
||||
5. 回滚时必须能从新结构安全恢复受支持的旧投影,且不能让退役域名或停服模型再次可调用。兼容读取退出与历史文件保留分别制定期限。
|
||||
|
||||
## 防回流
|
||||
|
||||
增加V2旧键拒写名单和“新字段有消费点/版本声明”校验;对受管数据的未知行为键失败,不依赖开放extra静默忽略。记录性metadata与自定义参数扩展留各自明确边界。CLI、UI保存、Provider发现/同步和云端pricing转换都必须使用同一规范化入口。
|
||||
|
||||
V1投影继续遵守frozen契约:defaultTemperature/defaultTopP不能写null,必填字段和已知enum不能提前删除/扩展。V2明确“不支持采样”后由新客户端请求约束落实,不能把Spec里的null直接复制到旧Provider造成整份配置拒收。
|
||||
50
docs/plans/catalog-contract-migration/MODEL-SPECS.md
Normal file
50
docs/plans/catalog-contract-migration/MODEL-SPECS.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# ModelSpec 完善与 Provider 取舍
|
||||
|
||||
[PLAN](PLAN.md) · [真实匹配/差异基线](SPEC-BASELINE.md)
|
||||
|
||||
## 方案选择
|
||||
|
||||
| 方案 | 收益 | 问题 | 决策 |
|
||||
| --- | --- | --- | --- |
|
||||
| Provider和Spec各自完整手工维护 | 兼容现有客户端,修改直接 | 相同事实重复、45处数值差异难追踪,不能区分正确覆盖和错误 | 退出手工双写 |
|
||||
| 只保留Provider | 端点/账号/价格可直接读取 | 原厂身份/参数重复到各套餐,动态云目录无统一规格,匹配和路由继续靠名字猜测 | 不采用 |
|
||||
| 只保留ModelSpec | 原厂规格集中 | 无法代表不同地域/套餐价格、凭据、协议、实际可用模型;spec-only不是可调用 | 不采用 |
|
||||
| ModelSpec canonical + 接入绑定/覆盖 + 自动编译投影 | 各事实只维护一次,可解释平台差异,兼顾动态发现和旧客户端 | 需要客户端resolver、版本化schema和生成工具先实现 | 推荐 |
|
||||
|
||||
## 作者数据和运行时对象
|
||||
|
||||
建议V2增加版本化目录(如compute/v2/model-specs、providers、coding-plans、retirements及manifest,具体路径P1确定),保留根目录V1兼容投影。新增的字段/目录都是设计提案,不是当前已实现API。
|
||||
|
||||
- **ModelSpec**:稳定modelRef、vendor/canonicalModelId、明确版本/变体、exact与经过证实的aliases、原厂spec、逐字段证据、生命周期;routing仍为模型域中的明确产品政策,来源不能伪装成官网参数。
|
||||
- **AccessModel**:实际apiModelId/modelName、指向modelRef的绑定、是否当前可用、区域/套餐、协议/adapterVersion、认证/媒体/任务端点、billing、已证实的limit/capability/request override、所需客户端版本。
|
||||
- **EffectiveModel**:客户端/编译器按同一规则计算;identity/请求ID分开,原厂声明/平台合同/用户覆写分开,并带字段来源、覆盖理由和匹配层级用于诊断。用户配置读取和云端同步使用同一resolver。
|
||||
|
||||
旧Provider中必须的displayName/serviceType/capabilities等并不马上删;生成器从V2对象投影到frozen V1 schema。V2作者数据不再人工复制它们。一个编译输入产生两个按版本选择的格式,兼容副本不是第二份真相源。
|
||||
|
||||
## 有效值规则
|
||||
|
||||
| 字段类别 | 合成规则 |
|
||||
| --- | --- |
|
||||
| 身份 | access精确绑定优先;实际请求ID原样保留。显示别名不等于原厂调用实参;不通过剥离preview/free/日期等自动宣布两个型号是同一合同 |
|
||||
| 输入/窗口/输出 | 每个限制独立表达。已证实的access限定值优先于通用原厂默认,并保留理由/证据;请求预算再受有效上限约束。平台经验证可有不同上下文、tokenizer或托管变体,不用机械min/全相等抹掉差异 |
|
||||
| 能力 | 原厂事实与已验证接入开放范围组合;接入明确不支持时为不可用,不做capabilities并集。未声明/待核是unknown,不能自动转成false或全支持;用户标签不扩大官方受管调用权限 |
|
||||
| 思考模式 | routing的标准模式与接入supportedEfforts映射/集合求交,固有不能关闭约束仍成立;原厂默认、平台默认和产品默认分别记录。none与off的产品映射不直接改成所有上游相同参数 |
|
||||
| 请求限制 | 模型拒绝采样/强制工具等固有限制按精确身份生效;adaptive/budget/Responses形状、thinking回放、平台搜索与参数名称由协议绑定落实。 family不得带高风险约束到不同代际 |
|
||||
| 价格 | 直连/套餐从各自官方价签,动态云端从实际计价平台合同;billing唯一在access,Spec无价格。不要沿用“所有价格都来自NewAPI”来描述直连预设 |
|
||||
| 用户覆写 | 保留显式合法偏好;不能突破上游硬上限/停服/客户端门槛。覆写的本地数值不冒充官方证明;冲突给可理解原因 |
|
||||
| 推断兜底 | family仅展示/保守补缺,不能新增Agent资格、未知工具/模态或强制协议转换。未命中精确合同的动态模型保持未知或授权探测,不自动注册虚假Spec |
|
||||
|
||||
当前v10.0.177 applySpec在普通精确合并可覆盖数值,但provider-management/compute-routes强制inferred=true只补缺;capabilities却始终并集,extra整体浅合并。P1要统一这些路径,给每种字段明确合成规则,避免不同入口拿到不同能力。不能只改JSON就宣布合成语义已经统一。
|
||||
|
||||
## 完善内容与顺序
|
||||
|
||||
1. **身份与匹配优先**:补GPT-5.4 Nano独立规格、收窄gpt-5.4 pattern;17未匹配和7family逐条分类,见基线。普通固定型号应有精确绑定,ark-code-latest等动态套餐别名必须通过其实际目录/合同解析,不能永久绑定某个猜测原厂。
|
||||
2. **完整输入预算**:新增独立maxInputTokens与总context、maxOutput字段;窗口单位、tokenizer、独立限制/组合预算、默认max_tokens与reasoning预算均分开。讯飞不能拿65536输入证明总窗口;未知总窗口不补造。
|
||||
3. **45处差异分类**:A官方错误需修,B有证据的平台覆盖需保留,C单位换算需明确,D旧假定/没有证据需待核。每项登记决定与原值/新值,单供应商提交;不批量复制最大值。
|
||||
4. **模态/工具与协议**:明确输入/输出模态、tools/结构化结果、native/transcode路径和适配状态;Spec描述型号并不宣布客户端已适配。原生TTS/Live/转写/视频/Rerank完善规格后,仍须独立接入验收。
|
||||
5. **生命周期可执行**:preview、active、deprecated、retired、historical、unknown及其证据分开;原厂生命周期与某接入账户/地域/套餐开放状态分开。对已确认retired/未适配/缺最低版本的对象禁止自动路由和出站。
|
||||
6. **路由完整性**:仅当前access可用、版本支持、合同足够且用户策略允许的精确型号成为候选;metadata和ID存在不授权调用。pending可保留检索/手动候选与说明,不借补Spec扩大自动权限。
|
||||
7. **58条无静态接入规格**:分别标记动态云目录服务、family保守兜底、历史兼容、待协议适配、可能孤立。只有真正无使用方且原厂/别名生命周期已核才归档,不用静态Provider是否存在直接删除。
|
||||
8. **缓存更新**:Spec/绑定/生命周期的变更用catalog digest或明确版本失效;退出依赖修改_index描述来触发mtime的维护惯例。原地换文件、离线缓存和回滚均须验证。
|
||||
|
||||
来源仍沿用每供应商SOURCES、单模型、单接入和source-gaps细分;新增字段的每一条已核声明要能指向确切接入面证据。不将当前132条部分参数已核自动标成完整Spec。
|
||||
80
docs/plans/catalog-contract-migration/PLAN.md
Normal file
80
docs/plans/catalog-contract-migration/PLAN.md
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
plan_path: /Users/wangyi/.codex/worktrees/c0a8/config-center/docs/plans/catalog-contract-migration/PLAN.md
|
||||
revision: 3
|
||||
related_workdirs:
|
||||
- /Users/wangyi/.codex/worktrees/c0a8/config-center
|
||||
- /Users/wangyi/.codex/worktrees/catalog-contract-client/desirecore
|
||||
---
|
||||
# PLAN:旧字段迁移、客户端门控、域名退役与模型规格优化
|
||||
|
||||
状态:实施中。用户已要求逐一完成;先做P0/客户端P1,并行完成编译与规格治理,客户端实际发布后再启用新数据。P0、P1、P2、P3、P4、P5的任务和证据记录见 EXECUTION.md。
|
||||
|
||||
## 目标与基线
|
||||
|
||||
- config-center 基线:main `4f4e5093e91ead6c9f01aacc188d23ea4b5e8917`,presetDataVersion 127。
|
||||
- 已发布客户端核查对象:[v10.0.177](https://github.com/desirecore/desirecore/releases/tag/v10.0.177),tag commit `dd5a8c9f2fb000f7b2c589ec092068874c7dec5c`。release 标记为正式版本,发布时间 2026-09-27,targetCommitish 为 dev;主仓 main `412e05b...` 不能代替该发布基线。
|
||||
- 范围:29 份 Provider、11 份套餐、23 份规格文件;340 条接入模型记录、279 条 ModelSpec,共 619 条来源记录。
|
||||
- 当前 40 份接入配置仅 2 份有 requiredClientVersion。149 种 extra 叶路径出现在 233 条记录中;149 种不等于 149 个旧字段,全部需要完成消费/归属分类。
|
||||
- 用已发布客户端的真实匹配器核对:303 exact、3 normalized、1 stripped、9 pattern、7 family、17 未匹配;45 条记录存在 contextWindow/maxOutputTokens 差异。58 条规格未被静态接入记录命中,不能据此认定无用,可能服务云端动态目录、历史身份或待适配协议。
|
||||
- 本轮已迁移的 14 个无效推理键不再残留;下一阶段不能把“旧键告警为零”当作全部字段已规范。
|
||||
|
||||
## 推荐取舍
|
||||
|
||||
保留 Provider 与 model-specs。推荐“规格单处维护 + 接入面显式覆盖 + 编译得到有效配置与兼容副本”。不要合并成一个巨大 Provider 文件,也不要删掉 Provider 只留下规格。
|
||||
|
||||
| 域 | 唯一作者数据 | 不应承担 |
|
||||
| --- | --- | --- |
|
||||
| ModelSpec | 精确模型身份、原厂已核事实、输入/输出独立限制、模态与固有限制、模型级路由策略、证据和生命周期 | endpoint、凭据、账号开放名单、平台价格、接入 effort、thinking 回放或平台 WebSearch |
|
||||
| Provider / 套餐 | 地域、端点、凭据、账号可用模型、协议/适配器、计价单位与价签、显式接入限制和 API 参数映射 | 再次手工复制所有模型事实、靠 family 推定新型号能力 |
|
||||
| 编译器 / 客户端 resolver | 按字段规则组合 ModelSpec 与接入覆盖,记录每个有效值的来源,生成旧客户端副本 | 私自补 unknown、合并不同单位或把完整能力列表取并集 |
|
||||
| 用户配置 | 用户选项、合法覆写和自建接入 | 被远端预设覆盖或被按名称猜测的迁移修改 |
|
||||
|
||||
格式路线:新增版本化 V2 目录/manifest/schema 与客户端读取选择器,旧路径维持冻结的 V1 兼容投影。新版本原始作者数据不再保留运行时旧字段;兼容投影由生成器产出,过渡期不手工双写。完成客户端铺开后停止更新旧投影并归档,移除条件必须明确。具体见[规格与接入职责设计](MODEL-SPECS.md)。
|
||||
|
||||
## 执行阶段
|
||||
|
||||
| 阶段 | 工作 | 产物 | 进入下一阶段的条件 |
|
||||
| --- | --- | --- | --- |
|
||||
| P0:冻结清单与语义 | 完整盘点仓内/存量客户端字段;核149种extra路径的定义和真正读写位置;分型45条参数差异、17个无匹配和7个family;核域名下架事实 | 字段映射矩阵、版本能力矩阵、域名退役候选、来源缺口和dry-run报告 | 每个字段都有归属与处置,未知项独立登记;不能批量猜值 |
|
||||
| P1:客户端先行 | V2 schema/目录选择、全局合同版本门控、Provider/模型/适配器门控、统一有效配置resolver、配置迁移与回滚;补退役域名出站拦截 | 客户端代码PR、跨版本/存量配置测试、正式发布 V_contract | 真正正式发布且验收支持新合同的版本存在;版本号不能用未发布main或猜10.0.178填写 |
|
||||
| P2:数据与字段迁移 | 迁移受管旧字段;消除重复作者字段;保留有依据的接入覆盖;按冻结schema生成V1投影;同步来源/缺口文档 | V2 canonical、编译器、字段移除清单、来源登记、必要manifest递增 | 全部受管旧运行时键在V2写入端为零;迁移幂等、无静默丢值、价格/单位/覆写保持;V1兼容检查通过 |
|
||||
| P3:ModelSpec完善 | 先修精确身份、错误pattern、独立输入预算,再逐条解决45处数值差异;补生命周期/适配状态;逐家核官网 | 单供应商PR、已核字段、显式override及自动路由资格清单 | 每条启用模型有精确绑定或明确动态或仅手动例外;客户端原生适配未实现则保留记录并明确禁止调用,不能因为API格式名称已识别而宣称支持;差异都分类为正确覆盖/错误/待核,不能要求全相等 |
|
||||
| P4:域名退役 | 对已确认退役的接入移除活跃引用与索引;模型墓碑、Provider退役注册、存量停用、缓存/任务/默认回退同步 | 域名注册表、客户端退役迁移、活跃引用零残留与出站反例测试 | 确认范围内不再发送凭据或轮询;历史来源链接可保留;不会误伤同域其他有效API和用户自建数据 |
|
||||
| P5:发布与退出兼容 | 在客户端门控已经生效后发布V2数据,校验正式版本和全部来源;审查精确head、CI、review线程,再合并和远端复核 | 发布批次报告、各版本行为矩阵、剩余待核列表、V1退出记录 | 低版本不会应用新合同;当前版本和新版通过回归;没有把Schema通过当账号/协议实测 |
|
||||
|
||||
P4 的实现机制可在 P1 并行开发;确认过的遗留退役接入可单独走窄范围修复,不必等所有官网字段核完。大范围字段删除和V2切换必须经过 P1。
|
||||
|
||||
## 首批优先事项
|
||||
|
||||
1. **P0/P1,版本门控**:40份接入及279条规格声明其能力依赖。以已发布tag检查功能,证明升级前后的读取、拒绝和缓存行为;显示“需更新”之外,还要堵住显式Provider、SDK、工作流、后台辅助和媒体调用绕过。
|
||||
2. **P3,GPT-5.4 Nano误匹配**:当前走 gpt-5.4 的 pattern,Nano 400000 窗口可能被 1050000 规格混淆。补独立exact规格、收窄pattern,并用真实匹配器验证;其他代际误吞一并巡检。
|
||||
3. **P3,独立输入限制**:Mini/Nano 的272000输入与400000总窗口、讯飞65536输入与131072输出分别表达;不再用 contextWindow 伪装最大输入。
|
||||
4. **P0/P2,参数差异**:Codex订阅272000与原厂1050000不是自动错误;MiniMax-M3共享输出512000与直连131072证据仍不完整;OpenRouter上限按其独立合同处理。见[匹配与差异基线](SPEC-BASELINE.md)。
|
||||
5. **P0/P4,历史下架接入**:零一万物已由本仓#84删除,但已发布客户端退役名单仅见internal-testing。补受管旧配置迁移;“本产品已下架”与“厂家域名已停止服务”的证明分别登记,不能直接封整个lingyiwanwu.com。
|
||||
6. **P2,定价/媒体/思考旧字段**:价格同义字段、音频格式/音色、思考默认和旧metadata优先分类;不把缓存读价、TTL写价、按字符/每秒/每search unit价格改成同一token价。
|
||||
|
||||
## 并行实施安排
|
||||
|
||||
本次实施采用三个 subAgent 与主工作线协作。配置中心复用当前工作区;客户端从最新dev创建隔离worktree,按要求拉取最新子模块。
|
||||
|
||||
- A:字段归属、迁移器与兼容投影;独占迁移工具、字段schema和迁移测试。
|
||||
- B:ModelSpec精确绑定、参数与官方字段核查;按供应商分工,不同时修改同一 canonical。
|
||||
- C:域名/Provider退役清单、客户端停用与出站拦截;独占退役注册与相关测试。
|
||||
- 主工作线:客户端版本矩阵、格式门控、resolver接口、交叉review、manifest和发布;共享schema变更先定接口再分配,不能多代理同时改同一文件。
|
||||
|
||||
P0 的只读清单可并行;P1 完成后再进行数据迁移和下架发布。客户端仓 worktree 若需建立,先同步并更新最新子模块,保留无关gitlink及用户改动。
|
||||
|
||||
## 完成标准
|
||||
|
||||
- 所有仓内受管字段及已识别存量旧字段都完成“保留有效规范字段/映射迁移/转记录性metadata/明确退役”的处置;运行时写入V2旧键为零,旧读取兜底有退出条件。
|
||||
- 40份接入、全部V2规格/协议的依赖都可计算最低版本;未支持版本在读取和实际调用两层被拦;离线保留最后一份可消费数据。
|
||||
- 已确认退役域名/路径/接入在活跃配置、默认映射、同步发现和后台任务中零残留;无法证实退役的域名留待核,不误删。
|
||||
- 每个接入绑定准确规格或明确动态例外;45处差异有解释、7处family没有扩大调用或路由权限;58个未命中静态接入的规格完成用途分类。
|
||||
- 原厂事实、接入限制、价格、用户覆写、产品路由政策都可追溯;未知不自动变成零、默认值或全能力。
|
||||
- 老/最低/当前客户端、受管旧配置、用户自建配置、重复迁移、回滚、停服域名和新模型调用矩阵通过。
|
||||
|
||||
核验和发布细则见[验收与发布](VALIDATION.md);字段、版本、域名、规格专题分别拆分在同目录,避免把证据和全部任务堆在本文件。
|
||||
|
||||
## 实施中补充的实际边界(revision 3)
|
||||
|
||||
真实适配器与profile执行已核36条当前未适配接入(3Realtime、21图像/视频、12ASR/TTS),原默认local-whisper/whisper-large-v3亦缺profile。此任务落实适配状态与实际调用门控,不以保留记录宣称这些接口已可用,不静默替换用户默认。原生适配器新增属于已列独立接入依赖,详见ADAPTER-DECISIONS。
|
||||
@@ -0,0 +1,7 @@
|
||||
# 退役判定与实施范围
|
||||
|
||||
依据:本仓 #84 / commit a998e18;原配置 provider-lingyiwanwu-001,baseUrl=https://api.lingyiwanwu.com/v1。本轮核查使用Git历史,未把官网正文读取失败当作厂商域名停服。
|
||||
|
||||
已形成候选数据规则 catalog/v2/retirements.json:受管旧Provider身份与原host/path同时匹配,2026-08-28起本产品预置接入已退役。保留凭据,不按label模糊匹配,不封AgentBox、官网或其他同厂产品。客户端实现/正式版本与验证证据将追加在EXECUTION.md。
|
||||
|
||||
MiniMax旧/new域名、讯飞/v1/v2/x2、Perplexity路径迁移和87条不可读官网记录没有获得整域停服证明,本轮不将它们加入停服域名denylist。所有已下架模型的tombstones仍按各接入面保留。
|
||||
151
docs/plans/catalog-contract-migration/SPEC-BASELINE.md
Normal file
151
docs/plans/catalog-contract-migration/SPEC-BASELINE.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# ModelSpec匹配与数值差异基线
|
||||
|
||||
[PLAN](PLAN.md) · [职责/合成设计](MODEL-SPECS.md)
|
||||
|
||||
使用正式发布tag v10.0.177的model-spec-matcher.ts纯函数,对本仓V127进行离线只读匹配,未调用模型API。该检查说明数据可匹配性,不证明所有运行时入口会以覆盖模式调用applySpec,也不证明差异全是错误。
|
||||
|
||||
340接入记录/279规格:303 exact、3 normalized、1 stripped、9 pattern、7 family、17 none;45条记录有窗口或输出数值差异。
|
||||
|
||||
## 无匹配(17条)与family(7条)
|
||||
|
||||
| 接入配置 | 模型ID | 匹配 | 当前落入规格 | 分类与处理 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `compute/providers/openai.json` | `gpt-realtime-2.1` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/openai.json` | `gpt-realtime-2.1-mini` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/openai.json` | `gpt-realtime-translate` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/dashscope.json` | `qwen-mt-plus` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/volcengine.json` | `doubao-seedream-4-0-250828` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/moonshot.json` | `moonshot-v1-8k-vision-preview` | family | moonshot-v1-8k | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/moonshot.json` | `moonshot-v1-32k-vision-preview` | family | moonshot-v1-8k | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/moonshot.json` | `moonshot-v1-128k-vision-preview` | family | moonshot-v1-8k | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/zhipu.json` | `glm-4.7-flashx` | family | glm-4.7 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/siliconflow.json` | `BAAI/bge-m3` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/local-whisper.json` | `whisper-large-v3` | family | whisper-1 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/ollama.json` | `llama3.1:70b` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/xai.json` | `grok-build-0.1` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/openrouter.json` | `cohere/command-a-plus` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/providers/openrouter.json` | `openrouter/auto` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/coding-plans/dashscope-coding.json` | `qwen3-coder-plus` | family | qwen3-coder | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/coding-plans/dashscope-coding.json` | `qwen3-coder-next` | family | qwen3-coder | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/coding-plans/volcengine-coding.json` | `ark-code-latest` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/coding-plans/tencent-token.json` | `tc-code-latest` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/coding-plans/moonshot-coding.json` | `kimi-for-coding` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/coding-plans/baidu-coding.json` | `qianfan-code-latest` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/coding-plans/infini-coding.json` | `deepseek-v3` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/coding-plans/moorethread-coding.json` | `mt-coder` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
| `compute/coding-plans/kwai-coding.json` | `kwai-coder` | none | 无 | P0区分固定型号补exact、动态别名、family保守兜底或待协议适配;不据此自动补参数 |
|
||||
|
||||
## 数值差异(45条)
|
||||
|
||||
| 接入配置 | 模型ID | 规格/匹配 | 接入值 → Spec值 | 处置状态 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `compute/providers/openai.json` | `gpt-5.4-nano` | gpt-5.4 (pattern) | contextWindow: 400000 → 1050000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openai-codex.json` | `gpt-reserve` | gpt-reserve (exact) | contextWindow: 272000 → 1050000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openai-codex.json` | `gpt-5.6-sol` | gpt-5.6-sol (exact) | contextWindow: 272000 → 1050000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openai-codex.json` | `gpt-5.6-terra` | gpt-5.6-terra (exact) | contextWindow: 272000 → 1050000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openai-codex.json` | `gpt-5.6-luna` | gpt-5.6-luna (exact) | contextWindow: 272000 → 1050000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openai-codex.json` | `gpt-5.5` | gpt-5.5 (exact) | contextWindow: 272000 → 1050000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openai-codex.json` | `gpt-5.4` | gpt-5.4 (exact) | contextWindow: 272000 → 1050000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openai-codex.json` | `gpt-5.4-mini` | gpt-5.4-mini (exact) | contextWindow: 272000 → 400000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/volcengine.json` | `doubao-seed-2.1-turbo` | doubao-seed-2.1-turbo (exact) | maxOutputTokens: 262144 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/volcengine.json` | `doubao-seed-2.0-lite` | doubao-seed-2.0-lite (exact) | maxOutputTokens: 128000 → 32000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/volcengine.json` | `doubao-seed-2.0-mini` | doubao-seed-2.0-mini (exact) | maxOutputTokens: 128000 → 32000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/moonshot.json` | `kimi-k2.7-code` | kimi-k2.7-code (exact) | maxOutputTokens: 32768 → 16384 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/moonshot.json` | `kimi-k2.7-code-highspeed` | kimi-k2.7-code (pattern) | maxOutputTokens: 32768 → 16384 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/moonshot.json` | `kimi-k2.6` | kimi-k2.6 (exact) | maxOutputTokens: 32768 → 16384 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/moonshot.json` | `kimi-k2.5` | kimi-k2.5 (exact) | contextWindow: 262144 → 256000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/moonshot.json` | `moonshot-v1-32k-vision-preview` | moonshot-v1-8k (family) | contextWindow: 32768 → 8192 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/moonshot.json` | `moonshot-v1-128k-vision-preview` | moonshot-v1-8k (family) | contextWindow: 131072 → 8192 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/zhipu.json` | `glm-5.2` | glm-5.2 (exact) | contextWindow: 1000000 → 1048576;maxOutputTokens: 131072 → 32768 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/zhipu.json` | `glm-5.1` | glm-5.1 (exact) | maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/zhipu.json` | `glm-5-turbo` | glm-5-turbo (exact) | maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/zhipu.json` | `glm-5` | glm-5 (exact) | maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/zhipu.json` | `glm-4.7` | glm-4.7 (exact) | maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/zhipu.json` | `glm-4.7-flashx` | glm-4.7 (family) | maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/zhipu.json` | `glm-5v-turbo` | glm-5v-turbo (exact) | maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/zhipu.json` | `glm-4.6` | glm-4.6 (exact) | maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/minimax.json` | `MiniMax-M3` | MiniMax-M3 (exact) | maxOutputTokens: 131072 → 512000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/xai.json` | `grok-4.20-0309-reasoning` | grok-4.20-0309-reasoning (exact) | contextWindow: 1000000 → 2000000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openrouter.json` | `minimax/minimax-m3` | MiniMax-M3 (normalized) | contextWindow: 1048576 → 1000000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openrouter.json` | `deepseek/deepseek-v4.1-flash` | deepseek-flash (exact) | contextWindow: 1048576 → 1000000;maxOutputTokens: 943718 → 384000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openrouter.json` | `z-ai/glm-5.3-flash` | glm-5.3-flash (exact) | maxOutputTokens: 943717 → 131072 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/providers/openrouter.json` | `moonshotai/kimi-k3` | kimi-k3 (exact) | maxOutputTokens: 943718 → 1048576 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/zhipu-coding.json` | `glm-5.2` | glm-5.2 (exact) | contextWindow: 1000000 → 1048576;maxOutputTokens: 131072 → 32768 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/zhipu-coding.json` | `glm-5-turbo` | glm-5-turbo (exact) | maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/zhipu-coding.json` | `glm-4.7` | glm-4.7 (exact) | maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/dashscope-coding.json` | `qwen3-coder-plus` | qwen3-coder (family) | contextWindow: 1000000 → 262144 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/dashscope-coding.json` | `kimi-k2.5` | kimi-k2.5 (exact) | contextWindow: 262144 → 256000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/dashscope-coding.json` | `glm-5` | glm-5 (exact) | contextWindow: 202752 → 200000;maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/dashscope-coding.json` | `glm-4.7` | glm-4.7 (exact) | contextWindow: 202752 → 200000;maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/dashscope-coding.json` | `MiniMax-M2.5` | MiniMax-M2.5 (exact) | contextWindow: 196608 → 204800;maxOutputTokens: 8192 → 131072 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/dashscope-token-plan.json` | `kimi-k2.5` | kimi-k2.5 (exact) | contextWindow: 262144 → 256000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/dashscope-token-plan.json` | `glm-5` | glm-5 (exact) | contextWindow: 202752 → 200000;maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/dashscope-token-plan.json` | `MiniMax-M2.5` | MiniMax-M2.5 (exact) | contextWindow: 196608 → 204800;maxOutputTokens: 8192 → 131072 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/dashscope-token-plan.json` | `glm-4.7` | glm-4.7 (exact) | maxOutputTokens: 131072 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/volcengine-coding.json` | `doubao-seed-2.1-turbo` | doubao-seed-2.1-turbo (exact) | maxOutputTokens: 262144 → 128000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
| `compute/coding-plans/minimax-coding.json` | `MiniMax-M3` | MiniMax-M3 (exact) | maxOutputTokens: 131072 → 512000 | 待分型:平台覆盖/错误/单位/缺证,不要求全部相等 |
|
||||
|
||||
## 未被静态接入记录命中的规格(58条)
|
||||
|
||||
其中4条具有routing。静态未命中不证明无云端使用方、不证明退役。分别核动态目录、家族兜底、历史兼容、原生协议待适配与真正孤立后决定保留或归档。
|
||||
|
||||
| 规格文件 | ID | 当前routing存在 |
|
||||
| --- | --- | --- |
|
||||
| `compute/model-specs/anthropic.json` | `claude-opus-4-8` | 否 |
|
||||
| `compute/model-specs/anthropic.json` | `claude-opus-4-7` | 否 |
|
||||
| `compute/model-specs/anthropic.json` | `claude-opus` | 否 |
|
||||
| `compute/model-specs/anthropic.json` | `claude-sonnet-4-6` | 否 |
|
||||
| `compute/model-specs/anthropic.json` | `claude-sonnet-4-5` | 否 |
|
||||
| `compute/model-specs/anthropic.json` | `claude-sonnet` | 否 |
|
||||
| `compute/model-specs/openai.json` | `dall-e-3` | 否 |
|
||||
| `compute/model-specs/openai.json` | `gpt-4o-realtime` | 否 |
|
||||
| `compute/model-specs/openai.json` | `gpt-4o-realtime-preview` | 否 |
|
||||
| `compute/model-specs/openai.json` | `gpt-oss-120b` | 否 |
|
||||
| `compute/model-specs/openai.json` | `gpt-5.6-sol-pro` | 否 |
|
||||
| `compute/model-specs/openai.json` | `gpt-5.6-terra-pro` | 否 |
|
||||
| `compute/model-specs/openai.json` | `gpt-5.6-luna-pro` | 否 |
|
||||
| `compute/model-specs/google.json` | `gemini-3.5-transcribe-live` | 否 |
|
||||
| `compute/model-specs/google.json` | `gemini-3.5-transcribe` | 否 |
|
||||
| `compute/model-specs/google.json` | `gemini-3.8-live-extended-thinking` | 否 |
|
||||
| `compute/model-specs/google.json` | `gemini-3.8-live` | 否 |
|
||||
| `compute/model-specs/google.json` | `gemini-3.8-flash-lite-tts` | 否 |
|
||||
| `compute/model-specs/google.json` | `gemini-3.8-flash-tts` | 否 |
|
||||
| `compute/model-specs/google.json` | `gemini-3.1-flash-lite-image` | 否 |
|
||||
| `compute/model-specs/google.json` | `gemini-3.1-flash-image` | 否 |
|
||||
| `compute/model-specs/deepseek.json` | `deepseek-chat` | 否 |
|
||||
| `compute/model-specs/deepseek.json` | `deepseek-reasoner` | 否 |
|
||||
| `compute/model-specs/qwen.json` | `qwen3.8-max-preview` | 是 |
|
||||
| `compute/model-specs/qwen.json` | `qwen-max` | 否 |
|
||||
| `compute/model-specs/qwen.json` | `qwen-plus` | 否 |
|
||||
| `compute/model-specs/qwen.json` | `qwen-turbo` | 否 |
|
||||
| `compute/model-specs/qwen.json` | `qwen3-max-trans` | 否 |
|
||||
| `compute/model-specs/qwen.json` | `qwen3.5-35b-a3b` | 否 |
|
||||
| `compute/model-specs/qwen.json` | `qwen3.5-27b` | 否 |
|
||||
| `compute/model-specs/moonshot.json` | `kimi-k2-thinking` | 否 |
|
||||
| `compute/model-specs/moonshot.json` | `kimi-k2` | 否 |
|
||||
| `compute/model-specs/zhipu.json` | `glm-4.7-thinking` | 否 |
|
||||
| `compute/model-specs/minimax.json` | `MiniMax-H3-Max` | 否 |
|
||||
| `compute/model-specs/minimax.json` | `MiniMax-H3` | 否 |
|
||||
| `compute/model-specs/minimax.json` | `MiniMax-Text-01` | 否 |
|
||||
| `compute/model-specs/xai.json` | `grok-4.5` | 否 |
|
||||
| `compute/model-specs/xai.json` | `grok-4-1-fast-reasoning` | 否 |
|
||||
| `compute/model-specs/xiaomi.json` | `mimo-v2.5` | 是 |
|
||||
| `compute/model-specs/xiaomi.json` | `mimo-v2-pro` | 否 |
|
||||
| `compute/model-specs/xiaomi.json` | `mimo-v2-omni` | 否 |
|
||||
| `compute/model-specs/xiaomi.json` | `mimo-v2-flash` | 否 |
|
||||
| `compute/model-specs/xiaomi.json` | `mimo-v2-tts` | 否 |
|
||||
| `compute/model-specs/cohere.json` | `rerank-v4.0-fast` | 否 |
|
||||
| `compute/model-specs/cohere.json` | `rerank-v4.0-pro` | 否 |
|
||||
| `compute/model-specs/cohere.json` | `north-mini-code-1-0` | 否 |
|
||||
| `compute/model-specs/cohere.json` | `north-small-translate-1-0` | 否 |
|
||||
| `compute/model-specs/cohere.json` | `rerank-v3.5` | 否 |
|
||||
| `compute/model-specs/kling.json` | `kling-3.0-turbo` | 否 |
|
||||
| `compute/model-specs/stability.json` | `stable-audio-3.0` | 否 |
|
||||
| `compute/model-specs/tencent.json` | `hy3` | 否 |
|
||||
| `compute/model-specs/tencent.json` | `hy3-preview` | 否 |
|
||||
| `compute/model-specs/volcengine.json` | `doubao-seedance-2.0-fast` | 是 |
|
||||
| `compute/model-specs/volcengine.json` | `doubao-seedance-2.0-mini` | 是 |
|
||||
| `compute/model-specs/volcengine.json` | `doubao-seedance-1.5-pro` | 否 |
|
||||
| `compute/model-specs/volcengine.json` | `doubao-seedance-1.0-pro` | 否 |
|
||||
| `compute/model-specs/volcengine.json` | `doubao-seedance-1.0-pro-fast` | 否 |
|
||||
| `compute/model-specs/stealth.json` | `ox-alpha` | 否 |
|
||||
2661
docs/plans/catalog-contract-migration/SPEC-DECISIONS.json
Normal file
2661
docs/plans/catalog-contract-migration/SPEC-DECISIONS.json
Normal file
File diff suppressed because it is too large
Load Diff
158
docs/plans/catalog-contract-migration/SPEC-DECISIONS.md
Normal file
158
docs/plans/catalog-contract-migration/SPEC-DECISIONS.md
Normal file
@@ -0,0 +1,158 @@
|
||||
# ModelSpec实施决定
|
||||
|
||||
本文件记录P0/P3逐项处置,机器清单为 [SPEC-DECISIONS.json](SPEC-DECISIONS.json)。未知值保留unknown并禁止family扩权,不把分类完成称作官网事实全部完成。
|
||||
|
||||
- 340条接入重新用正式tag真实匹配器核对;当前14 none、5 family、43条数值差异。
|
||||
- Nano和Pro独立精确规格;删除基础GPT-5.4宽泛pattern,实时三型号补官方窗口/输出。
|
||||
- Coding Plan官方正文确认qwen3-coder-plus/next ID,仅加identity-only精确规格,无参数/路由授权。
|
||||
- 其他19条明确access-local例外:实际请求ID/局部数值保留,V2不从family制造身份、能力或自动路由;原V1已发布匹配器历史行为不能仅靠此文件修复。
|
||||
- 独立maxInputTokens:本次模型页只证明总窗口,272000不能凭预算相减假定为原厂输入硬上限;V2支持该字段,具体新值未知保留null。
|
||||
- 本次官方读取日期2026-10-03;Nano公告deprecated、停止2027-04-01,当前不得以deprecated当已停服。
|
||||
|
||||
## 原24条匹配异常
|
||||
|
||||
| 接入 | ID | 原匹配 → 当前 | 决定 |
|
||||
| --- | --- | --- | --- |
|
||||
| `compute/providers/openai.json` | `gpt-realtime-2.1` | none → exact | exact-official-facts |
|
||||
| `compute/providers/openai.json` | `gpt-realtime-2.1-mini` | none → exact | exact-official-facts |
|
||||
| `compute/providers/openai.json` | `gpt-realtime-translate` | none → exact | exact-official-facts |
|
||||
| `compute/providers/dashscope.json` | `qwen-mt-plus` | none → none | access-local-no-inheritance |
|
||||
| `compute/providers/volcengine.json` | `doubao-seedream-4-0-250828` | none → none | access-local-no-inheritance |
|
||||
| `compute/providers/moonshot.json` | `moonshot-v1-8k-vision-preview` | family → family | access-local-no-inheritance |
|
||||
| `compute/providers/moonshot.json` | `moonshot-v1-32k-vision-preview` | family → family | access-local-no-inheritance |
|
||||
| `compute/providers/moonshot.json` | `moonshot-v1-128k-vision-preview` | family → family | access-local-no-inheritance |
|
||||
| `compute/providers/zhipu.json` | `glm-4.7-flashx` | family → family | access-local-no-inheritance |
|
||||
| `compute/providers/siliconflow.json` | `BAAI/bge-m3` | none → none | access-local-no-inheritance |
|
||||
| `compute/providers/local-whisper.json` | `whisper-large-v3` | family → family | access-local-no-inheritance |
|
||||
| `compute/providers/ollama.json` | `llama3.1:70b` | none → none | access-local-no-inheritance |
|
||||
| `compute/providers/xai.json` | `grok-build-0.1` | none → none | access-local-no-inheritance |
|
||||
| `compute/providers/openrouter.json` | `cohere/command-a-plus` | none → none | access-local-no-inheritance |
|
||||
| `compute/providers/openrouter.json` | `openrouter/auto` | none → none | access-local-no-inheritance |
|
||||
| `compute/coding-plans/dashscope-coding.json` | `qwen3-coder-plus` | family → exact | exact-identity-only |
|
||||
| `compute/coding-plans/dashscope-coding.json` | `qwen3-coder-next` | family → exact | exact-identity-only |
|
||||
| `compute/coding-plans/volcengine-coding.json` | `ark-code-latest` | none → none | access-local-no-inheritance |
|
||||
| `compute/coding-plans/tencent-token.json` | `tc-code-latest` | none → none | access-local-no-inheritance |
|
||||
| `compute/coding-plans/moonshot-coding.json` | `kimi-for-coding` | none → none | access-local-no-inheritance |
|
||||
| `compute/coding-plans/baidu-coding.json` | `qianfan-code-latest` | none → none | access-local-no-inheritance |
|
||||
| `compute/coding-plans/infini-coding.json` | `deepseek-v3` | none → none | access-local-no-inheritance |
|
||||
| `compute/coding-plans/moorethread-coding.json` | `mt-coder` | none → none | access-local-no-inheritance |
|
||||
| `compute/coding-plans/kwai-coding.json` | `kwai-coder` | none → none | access-local-no-inheritance |
|
||||
|
||||
## 原45条参数差异
|
||||
|
||||
| 接入 / 型号 | 分类 | 决定及依据边界 |
|
||||
| --- | --- | --- |
|
||||
| `compute/providers/openai.json#gpt-5.4-nano` | corrected-identity | 官网400000/128000;基础GPT-5.4的1050000属于另一型号,已消除误吞。 |
|
||||
| `compute/providers/openai-codex.json#gpt-reserve` | unverified-preserved | 订阅接入272000并非原厂API总窗口;暂无订阅字段证明,作为未核接入限制保留,不提升到1050000。 |
|
||||
| `compute/providers/openai-codex.json#gpt-5.6-sol` | unverified-preserved | 订阅接入272000并非原厂API总窗口;暂无订阅字段证明,作为未核接入限制保留,不提升到1050000。 |
|
||||
| `compute/providers/openai-codex.json#gpt-5.6-terra` | unverified-preserved | 订阅接入272000并非原厂API总窗口;暂无订阅字段证明,作为未核接入限制保留,不提升到1050000。 |
|
||||
| `compute/providers/openai-codex.json#gpt-5.6-luna` | unverified-preserved | 订阅接入272000并非原厂API总窗口;暂无订阅字段证明,作为未核接入限制保留,不提升到1050000。 |
|
||||
| `compute/providers/openai-codex.json#gpt-5.5` | unverified-preserved | 订阅接入272000并非原厂API总窗口;暂无订阅字段证明,作为未核接入限制保留,不提升到1050000。 |
|
||||
| `compute/providers/openai-codex.json#gpt-5.4` | unverified-preserved | 订阅接入272000并非原厂API总窗口;暂无订阅字段证明,作为未核接入限制保留,不提升到1050000。 |
|
||||
| `compute/providers/openai-codex.json#gpt-5.4-mini` | unverified-preserved | 订阅接入272000并非原厂API总窗口;暂无订阅字段证明,作为未核接入限制保留,不提升到1050000。 |
|
||||
| `compute/providers/volcengine.json#doubao-seed-2.1-turbo` | unverified-preserved | 官方正文读取边界仍存在,输入/输出和总窗口不可混用;不把套餐262144或旧共享128000/32000判定为已核。 |
|
||||
| `compute/providers/volcengine.json#doubao-seed-2.0-lite` | unverified-preserved | 官方正文读取边界仍存在,输入/输出和总窗口不可混用;不把套餐262144或旧共享128000/32000判定为已核。 |
|
||||
| `compute/providers/volcengine.json#doubao-seed-2.0-mini` | unverified-preserved | 官方正文读取边界仍存在,输入/输出和总窗口不可混用;不把套餐262144或旧共享128000/32000判定为已核。 |
|
||||
| `compute/providers/moonshot.json#kimi-k2.7-code` | unverified-preserved | 缺少精确接入字段证明;原厂与接入值均不冒充已核,不用最大值或机械min覆盖。 |
|
||||
| `compute/providers/moonshot.json#kimi-k2.7-code-highspeed` | unverified-preserved | 缺少精确接入字段证明;原厂与接入值均不冒充已核,不用最大值或机械min覆盖。 |
|
||||
| `compute/providers/moonshot.json#kimi-k2.6` | unverified-preserved | 缺少精确接入字段证明;原厂与接入值均不冒充已核,不用最大值或机械min覆盖。 |
|
||||
| `compute/providers/moonshot.json#kimi-k2.5` | unverified-preserved | 缺少精确接入字段证明;原厂与接入值均不冒充已核,不用最大值或机械min覆盖。 |
|
||||
| `compute/providers/moonshot.json#moonshot-v1-32k-vision-preview` | family-binding-rejected | 旧family错误落入8K文本型号,视觉版本窗口不能继承该规格;V2仅使用现有局部值,身份待核。 |
|
||||
| `compute/providers/moonshot.json#moonshot-v1-128k-vision-preview` | family-binding-rejected | 旧family错误落入8K文本型号,视觉版本窗口不能继承该规格;V2仅使用现有局部值,身份待核。 |
|
||||
| `compute/providers/zhipu.json#glm-5.2` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/providers/zhipu.json#glm-5.1` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/providers/zhipu.json#glm-5-turbo` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/providers/zhipu.json#glm-5` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/providers/zhipu.json#glm-4.7` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/providers/zhipu.json#glm-4.7-flashx` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/providers/zhipu.json#glm-5v-turbo` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/providers/zhipu.json#glm-4.6` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/providers/minimax.json#MiniMax-M3` | unverified-preserved | 直连/套餐131072与共享512000缺少同一语义输出证明;保持分开、unknown覆盖,不把其解释为thinking预算或默认max_tokens。 |
|
||||
| `compute/providers/xai.json#grok-4.20-0309-reasoning` | unverified-preserved | 缺少精确接入字段证明;原厂与接入值均不冒充已核,不用最大值或机械min覆盖。 |
|
||||
| `compute/providers/openrouter.json#minimax/minimax-m3` | platform-contract-preserved | OpenRouter托管合同独立于原厂;以本次官方目录核对接入值,不能反写为原厂固有上限。 |
|
||||
| `compute/providers/openrouter.json#deepseek/deepseek-v4.1-flash` | platform-contract-preserved | OpenRouter托管合同独立于原厂;以本次官方目录核对接入值,不能反写为原厂固有上限。 |
|
||||
| `compute/providers/openrouter.json#z-ai/glm-5.3-flash` | platform-contract-preserved | OpenRouter托管合同独立于原厂;以本次官方目录核对接入值,不能反写为原厂固有上限。 |
|
||||
| `compute/providers/openrouter.json#moonshotai/kimi-k3` | platform-contract-preserved | OpenRouter托管合同独立于原厂;以本次官方目录核对接入值,不能反写为原厂固有上限。 |
|
||||
| `compute/coding-plans/zhipu-coding.json#glm-5.2` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/coding-plans/zhipu-coding.json#glm-5-turbo` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/coding-plans/zhipu-coding.json#glm-4.7` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/coding-plans/dashscope-coding.json#qwen3-coder-plus` | identity-isolated | 当前Coding Plan官网正文列出该精确ID;并未证明窗口,新增无参数exact规格阻止262144家族值覆盖1000000。 |
|
||||
| `compute/coding-plans/dashscope-coding.json#kimi-k2.5` | unverified-preserved | 缺少精确接入字段证明;原厂与接入值均不冒充已核,不用最大值或机械min覆盖。 |
|
||||
| `compute/coding-plans/dashscope-coding.json#glm-5` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/coding-plans/dashscope-coding.json#glm-4.7` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/coding-plans/dashscope-coding.json#MiniMax-M2.5` | unverified-preserved | 缺少精确接入字段证明;原厂与接入值均不冒充已核,不用最大值或机械min覆盖。 |
|
||||
| `compute/coding-plans/dashscope-token-plan.json#kimi-k2.5` | unverified-preserved | 缺少精确接入字段证明;原厂与接入值均不冒充已核,不用最大值或机械min覆盖。 |
|
||||
| `compute/coding-plans/dashscope-token-plan.json#glm-5` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/coding-plans/dashscope-token-plan.json#MiniMax-M2.5` | unverified-preserved | 缺少精确接入字段证明;原厂与接入值均不冒充已核,不用最大值或机械min覆盖。 |
|
||||
| `compute/coding-plans/dashscope-token-plan.json#glm-4.7` | unverified-preserved | 1000000/1048576、128000/131072等不能凭K/M简写推断换算;平台与原厂各值保留,精确整数待官网同页证明。 |
|
||||
| `compute/coding-plans/volcengine-coding.json#doubao-seed-2.1-turbo` | unverified-preserved | 官方正文读取边界仍存在,输入/输出和总窗口不可混用;不把套餐262144或旧共享128000/32000判定为已核。 |
|
||||
| `compute/coding-plans/minimax-coding.json#MiniMax-M3` | unverified-preserved | 直连/套餐131072与共享512000缺少同一语义输出证明;保持分开、unknown覆盖,不把其解释为thinking预算或默认max_tokens。 |
|
||||
|
||||
## 原58条spec-only用途
|
||||
|
||||
| 规格 / 型号 | 分类 | 保留理由 |
|
||||
| --- | --- | --- |
|
||||
| `compute/model-specs/anthropic.json#claude-opus-4-8` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/anthropic.json#claude-opus-4-7` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/anthropic.json#claude-opus` | family-display-fallback | 家族/滚动名称仅展示或保守补缺,不能对未知型号继承高风险能力/身份。 |
|
||||
| `compute/model-specs/anthropic.json#claude-sonnet-4-6` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/anthropic.json#claude-sonnet-4-5` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/anthropic.json#claude-sonnet` | family-display-fallback | 家族/滚动名称仅展示或保守补缺,不能对未知型号继承高风险能力/身份。 |
|
||||
| `compute/model-specs/openai.json#dall-e-3` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/openai.json#gpt-4o-realtime` | legacy-compatibility | 旧精确别名/版本保留兼容;未取得退役日期证明,不据静态缺失删除,不能当成当前接入可用性。 |
|
||||
| `compute/model-specs/openai.json#gpt-4o-realtime-preview` | legacy-compatibility | 旧精确别名/版本保留兼容;未取得退役日期证明,不据静态缺失删除,不能当成当前接入可用性。 |
|
||||
| `compute/model-specs/openai.json#gpt-oss-120b` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/openai.json#gpt-5.6-sol-pro` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/openai.json#gpt-5.6-terra-pro` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/openai.json#gpt-5.6-luna-pro` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/google.json#gemini-3.5-transcribe-live` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/google.json#gemini-3.5-transcribe` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/google.json#gemini-3.8-live-extended-thinking` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/google.json#gemini-3.8-live` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/google.json#gemini-3.8-flash-lite-tts` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/google.json#gemini-3.8-flash-tts` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/google.json#gemini-3.1-flash-lite-image` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/google.json#gemini-3.1-flash-image` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/deepseek.json#deepseek-chat` | legacy-compatibility | 旧精确别名/版本保留兼容;未取得退役日期证明,不据静态缺失删除,不能当成当前接入可用性。 |
|
||||
| `compute/model-specs/deepseek.json#deepseek-reasoner` | legacy-compatibility | 旧精确别名/版本保留兼容;未取得退役日期证明,不据静态缺失删除,不能当成当前接入可用性。 |
|
||||
| `compute/model-specs/qwen.json#qwen3.8-max-preview` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/qwen.json#qwen-max` | family-display-fallback | 家族/滚动名称仅展示或保守补缺,不能对未知型号继承高风险能力/身份。 |
|
||||
| `compute/model-specs/qwen.json#qwen-plus` | family-display-fallback | 家族/滚动名称仅展示或保守补缺,不能对未知型号继承高风险能力/身份。 |
|
||||
| `compute/model-specs/qwen.json#qwen-turbo` | family-display-fallback | 家族/滚动名称仅展示或保守补缺,不能对未知型号继承高风险能力/身份。 |
|
||||
| `compute/model-specs/qwen.json#qwen3-max-trans` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/qwen.json#qwen3.5-35b-a3b` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/qwen.json#qwen3.5-27b` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/moonshot.json#kimi-k2-thinking` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/moonshot.json#kimi-k2` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/zhipu.json#glm-4.7-thinking` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/minimax.json#MiniMax-H3-Max` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/minimax.json#MiniMax-H3` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/minimax.json#MiniMax-Text-01` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/xai.json#grok-4.5` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/xai.json#grok-4-1-fast-reasoning` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/xiaomi.json#mimo-v2.5` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/xiaomi.json#mimo-v2-pro` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/xiaomi.json#mimo-v2-omni` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/xiaomi.json#mimo-v2-flash` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/xiaomi.json#mimo-v2-tts` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/cohere.json#rerank-v4.0-fast` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/cohere.json#rerank-v4.0-pro` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/cohere.json#north-mini-code-1-0` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/cohere.json#north-small-translate-1-0` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/cohere.json#rerank-v3.5` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/kling.json#kling-3.0-turbo` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/stability.json#stable-audio-3.0` | native-adapter-required | 原生或媒体协议需独立适配及版本验收;保持spec-only,不新增Provider,不扩大自动路由。 |
|
||||
| `compute/model-specs/tencent.json#hy3` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/tencent.json#hy3-preview` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/volcengine.json#doubao-seedance-2.0-fast` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/volcengine.json#doubao-seedance-2.0-mini` | dynamic-directory-candidate | 保留用于动态目录精确匹配;静态未命中不证明退役,也不授权接入调用。 |
|
||||
| `compute/model-specs/volcengine.json#doubao-seedance-1.5-pro` | legacy-compatibility | 旧精确别名/版本保留兼容;未取得退役日期证明,不据静态缺失删除,不能当成当前接入可用性。 |
|
||||
| `compute/model-specs/volcengine.json#doubao-seedance-1.0-pro` | legacy-compatibility | 旧精确别名/版本保留兼容;未取得退役日期证明,不据静态缺失删除,不能当成当前接入可用性。 |
|
||||
| `compute/model-specs/volcengine.json#doubao-seedance-1.0-pro-fast` | legacy-compatibility | 旧精确别名/版本保留兼容;未取得退役日期证明,不据静态缺失删除,不能当成当前接入可用性。 |
|
||||
| `compute/model-specs/stealth.json#ox-alpha` | historical-identity | 原入口已下架;历史身份映射证据不足,保留兼容记录而不重新上架或扩大路由。 |
|
||||
|
||||
## V2严格绑定补充
|
||||
|
||||
旧matcher的normalized/stripped/pattern匹配不自动提升为V2已证identity。首次严格导入列出的36条均已逐项记录strictExactExceptions,保留access-local,不造原厂modelRef,不继承路由授权。
|
||||
|
||||
讯飞X2官方正文确认输入64K/输出128K,同页输出整数131072,按该页1024单位换算输入65536。V2使用独立maxInputTokens,总窗口unknown;不能把输入65536继续解释为总窗口。该换算与原厂明文整数证据分开。
|
||||
40
docs/plans/catalog-contract-migration/VALIDATION.md
Normal file
40
docs/plans/catalog-contract-migration/VALIDATION.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# 验收、发布和回滚
|
||||
|
||||
[PLAN](PLAN.md)
|
||||
|
||||
## 必须通过的行为测试
|
||||
|
||||
| 范围 | 正例 | 必须拒绝/保持的反例 |
|
||||
| --- | --- | --- |
|
||||
| 版本 | V_contract读V2,支持的Provider/模型可调用 | V_contract-1、不支持format、非法最低版本、直接providerId/SDK/后台/媒体绕过;离线保持最后可消费数据 |
|
||||
| 迁移 | 旧受管对象规范化、存量保存新格式、重复执行无差异 | 新旧冲突、任意自定义extra、用户覆写、共享凭据、异常终止、回滚不丢用户数据或激活已退役服务 |
|
||||
| 规格绑定 | Nano exact正确、同名不同接入有显式限制 | Nano匹配base、reasoning后缀被剥离、日期版本/preview/free不当归一化、模糊family扩权 |
|
||||
| 有效预算 | 独立输入/总窗口/输出各自生效,正确平台覆盖保留 | provider小窗口被Spec覆盖、output>input被当坏数据、未知值变零、272K输入当400K总窗口随意接受 |
|
||||
| 思考/工具/模态 | 支持档位完整、不能关闭模型不会发关闭请求、协议绑定正确 | 丢high/none、未适配native型号上架、Cohere兼容Embed发送dimensions、服务能力取并集误标vision |
|
||||
| 计价 | 缓存读取/TTL写入、阶梯、币种/模态/时间单位保留 | search unit当token、每秒当每分钟、USD填CNY、动态-1当免费、用户覆写价被原厂价覆盖 |
|
||||
| 域名退役 | 生效规则范围内的受管调用和轮询停止 | 同host其他有效路径、同厂其他产品误封、凭据重定向泄露、旧缓存/复活同步/显式SDK绕过 |
|
||||
| 全量数据 | 每个字段owner/消费版本已登记,compiler产物可复现 | V2旧键回流、未实现字段装进extra、Provider/Spec手工漂移、来源只刷指纹不复核 |
|
||||
|
||||
## 本仓检查
|
||||
|
||||
已有门禁继续保留:npm run validate、npm test、npm run sources:gaps:check、git diff --check;新增按V2合同检查字段消费/依赖矩阵、模型绑定覆盖、来源字段、显式override理由、生命周期、计价单位、退役活跃引用和生成投影diff。
|
||||
|
||||
P0完成时只读扫描不应影响主数据;P1客户端按改动范围测试和构建,不把全库typecheck默认作为本地门禁;CI按项目规则执行。真实调用使用已有授权的测试账号,保存不含凭据的最小请求/状态/费用摘要,不能把模拟或schema校验称为接口实测。
|
||||
|
||||
## 分批发布
|
||||
|
||||
1. 客户端PR:门控+schema/resolver+迁移+退役执行机制,发布实际V_contract并验证安装包有效版本。
|
||||
2. config-center基础格式/生成工具PR:发布V2目录与兼容投影选择契约,校验所有未知字段/旧客户端路径;不提前删除旧required字段。
|
||||
3. 按供应商迁移数据PR:优先已证据充分的思考、预算、cache/speech字段;每批更新source文档和派生清单。缺证项留独立队列。
|
||||
4. 已确认退役Provider/域名PR:精确scope、用户状态和默认回退一起验证。产品下架与厂家停服日期分别写明。
|
||||
5. 完成铺开后退出V1手工作者字段与兼容读取;冻结/归档旧投影有明确时间、覆盖率与回滚边界,不只因为代码已合并就移除。
|
||||
|
||||
每个数据批次基于当时最新远端manifest递增版本。required checks全绿、CLEAN/MERGEABLE、精确head和零未解决review后合并;随后复核远端数据/编译产物和main CI。文档PLAN本身不递增presetDataVersion。
|
||||
|
||||
## 回滚约束
|
||||
|
||||
保留上一份canonical与两种编译产物;数据回退仍用更高presetDataVersion发布,不能降版本号让客户端不拾取。客户端迁移回滚保护用户覆写与凭据;不恢复已证实停服域名、错误身份或无效协议。跨格式不可安全降级时保留最后有效格式并要求支持的客户端,不强塞旧schema。
|
||||
|
||||
## 执行报告
|
||||
|
||||
报告真实迁移字段数、仍未分类/待核字段、接入覆盖/匹配层级、解决/保留的差异、已下架具体host/path/provider范围、支持最低版本与未支持旧二进制边界、账号/协议实测结果和剩余依赖。完成率不能只按来源指纹或新增文件数量计。
|
||||
69
docs/plans/catalog-contract-migration/revisions/000001.md
Normal file
69
docs/plans/catalog-contract-migration/revisions/000001.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# PLAN:旧字段迁移、客户端门控、域名退役与模型规格优化
|
||||
|
||||
状态:待实施。2026-10-03 完成只读核查及计划编写。本次不修改预设 JSON、schema、manifest 或客户端,不执行域名下架,不提交发布。
|
||||
|
||||
## 目标与基线
|
||||
|
||||
- config-center 基线:main `4f4e5093e91ead6c9f01aacc188d23ea4b5e8917`,presetDataVersion 127。
|
||||
- 已发布客户端核查对象:[v10.0.177](https://github.com/desirecore/desirecore/releases/tag/v10.0.177),tag commit `dd5a8c9f2fb000f7b2c589ec092068874c7dec5c`。release 标记为正式版本,发布时间 2026-09-27,targetCommitish 为 dev;主仓 main `412e05b...` 不能代替该发布基线。
|
||||
- 范围:29 份 Provider、11 份套餐、23 份规格文件;340 条接入模型记录、279 条 ModelSpec,共 619 条来源记录。
|
||||
- 当前 40 份接入配置仅 2 份有 requiredClientVersion。149 种 extra 叶路径出现在 233 条记录中;149 种不等于 149 个旧字段,全部需要完成消费/归属分类。
|
||||
- 用已发布客户端的真实匹配器核对:303 exact、3 normalized、1 stripped、9 pattern、7 family、17 未匹配;45 条记录存在 contextWindow/maxOutputTokens 差异。58 条规格未被静态接入记录命中,不能据此认定无用,可能服务云端动态目录、历史身份或待适配协议。
|
||||
- 本轮已迁移的 14 个无效推理键不再残留;下一阶段不能把“旧键告警为零”当作全部字段已规范。
|
||||
|
||||
## 推荐取舍
|
||||
|
||||
保留 Provider 与 model-specs。推荐“规格单处维护 + 接入面显式覆盖 + 编译得到有效配置与兼容副本”。不要合并成一个巨大 Provider 文件,也不要删掉 Provider 只留下规格。
|
||||
|
||||
| 域 | 唯一作者数据 | 不应承担 |
|
||||
| --- | --- | --- |
|
||||
| ModelSpec | 精确模型身份、原厂已核事实、输入/输出独立限制、模态与固有限制、模型级路由策略、证据和生命周期 | endpoint、凭据、账号开放名单、平台价格、接入 effort、thinking 回放或平台 WebSearch |
|
||||
| Provider / 套餐 | 地域、端点、凭据、账号可用模型、协议/适配器、计价单位与价签、显式接入限制和 API 参数映射 | 再次手工复制所有模型事实、靠 family 推定新型号能力 |
|
||||
| 编译器 / 客户端 resolver | 按字段规则组合 ModelSpec 与接入覆盖,记录每个有效值的来源,生成旧客户端副本 | 私自补 unknown、合并不同单位或把完整能力列表取并集 |
|
||||
| 用户配置 | 用户选项、合法覆写和自建接入 | 被远端预设覆盖或被按名称猜测的迁移修改 |
|
||||
|
||||
格式路线:新增版本化 V2 目录/manifest/schema 与客户端读取选择器,旧路径维持冻结的 V1 兼容投影。新版本原始作者数据不再保留运行时旧字段;兼容投影由生成器产出,过渡期不手工双写。完成客户端铺开后停止更新旧投影并归档,移除条件必须明确。具体见[规格与接入职责设计](MODEL-SPECS.md)。
|
||||
|
||||
## 执行阶段
|
||||
|
||||
| 阶段 | 工作 | 产物 | 进入下一阶段的条件 |
|
||||
| --- | --- | --- | --- |
|
||||
| P0:冻结清单与语义 | 完整盘点仓内/存量客户端字段;核149种extra路径的定义和真正读写位置;分型45条参数差异、17个无匹配和7个family;核域名下架事实 | 字段映射矩阵、版本能力矩阵、域名退役候选、来源缺口和dry-run报告 | 每个字段都有归属与处置,未知项独立登记;不能批量猜值 |
|
||||
| P1:客户端先行 | V2 schema/目录选择、全局合同版本门控、Provider/模型/适配器门控、统一有效配置resolver、配置迁移与回滚;补退役域名出站拦截 | 客户端代码PR、跨版本/存量配置测试、正式发布 V_contract | 真正正式发布且验收支持新合同的版本存在;版本号不能用未发布main或猜10.0.178填写 |
|
||||
| P2:数据与字段迁移 | 迁移受管旧字段;消除重复作者字段;保留有依据的接入覆盖;按冻结schema生成V1投影;同步来源/缺口文档 | V2 canonical、编译器、字段移除清单、来源登记、必要manifest递增 | 全部受管旧运行时键在V2写入端为零;迁移幂等、无静默丢值、价格/单位/覆写保持;V1兼容检查通过 |
|
||||
| P3:ModelSpec完善 | 先修精确身份、错误pattern、独立输入预算,再逐条解决45处数值差异;补生命周期/适配状态;逐家核官网 | 单供应商PR、已核字段、显式override及自动路由资格清单 | 每条启用模型有精确绑定或明确动态例外;差异都分类为正确覆盖/错误/待核,不能要求全相等 |
|
||||
| P4:域名退役 | 对已确认退役的接入移除活跃引用与索引;模型墓碑、Provider退役注册、存量停用、缓存/任务/默认回退同步 | 域名注册表、客户端退役迁移、活跃引用零残留与出站反例测试 | 确认范围内不再发送凭据或轮询;历史来源链接可保留;不会误伤同域其他有效API和用户自建数据 |
|
||||
| P5:发布与退出兼容 | 在客户端门控已经生效后发布V2数据,校验正式版本和全部来源;审查精确head、CI、review线程,再合并和远端复核 | 发布批次报告、各版本行为矩阵、剩余待核列表、V1退出记录 | 低版本不会应用新合同;当前版本和新版通过回归;没有把Schema通过当账号/协议实测 |
|
||||
|
||||
P4 的实现机制可在 P1 并行开发;确认过的遗留退役接入可单独走窄范围修复,不必等所有官网字段核完。大范围字段删除和V2切换必须经过 P1。
|
||||
|
||||
## 首批优先事项
|
||||
|
||||
1. **P0/P1,版本门控**:40份接入及279条规格声明其能力依赖。以已发布tag检查功能,证明升级前后的读取、拒绝和缓存行为;显示“需更新”之外,还要堵住显式Provider、SDK、工作流、后台辅助和媒体调用绕过。
|
||||
2. **P3,GPT-5.4 Nano误匹配**:当前走 gpt-5.4 的 pattern,Nano 400000 窗口可能被 1050000 规格混淆。补独立exact规格、收窄pattern,并用真实匹配器验证;其他代际误吞一并巡检。
|
||||
3. **P3,独立输入限制**:Mini/Nano 的272000输入与400000总窗口、讯飞65536输入与131072输出分别表达;不再用 contextWindow 伪装最大输入。
|
||||
4. **P0/P2,参数差异**:Codex订阅272000与原厂1050000不是自动错误;MiniMax-M3共享输出512000与直连131072证据仍不完整;OpenRouter上限按其独立合同处理。见[匹配与差异基线](SPEC-BASELINE.md)。
|
||||
5. **P0/P4,历史下架接入**:零一万物已由本仓#84删除,但已发布客户端退役名单仅见internal-testing。补受管旧配置迁移;“本产品已下架”与“厂家域名已停止服务”的证明分别登记,不能直接封整个lingyiwanwu.com。
|
||||
6. **P2,定价/媒体/思考旧字段**:价格同义字段、音频格式/音色、思考默认和旧metadata优先分类;不把缓存读价、TTL写价、按字符/每秒/每search unit价格改成同一token价。
|
||||
|
||||
## 并行实施安排
|
||||
|
||||
未来执行时可由三个 subAgent 与主工作线协作;此文档不代表已启动实施。
|
||||
|
||||
- A:字段归属、迁移器与兼容投影;独占迁移工具、字段schema和迁移测试。
|
||||
- B:ModelSpec精确绑定、参数与官方字段核查;按供应商分工,不同时修改同一 canonical。
|
||||
- C:域名/Provider退役清单、客户端停用与出站拦截;独占退役注册与相关测试。
|
||||
- 主工作线:客户端版本矩阵、格式门控、resolver接口、交叉review、manifest和发布;共享schema变更先定接口再分配,不能多代理同时改同一文件。
|
||||
|
||||
P0 的只读清单可并行;P1 完成后再进行数据迁移和下架发布。客户端仓 worktree 若需建立,先同步并更新最新子模块,保留无关gitlink及用户改动。
|
||||
|
||||
## 完成标准
|
||||
|
||||
- 所有仓内受管字段及已识别存量旧字段都完成“保留有效规范字段/映射迁移/转记录性metadata/明确退役”的处置;运行时写入V2旧键为零,旧读取兜底有退出条件。
|
||||
- 40份接入、全部V2规格/协议的依赖都可计算最低版本;未支持版本在读取和实际调用两层被拦;离线保留最后一份可消费数据。
|
||||
- 已确认退役域名/路径/接入在活跃配置、默认映射、同步发现和后台任务中零残留;无法证实退役的域名留待核,不误删。
|
||||
- 每个接入绑定准确规格或明确动态例外;45处差异有解释、7处family没有扩大调用或路由权限;58个未命中静态接入的规格完成用途分类。
|
||||
- 原厂事实、接入限制、价格、用户覆写、产品路由政策都可追溯;未知不自动变成零、默认值或全能力。
|
||||
- 老/最低/当前客户端、受管旧配置、用户自建配置、重复迁移、回滚、停服域名和新模型调用矩阵通过。
|
||||
|
||||
核验和发布细则见[验收与发布](VALIDATION.md);字段、版本、域名、规格专题分别拆分在同目录,避免把证据和全部任务堆在本文件。
|
||||
76
docs/plans/catalog-contract-migration/revisions/000002.md
Normal file
76
docs/plans/catalog-contract-migration/revisions/000002.md
Normal file
@@ -0,0 +1,76 @@
|
||||
---
|
||||
plan_path: /Users/wangyi/.codex/worktrees/c0a8/config-center/docs/plans/catalog-contract-migration/PLAN.md
|
||||
revision: 2
|
||||
related_workdirs:
|
||||
- /Users/wangyi/.codex/worktrees/c0a8/config-center
|
||||
- /Users/wangyi/.codex/worktrees/catalog-contract-client/desirecore
|
||||
---
|
||||
# PLAN:旧字段迁移、客户端门控、域名退役与模型规格优化
|
||||
|
||||
状态:实施中。用户已要求逐一完成;先做P0/客户端P1,并行完成编译与规格治理,客户端实际发布后再启用新数据。P0、P1、P2、P3、P4、P5的任务和证据记录见 EXECUTION.md。
|
||||
|
||||
## 目标与基线
|
||||
|
||||
- config-center 基线:main `4f4e5093e91ead6c9f01aacc188d23ea4b5e8917`,presetDataVersion 127。
|
||||
- 已发布客户端核查对象:[v10.0.177](https://github.com/desirecore/desirecore/releases/tag/v10.0.177),tag commit `dd5a8c9f2fb000f7b2c589ec092068874c7dec5c`。release 标记为正式版本,发布时间 2026-09-27,targetCommitish 为 dev;主仓 main `412e05b...` 不能代替该发布基线。
|
||||
- 范围:29 份 Provider、11 份套餐、23 份规格文件;340 条接入模型记录、279 条 ModelSpec,共 619 条来源记录。
|
||||
- 当前 40 份接入配置仅 2 份有 requiredClientVersion。149 种 extra 叶路径出现在 233 条记录中;149 种不等于 149 个旧字段,全部需要完成消费/归属分类。
|
||||
- 用已发布客户端的真实匹配器核对:303 exact、3 normalized、1 stripped、9 pattern、7 family、17 未匹配;45 条记录存在 contextWindow/maxOutputTokens 差异。58 条规格未被静态接入记录命中,不能据此认定无用,可能服务云端动态目录、历史身份或待适配协议。
|
||||
- 本轮已迁移的 14 个无效推理键不再残留;下一阶段不能把“旧键告警为零”当作全部字段已规范。
|
||||
|
||||
## 推荐取舍
|
||||
|
||||
保留 Provider 与 model-specs。推荐“规格单处维护 + 接入面显式覆盖 + 编译得到有效配置与兼容副本”。不要合并成一个巨大 Provider 文件,也不要删掉 Provider 只留下规格。
|
||||
|
||||
| 域 | 唯一作者数据 | 不应承担 |
|
||||
| --- | --- | --- |
|
||||
| ModelSpec | 精确模型身份、原厂已核事实、输入/输出独立限制、模态与固有限制、模型级路由策略、证据和生命周期 | endpoint、凭据、账号开放名单、平台价格、接入 effort、thinking 回放或平台 WebSearch |
|
||||
| Provider / 套餐 | 地域、端点、凭据、账号可用模型、协议/适配器、计价单位与价签、显式接入限制和 API 参数映射 | 再次手工复制所有模型事实、靠 family 推定新型号能力 |
|
||||
| 编译器 / 客户端 resolver | 按字段规则组合 ModelSpec 与接入覆盖,记录每个有效值的来源,生成旧客户端副本 | 私自补 unknown、合并不同单位或把完整能力列表取并集 |
|
||||
| 用户配置 | 用户选项、合法覆写和自建接入 | 被远端预设覆盖或被按名称猜测的迁移修改 |
|
||||
|
||||
格式路线:新增版本化 V2 目录/manifest/schema 与客户端读取选择器,旧路径维持冻结的 V1 兼容投影。新版本原始作者数据不再保留运行时旧字段;兼容投影由生成器产出,过渡期不手工双写。完成客户端铺开后停止更新旧投影并归档,移除条件必须明确。具体见[规格与接入职责设计](MODEL-SPECS.md)。
|
||||
|
||||
## 执行阶段
|
||||
|
||||
| 阶段 | 工作 | 产物 | 进入下一阶段的条件 |
|
||||
| --- | --- | --- | --- |
|
||||
| P0:冻结清单与语义 | 完整盘点仓内/存量客户端字段;核149种extra路径的定义和真正读写位置;分型45条参数差异、17个无匹配和7个family;核域名下架事实 | 字段映射矩阵、版本能力矩阵、域名退役候选、来源缺口和dry-run报告 | 每个字段都有归属与处置,未知项独立登记;不能批量猜值 |
|
||||
| P1:客户端先行 | V2 schema/目录选择、全局合同版本门控、Provider/模型/适配器门控、统一有效配置resolver、配置迁移与回滚;补退役域名出站拦截 | 客户端代码PR、跨版本/存量配置测试、正式发布 V_contract | 真正正式发布且验收支持新合同的版本存在;版本号不能用未发布main或猜10.0.178填写 |
|
||||
| P2:数据与字段迁移 | 迁移受管旧字段;消除重复作者字段;保留有依据的接入覆盖;按冻结schema生成V1投影;同步来源/缺口文档 | V2 canonical、编译器、字段移除清单、来源登记、必要manifest递增 | 全部受管旧运行时键在V2写入端为零;迁移幂等、无静默丢值、价格/单位/覆写保持;V1兼容检查通过 |
|
||||
| P3:ModelSpec完善 | 先修精确身份、错误pattern、独立输入预算,再逐条解决45处数值差异;补生命周期/适配状态;逐家核官网 | 单供应商PR、已核字段、显式override及自动路由资格清单 | 每条启用模型有精确绑定或明确动态例外;差异都分类为正确覆盖/错误/待核,不能要求全相等 |
|
||||
| P4:域名退役 | 对已确认退役的接入移除活跃引用与索引;模型墓碑、Provider退役注册、存量停用、缓存/任务/默认回退同步 | 域名注册表、客户端退役迁移、活跃引用零残留与出站反例测试 | 确认范围内不再发送凭据或轮询;历史来源链接可保留;不会误伤同域其他有效API和用户自建数据 |
|
||||
| P5:发布与退出兼容 | 在客户端门控已经生效后发布V2数据,校验正式版本和全部来源;审查精确head、CI、review线程,再合并和远端复核 | 发布批次报告、各版本行为矩阵、剩余待核列表、V1退出记录 | 低版本不会应用新合同;当前版本和新版通过回归;没有把Schema通过当账号/协议实测 |
|
||||
|
||||
P4 的实现机制可在 P1 并行开发;确认过的遗留退役接入可单独走窄范围修复,不必等所有官网字段核完。大范围字段删除和V2切换必须经过 P1。
|
||||
|
||||
## 首批优先事项
|
||||
|
||||
1. **P0/P1,版本门控**:40份接入及279条规格声明其能力依赖。以已发布tag检查功能,证明升级前后的读取、拒绝和缓存行为;显示“需更新”之外,还要堵住显式Provider、SDK、工作流、后台辅助和媒体调用绕过。
|
||||
2. **P3,GPT-5.4 Nano误匹配**:当前走 gpt-5.4 的 pattern,Nano 400000 窗口可能被 1050000 规格混淆。补独立exact规格、收窄pattern,并用真实匹配器验证;其他代际误吞一并巡检。
|
||||
3. **P3,独立输入限制**:Mini/Nano 的272000输入与400000总窗口、讯飞65536输入与131072输出分别表达;不再用 contextWindow 伪装最大输入。
|
||||
4. **P0/P2,参数差异**:Codex订阅272000与原厂1050000不是自动错误;MiniMax-M3共享输出512000与直连131072证据仍不完整;OpenRouter上限按其独立合同处理。见[匹配与差异基线](SPEC-BASELINE.md)。
|
||||
5. **P0/P4,历史下架接入**:零一万物已由本仓#84删除,但已发布客户端退役名单仅见internal-testing。补受管旧配置迁移;“本产品已下架”与“厂家域名已停止服务”的证明分别登记,不能直接封整个lingyiwanwu.com。
|
||||
6. **P2,定价/媒体/思考旧字段**:价格同义字段、音频格式/音色、思考默认和旧metadata优先分类;不把缓存读价、TTL写价、按字符/每秒/每search unit价格改成同一token价。
|
||||
|
||||
## 并行实施安排
|
||||
|
||||
本次实施采用三个 subAgent 与主工作线协作。配置中心复用当前工作区;客户端从最新dev创建隔离worktree,按要求拉取最新子模块。
|
||||
|
||||
- A:字段归属、迁移器与兼容投影;独占迁移工具、字段schema和迁移测试。
|
||||
- B:ModelSpec精确绑定、参数与官方字段核查;按供应商分工,不同时修改同一 canonical。
|
||||
- C:域名/Provider退役清单、客户端停用与出站拦截;独占退役注册与相关测试。
|
||||
- 主工作线:客户端版本矩阵、格式门控、resolver接口、交叉review、manifest和发布;共享schema变更先定接口再分配,不能多代理同时改同一文件。
|
||||
|
||||
P0 的只读清单可并行;P1 完成后再进行数据迁移和下架发布。客户端仓 worktree 若需建立,先同步并更新最新子模块,保留无关gitlink及用户改动。
|
||||
|
||||
## 完成标准
|
||||
|
||||
- 所有仓内受管字段及已识别存量旧字段都完成“保留有效规范字段/映射迁移/转记录性metadata/明确退役”的处置;运行时写入V2旧键为零,旧读取兜底有退出条件。
|
||||
- 40份接入、全部V2规格/协议的依赖都可计算最低版本;未支持版本在读取和实际调用两层被拦;离线保留最后一份可消费数据。
|
||||
- 已确认退役域名/路径/接入在活跃配置、默认映射、同步发现和后台任务中零残留;无法证实退役的域名留待核,不误删。
|
||||
- 每个接入绑定准确规格或明确动态例外;45处差异有解释、7处family没有扩大调用或路由权限;58个未命中静态接入的规格完成用途分类。
|
||||
- 原厂事实、接入限制、价格、用户覆写、产品路由政策都可追溯;未知不自动变成零、默认值或全能力。
|
||||
- 老/最低/当前客户端、受管旧配置、用户自建配置、重复迁移、回滚、停服域名和新模型调用矩阵通过。
|
||||
|
||||
核验和发布细则见[验收与发布](VALIDATION.md);字段、版本、域名、规格专题分别拆分在同目录,避免把证据和全部任务堆在本文件。
|
||||
80
docs/plans/catalog-contract-migration/revisions/000003.md
Normal file
80
docs/plans/catalog-contract-migration/revisions/000003.md
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
plan_path: /Users/wangyi/.codex/worktrees/c0a8/config-center/docs/plans/catalog-contract-migration/PLAN.md
|
||||
revision: 3
|
||||
related_workdirs:
|
||||
- /Users/wangyi/.codex/worktrees/c0a8/config-center
|
||||
- /Users/wangyi/.codex/worktrees/catalog-contract-client/desirecore
|
||||
---
|
||||
# PLAN:旧字段迁移、客户端门控、域名退役与模型规格优化
|
||||
|
||||
状态:实施中。用户已要求逐一完成;先做P0/客户端P1,并行完成编译与规格治理,客户端实际发布后再启用新数据。P0、P1、P2、P3、P4、P5的任务和证据记录见 EXECUTION.md。
|
||||
|
||||
## 目标与基线
|
||||
|
||||
- config-center 基线:main `4f4e5093e91ead6c9f01aacc188d23ea4b5e8917`,presetDataVersion 127。
|
||||
- 已发布客户端核查对象:[v10.0.177](https://github.com/desirecore/desirecore/releases/tag/v10.0.177),tag commit `dd5a8c9f2fb000f7b2c589ec092068874c7dec5c`。release 标记为正式版本,发布时间 2026-09-27,targetCommitish 为 dev;主仓 main `412e05b...` 不能代替该发布基线。
|
||||
- 范围:29 份 Provider、11 份套餐、23 份规格文件;340 条接入模型记录、279 条 ModelSpec,共 619 条来源记录。
|
||||
- 当前 40 份接入配置仅 2 份有 requiredClientVersion。149 种 extra 叶路径出现在 233 条记录中;149 种不等于 149 个旧字段,全部需要完成消费/归属分类。
|
||||
- 用已发布客户端的真实匹配器核对:303 exact、3 normalized、1 stripped、9 pattern、7 family、17 未匹配;45 条记录存在 contextWindow/maxOutputTokens 差异。58 条规格未被静态接入记录命中,不能据此认定无用,可能服务云端动态目录、历史身份或待适配协议。
|
||||
- 本轮已迁移的 14 个无效推理键不再残留;下一阶段不能把“旧键告警为零”当作全部字段已规范。
|
||||
|
||||
## 推荐取舍
|
||||
|
||||
保留 Provider 与 model-specs。推荐“规格单处维护 + 接入面显式覆盖 + 编译得到有效配置与兼容副本”。不要合并成一个巨大 Provider 文件,也不要删掉 Provider 只留下规格。
|
||||
|
||||
| 域 | 唯一作者数据 | 不应承担 |
|
||||
| --- | --- | --- |
|
||||
| ModelSpec | 精确模型身份、原厂已核事实、输入/输出独立限制、模态与固有限制、模型级路由策略、证据和生命周期 | endpoint、凭据、账号开放名单、平台价格、接入 effort、thinking 回放或平台 WebSearch |
|
||||
| Provider / 套餐 | 地域、端点、凭据、账号可用模型、协议/适配器、计价单位与价签、显式接入限制和 API 参数映射 | 再次手工复制所有模型事实、靠 family 推定新型号能力 |
|
||||
| 编译器 / 客户端 resolver | 按字段规则组合 ModelSpec 与接入覆盖,记录每个有效值的来源,生成旧客户端副本 | 私自补 unknown、合并不同单位或把完整能力列表取并集 |
|
||||
| 用户配置 | 用户选项、合法覆写和自建接入 | 被远端预设覆盖或被按名称猜测的迁移修改 |
|
||||
|
||||
格式路线:新增版本化 V2 目录/manifest/schema 与客户端读取选择器,旧路径维持冻结的 V1 兼容投影。新版本原始作者数据不再保留运行时旧字段;兼容投影由生成器产出,过渡期不手工双写。完成客户端铺开后停止更新旧投影并归档,移除条件必须明确。具体见[规格与接入职责设计](MODEL-SPECS.md)。
|
||||
|
||||
## 执行阶段
|
||||
|
||||
| 阶段 | 工作 | 产物 | 进入下一阶段的条件 |
|
||||
| --- | --- | --- | --- |
|
||||
| P0:冻结清单与语义 | 完整盘点仓内/存量客户端字段;核149种extra路径的定义和真正读写位置;分型45条参数差异、17个无匹配和7个family;核域名下架事实 | 字段映射矩阵、版本能力矩阵、域名退役候选、来源缺口和dry-run报告 | 每个字段都有归属与处置,未知项独立登记;不能批量猜值 |
|
||||
| P1:客户端先行 | V2 schema/目录选择、全局合同版本门控、Provider/模型/适配器门控、统一有效配置resolver、配置迁移与回滚;补退役域名出站拦截 | 客户端代码PR、跨版本/存量配置测试、正式发布 V_contract | 真正正式发布且验收支持新合同的版本存在;版本号不能用未发布main或猜10.0.178填写 |
|
||||
| P2:数据与字段迁移 | 迁移受管旧字段;消除重复作者字段;保留有依据的接入覆盖;按冻结schema生成V1投影;同步来源/缺口文档 | V2 canonical、编译器、字段移除清单、来源登记、必要manifest递增 | 全部受管旧运行时键在V2写入端为零;迁移幂等、无静默丢值、价格/单位/覆写保持;V1兼容检查通过 |
|
||||
| P3:ModelSpec完善 | 先修精确身份、错误pattern、独立输入预算,再逐条解决45处数值差异;补生命周期/适配状态;逐家核官网 | 单供应商PR、已核字段、显式override及自动路由资格清单 | 每条启用模型有精确绑定或明确动态或仅手动例外;客户端原生适配未实现则保留记录并明确禁止调用,不能因为API格式名称已识别而宣称支持;差异都分类为正确覆盖/错误/待核,不能要求全相等 |
|
||||
| P4:域名退役 | 对已确认退役的接入移除活跃引用与索引;模型墓碑、Provider退役注册、存量停用、缓存/任务/默认回退同步 | 域名注册表、客户端退役迁移、活跃引用零残留与出站反例测试 | 确认范围内不再发送凭据或轮询;历史来源链接可保留;不会误伤同域其他有效API和用户自建数据 |
|
||||
| P5:发布与退出兼容 | 在客户端门控已经生效后发布V2数据,校验正式版本和全部来源;审查精确head、CI、review线程,再合并和远端复核 | 发布批次报告、各版本行为矩阵、剩余待核列表、V1退出记录 | 低版本不会应用新合同;当前版本和新版通过回归;没有把Schema通过当账号/协议实测 |
|
||||
|
||||
P4 的实现机制可在 P1 并行开发;确认过的遗留退役接入可单独走窄范围修复,不必等所有官网字段核完。大范围字段删除和V2切换必须经过 P1。
|
||||
|
||||
## 首批优先事项
|
||||
|
||||
1. **P0/P1,版本门控**:40份接入及279条规格声明其能力依赖。以已发布tag检查功能,证明升级前后的读取、拒绝和缓存行为;显示“需更新”之外,还要堵住显式Provider、SDK、工作流、后台辅助和媒体调用绕过。
|
||||
2. **P3,GPT-5.4 Nano误匹配**:当前走 gpt-5.4 的 pattern,Nano 400000 窗口可能被 1050000 规格混淆。补独立exact规格、收窄pattern,并用真实匹配器验证;其他代际误吞一并巡检。
|
||||
3. **P3,独立输入限制**:Mini/Nano 的272000输入与400000总窗口、讯飞65536输入与131072输出分别表达;不再用 contextWindow 伪装最大输入。
|
||||
4. **P0/P2,参数差异**:Codex订阅272000与原厂1050000不是自动错误;MiniMax-M3共享输出512000与直连131072证据仍不完整;OpenRouter上限按其独立合同处理。见[匹配与差异基线](SPEC-BASELINE.md)。
|
||||
5. **P0/P4,历史下架接入**:零一万物已由本仓#84删除,但已发布客户端退役名单仅见internal-testing。补受管旧配置迁移;“本产品已下架”与“厂家域名已停止服务”的证明分别登记,不能直接封整个lingyiwanwu.com。
|
||||
6. **P2,定价/媒体/思考旧字段**:价格同义字段、音频格式/音色、思考默认和旧metadata优先分类;不把缓存读价、TTL写价、按字符/每秒/每search unit价格改成同一token价。
|
||||
|
||||
## 并行实施安排
|
||||
|
||||
本次实施采用三个 subAgent 与主工作线协作。配置中心复用当前工作区;客户端从最新dev创建隔离worktree,按要求拉取最新子模块。
|
||||
|
||||
- A:字段归属、迁移器与兼容投影;独占迁移工具、字段schema和迁移测试。
|
||||
- B:ModelSpec精确绑定、参数与官方字段核查;按供应商分工,不同时修改同一 canonical。
|
||||
- C:域名/Provider退役清单、客户端停用与出站拦截;独占退役注册与相关测试。
|
||||
- 主工作线:客户端版本矩阵、格式门控、resolver接口、交叉review、manifest和发布;共享schema变更先定接口再分配,不能多代理同时改同一文件。
|
||||
|
||||
P0 的只读清单可并行;P1 完成后再进行数据迁移和下架发布。客户端仓 worktree 若需建立,先同步并更新最新子模块,保留无关gitlink及用户改动。
|
||||
|
||||
## 完成标准
|
||||
|
||||
- 所有仓内受管字段及已识别存量旧字段都完成“保留有效规范字段/映射迁移/转记录性metadata/明确退役”的处置;运行时写入V2旧键为零,旧读取兜底有退出条件。
|
||||
- 40份接入、全部V2规格/协议的依赖都可计算最低版本;未支持版本在读取和实际调用两层被拦;离线保留最后一份可消费数据。
|
||||
- 已确认退役域名/路径/接入在活跃配置、默认映射、同步发现和后台任务中零残留;无法证实退役的域名留待核,不误删。
|
||||
- 每个接入绑定准确规格或明确动态例外;45处差异有解释、7处family没有扩大调用或路由权限;58个未命中静态接入的规格完成用途分类。
|
||||
- 原厂事实、接入限制、价格、用户覆写、产品路由政策都可追溯;未知不自动变成零、默认值或全能力。
|
||||
- 老/最低/当前客户端、受管旧配置、用户自建配置、重复迁移、回滚、停服域名和新模型调用矩阵通过。
|
||||
|
||||
核验和发布细则见[验收与发布](VALIDATION.md);字段、版本、域名、规格专题分别拆分在同目录,避免把证据和全部任务堆在本文件。
|
||||
|
||||
## 实施中补充的实际边界(revision 3)
|
||||
|
||||
真实适配器与profile执行已核36条当前未适配接入(3Realtime、21图像/视频、12ASR/TTS),原默认local-whisper/whisper-large-v3亦缺profile。此任务落实适配状态与实际调用门控,不以保留记录宣称这些接口已可用,不静默替换用户默认。原生适配器新增属于已列独立接入依赖,详见ADAPTER-DECISIONS。
|
||||
@@ -7,15 +7,15 @@
|
||||
- 未登记官方入口:**0 条**。
|
||||
- 未取得可读官网证据:**87 条**。
|
||||
- 入口有读取记录,但本条模型无字段证明:**185 条**。
|
||||
- 仅确认 ID,参数来源未登记:**214 条**。
|
||||
- 已有部分参数证明,仍需区分未证明字段:**132 条**。
|
||||
- 仅确认 ID,参数来源未登记:**216 条**。
|
||||
- 已有部分参数证明,仍需区分未证明字段:**137 条**。
|
||||
- 历史身份/参数不证明当前可用性:**1 条**。
|
||||
|
||||
总计 619 条:前四类需要补证;partial 类逐条列出已有数据中尚未登记证明的关键字段,不能全部当作数据已核;historical 另列。
|
||||
总计 626 条:前四类需要补证;partial 类逐条列出已有数据中尚未登记证明的关键字段,不能全部当作数据已核;historical 另列。
|
||||
|
||||
| 供应商清单 | 未登记入口 | 入口不可读 | 无字段证明 | 仅 ID | 参数部分已核 | 历史 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| [alibaba](providers/alibaba.md) | 0 | 0 | 15 | 96 | 7 | 0 |
|
||||
| [alibaba](providers/alibaba.md) | 0 | 0 | 15 | 98 | 7 | 0 |
|
||||
| [anthropic](providers/anthropic.md) | 0 | 0 | 6 | 3 | 12 | 0 |
|
||||
| [baichuan](providers/baichuan.md) | 0 | 8 | 0 | 0 | 0 | 0 |
|
||||
| [baidu](providers/baidu.md) | 0 | 0 | 5 | 13 | 2 | 0 |
|
||||
@@ -31,7 +31,7 @@
|
||||
| [moonshot](providers/moonshot.md) | 0 | 0 | 14 | 0 | 7 | 0 |
|
||||
| [moorethread](providers/moorethread.md) | 0 | 1 | 0 | 0 | 0 | 0 |
|
||||
| [ollama](providers/ollama.md) | 0 | 0 | 1 | 0 | 0 | 0 |
|
||||
| [openai](providers/openai.md) | 0 | 0 | 71 | 10 | 12 | 0 |
|
||||
| [openai](providers/openai.md) | 0 | 0 | 71 | 10 | 17 | 0 |
|
||||
| [openrouter](providers/openrouter.md) | 0 | 0 | 0 | 0 | 15 | 0 |
|
||||
| [perplexity](providers/perplexity.md) | 0 | 0 | 4 | 2 | 0 | 0 |
|
||||
| [siliconflow](providers/siliconflow.md) | 0 | 0 | 3 | 0 | 0 | 0 |
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
| [`wan2.7-image`](../../model-sources/providers/alibaba/models/wan2.7-image.md) | [`compute/coding-plans/dashscope-token-plan.json`](../../../compute/coding-plans/dashscope-token-plan.json) | `modelName` | [qwen-models](../../model-sources/providers/alibaba/SOURCES.md#qwen-models):fetched |
|
||||
| [`wan2.7-image`](../../model-sources/providers/alibaba/models/wan2.7-image.md) | [`compute/model-specs/qwen.json`](../../../compute/model-specs/qwen.json) | `id` | [qwen-models](../../model-sources/providers/alibaba/SOURCES.md#qwen-models):fetched |
|
||||
|
||||
## 仅确认 ID,参数来源未登记(96 条)
|
||||
## 仅确认 ID,参数来源未登记(98 条)
|
||||
|
||||
| 模型 | 接入面 | 未登记证明的关键字段 | 官网入口/读取结果 |
|
||||
| --- | --- | --- | --- |
|
||||
@@ -78,7 +78,9 @@
|
||||
| [`qwen-plus`](../../model-sources/providers/alibaba/models/qwen-plus.md) | [`compute/model-specs/qwen.json`](../../../compute/model-specs/qwen.json) | `spec.contextWindow`、`spec.defaultTemperature`、`spec.maxOutputTokens` | [qwen-pricing](../../model-sources/providers/alibaba/SOURCES.md#qwen-pricing):fetched |
|
||||
| [`qwen-turbo`](../../model-sources/providers/alibaba/models/qwen-turbo.md) | [`compute/model-specs/qwen.json`](../../../compute/model-specs/qwen.json) | `spec.contextWindow`、`spec.defaultTemperature`、`spec.maxOutputTokens` | [qwen-pricing](../../model-sources/providers/alibaba/SOURCES.md#qwen-pricing):fetched |
|
||||
| [`qwen3-coder-next`](../../model-sources/providers/alibaba/models/qwen3-coder-next.md) | [`compute/coding-plans/dashscope-coding.json`](../../../compute/coding-plans/dashscope-coding.json) | `contextWindow`、`maxOutputTokens` | [qwen-pricing](../../model-sources/providers/alibaba/SOURCES.md#qwen-pricing):fetched |
|
||||
| [`qwen3-coder-next`](../../model-sources/providers/alibaba/models/qwen3-coder-next.md) | [`compute/model-specs/qwen.json`](../../../compute/model-specs/qwen.json) | 已登记关键字段都有证明;其他合同限制仍按原记录复核 | [qwen-coding](../../model-sources/providers/alibaba/SOURCES.md#qwen-coding):fetched |
|
||||
| [`qwen3-coder-plus`](../../model-sources/providers/alibaba/models/qwen3-coder-plus.md) | [`compute/coding-plans/dashscope-coding.json`](../../../compute/coding-plans/dashscope-coding.json) | `contextWindow`、`maxOutputTokens` | [qwen-pricing](../../model-sources/providers/alibaba/SOURCES.md#qwen-pricing):fetched |
|
||||
| [`qwen3-coder-plus`](../../model-sources/providers/alibaba/models/qwen3-coder-plus.md) | [`compute/model-specs/qwen.json`](../../../compute/model-specs/qwen.json) | 已登记关键字段都有证明;其他合同限制仍按原记录复核 | [qwen-coding](../../model-sources/providers/alibaba/SOURCES.md#qwen-coding):fetched |
|
||||
| [`qwen3-max-2026-01-23`](../../model-sources/providers/alibaba/models/qwen3-max-2026-01-23.md) | [`compute/coding-plans/dashscope-coding.json`](../../../compute/coding-plans/dashscope-coding.json) | `contextWindow`、`maxOutputTokens` | [qwen-pricing](../../model-sources/providers/alibaba/SOURCES.md#qwen-pricing):fetched |
|
||||
| [`qwen3-max`](../../model-sources/providers/alibaba/models/qwen3-max.md) | [`compute/model-specs/qwen.json`](../../../compute/model-specs/qwen.json) | `spec.contextWindow`、`spec.defaultTemperature`、`spec.maxOutputTokens`、`spec.supportsReasoning` | [qwen-pricing](../../model-sources/providers/alibaba/SOURCES.md#qwen-pricing):fetched |
|
||||
| [`qwen3-rerank`](../../model-sources/providers/alibaba/models/qwen3-rerank.md) | [`compute/providers/dashscope.json`](../../../compute/providers/dashscope.json) | `contextWindow`、`inputPrice` | [qwen-pricing](../../model-sources/providers/alibaba/SOURCES.md#qwen-pricing):fetched |
|
||||
|
||||
@@ -103,14 +103,16 @@
|
||||
| [`gpt-realtime-2.1`](../../model-sources/providers/openai/models/gpt-realtime-2.1.md) | [`compute/providers/openai.json`](../../../compute/providers/openai.json) | `contextWindow`、`extra.audioCachedInputPrice`、`extra.audioInputPrice`、`extra.audioOutputPrice`、`extra.imageCachedInputPrice`、`extra.imageInputPrice`、`extra.textCachedInputPrice`、`inputPrice`、`maxOutputTokens`、`outputPrice` | [openai-models](../../model-sources/providers/openai/SOURCES.md#openai-models):fetched |
|
||||
| [`gpt-realtime-translate`](../../model-sources/providers/openai/models/gpt-realtime-translate.md) | [`compute/providers/openai.json`](../../../compute/providers/openai.json) | `contextWindow`、`extra.audioOutputPricePerMinute`、`maxOutputTokens` | [openai-models](../../model-sources/providers/openai/SOURCES.md#openai-models):fetched |
|
||||
|
||||
## 已有部分参数证明,仍需区分未证明字段(12 条)
|
||||
## 已有部分参数证明,仍需区分未证明字段(17 条)
|
||||
|
||||
| 模型 | 接入面 | 未登记证明的关键字段 | 官网入口/读取结果 |
|
||||
| --- | --- | --- | --- |
|
||||
| [`gpt-5.4-mini`](../../model-sources/providers/openai/models/gpt-5.4-mini.md) | [`compute/providers/openai.json`](../../../compute/providers/openai.json) | `extra.serverSideWebSearch.searchRequestPriceUsd` | [gpt-5-4-mini-api](../../model-sources/providers/openai/SOURCES.md#gpt-5-4-mini-api):fetched |
|
||||
| [`gpt-5.4-mini`](../../model-sources/providers/openai/models/gpt-5.4-mini.md) | [`compute/model-specs/openai.json`](../../../compute/model-specs/openai.json) | `spec.supportsReasoning` | [gpt-5-4-mini-api](../../model-sources/providers/openai/SOURCES.md#gpt-5-4-mini-api):fetched |
|
||||
| [`gpt-5.4-nano`](../../model-sources/providers/openai/models/gpt-5.4-nano.md) | [`compute/providers/openai.json`](../../../compute/providers/openai.json) | `extra.serverSideWebSearch.searchRequestPriceUsd` | [gpt-5-4-nano-api](../../model-sources/providers/openai/SOURCES.md#gpt-5-4-nano-api):fetched |
|
||||
| [`gpt-5.4-nano`](../../model-sources/providers/openai/models/gpt-5.4-nano.md) | [`compute/model-specs/openai.json`](../../../compute/model-specs/openai.json) | 已登记关键字段都有证明;其他合同限制仍按原记录复核 | [gpt-5-4-nano-api](../../model-sources/providers/openai/SOURCES.md#gpt-5-4-nano-api):fetched |
|
||||
| [`gpt-5.4-pro`](../../model-sources/providers/openai/models/gpt-5.4-pro.md) | [`compute/providers/openai.json`](../../../compute/providers/openai.json) | `extra.serverSideWebSearch.searchRequestPriceUsd` | [gpt-5-4-pro-api](../../model-sources/providers/openai/SOURCES.md#gpt-5-4-pro-api):fetched |
|
||||
| [`gpt-5.4-pro`](../../model-sources/providers/openai/models/gpt-5.4-pro.md) | [`compute/model-specs/openai.json`](../../../compute/model-specs/openai.json) | 已登记关键字段都有证明;其他合同限制仍按原记录复核 | [gpt-5-4-pro-api](../../model-sources/providers/openai/SOURCES.md#gpt-5-4-pro-api):fetched |
|
||||
| [`gpt-5.4`](../../model-sources/providers/openai/models/gpt-5.4.md) | [`compute/providers/openai.json`](../../../compute/providers/openai.json) | `extra.serverSideWebSearch.searchRequestPriceUsd` | [gpt-5-4-api](../../model-sources/providers/openai/SOURCES.md#gpt-5-4-api):fetched |
|
||||
| [`gpt-5.4`](../../model-sources/providers/openai/models/gpt-5.4.md) | [`compute/model-specs/openai.json`](../../../compute/model-specs/openai.json) | `spec.defaultTemperature`、`spec.supportsReasoning` | [gpt-5-4-api](../../model-sources/providers/openai/SOURCES.md#gpt-5-4-api):fetched |
|
||||
| [`gpt-5.5-pro`](../../model-sources/providers/openai/models/gpt-5.5-pro.md) | [`compute/providers/openai.json`](../../../compute/providers/openai.json) | `extra.serverSideWebSearch.searchRequestPriceUsd` | [gpt-5-5-pro-api](../../model-sources/providers/openai/SOURCES.md#gpt-5-5-pro-api):fetched |
|
||||
@@ -119,6 +121,9 @@
|
||||
| [`gpt-6.1-sol`](../../model-sources/providers/openai/models/gpt-6.1-sol.md) | [`compute/providers/openai-codex.json`](../../../compute/providers/openai-codex.json) | `extra.reasoning.defaultEffort`、`extra.reasoning.supportedEfforts` | [openai-models](../../model-sources/providers/openai/SOURCES.md#openai-models):fetched;[openai-sol61](../../model-sources/providers/openai/SOURCES.md#openai-sol61):fetched |
|
||||
| [`gpt-6.1-sol`](../../model-sources/providers/openai/models/gpt-6.1-sol.md) | [`compute/providers/openai.json`](../../../compute/providers/openai.json) | `extra.serverSideWebSearch.searchRequestPriceUsd` | [openai-models](../../model-sources/providers/openai/SOURCES.md#openai-models):fetched;[openai-sol61](../../model-sources/providers/openai/SOURCES.md#openai-sol61):fetched |
|
||||
| [`gpt-6.1-sol`](../../model-sources/providers/openai/models/gpt-6.1-sol.md) | [`compute/model-specs/openai.json`](../../../compute/model-specs/openai.json) | `spec.supportsReasoning` | [openai-models](../../model-sources/providers/openai/SOURCES.md#openai-models):fetched;[openai-sol61](../../model-sources/providers/openai/SOURCES.md#openai-sol61):fetched |
|
||||
| [`gpt-realtime-2.1-mini`](../../model-sources/providers/openai/models/gpt-realtime-2.1-mini.md) | [`compute/model-specs/openai.json`](../../../compute/model-specs/openai.json) | 已登记关键字段都有证明;其他合同限制仍按原记录复核 | [realtime21mini-spec](../../model-sources/providers/openai/SOURCES.md#realtime21mini-spec):fetched |
|
||||
| [`gpt-realtime-2.1`](../../model-sources/providers/openai/models/gpt-realtime-2.1.md) | [`compute/model-specs/openai.json`](../../../compute/model-specs/openai.json) | 已登记关键字段都有证明;其他合同限制仍按原记录复核 | [realtime21-spec](../../model-sources/providers/openai/SOURCES.md#realtime21-spec):fetched |
|
||||
| [`gpt-realtime-translate`](../../model-sources/providers/openai/models/gpt-realtime-translate.md) | [`compute/model-specs/openai.json`](../../../compute/model-specs/openai.json) | 已登记关键字段都有证明;其他合同限制仍按原记录复核 | [realtimetranslate-spec](../../model-sources/providers/openai/SOURCES.md#realtimetranslate-spec):fetched |
|
||||
|
||||
## 历史身份/参数不证明当前可用性(0 条)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user