From b1b45789063323a99beaa3d3a321bf3dbedb1b6f Mon Sep 17 00:00:00 2001 From: justsisyphus Date: Fri, 30 Jan 2026 15:10:38 +0900 Subject: [PATCH] feat: add opencode/kimi-k2.5-free fallback and prioritize kimi for atlas --- .../__snapshots__/model-fallback.test.ts.snap | 12 ++++++------ src/hooks/keyword-detector/constants.ts | 18 +++++++++++++++--- src/shared/model-requirements.ts | 15 ++++++++++----- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/cli/__snapshots__/model-fallback.test.ts.snap b/src/cli/__snapshots__/model-fallback.test.ts.snap index f0e8dc318..8b7198e04 100644 --- a/src/cli/__snapshots__/model-fallback.test.ts.snap +++ b/src/cli/__snapshots__/model-fallback.test.ts.snap @@ -618,7 +618,7 @@ exports[`generateModelConfig fallback providers uses OpenCode Zen models when on "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json", "agents": { "atlas": { - "model": "opencode/claude-sonnet-4-5", + "model": "opencode/kimi-k2.5-free", }, "explore": { "model": "opencode/claude-haiku-4-5", @@ -686,7 +686,7 @@ exports[`generateModelConfig fallback providers uses OpenCode Zen models with is "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json", "agents": { "atlas": { - "model": "opencode/claude-sonnet-4-5", + "model": "opencode/kimi-k2.5-free", }, "explore": { "model": "opencode/claude-haiku-4-5", @@ -1016,7 +1016,7 @@ exports[`generateModelConfig mixed provider scenarios uses Claude + OpenCode Zen "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json", "agents": { "atlas": { - "model": "anthropic/claude-sonnet-4-5", + "model": "opencode/kimi-k2.5-free", }, "explore": { "model": "anthropic/claude-haiku-4-5", @@ -1289,7 +1289,7 @@ exports[`generateModelConfig mixed provider scenarios uses all fallback provider "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json", "agents": { "atlas": { - "model": "github-copilot/claude-sonnet-4.5", + "model": "opencode/kimi-k2.5-free", }, "explore": { "model": "opencode/claude-haiku-4-5", @@ -1357,7 +1357,7 @@ exports[`generateModelConfig mixed provider scenarios uses all providers togethe "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json", "agents": { "atlas": { - "model": "anthropic/claude-sonnet-4-5", + "model": "opencode/kimi-k2.5-free", }, "explore": { "model": "anthropic/claude-haiku-4-5", @@ -1425,7 +1425,7 @@ exports[`generateModelConfig mixed provider scenarios uses all providers with is "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json", "agents": { "atlas": { - "model": "anthropic/claude-sonnet-4-5", + "model": "opencode/kimi-k2.5-free", }, "explore": { "model": "anthropic/claude-haiku-4-5", diff --git a/src/hooks/keyword-detector/constants.ts b/src/hooks/keyword-detector/constants.ts index e207adee2..d503c05cf 100644 --- a/src/hooks/keyword-detector/constants.ts +++ b/src/hooks/keyword-detector/constants.ts @@ -180,7 +180,11 @@ ${ULTRAWORK_PLANNER_SECTION} 1. **THINK DEEPLY** - What is the user's TRUE intent? What problem are they REALLY trying to solve? 2. **EXPLORE THOROUGHLY** - Fire explore/librarian agents to gather ALL relevant context -3. **CONSULT ORACLE** - For architecture decisions, complex logic, or when you're stuck +3. **CONSULT SPECIALISTS** - DO NOT struggle alone. Delegate to the right specialist: + | Problem Type | Delegate To | When | + |--------------|-------------|------| + | **Oracle** | Architecture, debugging, conventional complex logic | Structured problems with established patterns | + | **Artistry** | Unconventional solutions, creative workarounds, "make it work somehow" | When standard approaches don't fit, need novel solutions | 4. **ASK THE USER** - If ambiguity remains after exploration, ASK. Don't guess. **SIGNS YOU ARE NOT READY TO IMPLEMENT:** @@ -194,7 +198,12 @@ ${ULTRAWORK_PLANNER_SECTION} \`\`\` delegate_task(agent="explore", prompt="Find [X] patterns in codebase", background=true) delegate_task(agent="librarian", prompt="Find docs/examples for [Y]", background=true) + +// For structured/conventional problems: delegate_task(agent="oracle", prompt="Review my approach: [describe plan]") + +// For unconventional/creative solutions needed: +delegate_task(category="artistry", prompt="Find creative solution for: [describe problem that standard patterns don't solve]") \`\`\` **ONLY AFTER YOU HAVE:** @@ -229,7 +238,9 @@ delegate_task(agent="oracle", prompt="Review my approach: [describe plan]") **IF YOU ENCOUNTER A BLOCKER:** 1. **DO NOT** give up 2. **DO NOT** deliver a compromised version -3. **DO** consult oracle for solutions +3. **DO** consult specialists: + - **Oracle**: For conventional architecture/debugging problems + - **Artistry**: For unconventional problems requiring creative workarounds 4. **DO** ask the user for guidance 5. **DO** explore alternative approaches @@ -298,7 +309,8 @@ delegate_task(session_id="ses_abc123", prompt="Here's my answer to your question | Codebase exploration | delegate_task(subagent_type="explore", run_in_background=true) | Parallel, context-efficient | | Documentation lookup | delegate_task(subagent_type="librarian", run_in_background=true) | Specialized knowledge | | Planning | delegate_task(subagent_type="plan") | Parallel task graph + structured TODO list | -| Architecture/Debugging | delegate_task(subagent_type="oracle") | High-IQ reasoning | +| Architecture/Debugging (conventional) | delegate_task(subagent_type="oracle") | High-IQ reasoning for structured problems | +| Creative/Unconventional solutions | delegate_task(category="artistry", load_skills=[...]) | Novel approaches beyond standard patterns | | Implementation | delegate_task(category="...", load_skills=[...]) | Domain-optimized models | **CATEGORY + SKILL DELEGATION:** diff --git a/src/shared/model-requirements.ts b/src/shared/model-requirements.ts index 6b2cb2e73..ff24c16a0 100644 --- a/src/shared/model-requirements.ts +++ b/src/shared/model-requirements.ts @@ -13,7 +13,8 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { sisyphus: { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" }, - { providers: ["kimi-for-coding", "opencode"], model: "k2p5" }, + { providers: ["kimi-for-coding"], model: "k2p5" }, + { providers: ["opencode"], model: "kimi-k2.5-free" }, { providers: ["zai-coding-plan"], model: "glm-4.7" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2-codex", variant: "medium" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" }, @@ -45,7 +46,8 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, { providers: ["zai-coding-plan"], model: "glm-4.6v" }, - { providers: ["kimi-for-coding", "opencode"], model: "k2p5" }, + { providers: ["kimi-for-coding"], model: "k2p5" }, + { providers: ["opencode"], model: "kimi-k2.5-free" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-haiku-4-5" }, { providers: ["opencode"], model: "gpt-5-nano" }, ], @@ -53,7 +55,8 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { prometheus: { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" }, - { providers: ["kimi-for-coding", "opencode"], model: "k2p5" }, + { providers: ["kimi-for-coding"], model: "k2p5" }, + { providers: ["opencode"], model: "kimi-k2.5-free" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" }, ], @@ -61,7 +64,8 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { metis: { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" }, - { providers: ["kimi-for-coding", "opencode"], model: "k2p5" }, + { providers: ["kimi-for-coding"], model: "k2p5" }, + { providers: ["opencode"], model: "kimi-k2.5-free" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" }, ], @@ -75,8 +79,9 @@ export const AGENT_MODEL_REQUIREMENTS: Record = { }, atlas: { fallbackChain: [ - { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" }, { providers: ["kimi-for-coding"], model: "k2p5" }, + { providers: ["opencode"], model: "kimi-k2.5-free" }, + { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" }, ],