mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-26 12:26:38 -06:00
4fdfb8b1bf
* fix(ollama): carry real Ollama Cloud context windows and capabilities The ollama-cloud catalog still described three models (minimax-m2.7, glm-5.1, glm-5.2) plus a retired kimi-k2.5. Every other cloud model — including kimi-k3, the current flagship — was absent, so core synthesized it at the generic DEFAULT_CONTEXT_TOKENS of 200k. A kimi-k3 session therefore ran with 200,000 of its real 1,048,576 token window: 80% of the context silently discarded, with no warning anywhere in the product. Describe the full current cloud lineup with context windows, input modalities and reasoning support verified against live /api/show and the ollama.com model pages. Only mistral-large-3 lacks thinking (vision + tools + cloud only). Suffixed refs shared the same defect from the other side: the default lookup is keyed bare, so `kimi-k3:cloud` missed it and fell to the 128k plugin default. A hardcoded glm-5.2 literal in buildOllamaModelDefinition had been papering over that for exactly one model; replace it with a lookup through the canonical cloud-id normalizer, which model-reasoning.ts already owned, and drop the duplicate spelling of that helper. * fix(ollama): cover exact cloud catalog variants * fix(ollama): remove invalid cloud aliases * fix(ollama): default Ollama Cloud onboarding to minimax-m3 Cloud onboarding derives `defaultModel` from the first entry of OLLAMA_CLOUD_DEFAULT_MODELS, so array order silently owned the out-of-box model choice. Put minimax-m3 (524,288 ctx, thinking + tools + vision) at index 0, add it to the bundled rows it was missing from, and document the ordering contract at the declaration. Pin the resolved default id in the cloud setup tests so a reorder cannot move it unnoticed, and align the provider doc's onboarding default and fallback row list. Claude-Session: https://claude.ai/code/session_01QXUQuDVataA5o16kxNnmoX * fix(ollama): preserve default and shared model contracts * test(ollama): consolidate cloud setup capability expectations --------- Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
599 lines
16 KiB
JSON
599 lines
16 KiB
JSON
{
|
|
"id": "ollama",
|
|
"doctorContract": {
|
|
"configRepair": true
|
|
},
|
|
"icon": "https://cdn.simpleicons.org/ollama",
|
|
"activation": {
|
|
"onStartup": true
|
|
},
|
|
"enabledByDefault": true,
|
|
"providers": ["ollama", "ollama-cloud"],
|
|
"providerCatalogEntry": "./provider-discovery.ts",
|
|
"providerRequest": {
|
|
"providers": {
|
|
"ollama": {
|
|
"family": "ollama"
|
|
},
|
|
"ollama-cloud": {
|
|
"family": "ollama-cloud"
|
|
}
|
|
}
|
|
},
|
|
"modelPricing": {
|
|
"providers": {
|
|
"ollama": {
|
|
"external": false
|
|
},
|
|
"ollama-cloud": {
|
|
"external": true
|
|
}
|
|
}
|
|
},
|
|
"syntheticAuthRefs": ["ollama"],
|
|
"nonSecretAuthMarkers": ["ollama-local"],
|
|
"setup": {
|
|
"providers": [
|
|
{
|
|
"id": "ollama",
|
|
"envVars": ["OLLAMA_API_KEY"]
|
|
},
|
|
{
|
|
"id": "ollama-cloud",
|
|
"envVars": ["OLLAMA_API_KEY"]
|
|
}
|
|
]
|
|
},
|
|
"providerAuthChoices": [
|
|
{
|
|
"provider": "ollama",
|
|
"method": "local",
|
|
"choiceId": "ollama",
|
|
"appGuidedDiscovery": true,
|
|
"appGuidedActionLabel": "Choose connection",
|
|
"choiceLabel": "Ollama",
|
|
"choiceHint": "Connect to an Ollama server and select a cloud or local model",
|
|
"icon": "https://cdn.simpleicons.org/ollama",
|
|
"website": "https://ollama.com/download",
|
|
"groupId": "ollama",
|
|
"groupLabel": "Ollama",
|
|
"groupHint": "Cloud and local open models"
|
|
},
|
|
{
|
|
"provider": "ollama-cloud",
|
|
"method": "api-key",
|
|
"choiceId": "ollama-cloud",
|
|
"appGuidedSecret": true,
|
|
"choiceLabel": "Ollama Cloud",
|
|
"choiceHint": "Hosted models via ollama.com",
|
|
"icon": "https://cdn.simpleicons.org/ollama",
|
|
"website": "https://ollama.com/download",
|
|
"groupId": "ollama",
|
|
"groupLabel": "Ollama",
|
|
"groupHint": "Cloud and local open models",
|
|
"optionKey": "ollamaCloudApiKey",
|
|
"cliFlag": "--ollama-cloud-api-key",
|
|
"cliOption": "--ollama-cloud-api-key <key>",
|
|
"cliDescription": "Ollama Cloud API key"
|
|
}
|
|
],
|
|
"modelCatalog": {
|
|
"runtimeAugment": true,
|
|
"providers": {
|
|
"ollama-cloud": {
|
|
"baseUrl": "https://ollama.com",
|
|
"api": "ollama",
|
|
"models": [
|
|
{
|
|
"id": "kimi-k2.5",
|
|
"name": "kimi-k2.5",
|
|
"status": "deprecated",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "kimi-k2.6",
|
|
"name": "kimi-k2.6",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "kimi-k2.7-code",
|
|
"name": "kimi-k2.7-code",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "kimi-k3",
|
|
"name": "kimi-k3",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 3,
|
|
"output": 15,
|
|
"cacheRead": 0.3
|
|
},
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true,
|
|
"codeMode": "capable"
|
|
}
|
|
},
|
|
{
|
|
"id": "deepseek-v4-flash",
|
|
"name": "deepseek-v4-flash",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true,
|
|
"codeMode": "capable"
|
|
}
|
|
},
|
|
{
|
|
"id": "deepseek-v4-flash:0731",
|
|
"name": "deepseek-v4-flash:0731",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "deepseek-v4-flash:preview",
|
|
"name": "deepseek-v4-flash:preview",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "deepseek-v4-pro",
|
|
"name": "deepseek-v4-pro",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true,
|
|
"codeMode": "capable"
|
|
}
|
|
},
|
|
{
|
|
"id": "deepseek-v4-pro:0813",
|
|
"name": "deepseek-v4-pro:0813",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 1048576,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "deepseek-v4-pro:preview",
|
|
"name": "deepseek-v4-pro:preview",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 524288,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "gemma4",
|
|
"name": "gemma4",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "gemma4:31b",
|
|
"name": "gemma4:31b",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "glm-5.1",
|
|
"name": "glm-5.1",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 202752,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true,
|
|
"codeMode": "capable"
|
|
}
|
|
},
|
|
{
|
|
"id": "glm-5.2",
|
|
"name": "glm-5.2",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 1000000,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true,
|
|
"codeMode": "capable"
|
|
}
|
|
},
|
|
{
|
|
"id": "gpt-oss:120b",
|
|
"name": "gpt-oss:120b",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 131072,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "gpt-oss:20b",
|
|
"name": "gpt-oss:20b",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 131072,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "minimax-m2.7",
|
|
"name": "minimax-m2.7",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 196608,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "minimax-m3",
|
|
"name": "minimax-m3",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 524288,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "mistral-large-3:675b",
|
|
"name": "mistral-large-3:675b",
|
|
"reasoning": false,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "nemotron-3-nano:30b",
|
|
"name": "nemotron-3-nano:30b",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "nemotron-3-super",
|
|
"name": "nemotron-3-super",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "nemotron-3-ultra",
|
|
"name": "nemotron-3-ultra",
|
|
"reasoning": true,
|
|
"input": ["text"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "qwen3.5",
|
|
"name": "qwen3.5",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
},
|
|
{
|
|
"id": "qwen3.5:397b",
|
|
"name": "qwen3.5:397b",
|
|
"reasoning": true,
|
|
"input": ["text", "image"],
|
|
"cost": {
|
|
"input": 0,
|
|
"output": 0,
|
|
"cacheRead": 0,
|
|
"cacheWrite": 0
|
|
},
|
|
"contextWindow": 262144,
|
|
"maxTokens": 8192,
|
|
"compat": {
|
|
"supportsTools": true,
|
|
"supportsUsageInStreaming": true
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"discovery": {
|
|
"ollama": "refreshable",
|
|
"ollama-cloud": "refreshable"
|
|
}
|
|
},
|
|
"contracts": {
|
|
"embeddingProviders": ["ollama"],
|
|
"tools": ["node_inference"],
|
|
"webSearchProviders": ["ollama"]
|
|
},
|
|
"configSchema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"discovery": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"nodeInference": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"webSearch": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"baseUrl": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"uiHints": {
|
|
"discovery": {
|
|
"label": "Model Discovery",
|
|
"help": "Plugin-owned controls for Ollama model auto-discovery."
|
|
},
|
|
"discovery.enabled": {
|
|
"label": "Enable Discovery",
|
|
"help": "When false, OpenClaw keeps the Ollama plugin available but skips implicit startup discovery of ambient local or remote Ollama models."
|
|
},
|
|
"nodeInference": {
|
|
"label": "Node Inference",
|
|
"help": "Controls whether this node host advertises its local Ollama models to agents."
|
|
},
|
|
"nodeInference.enabled": {
|
|
"label": "Enable Node Inference",
|
|
"help": "When false, this node host does not advertise or accept Ollama node-inference commands."
|
|
},
|
|
"webSearch": {
|
|
"label": "Web Search",
|
|
"help": "Plugin-owned Ollama web search connection settings.",
|
|
"advanced": true
|
|
},
|
|
"webSearch.baseUrl": {
|
|
"label": "Web Search Base URL",
|
|
"help": "Optional Ollama host override used only for web search.",
|
|
"advanced": true
|
|
}
|
|
}
|
|
}
|