diff --git a/__tests__/validate.test.mjs b/__tests__/validate.test.mjs index 79ca963..c2f8c1a 100644 --- a/__tests__/validate.test.mjs +++ b/__tests__/validate.test.mjs @@ -244,6 +244,35 @@ describe('真实数据全量校验', () => { assert.ok(specs[0].spec.capabilities.includes('asr')) }) + it('Ox Alpha 应提供与 OpenRouter 一致的多模态推理规格', () => { + const provider = JSON.parse(readFileSync(join(ROOT, 'compute', 'providers', 'openrouter.json'), 'utf8')) + const specFile = JSON.parse(readFileSync(join(ROOT, 'compute', 'model-specs', 'stealth.json'), 'utf8')) + const model = provider.models.find((item) => item.modelName === 'stealth/ox-alpha') + const modelSpec = specFile.specs.find((item) => item.id === 'ox-alpha') + + assert.ok(model, 'OpenRouter provider 缺少 stealth/ox-alpha') + assert.ok(modelSpec, 'model-specs 缺少 ox-alpha') + + for (const item of [model, modelSpec.spec]) { + assert.equal(item.contextWindow, 1048576) + assert.equal(item.maxOutputTokens, 131072) + assert.equal(item.defaultTemperature, 1) + assert.equal(item.defaultTopP, 0.95) + assert.ok(item.capabilities.includes('reasoning')) + assert.ok(item.capabilities.includes('vision')) + assert.ok(item.capabilities.includes('video_understanding')) + } + + assert.deepEqual(model.extra.reasoning.supportedEfforts, ['low', 'high', 'max']) + assert.equal(model.extra.reasoning.defaultEffort, 'max') + assert.equal(model.extra.thinking.disableSupported, false) + assert.equal(model.inputPrice, 0) + assert.equal(model.outputPrice, 0) + assert.deepEqual(modelSpec.match.exact, ['stealth/ox-alpha']) + assert.equal(modelSpec.spec.supportsReasoning, true) + assert.equal(modelSpec.spec.releasedAt, '2026-08-21') + }) + it('MiMo V2.5 仅非 Pro 型号应声明多模态能力', () => { const provider = JSON.parse(readFileSync(join(ROOT, 'compute', 'providers', 'xiaomi.json'), 'utf8')) const specFile = JSON.parse(readFileSync(join(ROOT, 'compute', 'model-specs', 'xiaomi.json'), 'utf8')) diff --git a/compute/model-specs/_index.json b/compute/model-specs/_index.json index 30e80cc..b29f84a 100644 --- a/compute/model-specs/_index.json +++ b/compute/model-specs/_index.json @@ -22,6 +22,7 @@ "tencent", "volcengine", "xunfei", + "stealth", "happyhorse" ], "routingTiers": [ diff --git a/compute/model-specs/stealth.json b/compute/model-specs/stealth.json new file mode 100644 index 0000000..d472e68 --- /dev/null +++ b/compute/model-specs/stealth.json @@ -0,0 +1,45 @@ +{ + "description": "Stealth 系列模型规格。参数来源:OpenRouter Models API。", + "specs": [ + { + "id": "ox-alpha", + "displayName": "Ox Alpha", + "family": "ox-alpha", + "match": { + "exact": [ + "stealth/ox-alpha" + ] + }, + "spec": { + "contextWindow": 1048576, + "maxOutputTokens": 131072, + "capabilities": [ + "chat", + "reasoning", + "deep_thinking", + "code", + "tool_use", + "agent", + "long_context", + "vision", + "image_understanding", + "video_understanding" + ], + "serviceType": [ + "chat", + "reasoning", + "vision" + ], + "defaultTemperature": 1, + "defaultTopP": 0.95, + "supportsReasoning": true, + "description": "Ox Alpha 多模态推理模型,面向编程、长程 Agent、复杂推理与生产工作负载", + "extra": { + "thinkingDefault": true, + "thinkingOnly": true + }, + "releasedAt": "2026-08-21" + } + } + ] +} diff --git a/compute/providers/openrouter.json b/compute/providers/openrouter.json index 2f0a5b1..250bf69 100644 --- a/compute/providers/openrouter.json +++ b/compute/providers/openrouter.json @@ -9,8 +9,54 @@ "enabled": false, "status": "unconfigured", "priceCurrency": "USD", - "services": ["chat"], + "services": [ + "chat", + "reasoning", + "vision" + ], "models": [ + { + "modelName": "stealth/ox-alpha", + "displayName": "Ox Alpha (免费)", + "serviceType": [ + "chat", + "reasoning", + "vision" + ], + "description": "通过 OpenRouter 免费使用的 Ox Alpha,面向编程、长程 Agent 与复杂推理,支持文本、图片和视频输入", + "contextWindow": 1048576, + "maxOutputTokens": 131072, + "capabilities": [ + "chat", + "reasoning", + "deep_thinking", + "code", + "tool_use", + "agent", + "long_context", + "vision", + "image_understanding", + "video_understanding" + ], + "inputPrice": 0.00, + "outputPrice": 0.00, + "defaultTemperature": 1, + "defaultTopP": 0.95, + "extra": { + "reasoning": { + "supportedEfforts": [ + "low", + "high", + "max" + ], + "defaultEffort": "max" + }, + "thinking": { + "default": "enabled", + "disableSupported": false + } + } + }, { "modelName": "openrouter/auto", "displayName": "OpenRouter Auto", diff --git a/manifest.json b/manifest.json index 62d03cd..e50fb1a 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "version": "1.0.0", - "presetDataVersion": 90, - "updatedAt": "2026-08-10", + "presetDataVersion": 91, + "updatedAt": "2026-08-21", "description": "DesireCore 官方配置中心" }