feat(agents): expose thinking variant configuration in agent settings (#1715)

* feat(agents): expose thinking variant configuration in agent settings

Fix #1425: add variant field to agent config UI so users can configure
thinking/reasoning depth per agent without editing opencode.json.

Changes:
- Added variant to AgentConfig and AgentDraft types in useAgentsStore
- Pass variant in createAgent and updateAgent API calls
- Support null for temperature, top_p, and variant to clear overrides
- Added variant input field in AgentsPage 'Model & Parameters' section
- Added variant to settings search registry
- Added i18n strings for variant field in all 8 non-English locales

The variant field maps to provider-specific parameters (e.g. Anthropic
high/max variant, OpenAI reasoning effort). Users can enter any string
value; the SDK passes it through to the model provider.

Clearing temperature/topP/variant now sends null to the server instead
of omitting the field, which properly removes the override in
opencode.json.

* fix(sync): preserve tool state.time in materialization merge

* chore: trigger re-review

* fix(agents): use thinking variant selector in settings

* fix(agents): preserve thinking variant values

---------

Co-authored-by: Leonid Skorobogatyy <bash@opencode.itc.local>
This commit is contained in:
bashrusakh
2026-06-23 23:22:59 +03:00
committed by GitHub
co-authored by Leonid Skorobogatyy
parent 3d3674d4dd
commit e44efa97d6
13 changed files with 155 additions and 2 deletions
@@ -428,6 +428,10 @@ export const settingsDict = {
'settings.agents.page.field.topPTooltip': 'Nucleus sampling diversity. Lower = likely tokens only.',
'settings.agents.page.field.topPRange': '0.0 to 1.0',
'settings.agents.page.field.clearTopPAria': 'Clear top p override',
'settings.agents.page.field.variant': 'Thinking Variant',
'settings.agents.page.field.variantTooltip': 'Controls the thinking/reasoning depth for this agent. Maps to provider-specific parameters (e.g. Anthropic variant, OpenAI reasoning effort).',
'settings.agents.page.field.variantHint': 'e.g. high, max, low',
'settings.agents.page.field.variantPlaceholder': 'default',
'settings.agents.page.field.systemPromptPlaceholder': 'You are an expert coding assistant...',
'settings.agents.page.mode.primary': 'Primary',
'settings.agents.page.mode.subagent': 'Subagent',
@@ -387,6 +387,10 @@ export const settingsDict = {
"settings.agents.page.field.mode": "Modo",
"settings.agents.page.field.modeTooltip": "Visibilidad principal vs subagente",
"settings.agents.page.field.overrideModel": "Sobrescribir modelo",
"settings.agents.page.field.variant": "Variante de pensamiento",
"settings.agents.page.field.variantTooltip": "Opcional. Si el modelo admite razonamiento, la variante controla la profundidad del razonamiento.",
"settings.agents.page.field.variantHint": "Específico del modelo (p. ej. variante de Anthropic)",
"settings.agents.page.field.variantPlaceholder": "p. ej. high, max, low, none",
"settings.agents.page.field.temperature": "Temperatura",
"settings.agents.page.field.temperatureTooltip": "Controla la aleatoriedad. Mayor = más creativo, menor = más enfocado.",
"settings.agents.page.field.temperatureRange": "0.0 a 2.0",
@@ -376,6 +376,10 @@ export const settingsDict = {
'settings.agents.page.field.mode': 'Mode',
'settings.agents.page.field.modeTooltip': 'Visibilité principale et sous-agent',
'settings.agents.page.field.overrideModel': 'Remplacer le modèle',
'settings.agents.page.field.variant': 'Variante de réflexion',
'settings.agents.page.field.variantTooltip': 'Optionnel. Si le modèle prend en charge le raisonnement, la variante contrôle la profondeur du raisonnement.',
'settings.agents.page.field.variantHint': 'Spécifique au modèle (par ex. variante Anthropic)',
'settings.agents.page.field.variantPlaceholder': 'par ex. high, max, low, none',
'settings.agents.page.field.temperature': 'Température',
'settings.agents.page.field.temperatureTooltip': 'Contrôle le caractère aléatoire. Plus élevé = créatif, Inférieur = concentré.',
'settings.agents.page.field.temperatureRange': '0.0 à 2.0',
@@ -387,6 +387,10 @@ export const settingsDict = {
'settings.agents.page.field.mode': '모드',
'settings.agents.page.field.modeTooltip': '주 에이전트/보조 에이전트로 표시할지 선택합니다',
'settings.agents.page.field.overrideModel': '모델 오버라이드',
'settings.agents.page.field.variant': '사고 변형',
'settings.agents.page.field.variantTooltip': '선택 사항. 모델이 추론을 지원하는 경우, 변형은 추론 깊이를 제어합니다.',
'settings.agents.page.field.variantHint': '모델별 (예: Anthropic variant)',
'settings.agents.page.field.variantPlaceholder': '예: high, max, low, none',
'settings.agents.page.field.temperature': '온도',
'settings.agents.page.field.temperatureTooltip': '무작위성을 제어합니다. 높을수록 창의적이고 낮을수록 집중적입니다.',
'settings.agents.page.field.temperatureRange': '0.0 ~ 2.0',
@@ -28,6 +28,10 @@ export const settingsDict = {
'settings.agents.page.field.overrideModel': 'Nadpisz model',
'settings.agents.page.field.scopePlaceholder': 'Zakres',
'settings.agents.page.field.systemPromptPlaceholder': 'Jesteś ekspertem w asystowaniu przy kodowaniu...',
'settings.agents.page.field.variant': 'Wariant myślenia',
'settings.agents.page.field.variantTooltip': 'Opcjonalne. Jeśli model obsługuje rozumowanie, wariant kontroluje głębokość rozumowania.',
'settings.agents.page.field.variantHint': 'Zależne od modelu (np. wariant Anthropic)',
'settings.agents.page.field.variantPlaceholder': 'np. high, max, low, none',
'settings.agents.page.field.temperature': 'Temperatura',
'settings.agents.page.field.temperatureRange': 'od 0.0 do 2.0',
'settings.agents.page.field.temperatureTooltip': 'Kontroluje losowość. Wyższa = bardziej kreatywny, niższa = bardziej skupiony.',
@@ -387,6 +387,10 @@ export const settingsDict = {
"settings.agents.page.field.mode": "Modo",
"settings.agents.page.field.modeTooltip": "Visibilidade principal vs subagente",
"settings.agents.page.field.overrideModel": "Sobrescrever modelo",
"settings.agents.page.field.variant": "Variante de pensamento",
"settings.agents.page.field.variantTooltip": "Opcional. Se o modelo suportar raciocínio, a variante controla a profundidade do raciocínio.",
"settings.agents.page.field.variantHint": "Específico do modelo (ex.: variante Anthropic)",
"settings.agents.page.field.variantPlaceholder": "ex.: high, max, low, none",
"settings.agents.page.field.temperature": "Temperatura",
"settings.agents.page.field.temperatureTooltip": "Controla a aleatoriedade. Maior = mais criativo, menor = mais focado.",
"settings.agents.page.field.temperatureRange": "0.0 a 2.0",
@@ -387,6 +387,10 @@ export const settingsDict = {
"settings.agents.page.field.mode": "Режим",
"settings.agents.page.field.modeTooltip": "Видимість основного або субагента",
"settings.agents.page.field.overrideModel": "Перевизначити модель",
"settings.agents.page.field.variant": "Варіант мислення",
"settings.agents.page.field.variantTooltip": "Необов'язково. Якщо модель підтримує міркування, варіант контролює глибину міркування.",
"settings.agents.page.field.variantHint": "Специфічно для моделі (напр. варіант Anthropic)",
"settings.agents.page.field.variantPlaceholder": "напр. high, max, low, none",
"settings.agents.page.field.temperature": "Температура",
"settings.agents.page.field.temperatureTooltip": "Контролює випадковість. Вищий = творчий, нижчий = зосереджений.",
"settings.agents.page.field.temperatureRange": "0,0 до 2,0",
@@ -387,6 +387,10 @@ export const settingsDict = {
'settings.agents.page.field.mode': '模式',
'settings.agents.page.field.modeTooltip': '主智能体与子智能体可见性',
'settings.agents.page.field.overrideModel': '覆盖模型',
'settings.agents.page.field.variant': '思考变体',
'settings.agents.page.field.variantTooltip': '可选。如果模型支持推理,变体控制推理深度。',
'settings.agents.page.field.variantHint': '模型特定(如 Anthropic variant)',
'settings.agents.page.field.variantPlaceholder': '例如 high, max, low, none',
'settings.agents.page.field.temperature': 'Temperature',
'settings.agents.page.field.temperatureTooltip': '控制随机性。越高越有创造性,越低越聚焦。',
'settings.agents.page.field.temperatureRange': '0.0 到 2.0',
@@ -384,6 +384,10 @@
'settings.agents.page.field.mode': '模式',
'settings.agents.page.field.modeTooltip': 'Primary 與 Subagent 可見性',
'settings.agents.page.field.overrideModel': '覆寫模型',
'settings.agents.page.field.variant': '思考變體',
'settings.agents.page.field.variantTooltip': '選填。如果模型支援推理,變體控制推理深度。',
'settings.agents.page.field.variantHint': '模型特定(如 Anthropic variant)',
'settings.agents.page.field.variantPlaceholder': '例如 high, max, low, none',
'settings.agents.page.field.temperature': 'Temperature',
'settings.agents.page.field.temperatureTooltip': '控制隨機性。越高越有創造力,越低越聚焦。',
'settings.agents.page.field.temperatureRange': '0.0 到 2.0',