From 968fb269c9c590ebc8b8886087a91e2fa5f04796 Mon Sep 17 00:00:00 2001 From: "linzhanyu.lenovo" Date: Sun, 21 Jun 2026 23:20:44 +0800 Subject: [PATCH 1/2] feat(agents): add buildGenericSisyphusAgentConfig for unknown models Add generic fallback config builder for high-performance instruction-following models (Gemma4, Qwen3.6, etc.) that don't match specific vendor patterns. This ensures ANY unrecognized model name gets a valid orchestrator config with proper prompt, permissions, and description instead of crashing with UnknownError during session message creation. --- .../omo-opencode/src/agents/sisyphus-agent-config.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/omo-opencode/src/agents/sisyphus-agent-config.ts b/packages/omo-opencode/src/agents/sisyphus-agent-config.ts index c570f8397af..66008e22e1d 100644 --- a/packages/omo-opencode/src/agents/sisyphus-agent-config.ts +++ b/packages/omo-opencode/src/agents/sisyphus-agent-config.ts @@ -59,3 +59,15 @@ export function buildClaudeSisyphusAgentConfig( ...buildClaudeThinkingConfig(model), }; } + +/** + * Generic fallback config for high-performance instruction-following models + * (e.g., Gemma4, Qwen3.6 via llama.cpp) that don't match specific vendor patterns. + */ +export function buildGenericSisyphusAgentConfig( + mode: AgentMode, + model: string, + prompt: string, +): AgentConfig { + return buildBaseSisyphusAgentConfig(mode, model, prompt); +} From 2afc1c234f97e8d2f9e2728e002613092df09ac6 Mon Sep 17 00:00:00 2001 From: "linzhanyu.lenovo" Date: Sun, 21 Jun 2026 23:21:13 +0800 Subject: [PATCH 2/2] fix(agents): use generic fallback for unrecognized models in sisyphus factory Replace the old isGptModel/isClaudeModel fallback chain with a single buildGenericSisyphusAgentConfig call for all unrecognized models. Before: unknown models would fall through to isGptModel check, which could produce incorrect config (e.g., reasoningEffort for non-GPT models) After: all unknown models get a clean generic config with proper prompt Fixes UnknownError crashes when using local llama.cpp models like super.llama.swap/gemma4-26b, super.llama.swap/qwen3.6-27b, etc. --- .../src/agents/sisyphus-agent-factory.ts | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/packages/omo-opencode/src/agents/sisyphus-agent-factory.ts b/packages/omo-opencode/src/agents/sisyphus-agent-factory.ts index dddc27e3970..5527fc655af 100644 --- a/packages/omo-opencode/src/agents/sisyphus-agent-factory.ts +++ b/packages/omo-opencode/src/agents/sisyphus-agent-factory.ts @@ -9,6 +9,7 @@ import { buildClaudeSisyphusAgentConfig, buildGlmSisyphusAgentConfig, buildGptSisyphusAgentConfig, + buildGenericSisyphusAgentConfig, } from "./sisyphus-agent-config"; import { buildFallbackSisyphusPrompt } from "./sisyphus-dynamic-prompt"; import { buildClaudeFable5SisyphusPrompt } from "./sisyphus/claude-fable-5"; @@ -26,7 +27,6 @@ import { isClaudeOpus48Model, isGlmModel, isGpt5_5Model, - isGptModel, isGptNativeSisyphusModel, isKimiK2Model, isKimiK27Model, @@ -126,19 +126,15 @@ export function createSisyphusAgent( model, buildGlm52SisyphusPrompt(model, agents, tools, skills, categories, useTaskSystem), ); - case "fallback": { - const prompt = buildFallbackSisyphusPrompt( + case "fallback": + // For all unrecognized models (e.g., local llama.cpp via Gemma4/Qwen), + // use generic config instead of forcing GPT/Claude-specific behavior. + return buildGenericSisyphusAgentConfig( + MODE, model, - agents, - tools, - skills, - categories, - useTaskSystem, + buildFallbackSisyphusPrompt(model, agents, tools, skills, categories, useTaskSystem), ); - return isGptModel(model) - ? buildGptSisyphusAgentConfig(MODE, model, prompt) - : buildClaudeSisyphusAgentConfig(MODE, model, prompt); - } } } + createSisyphusAgent.mode = MODE;