refactor(models): unify preset names

This commit is contained in:
Xubin Ren
2026-08-16 11:50:56 +08:00
parent 8dc08853e4
commit 3dc38f6396
37 changed files with 239 additions and 209 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ Use `/model` to inspect the current runtime model:
/model
```
The response shows the current session's model and preset, plus the available preset names. Named presets come from the top-level `modelPresets` config and are the recommended way to configure model choices. `default` is always available and represents the model settings from direct `agents.defaults.*` fields.
The response shows the current session's model and preset, plus the available preset names. Each key under the top-level `modelPresets` config is the preset's canonical name everywhere nanobot displays or references it. `default` is always available and represents the model settings from direct `agents.defaults.*` fields.
To switch presets for future turns:
+9 -19
View File
@@ -1404,21 +1404,6 @@ Existing configs do not need to change. Direct `agents.defaults.model`, `provide
{
"modelPresets": {
"fast": {
"provider": "openrouter",
"model": "anthropic/claude-sonnet-4.5",
"maxTokens": 4096,
"contextWindowTokens": 65536
}
},
"agents": {
"defaults": {
"modelPreset": "fast",
"fallbackModels": ["deep", "localSmall"]
}
},
"modelPresets": {
"fast": {
"label": "Fast",
"model": "gpt-4.1-mini",
"provider": "openai",
"maxTokens": 4096,
@@ -1427,7 +1412,6 @@ Existing configs do not need to change. Direct `agents.defaults.model`, `provide
"reasoningEffort": "low"
},
"deep": {
"label": "Deep",
"model": "claude-opus-4-5",
"provider": "anthropic",
"maxTokens": 8192,
@@ -1435,22 +1419,28 @@ Existing configs do not need to change. Direct `agents.defaults.model`, `provide
"reasoningEffort": "high"
},
"localSmall": {
"label": "Local Small",
"model": "llama3.2",
"provider": "ollama",
"maxTokens": 4096,
"contextWindowTokens": 32768,
"temperature": 0.2
}
},
"agents": {
"defaults": {
"modelPreset": "fast",
"fallbackModels": ["deep", "localSmall"]
}
}
}
```
`modelPresets` is a top-level object. The keys under it (`fast`, `deep`, `coding`, etc.) are user-defined preset names. Each preset supports:
`modelPresets` is a top-level object. Each key (`fast`, `deep`, `coding`, etc.) is the preset's one canonical name: it is shown in the interface, passed to `/model <name>`, and referenced by defaults, fallbacks, sessions, and Dream. Names must be unique ignoring case. Each preset supports:
Older configs may still contain a `label` inside a preset. It is accepted when loading for compatibility but ignored; the object key remains the canonical name.
| Field | Description |
|-------|-------------|
| `label` | Optional display name shown in model lists. |
| `model` | Model name to use for this preset. |
| `provider` | Provider name, or `"auto"` to use provider auto-detection. |
| `maxTokens` | Maximum completion/output tokens. |
-18
View File
@@ -71,7 +71,6 @@ This recipe applies when one API key routes many hosted model families.
},
"modelPresets": {
"primary": {
"label": "Primary",
"provider": "openrouter",
"model": "anthropic/claude-sonnet-4.5",
"maxTokens": 4096,
@@ -113,7 +112,6 @@ OpenCode Zen:
},
"modelPresets": {
"primary": {
"label": "OpenCode Zen",
"provider": "opencode_zen",
"model": "opencode/deepseek-v4-pro",
"maxTokens": 4096,
@@ -140,7 +138,6 @@ OpenCode Go:
},
"modelPresets": {
"primary": {
"label": "OpenCode Go",
"provider": "opencode_go",
"model": "opencode-go/deepseek-v4-flash",
"maxTokens": 4096,
@@ -182,7 +179,6 @@ This recipe applies when you have an OpenAI API key and want to call OpenAI dire
},
"modelPresets": {
"primary": {
"label": "OpenAI",
"provider": "openai",
"model": "gpt-5",
"maxTokens": 4096,
@@ -219,7 +215,6 @@ This recipe applies when your key comes from Anthropic and your model name is an
},
"modelPresets": {
"primary": {
"label": "Anthropic",
"provider": "anthropic",
"model": "claude-sonnet-4-5",
"maxTokens": 4096,
@@ -255,7 +250,6 @@ If you use an Anthropic-compatible proxy, keep the preset provider as `anthropic
},
"modelPresets": {
"primary": {
"label": "Anthropic proxy",
"provider": "anthropic",
"model": "claude-sonnet-4-5",
"maxTokens": 4096,
@@ -286,7 +280,6 @@ This recipe applies when your key comes from Kimi's Coding Plan endpoint. Nanobo
},
"modelPresets": {
"kimiCoding": {
"label": "Kimi Coding",
"provider": "kimi_coding",
"model": "kimi-for-coding",
"maxTokens": 4096,
@@ -324,7 +317,6 @@ This recipe applies to an OpenAI-compatible service that is not a named nanobot
},
"modelPresets": {
"primary": {
"label": "Custom",
"provider": "custom",
"model": "provider-model-name",
"maxTokens": 4096,
@@ -364,7 +356,6 @@ For multiple custom endpoints, do not overload the single `custom` block. Name e
},
"modelPresets": {
"work": {
"label": "Work proxy",
"provider": "workProxy",
"model": "gpt-4o-mini",
"maxTokens": 4096,
@@ -372,7 +363,6 @@ For multiple custom endpoints, do not overload the single `custom` block. Name e
"temperature": 0.1
},
"lab": {
"label": "Lab local",
"provider": "lab-local",
"model": "served-model-name",
"maxTokens": 4096,
@@ -408,7 +398,6 @@ ollama pull llama3.2
},
"modelPresets": {
"local": {
"label": "Local",
"provider": "ollama",
"model": "llama3.2",
"maxTokens": 2048,
@@ -453,7 +442,6 @@ This recipe applies when a local server exposes an OpenAI-compatible `/v1` API.
},
"modelPresets": {
"local": {
"label": "Local",
"provider": "vllm",
"model": "served-model-name",
"maxTokens": 4096,
@@ -480,7 +468,6 @@ For LM Studio, use its local base URL and provider name:
},
"modelPresets": {
"local": {
"label": "LM Studio",
"provider": "lm_studio",
"model": "local-model",
"maxTokens": 2048,
@@ -505,7 +492,6 @@ This recipe applies when one provider sometimes rate-limits, one model is expens
{
"modelPresets": {
"fast": {
"label": "Fast",
"provider": "openrouter",
"model": "anthropic/claude-sonnet-4.5",
"maxTokens": 4096,
@@ -513,7 +499,6 @@ This recipe applies when one provider sometimes rate-limits, one model is expens
"temperature": 0.1
},
"deep": {
"label": "Deep",
"provider": "anthropic",
"model": "claude-sonnet-4-5",
"maxTokens": 4096,
@@ -521,7 +506,6 @@ This recipe applies when one provider sometimes rate-limits, one model is expens
"temperature": 0.1
},
"local": {
"label": "Local",
"provider": "ollama",
"model": "llama3.2",
"maxTokens": 2048,
@@ -580,14 +564,12 @@ Use this after you have more than one preset and are chatting through a supporte
{
"modelPresets": {
"fast": {
"label": "Fast",
"provider": "openrouter",
"model": "anthropic/claude-sonnet-4.5",
"maxTokens": 4096,
"contextWindowTokens": 65536
},
"local": {
"label": "Local",
"provider": "ollama",
"model": "llama3.2",
"maxTokens": 2048,
-5
View File
@@ -633,7 +633,6 @@ Model presets are the recommended model configuration surface. Use them when you
{
"modelPresets": {
"fast": {
"label": "Fast",
"provider": "openrouter",
"model": "anthropic/claude-sonnet-4.5",
"maxTokens": 4096,
@@ -641,7 +640,6 @@ Model presets are the recommended model configuration surface. Use them when you
"temperature": 0.1
},
"deep": {
"label": "Deep",
"provider": "anthropic",
"model": "claude-opus-4-5",
"maxTokens": 8192,
@@ -667,7 +665,6 @@ Fallbacks are useful for transient provider failures, rate limits, or model avai
{
"modelPresets": {
"fast": {
"label": "Fast",
"provider": "openrouter",
"model": "anthropic/claude-sonnet-4.5",
"maxTokens": 4096,
@@ -675,7 +672,6 @@ Fallbacks are useful for transient provider failures, rate limits, or model avai
"temperature": 0.1
},
"deep": {
"label": "Deep",
"provider": "anthropic",
"model": "claude-opus-4-5",
"maxTokens": 8192,
@@ -683,7 +679,6 @@ Fallbacks are useful for transient provider failures, rate limits, or model avai
"temperature": 0.1
},
"localSmall": {
"label": "Local Small",
"provider": "ollama",
"model": "llama3.2",
"maxTokens": 4096,