diff --git a/assets/orchestrate/workflow.md b/assets/orchestrate/workflow.md index 8b487907f..2dac10e5d 100644 --- a/assets/orchestrate/workflow.md +++ b/assets/orchestrate/workflow.md @@ -11,7 +11,7 @@ remain with you. If Orchestrate tool schemas are deferred, discover and load them before starting delegated execution. Read the current fleet, compare enabled execution profiles across all providers, and select a task-fit model, endpoint profile, and per-call -effort using the configured strengths and caveats. The bundled GPT-6 Sol +effort using the configured strengths and caveats. The bundled GPT-6.1 Sol executor is the default workhorse: route ordinary implementation, verification, and computer use to it at medium effort, low for narrow edits, and higher only when the work needs more planning or checking. Route UI design, copywriting, diff --git a/crates/core/src/settings.rs b/crates/core/src/settings.rs index b57a8fca2..2b13ed01a 100644 --- a/crates/core/src/settings.rs +++ b/crates/core/src/settings.rs @@ -324,7 +324,8 @@ const OLD_DEFAULT_SOL_DEFINITION: &str = "Execution model for scoped implementat const OLD_DEFAULT_OPUS_DEFINITION: &str = "Execution model for agentic coding, cross-file implementation, refactoring, debugging, and review. Consider it alongside Sol across providers, including user-facing behavior and API or UI details. Use medium for clear bounded work, high for substantial implementation, and xhigh or max when difficult reasoning justifies the extra work; low can suit small mechanical tasks. Match verification to the changed behavior and avoid repetitive self-checking. Report evidence and unresolved limitations concisely."; const OLD_DEFAULT_GPT_6_EXECUTION_DEFINITION: &str = "Baseline execution model for scoped implementation, debugging with a reproduction, migrations, code review, data analysis, and evidence gathering. Default to low effort for a clear brief; raise effort only when a specific piece demonstrably needs more depth. Keep unrelated improvements out of scope, match verification to the changed behavior, and report the concrete result and relevant checks concisely."; const DEFAULT_GPT_6_EXECUTION_DEFINITION: &str = "Execution model for scoped implementation, debugging with a reproduction, migrations, code review, data analysis, evidence gathering, and computer use. It is exceptionally strong at driving and reading real UIs (find_roots → observe_ui → search_ui / inspect_ui / read_text, and act_ui / wait_for when the brief allows), so route eyes-on-screen verification and UI-driving work here first. Always dispatch it at low effort: low outperforms the former Sol executor at xhigh on quality and at a fraction of the token cost, so medium or higher is never justified for this profile and only wastes money; a task that seems to need more depth needs a better brief, not more effort. Keep unrelated improvements out of scope. Report the concrete result and relevant checks concisely."; -const DEFAULT_SOL_6_DEFINITION: &str = "Primary execution model: dispatch ordinary implementation, debugging with a reproduction, migrations, code review, data analysis, evidence gathering, and computer use here first. GPT-6 Sol follows a brief closely and reliably reaches the stated goal, at a lower cost than Opus; it is built for complex coding and agentic workflows, with about half the factual errors of GPT-5.6 Sol and fewer misleading claims about its own work, and it is strong at driving and reading real UIs, so eyes-on-screen verification and UI-driving work go here. Start at medium, the recommended default for everyday and complex work; use low for narrow mechanical edits, and raise to high or xhigh only for work that needs more planning, analysis, or checking across many steps, sources, or tradeoffs; reserve max for the hardest well-defined problems. Keep unrelated improvements out of scope, match verification to the changed behavior, and report the concrete result and relevant checks concisely."; +const PREVIOUS_DEFAULT_SOL_6_DEFINITION: &str = "Primary execution model: dispatch ordinary implementation, debugging with a reproduction, migrations, code review, data analysis, evidence gathering, and computer use here first. GPT-6 Sol follows a brief closely and reliably reaches the stated goal, at a lower cost than Opus; it is built for complex coding and agentic workflows, with about half the factual errors of GPT-5.6 Sol and fewer misleading claims about its own work, and it is strong at driving and reading real UIs, so eyes-on-screen verification and UI-driving work go here. Start at medium, the recommended default for everyday and complex work; use low for narrow mechanical edits, and raise to high or xhigh only for work that needs more planning, analysis, or checking across many steps, sources, or tradeoffs; reserve max for the hardest well-defined problems. Keep unrelated improvements out of scope, match verification to the changed behavior, and report the concrete result and relevant checks concisely."; +const DEFAULT_SOL_6_1_DEFINITION: &str = "Primary execution model: dispatch ordinary implementation, debugging with a reproduction, migrations, code review, data analysis, evidence gathering, and computer use here first. GPT-6.1 Sol follows a brief closely and reliably reaches the stated goal, at a lower cost than Opus; it is built for complex coding and agentic workflows, and it is strong at driving and reading real UIs, so eyes-on-screen verification and UI-driving work go here. Start at medium, the recommended default for everyday and complex work; use low for narrow mechanical edits, and raise to high or xhigh only for work that needs more planning, analysis, or checking across many steps, sources, or tradeoffs; reserve max for the hardest well-defined problems. Keep unrelated improvements out of scope, match verification to the changed behavior, and report the concrete result and relevant checks concisely."; const PREVIOUS_DEFAULT_OPUS_DEFINITION: &str = "Execution model for agentic coding, cross-file implementation, refactoring, debugging, and review across providers, including user-facing behavior and API or UI details. Use medium for clear bounded work, high for substantial implementation, and xhigh or max when difficult reasoning justifies the extra work; low can suit small mechanical tasks. Match verification to the changed behavior and avoid repetitive self-checking. Report evidence and unresolved limitations concisely."; const DEFAULT_OPUS_DEFINITION: &str = "Execution model for UI design and creative or investigative work: choose Opus 5.5 first for visual and interaction design, layout, copywriting and user-facing text, design exploration, open-ended research, and ideation where taste and breadth matter; it also gives a strong second implementation or review across providers. For ordinary implementation and verification prefer Sol, which follows briefs more closely at lower cost. Use medium for clear bounded work, high for substantial design or research, and xhigh or max when difficult reasoning justifies the extra work; low can suit small mechanical tasks. Match verification to the changed behavior and avoid repetitive self-checking. Report evidence and unresolved limitations concisely."; const DEFAULT_ASTRA_DEFINITION: &str = include_str!("../../../assets/orchestrate/astra.md"); @@ -353,7 +354,7 @@ pub fn orchestrate_efforts( .unwrap_or_default() } else { let fallback: &[&str] = match (provider, model) { - (ProviderKind::Codex, "gpt-5.6-sol" | "gpt-6-sol" | "gpt-6-astra") => { + (ProviderKind::Codex, "gpt-5.6-sol" | "gpt-6-sol" | "gpt-6.1-sol" | "gpt-6-astra") => { &["low", "medium", "high", "xhigh", "max", "ultra"] } ( @@ -429,7 +430,11 @@ impl Default for OrchestrateSettings { ), ], child_models: vec![ - builtin_model(ProviderKind::Codex, "gpt-6-sol", DEFAULT_SOL_6_DEFINITION), + builtin_model( + ProviderKind::Codex, + "gpt-6.1-sol", + DEFAULT_SOL_6_1_DEFINITION, + ), builtin_model( ProviderKind::ClaudeCode, "claude-opus-5-5", @@ -469,8 +474,8 @@ impl LegacyOrchestrateModel { replace_untouched_sol: bool, replace_untouched_opus: bool, ) -> Option { - // An untouched bundled Codex executor (Sol 5.6, then Astra) follows - // the bundle to GPT-6 Sol unless the user already added it; rows with + // An untouched bundled Codex executor (Sol 5.6, Astra, then Sol 6) + // follows the bundle to GPT-6.1 Sol unless the user already added it; rows with // custom guidance, an endpoint profile, or changed switches stay. let untouched_codex_executor = !collaboration && self.effort.is_none() @@ -480,6 +485,7 @@ impl LegacyOrchestrateModel { && !self.entry.fast && match self.entry.model.as_str() { "gpt-5.6-sol" => self.entry.description == OLD_DEFAULT_SOL_DEFINITION, + "gpt-6-sol" => self.entry.description == PREVIOUS_DEFAULT_SOL_6_DEFINITION, "gpt-6-astra" => { self.entry.description == OLD_DEFAULT_GPT_6_EXECUTION_DEFINITION || self.entry.description == DEFAULT_GPT_6_EXECUTION_DEFINITION @@ -488,7 +494,11 @@ impl LegacyOrchestrateModel { }; if untouched_codex_executor { return replace_untouched_sol.then(|| { - builtin_model(ProviderKind::Codex, "gpt-6-sol", DEFAULT_SOL_6_DEFINITION) + builtin_model( + ProviderKind::Codex, + "gpt-6.1-sol", + DEFAULT_SOL_6_1_DEFINITION, + ) }); } if !collaboration @@ -604,7 +614,7 @@ impl From for OrchestrateSettings { .iter() .any(|entry| entry.entry.provider == provider && entry.entry.model == model) }; - let has_execution_sol_6 = has_execution(ProviderKind::Codex, "gpt-6-sol"); + let has_execution_sol_6_1 = has_execution(ProviderKind::Codex, "gpt-6.1-sol"); let has_execution_opus_5_5 = has_execution(ProviderKind::ClaudeCode, "claude-opus-5-5"); ( decisions @@ -614,7 +624,7 @@ impl From for OrchestrateSettings { data.child_models .into_iter() .filter_map(|entry| { - entry.migrate(false, !has_execution_sol_6, !has_execution_opus_5_5) + entry.migrate(false, !has_execution_sol_6_1, !has_execution_opus_5_5) }) .collect(), ) @@ -685,7 +695,8 @@ impl OrchestrateSettings { pub fn builtin_child_definition(provider: ProviderKind, model: &str) -> Option<&'static str> { match (provider, model) { - (ProviderKind::Codex, "gpt-6-sol") => Some(DEFAULT_SOL_6_DEFINITION), + (ProviderKind::Codex, "gpt-6.1-sol") => Some(DEFAULT_SOL_6_1_DEFINITION), + (ProviderKind::Codex, "gpt-6-sol") => Some(PREVIOUS_DEFAULT_SOL_6_DEFINITION), (ProviderKind::Codex, "gpt-6-astra") => Some(DEFAULT_GPT_6_EXECUTION_DEFINITION), (ProviderKind::ClaudeCode, "claude-opus-5-5" | "claude-opus-5") => { Some(DEFAULT_OPUS_DEFINITION) @@ -1649,7 +1660,7 @@ mod tests { ["gpt-6-astra", "claude-fable-5-1"] ); assert_eq!(defaults.child_models.len(), 2); - assert_eq!(defaults.child_models[0].model, "gpt-6-sol"); + assert_eq!(defaults.child_models[0].model, "gpt-6.1-sol"); assert_eq!(defaults.child_models[0].provider, ProviderKind::Codex); assert!(!defaults.child_models[0].fast); assert!( @@ -1807,7 +1818,7 @@ mod tests { } #[test] - fn orchestrate_moves_untouched_astra_executors_to_sol_6() { + fn orchestrate_moves_untouched_codex_executors_to_sol_6_1() { let old_sol_text = "Execution model for scoped implementation, debugging with a reproduction, migrations, code review, data analysis, and evidence gathering. Use medium for routine work with a clear brief; increase through high and xhigh as interacting constraints or reasoning difficulty grow; use max for the hardest well-defined problems or when a lower effort has demonstrably stalled. Choose any supported effort that fits the task, not just the endpoints. Keep unrelated improvements out of scope. Report the concrete result and relevant checks concisely."; for (model, text, retained_default_text) in [ ("gpt-5.6-sol", old_sol_text, old_sol_text), @@ -1821,6 +1832,11 @@ mod tests { DEFAULT_GPT_6_EXECUTION_DEFINITION, DEFAULT_GPT_6_EXECUTION_DEFINITION, ), + ( + "gpt-6-sol", + PREVIOUS_DEFAULT_SOL_6_DEFINITION, + PREVIOUS_DEFAULT_SOL_6_DEFINITION, + ), ] { let source = serde_json::json!({ "provider": "codex", "model": model, "description": text, @@ -1834,8 +1850,8 @@ mod tests { migrated.child_models, [builtin_model( ProviderKind::Codex, - "gpt-6-sol", - DEFAULT_SOL_6_DEFINITION + "gpt-6.1-sol", + DEFAULT_SOL_6_1_DEFINITION )] ); for (description, expected_description, profile, enabled, fast) in [ @@ -1868,7 +1884,7 @@ mod tests { let migrated: OrchestrateSettings = serde_json::from_value(serde_json::json!({ "decision_models": [], "child_models": [source, { - "provider": "codex", "model": "gpt-6-sol", "profile_id": "custom-codex", + "provider": "codex", "model": "gpt-6.1-sol", "profile_id": "custom-codex", "enabled": false, "fast": true, "description": "User execution guidance" }] })) @@ -1877,7 +1893,7 @@ mod tests { migrated.child_models, [OrchestrateChildModel { provider: ProviderKind::Codex, - model: "gpt-6-sol".into(), + model: "gpt-6.1-sol".into(), profile_id: Some("custom-codex".into()), enabled: false, fast: true, diff --git a/crates/orchestrate-mcp/src/tools.rs b/crates/orchestrate-mcp/src/tools.rs index 51281585e..d671b779e 100644 --- a/crates/orchestrate-mcp/src/tools.rs +++ b/crates/orchestrate-mcp/src/tools.rs @@ -17,7 +17,7 @@ struct DispatchParams { provider: String, #[serde(default)] #[schemars( - description = "Model ID from the current Orchestrate configuration, for example gpt-6-sol. This is separate from the provider endpoint profile ID." + description = "Model ID from the current Orchestrate configuration, for example gpt-6.1-sol. This is separate from the provider endpoint profile ID." )] model: Option, #[serde(default)] @@ -77,7 +77,7 @@ struct CollaborateParams { provider: String, #[serde(default)] #[schemars( - description = "Model ID from the current Orchestrate configuration, for example gpt-6-sol. This is separate from the provider endpoint profile ID." + description = "Model ID from the current Orchestrate configuration, for example gpt-6.1-sol. This is separate from the provider endpoint profile ID." )] model: Option, #[serde(default)] diff --git a/crates/runtime/src/app/tests.rs b/crates/runtime/src/app/tests.rs index f52de81a4..3e6a8bcf7 100644 --- a/crates/runtime/src/app/tests.rs +++ b/crates/runtime/src/app/tests.rs @@ -1898,7 +1898,7 @@ fn orchestrate_guidance_and_current_configuration_are_composed() { ); assert!(first.contains("### Execution models — `dispatch`")); assert!(first.contains( - "#### `codex` / `gpt-6-sol` — available `effort`: `low`, `medium`, `high`, `xhigh`, `max`" + "#### `codex` / `gpt-6.1-sol` — available `effort`: `low`, `medium`, `high`, `xhigh`, `max`" )); assert!(first.ends_with("\n\nShip it")); settings.decision_models[0].enabled = false; @@ -1950,8 +1950,8 @@ fn dispatch_validates_against_live_efforts_instead_of_bundled_fallback() { let catalogs = HashMap::from([( ProviderKind::Codex, vec![ModelSpec { - id: "gpt-6-sol".into(), - display_name: "GPT-6 Sol".into(), + id: "gpt-6.1-sol".into(), + display_name: "GPT-6.1 Sol".into(), is_default: false, options: vec![OptionDescriptor::Select { id: "reasoningEffort".into(), @@ -1981,7 +1981,7 @@ fn dispatch_validates_against_live_efforts_instead_of_bundled_fallback() { .contains("unsupported effort max") ); let configuration = render_orchestrate_configuration(&settings, None, &catalogs); - assert!(configuration.contains("`gpt-6-sol` — available `effort`: `medium`, `high`, `deep`")); + assert!(configuration.contains("`gpt-6.1-sol` — available `effort`: `medium`, `high`, `deep`")); } #[test] @@ -2002,13 +2002,13 @@ fn loaded_catalog_marks_missing_orchestrate_model_unavailable() { resolve_orchestrate_dispatch( &settings, "codex", - Some("gpt-6-sol"), + Some("gpt-6.1-sol"), Some("low"), None, &catalogs ) .unwrap_err(), - expected.replace("gpt-6-astra", "gpt-6-sol") + expected.replace("gpt-6-astra", "gpt-6.1-sol") ); assert_eq!( resolve_orchestrate_collaboration( @@ -2024,15 +2024,13 @@ fn loaded_catalog_marks_missing_orchestrate_model_unavailable() { ); let configuration = render_orchestrate_configuration(&settings, None, &catalogs); assert!(configuration.contains("#### `codex` / `gpt-6-astra` — unavailable")); - assert!(configuration.contains("#### `codex` / `gpt-6-sol` — unavailable")); + assert!(configuration.contains("#### `codex` / `gpt-6.1-sol` — unavailable")); assert!(configuration.contains( "Unavailable: model `gpt-6-astra` is not present in the loaded `codex` catalog." )); - assert!( - configuration.contains( - "Unavailable: model `gpt-6-sol` is not present in the loaded `codex` catalog." - ) - ); + assert!(configuration.contains( + "Unavailable: model `gpt-6.1-sol` is not present in the loaded `codex` catalog." + )); } #[test] @@ -2065,7 +2063,7 @@ fn collaboration_and_execution_resolve_separate_profile_lists() { resolve_orchestrate_dispatch( &settings, "codex", - Some("gpt-6-sol"), + Some("gpt-6.1-sol"), Some("low"), None, &HashMap::new() @@ -2096,14 +2094,14 @@ fn collaboration_and_execution_resolve_separate_profile_lists() { resolve_orchestrate_dispatch( &settings, "codex", - Some("gpt-6-sol"), + Some("gpt-6.1-sol"), Some("low"), None, &HashMap::new() ) .unwrap() .1, - "gpt-6-sol" + "gpt-6.1-sol" ); settings.decision_models[0].enabled = true; settings.child_models[0].enabled = false; @@ -2507,7 +2505,7 @@ fn orchestrate_dispatch_distinguishes_model_from_provider_profile() { let settings = OrchestrateSettings::default(); for (model, effort) in [ (None, Some("high")), - (Some("gpt-6-sol"), Some("high")), + (Some("gpt-6.1-sol"), Some("high")), (None, None), ] { let error = resolve_orchestrate_dispatch( @@ -2515,13 +2513,13 @@ fn orchestrate_dispatch_distinguishes_model_from_provider_profile() { "codex", model, effort, - Some("gpt-6-sol"), + Some("gpt-6.1-sol"), &HashMap::new(), ) .unwrap_err(); assert!(error.contains("no enabled profile matches")); assert!( - error.contains("model=gpt-6-sol (built-in endpoint; omit profile)"), + error.contains("model=gpt-6.1-sol (built-in endpoint; omit profile)"), "{error}" ); assert!( @@ -2533,7 +2531,7 @@ fn orchestrate_dispatch_distinguishes_model_from_provider_profile() { let resolved = resolve_orchestrate_dispatch( &settings, "codex", - Some("gpt-6-sol"), + Some("gpt-6.1-sol"), effort, None, &HashMap::new(), @@ -2551,7 +2549,7 @@ fn orchestrate_dispatch_enforces_child_allow_list_and_defaults() { resolve_orchestrate_dispatch( &settings, "codex", - Some("gpt-6-sol"), + Some("gpt-6.1-sol"), Some("low"), None, &HashMap::new() @@ -2559,7 +2557,7 @@ fn orchestrate_dispatch_enforces_child_allow_list_and_defaults() { .unwrap(), ( ProviderKind::Codex, - "gpt-6-sol".into(), + "gpt-6.1-sol".into(), Some("low".into()), false, None @@ -2570,7 +2568,7 @@ fn orchestrate_dispatch_enforces_child_allow_list_and_defaults() { resolve_orchestrate_dispatch( &settings, "codex", - Some("gpt-6-sol"), + Some("gpt-6.1-sol"), Some("medium"), Some("KIMI"), &HashMap::new() @@ -2578,7 +2576,7 @@ fn orchestrate_dispatch_enforces_child_allow_list_and_defaults() { .unwrap(), ( ProviderKind::Codex, - "gpt-6-sol".into(), + "gpt-6.1-sol".into(), Some("medium".into()), false, Some("kimi".into()), @@ -2587,7 +2585,7 @@ fn orchestrate_dispatch_enforces_child_allow_list_and_defaults() { let unknown_profile = resolve_orchestrate_dispatch( &settings, "codex", - Some("gpt-6-sol"), + Some("gpt-6.1-sol"), Some("medium"), Some("missing"), &HashMap::new(), @@ -2618,7 +2616,7 @@ fn orchestrate_dispatch_enforces_child_allow_list_and_defaults() { resolve_orchestrate_dispatch( &settings, "codex", - Some("gpt-6-sol"), + Some("gpt-6.1-sol"), Some(effort), None, &HashMap::new() @@ -2632,7 +2630,7 @@ fn orchestrate_dispatch_enforces_child_allow_list_and_defaults() { let wrong_effort = resolve_orchestrate_dispatch( &settings, "codex", - Some("gpt-6-sol"), + Some("gpt-6.1-sol"), Some("imaginary"), None, &HashMap::new(), @@ -6597,7 +6595,7 @@ fn orchestrate_dispatch_fast_override_beats_profile_setting() { .orchestrate .child_models .iter_mut() - .find(|child| child.model == "gpt-6-sol") + .find(|child| child.model == "gpt-6.1-sol") .unwrap(); model.fast = true; let mut custom = model.clone(); @@ -6642,7 +6640,7 @@ fn orchestrate_dispatch_fast_override_beats_profile_setting() { ( "codex", ProviderKind::Codex, - "gpt-6-sol", + "gpt-6.1-sol", Some("medium"), None, None, @@ -6654,7 +6652,7 @@ fn orchestrate_dispatch_fast_override_beats_profile_setting() { ( "codex", ProviderKind::Codex, - "gpt-6-sol", + "gpt-6.1-sol", Some("medium"), Some(true), None, @@ -6666,7 +6664,7 @@ fn orchestrate_dispatch_fast_override_beats_profile_setting() { ( "codex", ProviderKind::Codex, - "gpt-6-sol", + "gpt-6.1-sol", Some("max"), None, None, @@ -6678,7 +6676,7 @@ fn orchestrate_dispatch_fast_override_beats_profile_setting() { ( "codex", ProviderKind::Codex, - "gpt-6-sol", + "gpt-6.1-sol", Some("max"), Some(false), None, @@ -6687,7 +6685,7 @@ fn orchestrate_dispatch_fast_override_beats_profile_setting() { ( "codex", ProviderKind::Codex, - "gpt-6-sol", + "gpt-6.1-sol", Some("high"), Some(true), Some("work-codex"), @@ -6798,7 +6796,7 @@ fn orchestrate_dispatch_resolves_cwd_before_reply() { purpose: orchestrate_mcp::ThreadPurpose::Execution, parent_id, provider: "codex".into(), - model: Some("gpt-6-sol".into()), + model: Some("gpt-6.1-sol".into()), effort: None, profile: None, access: None, @@ -6885,7 +6883,7 @@ fn orchestrate_worktree_dispatch_resolves_child_cwd_to_worktree() { purpose: orchestrate_mcp::ThreadPurpose::Execution, parent_id, provider: "codex".into(), - model: Some("gpt-6-sol".into()), + model: Some("gpt-6.1-sol".into()), effort: None, profile: None, access: None, diff --git a/locales/en.yml b/locales/en.yml index c07623bdd..7e0bd93bf 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -416,7 +416,7 @@ orchestrate: effort_unavailable: "Collaboration unavailable until medium/high capabilities are known" children: title: "Execution models" - description: "Built-in executors: GPT-6 Sol, the default workhorse (close instruction following, reliable goal completion, computer use, lower cost), and Opus 5.5 for UI design, copywriting, creative and investigative work. Each provider/model appears once per list, including endpoint profiles, so collaboration and execution may use separate profiles for the same model. Sol starts at medium; use low for narrow edits and raise effort only when the work needs more planning or checking." + description: "Built-in executors: GPT-6.1 Sol, the default workhorse (close instruction following, reliable goal completion, computer use, lower cost), and Opus 5.5 for UI design, copywriting, creative and investigative work. Each provider/model appears once per list, including endpoint profiles, so collaboration and execution may use separate profiles for the same model. Sol starts at medium; use low for narrow edits and raise effort only when the work needs more planning or checking." add: "Add execution model" empty: "No child-model profiles are configured. /orchestrate remains available, but dispatch calls will be rejected until a child model is added." none_enabled: "Every child-model profile is switched off. /orchestrate can still plan, but all dispatch calls will be rejected." diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 43d76eaca..c7b2e93ce 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -416,7 +416,7 @@ orchestrate: effort_unavailable: "尚无 medium/high 能力信息,暂不可协作" children: title: "执行模型" - description: "内置执行模型为 GPT-6 Sol(主力执行者:指令跟随强、可靠达成目标、擅长电脑操作、成本较低)和 Opus 5.5(UI 设计、文案、创意与调研类工作)。同一提供方的同一模型在每个列表中仅保留一条,因此同一模型可分别配置协作与执行角色。Sol 默认从 medium 起步;窄范围修改用 low,仅在需要更多规划或核查时再提高。" + description: "内置执行模型为 GPT-6.1 Sol(主力执行者:指令跟随强、可靠达成目标、擅长电脑操作、成本较低)和 Opus 5.5(UI 设计、文案、创意与调研类工作)。同一提供方的同一模型在每个列表中仅保留一条,因此同一模型可分别配置协作与执行角色。Sol 默认从 medium 起步;窄范围修改用 low,仅在需要更多规划或核查时再提高。" add: "添加执行模型" empty: "目前没有配置任何子模型。/orchestrate 仍然可用,但在添加子模型前,派发调用会被拒绝。" none_enabled: "所有子模型配置都已关闭。/orchestrate 仍可进行规划,但所有派发调用都会被拒绝。"