Files
config-center/schemas/model-spec.schema.json
Johnson-LYS e84edec964 feat(model-specs): 新增模型规格库——跨 provider 模型参数统一维护(presetDataVersion 54→58)
* feat(model-specs): 新增模型规格库与 schema 契约

- compute/model-specs/:按厂商维护模型内在参数(上下文窗口/最大输出/能力/serviceType/默认温度,不含价签)
- schemas/model-spec.schema.json:Draft-07 契约,spec 允许 null(新文件不影响老客户端 frozen 契约)
- scripts/validate.mjs:pickSchemaKey 纳入 model-specs 校验
- manifest.presetDataVersion 54→55

* feat(model-specs): 新增小米 MiMo 系列模型规格;bump presetDataVersion 55→56

* feat(model-specs): 补全全量模型规格;presetDataVersion 56→57

* feat(model-specs): 新增 releasedAt/retiredAt 时间戳字段;补充 mimo 退役日期
2026-06-01 19:45:14 +08:00

122 lines
6.7 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://desirecore.net/schemas/config-center/model-spec.schema.json",
"title": "ModelSpecFile",
"description": "模型规格库compute/model-specs/*.json数据契约。\n\n用途维护模型的「内在参数」上下文窗口、最大输出、能力标签、serviceType、默认采样参数等这些参数与「从哪家 provider、什么价格调用」无关是模型的客观物理属性。\n\n接入路径首期仅 cloud登录后从 NewAPI pricing 拉到的模型,只承担「可用模型清单 + 价签」职责;客户端按 modelName 用通用匹配机制查询本规格库,补全 tags 无法表达的结构化参数maxOutputTokens / defaultTemperature 等)。\n\n与 provider.schema.json 的区别provider 文件是「完整 provider 接入定义」,本文件是「跨 provider 共享的模型参数字典」。本文件是老客户端不会读取的新文件,因此 schema 可以更宽松(允许 null且不破坏已发布客户端兼容契约。\n\n严禁写入价格字段inputPrice/outputPrice/cache 等)——价签真相源永远是 NewAPI pricing。",
"type": "object",
"required": ["specs"],
"properties": {
"description": {
"type": "string",
"description": "文件说明(如所属厂商、收录范围)"
},
"specs": {
"type": "array",
"description": "模型规格条目列表",
"items": { "$ref": "#/definitions/modelSpec" }
}
},
"additionalProperties": false,
"definitions": {
"modelSpec": {
"type": "object",
"required": ["id", "spec"],
"properties": {
"id": {
"type": "string",
"description": "模型标准标识符,通常等于上游 model_name 原样(保留大小写与点号,如 claude-sonnet-4-6、MiniMax-M2.7)。同时作为精确匹配键;匹配时大小写/分隔符不敏感(由匹配器归一化)。",
"minLength": 1
},
"displayName": {
"type": "string",
"description": "模型友好显示名(如 Claude Sonnet 4.6)。命中后可覆盖 NewAPI 返回的原始 model_name优化 UI 展示。"
},
"family": {
"type": "string",
"description": "模型家族标识(如 claude-sonnet、gpt-5、gemini-2.5)。当精确/别名/pattern 匹配均失败时,按最长 family 前缀兜底匹配,返回保守参数并标记 inferred。"
},
"match": {
"type": "object",
"description": "通用匹配规则。匹配器会先做归一化(小写、去 vendor 前缀如 anthropic/、去网关装饰、统一分隔符、去日期戳与波动后缀再分层匹配exact > 归一化 exact > 去日期戳后 exact > pattern取最长 > family 兜底。",
"properties": {
"exact": {
"type": "array",
"description": "精确别名列表(除 id 外的已知精确名,含网关可能使用的全名)。归一化后比对。",
"items": { "type": "string", "minLength": 1 }
},
"patterns": {
"type": "array",
"description": "glob 模式列表(如 claude-sonnet-4-6*)。仅在 exact + 去日期戳仍无法覆盖变体时使用;避免对存在子型号的父模型(如 gpt-4o 之于 gpt-4o-mini使用宽泛通配以防误吞。多命中取最长 pattern。",
"items": { "type": "string", "minLength": 1 }
}
},
"additionalProperties": false
},
"spec": {
"type": "object",
"description": "模型内在参数(不含任何价格字段)",
"properties": {
"contextWindow": {
"type": "number",
"description": "上下文窗口大小token 数)。下游用于上下文裁剪阈值计算。",
"minimum": 0
},
"maxOutputTokens": {
"type": "number",
"description": "单次请求最大输出 token 数。tags 字符串无法表达,是本规格库相对 NewAPI tags 的核心补充。",
"minimum": 0
},
"capabilities": {
"type": "array",
"description": "模型能力标签chat、vision、tool_use、code、reasoning 等。与 NewAPI tags 解析结果取并集。",
"items": { "type": "string" }
},
"serviceType": {
"type": ["string", "array"],
"items": { "type": "string" },
"description": "服务类型单个字符串或数组chat、reasoning、fast、vision、embedding、image_gen、tts、asr 等。命中时优先于 tags 解析。"
},
"defaultTemperature": {
"type": ["number", "null"],
"description": "推荐默认温度0-2。null 表示模型不支持温度调节(如 reasoning 模型),调用方应跳过该参数。本文件为新文件,老客户端不读,故允许 null。",
"minimum": 0,
"maximum": 2
},
"defaultTopP": {
"type": ["number", "null"],
"description": "推荐默认 Top-P0-1。null 表示不支持调节。",
"minimum": 0,
"maximum": 1
},
"supportsReasoning": {
"type": "boolean",
"description": "是否为推理模型。用于运行时决定是否启用 reasoning 相关处理。"
},
"description": {
"type": "string",
"description": "模型简要描述(一句话特点与适用场景)。命中后可覆盖 NewAPI 原值。"
},
"extra": {
"type": "object",
"description": "模型特定附加配置(如 apiModelId 全名、推理预算等)。不含价格。",
"additionalProperties": true
},
"releasedAt": {
"type": "string",
"description": "厂商发布年月YYYY-MM 或 YYYY-MM-DD辅助人工判断模型新旧。无客户端行为仅供维护者参考何时清理该条规格。",
"pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
},
"retiredAt": {
"type": "string",
"description": "厂商宣布停止访问的日期YYYY-MM-DD辅助人工批量删除已退役的规格条目。无客户端行为仅作数据清理依据。",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
}
}