Merge pull request #3595 from samuele-ruffino96/feature/opencode-go-model-upgrade

feat(opencode-go): upgrade to GLM 5.1 and Kimi K2.6 models and change non-existent minimax-m2.7-highspeed
This commit is contained in:
YeonGyu-Kim
2026-05-06 16:59:34 +09:00
committed by GitHub
21 changed files with 206 additions and 163 deletions
+3 -3
View File
@@ -167,17 +167,17 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
<td align="center"><img src=".github/assets/hephaestus.png" height="300" /></td> <td align="center"><img src=".github/assets/hephaestus.png" height="300" /></td>
</tr></table> </tr></table>
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.5`** / **`glm-5`**) はあなたのメインオーケストレーターです。計画を立て、専門家に委任し、攻撃的な並列実行でタスクを完了まで推進します。途中で投げ出すことはありません。 **Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) はあなたのメインオーケストレーターです。計画を立て、専門家に委任し、攻撃的な並列実行でタスクを完了まで推進します。途中で投げ出すことはありません。
**Hephaestus** (`gpt-5.4`) はあなたの自律的なディープワーカーです。レシピではなく、目標を与えてください。手取り足取り教えなくても、コードベースを探索し、パターンを調査し、エンドツーエンドで実行します。*正当なる職人 (The Legitimate Craftsman).* **Hephaestus** (`gpt-5.4`) はあなたの自律的なディープワーカーです。レシピではなく、目標を与えてください。手取り足取り教えなくても、コードベースを探索し、パターンを調査し、エンドツーエンドで実行します。*正当なる職人 (The Legitimate Craftsman).*
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.5`** / **`glm-5`**) はあなたの戦略プランナーです。インタビューモードで質問を投げ、スコープを特定し、コードに一行触れる前に詳細な計画を構築します。 **Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) はあなたの戦略プランナーです。インタビューモードで質問を投げ、スコープを特定し、コードに一行触れる前に詳細な計画を構築します。
すべてのエージェントは、それぞれのモデルの強みに合わせてチューニングされています。手動でモデルを切り替える必要はありません。[詳しくはこちら →](docs/guide/overview.md) すべてのエージェントは、それぞれのモデルの強みに合わせてチューニングされています。手動でモデルを切り替える必要はありません。[詳しくはこちら →](docs/guide/overview.md)
> Anthropic が [私たちのせいで OpenCode をブロックしました。](https://x.com/thdxr/status/2010149530486911014) だからこそ Hephaestus は「正当なる職人 (The Legitimate Craftsman)」と呼ばれているのです。皮肉を込めています。 > Anthropic が [私たちのせいで OpenCode をブロックしました。](https://x.com/thdxr/status/2010149530486911014) だからこそ Hephaestus は「正当なる職人 (The Legitimate Craftsman)」と呼ばれているのです。皮肉を込めています。
> >
> Opus で最もよく動きますが、Kimi K2.5 + GPT-5.4 の組み合わせだけでも、バニラの Claude Code を軽く凌駕します。設定は一切不要です。 > Opus で最もよく動きますが、Kimi K2.6 + GPT-5.4 の組み合わせだけでも、バニラの Claude Code を軽く凌駕します。設定は一切不要です。
### エージェントのオーケストレーション ### エージェントのオーケストレーション
+3 -3
View File
@@ -168,17 +168,17 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
<td align="center"><img src=".github/assets/hephaestus.png" height="300" /></td> <td align="center"><img src=".github/assets/hephaestus.png" height="300" /></td>
</tr></table> </tr></table>
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.5`** / **`glm-5`**)는 메인 오케스트레이터입니다. 계획을 세우고, 전문가에게 위임하고, 공격적인 병렬 실행으로 작업을 끝까지 밀어붙입니다. 중간에 멈추지 않습니다. **Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**)는 메인 오케스트레이터입니다. 계획을 세우고, 전문가에게 위임하고, 공격적인 병렬 실행으로 작업을 끝까지 밀어붙입니다. 중간에 멈추지 않습니다.
**Hephaestus** (`gpt-5.4`)는 자율적으로 깊게 파는 작업자입니다. 레시피가 아니라 목표를 주세요. 코드베이스를 탐색하고, 패턴을 조사하고, 손을 잡아주지 않아도 엔드투엔드로 실행합니다. *The Legitimate Craftsman.* **Hephaestus** (`gpt-5.4`)는 자율적으로 깊게 파는 작업자입니다. 레시피가 아니라 목표를 주세요. 코드베이스를 탐색하고, 패턴을 조사하고, 손을 잡아주지 않아도 엔드투엔드로 실행합니다. *The Legitimate Craftsman.*
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.5`** / **`glm-5`**)는 전략 플래너입니다. 인터뷰 모드: 질문으로 스코프를 파악하고, 코드에 손대기 전에 상세한 계획을 만듭니다. **Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**)는 전략 플래너입니다. 인터뷰 모드: 질문으로 스코프를 파악하고, 코드에 손대기 전에 상세한 계획을 만듭니다.
모든 에이전트는 자기 모델의 강점에 맞춰 튜닝되어 있습니다. 수동으로 모델을 돌려가며 쓸 필요가 없습니다. [더 알아보기 →](docs/guide/overview.md) 모든 에이전트는 자기 모델의 강점에 맞춰 튜닝되어 있습니다. 수동으로 모델을 돌려가며 쓸 필요가 없습니다. [더 알아보기 →](docs/guide/overview.md)
> Anthropic은 [우리 때문에 OpenCode를 차단했습니다.](https://x.com/thdxr/status/2010149530486911014) 그래서 Hephaestus에게 "The Legitimate Craftsman"이라는 별명이 붙었습니다. 의도된 아이러니입니다. > Anthropic은 [우리 때문에 OpenCode를 차단했습니다.](https://x.com/thdxr/status/2010149530486911014) 그래서 Hephaestus에게 "The Legitimate Craftsman"이라는 별명이 붙었습니다. 의도된 아이러니입니다.
> >
> Opus에서 가장 잘 돌지만, Kimi K2.5 + GPT-5.4 조합만으로도 이미 바닐라 Claude Code를 이깁니다. 별도 설정 없이요. > Opus에서 가장 잘 돌지만, Kimi K2.6 + GPT-5.4 조합만으로도 이미 바닐라 Claude Code를 이깁니다. 별도 설정 없이요.
### Agent Orchestration ### Agent Orchestration
+3 -3
View File
@@ -168,17 +168,17 @@ Even with only the following subscriptions, `ultrawork` works well (this project
<td align="center"><img src=".github/assets/hephaestus.png" height="300" /></td> <td align="center"><img src=".github/assets/hephaestus.png" height="300" /></td>
</tr></table> </tr></table>
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.5`** / **`glm-5`** ) is your main orchestrator. He plans, delegates to specialists, and drives tasks to completion with aggressive parallel execution. He does not stop halfway. **Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`** ) is your main orchestrator. He plans, delegates to specialists, and drives tasks to completion with aggressive parallel execution. He does not stop halfway.
**Hephaestus** (`gpt-5.4`) is your autonomous deep worker. Give him a goal, not a recipe. He explores the codebase, researches patterns, and executes end-to-end without hand-holding. *The Legitimate Craftsman.* **Hephaestus** (`gpt-5.4`) is your autonomous deep worker. Give him a goal, not a recipe. He explores the codebase, researches patterns, and executes end-to-end without hand-holding. *The Legitimate Craftsman.*
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.5`** / **`glm-5`** ) is your strategic planner. Interview mode: he asks questions, identifies scope, and builds a detailed plan before a single line of code is touched. **Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`** ) is your strategic planner. Interview mode: he asks questions, identifies scope, and builds a detailed plan before a single line of code is touched.
Every agent is tuned to its model's specific strengths. No manual model juggling. [Learn more →](docs/guide/overview.md) Every agent is tuned to its model's specific strengths. No manual model juggling. [Learn more →](docs/guide/overview.md)
> Anthropic [blocked OpenCode because of us.](https://x.com/thdxr/status/2010149530486911014) That's why Hephaestus is called "The Legitimate Craftsman." The irony is intentional. > Anthropic [blocked OpenCode because of us.](https://x.com/thdxr/status/2010149530486911014) That's why Hephaestus is called "The Legitimate Craftsman." The irony is intentional.
> >
> We run best on Opus, but Kimi K2.5 + GPT-5.4 already beats vanilla Claude Code. Zero config needed. > We run best on Opus, but Kimi K2.6 + GPT-5.4 already beats vanilla Claude Code. Zero config needed.
### Agent Orchestration ### Agent Orchestration
+3 -3
View File
@@ -167,17 +167,17 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
<td align="center"><img src=".github/assets/hephaestus.png" height="300" /></td> <td align="center"><img src=".github/assets/hephaestus.png" height="300" /></td>
</tr></table> </tr></table>
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.5`** / **`glm-5`**) — главный оркестратор. Он планирует, делегирует задачи специалистам и доводит их до завершения с агрессивным параллельным выполнением. Он не останавливается на полпути. **Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) — главный оркестратор. Он планирует, делегирует задачи специалистам и доводит их до завершения с агрессивным параллельным выполнением. Он не останавливается на полпути.
**Hephaestus** (`gpt-5.4`) — автономный глубокий исполнитель. Дайте ему цель, а не рецепт. Он исследует кодовую базу, изучает паттерны и выполняет задачи сквозным образом без лишних подсказок. *Законный Мастер.* **Hephaestus** (`gpt-5.4`) — автономный глубокий исполнитель. Дайте ему цель, а не рецепт. Он исследует кодовую базу, изучает паттерны и выполняет задачи сквозным образом без лишних подсказок. *Законный Мастер.*
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.5`** / **`glm-5`**) — стратегический планировщик. Режим интервью: он задаёт вопросы, определяет объём работ и формирует детальный план до того, как написана хотя бы одна строка кода. **Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) — стратегический планировщик. Режим интервью: он задаёт вопросы, определяет объём работ и формирует детальный план до того, как написана хотя бы одна строка кода.
Каждый агент настроен под сильные стороны своей модели. Никакого ручного переключения между моделями. [Подробнее →](docs/guide/overview.md) Каждый агент настроен под сильные стороны своей модели. Никакого ручного переключения между моделями. [Подробнее →](docs/guide/overview.md)
> Anthropic [заблокировал OpenCode из-за нас.](https://x.com/thdxr/status/2010149530486911014) Именно поэтому Hephaestus зовётся «Законным Мастером». Ирония намеренная. > Anthropic [заблокировал OpenCode из-за нас.](https://x.com/thdxr/status/2010149530486911014) Именно поэтому Hephaestus зовётся «Законным Мастером». Ирония намеренная.
> >
> Мы работаем лучше всего на Opus, но Kimi K2.5 + GPT-5.4 уже превосходят ванильный Claude Code. Никакой настройки не требуется. > Мы работаем лучше всего на Opus, но Kimi K2.6 + GPT-5.4 уже превосходят ванильный Claude Code. Никакой настройки не требуется.
### Оркестрация агентов ### Оркестрация агентов
+2 -2
View File
@@ -167,11 +167,11 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
<td align="center"><img src=".github/assets/hephaestus.png" height="300" /></td> <td align="center"><img src=".github/assets/hephaestus.png" height="300" /></td>
</tr></table> </tr></table>
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.5`** / **`glm-5`**) 是你的主指挥官。他负责制定计划、分配任务给专家团队,并以极其激进的并行策略推动任务直至完成。他从不半途而废。 **Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) 是你的主指挥官。他负责制定计划、分配任务给专家团队,并以极其激进的并行策略推动任务直至完成。他从不半途而废。
**Hephaestus** (`gpt-5.4`) 是你的自主深度工作者。你只需要给他目标,不要给他具体做法。他会自动探索代码库模式,从头到尾独立执行任务,绝不会中途要你当保姆。*名副其实的正牌工匠。* **Hephaestus** (`gpt-5.4`) 是你的自主深度工作者。你只需要给他目标,不要给他具体做法。他会自动探索代码库模式,从头到尾独立执行任务,绝不会中途要你当保姆。*名副其实的正牌工匠。*
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.5`** / **`glm-5`**) 是你的战略规划师。他通过访谈模式,在动一行代码之前,先通过提问确定范围并构建详尽的执行计划。 **Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) 是你的战略规划师。他通过访谈模式,在动一行代码之前,先通过提问确定范围并构建详尽的执行计划。
每一个 Agent 都针对其底层模型的特点进行了专门调优。你无需手动来回切换模型。[阅读背景设定了解更多 →](docs/guide/overview.md) 每一个 Agent 都针对其底层模型的特点进行了专门调优。你无需手动来回切换模型。[阅读背景设定了解更多 →](docs/guide/overview.md)
+29 -29
View File
@@ -204,8 +204,8 @@ These agents have Claude-optimized prompts — long, detailed, mechanics-driven.
| Agent | Role | Fallback Chain | | Agent | Role | Fallback Chain |
|---|---|---| |---|---|---|
| **Sisyphus** | Main orchestrator | `anthropic\|github-copilot\|opencode\|vercel/claude-opus-4-7` (max) → `opencode-go\|vercel/kimi-k2.5``kimi-for-coding/k2p5``opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix\|vercel/kimi-k2.5``openai\|github-copilot\|opencode\|vercel/gpt-5.5` (medium) → `zai-coding-plan\|opencode\|vercel/glm-5``opencode/big-pickle` | | **Sisyphus** | Main orchestrator | `anthropic\|github-copilot\|opencode\|vercel/claude-opus-4-7` (max) → `opencode-go\|vercel/kimi-k2.6``kimi-for-coding/k2p5``opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix\|vercel/kimi-k2.5``openai\|github-copilot\|opencode\|vercel/gpt-5.5` (medium) → `zai-coding-plan\|opencode\|vercel/glm-5``opencode/big-pickle` |
| **Metis** | Plan gap analyzer | `anthropic\|github-copilot\|opencode\|vercel/claude-opus-4-7` (max) → `openai\|github-copilot\|opencode\|vercel/gpt-5.5` (high) → `opencode-go\|vercel/glm-5``kimi-for-coding/k2p5` | | **Metis** | Plan gap analyzer | `anthropic\|github-copilot\|opencode\|vercel/claude-opus-4-7` (max) → `openai\|github-copilot\|opencode\|vercel/gpt-5.5` (high) → `opencode-go\|vercel/glm-5.1``kimi-for-coding/k2p5` |
### Dual-Prompt Agents → Claude preferred, GPT supported ### Dual-Prompt Agents → Claude preferred, GPT supported
@@ -213,8 +213,8 @@ These agents ship separate prompts for Claude and GPT families. They auto-detect
| Agent | Role | Fallback Chain | | Agent | Role | Fallback Chain |
|---|---|---| |---|---|---|
| **Prometheus** | Strategic planner | `anthropic\|github-copilot\|opencode\|vercel/claude-opus-4-7` (max) → `openai\|github-copilot\|opencode\|vercel/gpt-5.5` (high) → `opencode-go\|vercel/glm-5``google\|github-copilot\|opencode\|vercel/gemini-3.1-pro` | | **Prometheus** | Strategic planner | `anthropic\|github-copilot\|opencode\|vercel/claude-opus-4-7` (max) → `openai\|github-copilot\|opencode\|vercel/gpt-5.5` (high) → `opencode-go\|vercel/glm-5.1``google\|github-copilot\|opencode\|vercel/gemini-3.1-pro` |
| **Atlas** | Todo orchestrator | `anthropic\|github-copilot\|opencode\|vercel/claude-sonnet-4-6``opencode-go\|vercel/kimi-k2.5``openai\|github-copilot\|opencode\|vercel/gpt-5.5` (medium) → `opencode-go\|vercel/minimax-m2.7` | | **Atlas** | Todo orchestrator | `anthropic\|github-copilot\|opencode\|vercel/claude-sonnet-4-6``opencode-go\|vercel/kimi-k2.6``openai\|github-copilot\|opencode\|vercel/gpt-5.5` (medium) → `opencode-go\|vercel/minimax-m2.7` |
### Deep Specialists → GPT ### Deep Specialists → GPT
@@ -223,8 +223,8 @@ These agents are built for GPT's principle-driven style. Their prompts assume au
| Agent | Role | Fallback Chain | | Agent | Role | Fallback Chain |
|---|---|---| |---|---|---|
| **Hephaestus** | Autonomous deep worker | `openai\|github-copilot\|venice\|opencode\|vercel/gpt-5.5` (medium) — single-entry chain, requires one of those providers. The craftsman. | | **Hephaestus** | Autonomous deep worker | `openai\|github-copilot\|venice\|opencode\|vercel/gpt-5.5` (medium) — single-entry chain, requires one of those providers. The craftsman. |
| **Oracle** | Architecture consultant | `openai\|github-copilot\|opencode\|vercel/gpt-5.5` (high) → `google\|github-copilot\|opencode\|vercel/gemini-3.1-pro` (high) → `anthropic\|github-copilot\|opencode\|vercel/claude-opus-4-7` (max) → `opencode-go\|vercel/glm-5` | | **Oracle** | Architecture consultant | `openai\|github-copilot\|opencode\|vercel/gpt-5.5` (high) → `google\|github-copilot\|opencode\|vercel/gemini-3.1-pro` (high) → `anthropic\|github-copilot\|opencode\|vercel/claude-opus-4-7` (max) → `opencode-go\|vercel/glm-5.1` |
| **Momus** | Ruthless reviewer | `openai\|github-copilot\|opencode\|vercel/gpt-5.5` (xhigh) → `anthropic\|github-copilot\|opencode\|vercel/claude-opus-4-7` (max) → `google\|github-copilot\|opencode\|vercel/gemini-3.1-pro` (high) → `opencode-go\|vercel/glm-5` | | **Momus** | Ruthless reviewer | `openai\|github-copilot\|opencode\|vercel/gpt-5.5` (xhigh) → `anthropic\|github-copilot\|opencode\|vercel/claude-opus-4-7` (max) → `google\|github-copilot\|opencode\|vercel/gemini-3.1-pro` (high) → `opencode-go\|vercel/glm-5.1` |
### Utility Runners → Speed over Intelligence ### Utility Runners → Speed over Intelligence
@@ -232,10 +232,10 @@ These agents do grep, search, and retrieval. They intentionally use the fastest,
| Agent | Role | Fallback Chain | | Agent | Role | Fallback Chain |
|---|---|---| |---|---|---|
| **Explore** | Fast codebase grep | `openai/gpt-5.4-mini-fast``opencode-go\|vercel/minimax-m2.7-highspeed``opencode-go\|vercel/minimax-m2.7``anthropic\|opencode\|vercel/claude-haiku-4-5``openai\|opencode\|vercel/gpt-5.4-nano` | | **Explore** | Fast codebase grep | `openai/gpt-5.4-mini-fast``opencode-go/qwen3.5-plus``vercel/minimax-m2.7-highspeed``opencode-go\|vercel/minimax-m2.7``anthropic\|opencode\|vercel/claude-haiku-4-5``openai\|opencode\|vercel/gpt-5.4-nano` |
| **Librarian** | Docs/code search | same as Explore | | **Librarian** | Docs/code search | same as Explore |
| **Multimodal Looker** | Vision/screenshots | `openai\|opencode\|vercel/gpt-5.5` (medium) → `opencode-go\|vercel/kimi-k2.5``zai-coding-plan\|vercel/glm-4.6v``openai\|github-copilot\|opencode\|vercel/gpt-5-nano` | | **Multimodal Looker** | Vision/screenshots | `openai\|opencode\|vercel/gpt-5.5` (medium) → `opencode-go\|vercel/kimi-k2.6``zai-coding-plan\|vercel/glm-4.6v``openai\|github-copilot\|opencode\|vercel/gpt-5-nano` |
| **Sisyphus-Junior** | Category executor | `anthropic\|github-copilot\|opencode\|vercel/claude-sonnet-4-6``opencode-go\|vercel/kimi-k2.5``openai\|github-copilot\|opencode\|vercel/gpt-5.5` (medium) → `opencode-go\|vercel/minimax-m2.7``opencode/big-pickle` | | **Sisyphus-Junior** | Category executor | `anthropic\|github-copilot\|opencode\|vercel/claude-sonnet-4-6``opencode-go\|vercel/kimi-k2.6``openai\|github-copilot\|opencode\|vercel/gpt-5.5` (medium) → `opencode-go\|vercel/minimax-m2.7``opencode/big-pickle` |
--- ---
@@ -282,10 +282,10 @@ A premium subscription tier ($10/month) that provides reliable access to Chinese
| Model | Use Case | | Model | Use Case |
| ------------------------ | --------------------------------------------------------------------- | | ------------------------ | --------------------------------------------------------------------- |
| **opencode-go/kimi-k2.5** | Vision-capable, Claude-like reasoning. Used by Sisyphus, Atlas, Sisyphus-Junior, Multimodal Looker. | | **opencode-go/kimi-k2.6** | Vision-capable, Claude-like reasoning. Used by Sisyphus, Atlas, Sisyphus-Junior, Multimodal Looker. |
| **opencode-go/glm-5** | Text-only orchestration model. Used by Oracle, Prometheus, Metis, Momus. | | **opencode-go/glm-5.1** | Text-only orchestration model. Used by Oracle, Prometheus, Metis, Momus. |
| **opencode-go/minimax-m2.7** | Ultra-cheap, fast responses. Used by Atlas, Sisyphus-Junior, Explore and Librarian fallbacks for utility work. | | **opencode-go/minimax-m2.7** | Ultra-cheap, fast responses. Used by Atlas, Sisyphus-Junior, Explore and Librarian fallbacks for utility work. |
| **opencode-go/minimax-m2.7-highspeed** | Even faster OpenCode Go MiniMax entry used as a secondary fallback for Explore and Librarian when GPT-5.4 Mini Fast is unavailable. | | **opencode-go/qwen3.5-plus** | Qwen coding model used as the first OpenCode Go utility fallback for Explore and Librarian when GPT-5.4 Mini Fast is unavailable. |
**When It Gets Used:** **When It Gets Used:**
@@ -309,14 +309,14 @@ When agents delegate work, they don't pick a model name — they pick a **catego
| Category | Used For | Default Model | Fallback Chain | | Category | Used For | Default Model | Fallback Chain |
|---|---|---|---| |---|---|---|---|
| `visual-engineering` | Frontend, UI, CSS, design | `google/gemini-3.1-pro` (high) | Gemini → `zai-coding-plan/glm-5``claude-opus-4-7` (max) → `opencode-go/glm-5``kimi-for-coding/k2p5` | | `visual-engineering` | Frontend, UI, CSS, design | `google/gemini-3.1-pro` (high) | Gemini → `zai-coding-plan/glm-5``claude-opus-4-7` (max) → `opencode-go/glm-5.1``kimi-for-coding/k2p5` |
| `artistry` | Creative, novel approaches | `google/gemini-3.1-pro` (high) | Gemini → `claude-opus-4-7` (max) → `gpt-5.5` — requires Gemini family to activate | | `artistry` | Creative, novel approaches | `google/gemini-3.1-pro` (high) | Gemini → `claude-opus-4-7` (max) → `gpt-5.5` — requires Gemini family to activate |
| `ultrabrain` | Maximum reasoning needed | `openai/gpt-5.5` (xhigh) | GPT-5.5 xhigh → `gemini-3.1-pro` (high) → `claude-opus-4-7` (max) → `opencode-go/glm-5` | | `ultrabrain` | Maximum reasoning needed | `openai/gpt-5.5` (xhigh) | GPT-5.5 xhigh → `gemini-3.1-pro` (high) → `claude-opus-4-7` (max) → `opencode-go/glm-5.1` |
| `deep` | Deep coding, complex logic | `openai/gpt-5.5` (medium) | GPT-5.5 → `claude-opus-4-7` (max) → `gemini-3.1-pro` (high) | | `deep` | Deep coding, complex logic | `openai/gpt-5.5` (medium) | GPT-5.5 → `claude-opus-4-7` (max) → `gemini-3.1-pro` (high) |
| `quick` | Simple, fast tasks | `openai/gpt-5.4-mini` | GPT-5.4-mini → `claude-haiku-4-5``gemini-3-flash``opencode-go/minimax-m2.7``opencode/gpt-5-nano` | | `quick` | Simple, fast tasks | `openai/gpt-5.4-mini` | GPT-5.4-mini → `claude-haiku-4-5``gemini-3-flash``opencode-go/minimax-m2.7``opencode/gpt-5-nano` |
| `unspecified-high` | General complex work | `anthropic/claude-opus-4-7` (max) | Opus → `gpt-5.5` (high) → `zai-coding-plan/glm-5``kimi-for-coding/k2p5``opencode-go/glm-5``opencode/kimi-k2.5``moonshotai/kimi-k2.5` | | `unspecified-high` | General complex work | `anthropic/claude-opus-4-7` (max) | Opus → `gpt-5.5` (high) → `zai-coding-plan/glm-5``kimi-for-coding/k2p5``opencode-go/glm-5.1``opencode/kimi-k2.5``moonshotai/kimi-k2.5` |
| `unspecified-low` | General standard work | `anthropic/claude-sonnet-4-6` | Sonnet → `gpt-5.3-codex` (medium) → `opencode-go/kimi-k2.5``google/gemini-3-flash``opencode-go/minimax-m2.7` | | `unspecified-low` | General standard work | `anthropic/claude-sonnet-4-6` | Sonnet → `gpt-5.3-codex` (medium) → `opencode-go/kimi-k2.6``google/gemini-3-flash``opencode-go/minimax-m2.7` |
| `writing` | Text, docs, prose | `kimi-for-coding/k2p5` | Kimi → `gemini-3-flash``opencode-go/kimi-k2.5``claude-sonnet-4-6``opencode-go/minimax-m2.7` | | `writing` | Text, docs, prose | `kimi-for-coding/k2p5` | Kimi → `gemini-3-flash``opencode-go/kimi-k2.6``claude-sonnet-4-6``opencode-go/minimax-m2.7` |
See the [Orchestration System Guide](./orchestration.md) for how agents dispatch tasks to categories. See the [Orchestration System Guide](./orchestration.md) for how agents dispatch tasks to categories.
@@ -351,11 +351,11 @@ See the [Orchestration System Guide](./orchestration.md) for how agents dispatch
"prometheus": { "model": "opencode-go/kimi-k2.6" }, "prometheus": { "model": "opencode-go/kimi-k2.6" },
// Atlas also communicative — Kimi works great // Atlas also communicative — Kimi works great
"atlas": { "model": "opencode-go/kimi-k2.5" }, "atlas": { "model": "opencode-go/kimi-k2.6" },
// Utility agents stay cheap // Utility agents stay cheap
"explore": { "model": "opencode-go/minimax-m2.7-highspeed" }, "explore": { "model": "opencode-go/qwen3.5-plus" },
"librarian": { "model": "opencode-go/minimax-m2.7-highspeed" }, "librarian": { "model": "opencode-go/qwen3.5-plus" },
}, },
"categories": { "categories": {
@@ -363,9 +363,9 @@ See the [Orchestration System Guide](./orchestration.md) for how agents dispatch
"deep": { "model": "openai/gpt-5.5", "variant": "medium" }, "deep": { "model": "openai/gpt-5.5", "variant": "medium" },
"ultrabrain": { "model": "openai/gpt-5.5", "variant": "xhigh" }, "ultrabrain": { "model": "openai/gpt-5.5", "variant": "xhigh" },
"quick": { "model": "openai/gpt-5.4-mini" }, "quick": { "model": "openai/gpt-5.4-mini" },
"unspecified-low": { "model": "opencode-go/kimi-k2.5" }, "unspecified-low": { "model": "opencode-go/kimi-k2.6" },
"unspecified-high": { "model": "opencode-go/kimi-k2.6" }, "unspecified-high": { "model": "opencode-go/kimi-k2.6" },
"writing": { "model": "opencode-go/kimi-k2.5" }, "writing": { "model": "opencode-go/kimi-k2.6" },
}, },
"background_task": { "background_task": {
@@ -407,19 +407,19 @@ Cheapest full-stack path. Hephaestus won't activate — accept that trade-off.
{ {
"agents": { "agents": {
"sisyphus": { "model": "opencode-go/kimi-k2.6" }, "sisyphus": { "model": "opencode-go/kimi-k2.6" },
"atlas": { "model": "opencode-go/kimi-k2.5" }, "atlas": { "model": "opencode-go/kimi-k2.6" },
// Omit hephaestus entirely; it needs GPT. // Omit hephaestus entirely; it needs GPT.
"oracle": { "model": "opencode-go/glm-5" }, // Degraded but functional "oracle": { "model": "opencode-go/glm-5.1" }, // Degraded but functional
"explore": { "model": "opencode-go/minimax-m2.7-highspeed" }, "explore": { "model": "opencode-go/qwen3.5-plus" },
"librarian": { "model": "opencode-go/minimax-m2.7-highspeed" }, "librarian": { "model": "opencode-go/qwen3.5-plus" },
}, },
"categories": { "categories": {
"visual-engineering": { "model": "opencode-go/qwen3.6-plus" }, "visual-engineering": { "model": "opencode-go/qwen3.6-plus" },
"deep": { "model": "opencode-go/kimi-k2.6" }, // Not ideal — Kimi isn't GPT, but best available "deep": { "model": "opencode-go/kimi-k2.6" }, // Not ideal — Kimi isn't GPT, but best available
"unspecified-high": { "model": "opencode-go/kimi-k2.6" }, "unspecified-high": { "model": "opencode-go/kimi-k2.6" },
"unspecified-low": { "model": "opencode-go/kimi-k2.5" }, "unspecified-low": { "model": "opencode-go/kimi-k2.6" },
"quick": { "model": "opencode-go/minimax-m2.7" }, "quick": { "model": "opencode-go/minimax-m2.7" },
"writing": { "model": "opencode-go/kimi-k2.5" }, "writing": { "model": "opencode-go/kimi-k2.6" },
}, },
} }
``` ```
@@ -437,7 +437,7 @@ If you have OpenRouter and want DeepSeek in the chain when GPT is unavailable:
"fallback_models": [ "fallback_models": [
"anthropic/claude-opus-4-7", "anthropic/claude-opus-4-7",
{ "model": "openrouter/deepseek/deepseek-v3.2", "temperature": 0.7 }, { "model": "openrouter/deepseek/deepseek-v3.2", "temperature": 0.7 },
"opencode-go/glm-5", "opencode-go/glm-5.1",
], ],
}, },
}, },
+16 -13
View File
@@ -291,8 +291,10 @@ Not all models behave the same way. Understanding which models are "similar" hel
| **Claude Opus 4.7** | anthropic, github-copilot, opencode | Best overall. Default for Sisyphus. | | **Claude Opus 4.7** | anthropic, github-copilot, opencode | Best overall. Default for Sisyphus. |
| **Claude Sonnet 4.6** | anthropic, github-copilot, opencode | Faster, cheaper. Good balance. | | **Claude Sonnet 4.6** | anthropic, github-copilot, opencode | Faster, cheaper. Good balance. |
| **Claude Haiku 4.5** | anthropic, opencode | Fast and cheap. Good for quick tasks. | | **Claude Haiku 4.5** | anthropic, opencode | Fast and cheap. Good for quick tasks. |
| **Kimi K2.5** | kimi-for-coding, opencode-go, opencode, moonshotai, moonshotai-cn, firmware, ollama-cloud, aihubmix | Behaves very similarly to Claude. Great all-rounder that appears in several orchestration fallback chains. | | **Kimi K2.6** | opencode-go, vercel | Behaves very similarly to Claude. Great all-rounder that appears in several orchestration fallback chains. |
| **Kimi K2.5** | kimi-for-coding, opencode, moonshotai, moonshotai-cn, firmware, ollama-cloud, aihubmix | Claude-like behavior. Available on multiple providers. |
| **Kimi K2.5 Free** | opencode | Free-tier Kimi. Rate-limited but functional. | | **Kimi K2.5 Free** | opencode | Free-tier Kimi. Rate-limited but functional. |
| **GLM 5.1** | opencode-go, vercel | Claude-like behavior. Upgraded from GLM-5 on opencode-go. |
| **GLM 5** | zai-coding-plan, opencode | Claude-like behavior. Good for broad tasks. | | **GLM 5** | zai-coding-plan, opencode | Claude-like behavior. Good for broad tasks. |
| **Big Pickle (GLM 4.6)** | opencode | Free-tier GLM. Decent fallback. | | **Big Pickle (GLM 4.6)** | opencode | Free-tier GLM. Decent fallback. |
@@ -311,8 +313,9 @@ Not all models behave the same way. Understanding which models are "similar" hel
| --------------------- | -------------------------------- | ----------------------------------------------------------- | | --------------------- | -------------------------------- | ----------------------------------------------------------- |
| **Gemini 3.1 Pro** | google, github-copilot, opencode | Excels at visual/frontend tasks. Different reasoning style. | | **Gemini 3.1 Pro** | google, github-copilot, opencode | Excels at visual/frontend tasks. Different reasoning style. |
| **Gemini 3 Flash** | google, github-copilot, opencode | Fast, good for doc search and light tasks. | | **Gemini 3 Flash** | google, github-copilot, opencode | Fast, good for doc search and light tasks. |
| **MiniMax M2.7** | opencode-go, opencode | Fast and smart. Utility fallbacks use `minimax-m2.7` or `minimax-m2.7-highspeed` depending on the chain. | | **MiniMax M2.7** | opencode-go, opencode, vercel | Fast and smart. Utility fallbacks use `minimax-m2.7` or `minimax-m2.7-highspeed` depending on the chain. |
| **MiniMax M2.7 Highspeed** | opencode-go, opencode | Faster utility variant used in Explore and other retrieval-heavy fallback chains. | | **MiniMax M2.7 Highspeed** | vercel, opencode | Faster utility variant used in Explore and other retrieval-heavy fallback chains. |
| **Qwen 3.5 Plus** | opencode-go | 1M context, high-speed reasoning. Default for Explore and Librarian when GPT-5.4 Mini Fast is unavailable. |
**Speed-Focused Models**: **Speed-Focused Models**:
@@ -320,7 +323,7 @@ Not all models behave the same way. Understanding which models are "similar" hel
| ----------------------- | ---------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | ----------------------- | ---------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **Grok Code Fast 1** | github-copilot, xai | Very fast | Optimized for code grep/search. Default for Explore. | | **Grok Code Fast 1** | github-copilot, xai | Very fast | Optimized for code grep/search. Default for Explore. |
| **Claude Haiku 4.5** | anthropic, opencode | Fast | Good balance of speed and intelligence. | | **Claude Haiku 4.5** | anthropic, opencode | Fast | Good balance of speed and intelligence. |
| **MiniMax M2.7 Highspeed** | opencode-go, opencode | Very fast | High-speed MiniMax utility fallback used by runtime chains such as Explore and, on the OpenCode catalog, Librarian. | | **MiniMax M2.7 Highspeed** | vercel, opencode | Very fast | High-speed MiniMax utility fallback used by runtime chains such as Explore and, on the OpenCode catalog, Librarian. |
| **GPT-5.3-codex-spark** | openai | Extremely fast | Blazing fast but compacts so aggressively that oh-my-openagent's context management doesn't work well with it. Not recommended for omo agents. | | **GPT-5.3-codex-spark** | openai | Extremely fast | Blazing fast but compacts so aggressively that oh-my-openagent's context management doesn't work well with it. Not recommended for omo agents. |
#### What Each Agent Does and Which Model It Got #### What Each Agent Does and Which Model It Got
@@ -331,8 +334,8 @@ Based on your subscriptions, here's how the agents were configured:
| Agent | Role | Default Chain | What It Does | | Agent | Role | Default Chain | What It Does |
| ------------ | ---------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------- | | ------------ | ---------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------- |
| **Sisyphus** | Main ultraworker | anthropic\|github-copilot\|opencode/claude-opus-4-7 (max) → opencode-go/kimi-k2.5 → kimi-for-coding/k2p5 → opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5 → openai\|github-copilot\|opencode/gpt-5.5 (medium) → zai-coding-plan\|opencode/glm-5 → opencode/big-pickle | Primary coding agent. Exact runtime chain from `src/shared/model-requirements.ts`. | | **Sisyphus** | Main ultraworker | anthropic\|github-copilot\|opencode/claude-opus-4-7 (max) → opencode-go/kimi-k2.6 → kimi-for-coding/k2p5 → opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5 → openai\|github-copilot\|opencode/gpt-5.5 (medium) → zai-coding-plan\|opencode/glm-5 → opencode/big-pickle | Primary coding agent. Exact runtime chain from `src/shared/model-requirements.ts`. |
| **Metis** | Plan review | anthropic\|github-copilot\|opencode/claude-opus-4-7 (max) → openai\|github-copilot\|opencode/gpt-5.5 (high) → opencode-go/glm-5 → kimi-for-coding/k2p5 | Reviews Prometheus plans for gaps. Exact runtime chain from `src/shared/model-requirements.ts`. | | **Metis** | Plan review | anthropic\|github-copilot\|opencode/claude-opus-4-7 (max) → openai\|github-copilot\|opencode/gpt-5.5 (high) → opencode-go/glm-5.1 → kimi-for-coding/k2p5 | Reviews Prometheus plans for gaps. Exact runtime chain from `src/shared/model-requirements.ts`. |
**Dual-Prompt Agents** (auto-switch between Claude and GPT prompts): **Dual-Prompt Agents** (auto-switch between Claude and GPT prompts):
@@ -342,16 +345,16 @@ Priority: **Claude > GPT > Claude-like models**
| Agent | Role | Default Chain | GPT Prompt? | | Agent | Role | Default Chain | GPT Prompt? |
| -------------- | ----------------- | ---------------------------------------------------------- | ---------------------------------------------------------------- | | -------------- | ----------------- | ---------------------------------------------------------- | ---------------------------------------------------------------- |
| **Prometheus** | Strategic planner | anthropic\|github-copilot\|opencode/claude-opus-4-7 (max) → openai\|github-copilot\|opencode/gpt-5.5 (high) → opencode-go/glm-5 → google\|github-copilot\|opencode/gemini-3.1-pro | Yes — XML-tagged, principle-driven (~300 lines vs ~1,100 Claude) | | **Prometheus** | Strategic planner | anthropic\|github-copilot\|opencode/claude-opus-4-7 (max) → openai\|github-copilot\|opencode/gpt-5.5 (high) → opencode-go/glm-5.1 → google\|github-copilot\|opencode/gemini-3.1-pro | Yes — XML-tagged, principle-driven (~300 lines vs ~1,100 Claude) |
| **Atlas** | Todo orchestrator | anthropic\|github-copilot\|opencode/claude-sonnet-4-6 → opencode-go/kimi-k2.5 → openai\|github-copilot\|opencode/gpt-5.5 (medium) → opencode-go/minimax-m2.7 | Yes - GPT-optimized todo management | | **Atlas** | Todo orchestrator | anthropic\|github-copilot\|opencode/claude-sonnet-4-6 → opencode-go/kimi-k2.6 → openai\|github-copilot\|opencode/gpt-5.5 (medium) → opencode-go/minimax-m2.7 | Yes - GPT-optimized todo management |
**GPT-Native Agents** (built for GPT, don't override to Claude): **GPT-Native Agents** (built for GPT, don't override to Claude):
| Agent | Role | Default Chain | Notes | | Agent | Role | Default Chain | Notes |
| -------------- | ---------------------- | -------------------------------------- | ------------------------------------------------------ | | -------------- | ---------------------- | -------------------------------------- | ------------------------------------------------------ |
| **Hephaestus** | Deep autonomous worker | GPT-5.5 (medium) only | "Codex on steroids." No fallback. Requires GPT access. | | **Hephaestus** | Deep autonomous worker | GPT-5.5 (medium) only | "Codex on steroids." No fallback. Requires GPT access. |
| **Oracle** | Architecture/debugging | openai\|github-copilot\|opencode/gpt-5.5 (high) → google\|github-copilot\|opencode/gemini-3.1-pro (high) → anthropic\|github-copilot\|opencode/claude-opus-4-7 (max) → opencode-go/glm-5 | High-IQ strategic backup. GPT preferred. | | **Oracle** | Architecture/debugging | openai\|github-copilot\|opencode/gpt-5.5 (high) → google\|github-copilot\|opencode/gemini-3.1-pro (high) → anthropic\|github-copilot\|opencode/claude-opus-4-7 (max) → opencode-go/glm-5.1 | High-IQ strategic backup. GPT preferred. |
| **Momus** | High-accuracy reviewer | openai\|github-copilot\|opencode/gpt-5.5 (xhigh) → anthropic\|github-copilot\|opencode/claude-opus-4-7 (max) → google\|github-copilot\|opencode/gemini-3.1-pro (high) → opencode-go/glm-5 | Verification agent. GPT preferred. | | **Momus** | High-accuracy reviewer | openai\|github-copilot\|opencode/gpt-5.5 (xhigh) → anthropic\|github-copilot\|opencode/claude-opus-4-7 (max) → google\|github-copilot\|opencode/gemini-3.1-pro (high) → opencode-go/glm-5.1 | Verification agent. GPT preferred. |
**Utility Agents** (speed over intelligence): **Utility Agents** (speed over intelligence):
@@ -359,9 +362,9 @@ These agents do search, grep, and retrieval. They intentionally use fast, cheap
| Agent | Role | Default Chain | Design Rationale | | Agent | Role | Default Chain | Design Rationale |
| --------------------- | ------------------ | ---------------------------------------------------------------------- | -------------------------------------------------------------- | | --------------------- | ------------------ | ---------------------------------------------------------------------- | -------------------------------------------------------------- |
| **Explore** | Fast codebase grep | github-copilot\|xai/grok-code-fast-1 → opencode-go/minimax-m2.7-highspeed → opencode/minimax-m2.7 → anthropic\|opencode/claude-haiku-4-5 → opencode/gpt-5-nano | Speed is everything. Exact runtime chain from `src/shared/model-requirements.ts`. | | **Explore** | Fast codebase grep | openai/gpt-5.4-mini-fast → opencode-go/qwen3.5-plus → vercel/minimax-m2.7-highspeed → opencode-go\|vercel/minimax-m2.7 → anthropic\|opencode\|vercel/claude-haiku-4-5 → openai\|opencode\|vercel/gpt-5.4-nano | Speed is everything. Exact runtime chain from `src/shared/model-requirements.ts`. |
| **Librarian** | Docs/code search | opencode-go/minimax-m2.7 → opencode/minimax-m2.7-highspeed → anthropic\|opencode/claude-haiku-4-5 → opencode/gpt-5-nano | Doc retrieval doesn't need deep reasoning. Exact runtime chain from `src/shared/model-requirements.ts`. | | **Librarian** | Docs/code search | openai/gpt-5.4-mini-fast → opencode-go/qwen3.5-plus → vercel/minimax-m2.7-highspeed → opencode-go\|vercel/minimax-m2.7 → anthropic\|opencode\|vercel/claude-haiku-4-5 → openai\|opencode\|vercel/gpt-5.4-nano | Doc retrieval doesn't need deep reasoning. Exact runtime chain from `src/shared/model-requirements.ts`. |
| **Multimodal Looker** | Vision/screenshots | openai\|opencode/gpt-5.5 (medium) → opencode-go/kimi-k2.5 → zai-coding-plan/glm-4.6v → openai\|github-copilot\|opencode/gpt-5-nano | GPT-5.5 now leads the default vision path when available. | | **Multimodal Looker** | Vision/screenshots | openai\|opencode/gpt-5.5 (medium) → opencode-go/kimi-k2.6 → zai-coding-plan/glm-4.6v → openai\|github-copilot\|opencode/gpt-5-nano | GPT-5.5 now leads the default vision path when available. |
#### Why Different Models Need Different Prompts #### Why Different Models Need Different Prompts
+14 -14
View File
@@ -357,29 +357,29 @@ Capability data comes from provider runtime metadata first. OmO also ships bundl
| Agent | Default Model | Provider Priority | | Agent | Default Model | Provider Priority |
| --------------------- | ------------------- | ---------------------------------------------------------------------------- | | --------------------- | ------------------- | ---------------------------------------------------------------------------- |
| **Sisyphus** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``opencode-go/kimi-k2.5``kimi-for-coding/k2p5``opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5``openai\|github-copilot\|opencode/gpt-5.5 (medium)``zai-coding-plan\|opencode/glm-5``opencode/big-pickle` | | **Sisyphus** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``opencode-go/kimi-k2.6``kimi-for-coding/k2p5``opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5``openai\|github-copilot\|opencode/gpt-5.5 (medium)``zai-coding-plan\|opencode/glm-5``opencode/big-pickle` |
| **Hephaestus** | `gpt-5.5` | `gpt-5.5 (medium)` | | **Hephaestus** | `gpt-5.5` | `gpt-5.5 (medium)` |
| **oracle** | `gpt-5.5` | `openai\|github-copilot\|opencode/gpt-5.5 (high)``google\|github-copilot\|opencode/gemini-3.1-pro (high)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``opencode-go/glm-5` | | **oracle** | `gpt-5.5` | `openai\|github-copilot\|opencode/gpt-5.5 (high)``google\|github-copilot\|opencode/gemini-3.1-pro (high)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``opencode-go/glm-5.1` |
| **librarian** | `gpt-5.4-mini-fast` | `openai/gpt-5.4-mini-fast``opencode-go\|vercel/minimax-m2.7-highspeed``opencode-go\|vercel/minimax-m2.7``anthropic\|opencode\|vercel/claude-haiku-4-5``openai\|opencode\|vercel/gpt-5.4-nano` | | **librarian** | `gpt-5.4-mini-fast` | `openai/gpt-5.4-mini-fast``opencode-go/qwen3.5-plus``vercel/minimax-m2.7-highspeed``opencode-go\|vercel/minimax-m2.7``anthropic\|opencode\|vercel/claude-haiku-4-5``openai\|opencode\|vercel/gpt-5.4-nano` |
| **explore** | `gpt-5.4-mini-fast` | `openai/gpt-5.4-mini-fast``opencode-go\|vercel/minimax-m2.7-highspeed``opencode-go\|vercel/minimax-m2.7``anthropic\|opencode\|vercel/claude-haiku-4-5``openai\|opencode\|vercel/gpt-5.4-nano` | | **explore** | `gpt-5.4-mini-fast` | `openai/gpt-5.4-mini-fast``opencode-go/qwen3.5-plus``vercel/minimax-m2.7-highspeed``opencode-go\|vercel/minimax-m2.7``anthropic\|opencode\|vercel/claude-haiku-4-5``openai\|opencode\|vercel/gpt-5.4-nano` |
| **multimodal-looker** | `gpt-5.5` | `openai\|opencode/gpt-5.5 (medium)``opencode-go/kimi-k2.5``zai-coding-plan/glm-4.6v``openai\|github-copilot\|opencode/gpt-5-nano` | | **multimodal-looker** | `gpt-5.5` | `openai\|opencode/gpt-5.5 (medium)``opencode-go/kimi-k2.6``zai-coding-plan/glm-4.6v``openai\|github-copilot\|opencode/gpt-5-nano` |
| **Prometheus** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``openai\|github-copilot\|opencode/gpt-5.5 (high)``opencode-go/glm-5``google\|github-copilot\|opencode/gemini-3.1-pro` | | **Prometheus** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``openai\|github-copilot\|opencode/gpt-5.5 (high)``opencode-go/glm-5.1``google\|github-copilot\|opencode/gemini-3.1-pro` |
| **Metis** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``openai\|github-copilot\|opencode/gpt-5.5 (high)``opencode-go/glm-5``kimi-for-coding/k2p5` | | **Metis** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``openai\|github-copilot\|opencode/gpt-5.5 (high)``opencode-go/glm-5.1``kimi-for-coding/k2p5` |
| **Momus** | `gpt-5.5` | `openai\|github-copilot\|opencode/gpt-5.5 (xhigh)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``google\|github-copilot\|opencode/gemini-3.1-pro (high)``opencode-go/glm-5` | | **Momus** | `gpt-5.5` | `openai\|github-copilot\|opencode/gpt-5.5 (xhigh)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``google\|github-copilot\|opencode/gemini-3.1-pro (high)``opencode-go/glm-5.1` |
| **Atlas** | `claude-sonnet-4-6` | `anthropic\|github-copilot\|opencode/claude-sonnet-4-6``opencode-go/kimi-k2.5``openai\|github-copilot\|opencode/gpt-5.5 (medium)``opencode-go/minimax-m2.7` | | **Atlas** | `claude-sonnet-4-6` | `anthropic\|github-copilot\|opencode/claude-sonnet-4-6``opencode-go/kimi-k2.6``openai\|github-copilot\|opencode/gpt-5.5 (medium)``opencode-go/minimax-m2.7` |
#### Category Provider Chains #### Category Provider Chains
| Category | Default Model | Provider Priority | | Category | Default Model | Provider Priority |
| ---------------------- | ------------------- | -------------------------------------------------------------- | | ---------------------- | ------------------- | -------------------------------------------------------------- |
| **visual-engineering** | `gemini-3.1-pro` | `google\|github-copilot\|opencode/gemini-3.1-pro (high)``zai-coding-plan\|opencode/glm-5``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``opencode-go/glm-5``kimi-for-coding/k2p5` | | **visual-engineering** | `gemini-3.1-pro` | `google\|github-copilot\|opencode/gemini-3.1-pro (high)``zai-coding-plan\|opencode/glm-5``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``opencode-go/glm-5.1``kimi-for-coding/k2p5` |
| **ultrabrain** | `gpt-5.5` | `openai\|opencode/gpt-5.5 (xhigh)``google\|github-copilot\|opencode/gemini-3.1-pro (high)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``opencode-go/glm-5` | | **ultrabrain** | `gpt-5.5` | `openai\|opencode/gpt-5.5 (xhigh)``google\|github-copilot\|opencode/gemini-3.1-pro (high)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``opencode-go/glm-5.1` |
| **deep** | `gpt-5.5` | `openai\|github-copilot\|venice\|opencode/gpt-5.5 (medium)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``google\|github-copilot\|opencode/gemini-3.1-pro (high)` | | **deep** | `gpt-5.5` | `openai\|github-copilot\|venice\|opencode/gpt-5.5 (medium)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``google\|github-copilot\|opencode/gemini-3.1-pro (high)` |
| **artistry** | `gemini-3.1-pro` | `google\|github-copilot\|opencode/gemini-3.1-pro (high)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``openai\|github-copilot\|opencode/gpt-5.5` | | **artistry** | `gemini-3.1-pro` | `google\|github-copilot\|opencode/gemini-3.1-pro (high)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``openai\|github-copilot\|opencode/gpt-5.5` |
| **quick** | `gpt-5.4-mini` | `openai\|github-copilot\|opencode/gpt-5.4-mini``anthropic\|github-copilot\|opencode/claude-haiku-4-5``google\|github-copilot\|opencode/gemini-3-flash``opencode-go/minimax-m2.7``opencode/gpt-5-nano` | | **quick** | `gpt-5.4-mini` | `openai\|github-copilot\|opencode/gpt-5.4-mini``anthropic\|github-copilot\|opencode/claude-haiku-4-5``google\|github-copilot\|opencode/gemini-3-flash``opencode-go/minimax-m2.7``opencode/gpt-5-nano` |
| **unspecified-low** | `claude-sonnet-4-6` | `anthropic\|github-copilot\|opencode/claude-sonnet-4-6``openai\|opencode/gpt-5.3-codex (medium)``opencode-go/kimi-k2.5``google\|github-copilot\|opencode/gemini-3-flash``opencode-go/minimax-m2.7` | | **unspecified-low** | `claude-sonnet-4-6` | `anthropic\|github-copilot\|opencode/claude-sonnet-4-6``openai\|opencode/gpt-5.3-codex (medium)``opencode-go/kimi-k2.6``google\|github-copilot\|opencode/gemini-3-flash``opencode-go/minimax-m2.7` |
| **unspecified-high** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``openai\|github-copilot\|opencode/gpt-5.5 (high)``zai-coding-plan\|opencode/glm-5``kimi-for-coding/k2p5``opencode-go/glm-5``opencode/kimi-k2.5``opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5` | | **unspecified-high** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``openai\|github-copilot\|opencode/gpt-5.5 (high)``zai-coding-plan\|opencode/glm-5``kimi-for-coding/k2p5``opencode-go/glm-5.1``opencode/kimi-k2.5``opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5` |
| **writing** | `gemini-3-flash` | `google\|github-copilot\|opencode/gemini-3-flash``opencode-go/kimi-k2.5``anthropic\|github-copilot\|opencode/claude-sonnet-4-6``opencode-go/minimax-m2.7` | | **writing** | `gemini-3-flash` | `google\|github-copilot\|opencode/gemini-3-flash``opencode-go/kimi-k2.6``anthropic\|github-copilot\|opencode/claude-sonnet-4-6``opencode-go/minimax-m2.7` |
Run `bunx oh-my-opencode doctor --verbose` to see effective model resolution for your config. Run `bunx oh-my-opencode doctor --verbose` to see effective model resolution for your config.
+10 -10
View File
@@ -10,26 +10,26 @@ Core-agent tab cycling is deterministic via injected runtime order field. The fi
| Agent | Model | Purpose | | Agent | Model | Purpose |
| --------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sisyphus** | `claude-opus-4-7` | The default orchestrator. Plans, delegates, and executes complex tasks using specialized subagents with aggressive parallel execution. Todo-driven workflow with extended thinking (32k budget). Fallback: `opencode-go/kimi-k2.5``kimi-for-coding/k2p5``opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5``openai\|github-copilot\|opencode/gpt-5.5 (medium)``zai-coding-plan\|opencode/glm-5``opencode/big-pickle`. | | **Sisyphus** | `claude-opus-4-7` | The default orchestrator. Plans, delegates, and executes complex tasks using specialized subagents with aggressive parallel execution. Todo-driven workflow with extended thinking (32k budget). Fallback: `opencode-go/kimi-k2.6``kimi-for-coding/k2p5``opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5``openai\|github-copilot\|opencode/gpt-5.5 (medium)``zai-coding-plan\|opencode/glm-5``opencode/big-pickle`. |
| **Hephaestus** | `gpt-5.5` | The Legitimate Craftsman. Autonomous deep worker inspired by AmpCode's deep mode. Goal-oriented execution with thorough research before action. Explores codebase patterns, completes tasks end-to-end without premature stopping. Named after the Greek god of forge and craftsmanship. Requires a GPT-capable provider. | | **Hephaestus** | `gpt-5.5` | The Legitimate Craftsman. Autonomous deep worker inspired by AmpCode's deep mode. Goal-oriented execution with thorough research before action. Explores codebase patterns, completes tasks end-to-end without premature stopping. Named after the Greek god of forge and craftsmanship. Requires a GPT-capable provider. |
| **Oracle** | `gpt-5.5` | Architecture decisions, code review, debugging. Read-only consultation with stellar logical reasoning and deep analysis. Inspired by AmpCode. Fallback: `google\|github-copilot\|opencode/gemini-3.1-pro (high)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``opencode-go/glm-5`. | | **Oracle** | `gpt-5.5` | Architecture decisions, code review, debugging. Read-only consultation with stellar logical reasoning and deep analysis. Inspired by AmpCode. Fallback: `google\|github-copilot\|opencode/gemini-3.1-pro (high)``anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``opencode-go/glm-5.1`. |
| **Librarian** | `gpt-5.4-mini-fast` | Multi-repo analysis, documentation lookup, OSS implementation examples. Deep codebase understanding with evidence-based answers. Fallback: `opencode-go/minimax-m2.7-highspeed``opencode-go/minimax-m2.7``anthropic\|opencode/claude-haiku-4-5``openai\|opencode/gpt-5.4-nano`. | | **Librarian** | `gpt-5.4-mini-fast` | Multi-repo analysis, documentation lookup, OSS implementation examples. Deep codebase understanding with evidence-based answers. Fallback: `opencode-go/qwen3.5-plus``opencode-go/minimax-m2.7``anthropic\|opencode/claude-haiku-4-5``openai\|opencode/gpt-5.4-nano`. |
| **Explore** | `gpt-5.4-mini-fast` | Fast codebase exploration and contextual grep. Fallback: `opencode-go/minimax-m2.7-highspeed``opencode-go/minimax-m2.7``anthropic\|opencode/claude-haiku-4-5``openai\|opencode/gpt-5.4-nano`. | | **Explore** | `gpt-5.4-mini-fast` | Fast codebase exploration and contextual grep. Fallback: `opencode-go/qwen3.5-plus``opencode-go/minimax-m2.7``anthropic\|opencode/claude-haiku-4-5``openai\|opencode/gpt-5.4-nano`. |
| **Multimodal-Looker** | `gpt-5.5` | Visual content specialist. Analyzes PDFs, images, diagrams to extract information. Fallback: `opencode-go/kimi-k2.5``zai-coding-plan/glm-4.6v``openai\|github-copilot\|opencode/gpt-5-nano`. | | **Multimodal-Looker** | `gpt-5.5` | Visual content specialist. Analyzes PDFs, images, diagrams to extract information. Fallback: `opencode-go/kimi-k2.6``zai-coding-plan/glm-4.6v``openai\|github-copilot\|opencode/gpt-5-nano`. |
### Planning Agents ### Planning Agents
| Agent | Model | Purpose | | Agent | Model | Purpose |
| -------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | -------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Prometheus** | `claude-opus-4-7` | Strategic planner with interview mode. Creates detailed work plans through iterative questioning. Fallback: `openai\|github-copilot\|opencode/gpt-5.5 (high)``opencode-go/glm-5``google\|github-copilot\|opencode/gemini-3.1-pro`. | | **Prometheus** | `claude-opus-4-7` | Strategic planner with interview mode. Creates detailed work plans through iterative questioning. Fallback: `openai\|github-copilot\|opencode/gpt-5.5 (high)``opencode-go/glm-5.1``google\|github-copilot\|opencode/gemini-3.1-pro`. |
| **Metis** | `claude-opus-4-7` | Plan consultant — pre-planning analysis. Identifies hidden intentions, ambiguities, and AI failure points. Fallback: `openai\|github-copilot\|opencode/gpt-5.5 (high)``opencode-go/glm-5``kimi-for-coding/k2p5`. | | **Metis** | `claude-opus-4-7` | Plan consultant — pre-planning analysis. Identifies hidden intentions, ambiguities, and AI failure points. Fallback: `openai\|github-copilot\|opencode/gpt-5.5 (high)``opencode-go/glm-5.1``kimi-for-coding/k2p5`. |
| **Momus** | `gpt-5.5` | Plan reviewer — validates plans against clarity, verifiability, and completeness standards. Fallback: `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``google\|github-copilot\|opencode/gemini-3.1-pro (high)``opencode-go/glm-5`. | | **Momus** | `gpt-5.5` | Plan reviewer — validates plans against clarity, verifiability, and completeness standards. Fallback: `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)``google\|github-copilot\|opencode/gemini-3.1-pro (high)``opencode-go/glm-5.1`. |
### Orchestration Agents ### Orchestration Agents
| Agent | Model | Purpose | | Agent | Model | Purpose |
| ------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Atlas** | `claude-sonnet-4-6` | Todo-list orchestrator. Executes planned tasks systematically, managing todo items and coordinating work. Fallback: `opencode-go/kimi-k2.5``openai\|github-copilot\|opencode/gpt-5.5 (medium)``opencode-go/minimax-m2.7`. | | **Atlas** | `claude-sonnet-4-6` | Todo-list orchestrator. Executes planned tasks systematically, managing todo items and coordinating work. Fallback: `opencode-go/kimi-k2.6``openai\|github-copilot\|opencode/gpt-5.5 (medium)``opencode-go/minimax-m2.7`. |
| **Sisyphus-Junior** | _(category-dependent)_ | Category-spawned executor. Model is selected automatically based on the task category (visual-engineering, quick, deep, etc.). Its built-in general fallback chain is `anthropic\|github-copilot\|opencode/claude-sonnet-4-6``opencode-go/kimi-k2.5``openai\|github-copilot\|opencode/gpt-5.5 (medium)``opencode-go/minimax-m2.7``opencode/big-pickle`. | | **Sisyphus-Junior** | _(category-dependent)_ | Category-spawned executor. Model is selected automatically based on the task category (visual-engineering, quick, deep, etc.). Its built-in general fallback chain is `anthropic\|github-copilot\|opencode/claude-sonnet-4-6``opencode-go/kimi-k2.6``openai\|github-copilot\|opencode/gpt-5.5 (medium)``opencode-go/minimax-m2.7``opencode/big-pickle`. |
### Invoking Agents ### Invoking Agents
+3 -3
View File
@@ -15,11 +15,11 @@ Agent factories following `createXXXAgent(model) → AgentConfig` pattern. Each
| Agent | Model | Temp | Mode | Fallback Chain | Purpose | | Agent | Model | Temp | Mode | Fallback Chain | Purpose |
|-------|-------|------|------|----------------|---------| |-------|-------|------|------|----------------|---------|
| **Sisyphus** | claude-opus-4-7 max | 0.1 | all | k2p5 -> kimi-k2.5 -> gpt-5.5 medium -> glm-5 -> big-pickle | Main orchestrator, plans + delegates | | **Sisyphus** | claude-opus-4-7 max | 0.1 | all | k2p5 -> kimi-k2.6 -> gpt-5.5 medium -> glm-5 -> big-pickle | Main orchestrator, plans + delegates |
| **Hephaestus** | gpt-5.5 medium | 0.1 | all | — | Autonomous deep worker | | **Hephaestus** | gpt-5.5 medium | 0.1 | all | — | Autonomous deep worker |
| **Oracle** | gpt-5.5 high | 0.1 | subagent | gemini-3.1-pro high -> claude-opus-4-7 max | Read-only consultation | | **Oracle** | gpt-5.5 high | 0.1 | subagent | gemini-3.1-pro high -> claude-opus-4-7 max | Read-only consultation |
| **Librarian** | gpt-5.4-mini-fast | 0.1 | subagent | minimax-m2.7-highspeed -> minimax-m2.7 -> claude-haiku-4-5 -> gpt-5.4-nano | External docs/code search | | **Librarian** | gpt-5.4-mini-fast | 0.1 | subagent | qwen3.5-plus -> minimax-m2.7-highspeed -> minimax-m2.7 -> claude-haiku-4-5 -> gpt-5.4-nano | External docs/code search |
| **Explore** | gpt-5.4-mini-fast | 0.1 | subagent | minimax-m2.7-highspeed -> minimax-m2.7 -> claude-haiku-4-5 -> gpt-5.4-nano | Contextual grep | | **Explore** | gpt-5.4-mini-fast | 0.1 | subagent | qwen3.5-plus -> minimax-m2.7-highspeed -> minimax-m2.7 -> claude-haiku-4-5 -> gpt-5.4-nano | Contextual grep |
| **Multimodal-Looker** | gpt-5.3-codex medium | 0.1 | subagent | k2p5 -> gemini-3-flash -> glm-4.6v -> gpt-5-nano | PDF/image analysis | | **Multimodal-Looker** | gpt-5.3-codex medium | 0.1 | subagent | k2p5 -> gemini-3-flash -> glm-4.6v -> gpt-5-nano | PDF/image analysis |
| **Metis** | claude-opus-4-7 max | **0.3** | subagent | gpt-5.5 high -> gemini-3.1-pro high | Pre-planning consultant | | **Metis** | claude-opus-4-7 max | **0.3** | subagent | gpt-5.5 high -> gemini-3.1-pro high | Pre-planning consultant |
| **Momus** | gpt-5.5 xhigh | 0.1 | subagent | claude-opus-4-7 max -> gemini-3.1-pro high | Plan reviewer | | **Momus** | gpt-5.5 xhigh | 0.1 | subagent | claude-opus-4-7 max -> gemini-3.1-pro high | Plan reviewer |
@@ -4138,7 +4138,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"atlas": { "atlas": {
"fallback_models": [ "fallback_models": [
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/openai/gpt-5.5", "model": "vercel/openai/gpt-5.5",
@@ -4189,7 +4189,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "high", "variant": "high",
}, },
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5.1",
}, },
], ],
"model": "vercel/anthropic/claude-opus-4.7", "model": "vercel/anthropic/claude-opus-4.7",
@@ -4206,7 +4206,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "high", "variant": "high",
}, },
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5.1",
}, },
], ],
"model": "vercel/openai/gpt-5.5", "model": "vercel/openai/gpt-5.5",
@@ -4215,7 +4215,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"multimodal-looker": { "multimodal-looker": {
"fallback_models": [ "fallback_models": [
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/zai/glm-4.6v", "model": "vercel/zai/glm-4.6v",
@@ -4238,7 +4238,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "max", "variant": "max",
}, },
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5.1",
}, },
], ],
"model": "vercel/openai/gpt-5.5", "model": "vercel/openai/gpt-5.5",
@@ -4251,7 +4251,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "high", "variant": "high",
}, },
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5.1",
}, },
{ {
"model": "vercel/google/gemini-3.1-pro-preview", "model": "vercel/google/gemini-3.1-pro-preview",
@@ -4262,6 +4262,9 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
}, },
"sisyphus": { "sisyphus": {
"fallback_models": [ "fallback_models": [
{
"model": "vercel/moonshotai/kimi-k2.6",
},
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.5",
}, },
@@ -4279,7 +4282,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"sisyphus-junior": { "sisyphus-junior": {
"fallback_models": [ "fallback_models": [
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/openai/gpt-5.5", "model": "vercel/openai/gpt-5.5",
@@ -4348,7 +4351,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "max", "variant": "max",
}, },
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5.1",
}, },
], ],
"model": "vercel/openai/gpt-5.5", "model": "vercel/openai/gpt-5.5",
@@ -4361,7 +4364,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "medium", "variant": "medium",
}, },
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/google/gemini-3-flash", "model": "vercel/google/gemini-3-flash",
@@ -4379,7 +4382,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "medium", "variant": "medium",
}, },
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/google/gemini-3-flash", "model": "vercel/google/gemini-3-flash",
@@ -4399,6 +4402,9 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"model": "vercel/anthropic/claude-opus-4.7", "model": "vercel/anthropic/claude-opus-4.7",
"variant": "max", "variant": "max",
}, },
{
"model": "vercel/zai/glm-5.1",
},
], ],
"model": "vercel/google/gemini-3.1-pro-preview", "model": "vercel/google/gemini-3.1-pro-preview",
"variant": "high", "variant": "high",
@@ -4406,7 +4412,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"writing": { "writing": {
"fallback_models": [ "fallback_models": [
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/anthropic/claude-sonnet-4.6", "model": "vercel/anthropic/claude-sonnet-4.6",
@@ -4428,7 +4434,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"atlas": { "atlas": {
"fallback_models": [ "fallback_models": [
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/openai/gpt-5.5", "model": "vercel/openai/gpt-5.5",
@@ -4479,7 +4485,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "high", "variant": "high",
}, },
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5.1",
}, },
], ],
"model": "vercel/anthropic/claude-opus-4.7", "model": "vercel/anthropic/claude-opus-4.7",
@@ -4496,7 +4502,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "high", "variant": "high",
}, },
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5.1",
}, },
], ],
"model": "vercel/openai/gpt-5.5", "model": "vercel/openai/gpt-5.5",
@@ -4505,7 +4511,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"multimodal-looker": { "multimodal-looker": {
"fallback_models": [ "fallback_models": [
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/zai/glm-4.6v", "model": "vercel/zai/glm-4.6v",
@@ -4528,7 +4534,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "max", "variant": "max",
}, },
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5.1",
}, },
], ],
"model": "vercel/openai/gpt-5.5", "model": "vercel/openai/gpt-5.5",
@@ -4541,7 +4547,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "high", "variant": "high",
}, },
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5.1",
}, },
{ {
"model": "vercel/google/gemini-3.1-pro-preview", "model": "vercel/google/gemini-3.1-pro-preview",
@@ -4552,6 +4558,9 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
}, },
"sisyphus": { "sisyphus": {
"fallback_models": [ "fallback_models": [
{
"model": "vercel/moonshotai/kimi-k2.6",
},
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.5",
}, },
@@ -4569,7 +4578,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"sisyphus-junior": { "sisyphus-junior": {
"fallback_models": [ "fallback_models": [
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/openai/gpt-5.5", "model": "vercel/openai/gpt-5.5",
@@ -4638,7 +4647,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "max", "variant": "max",
}, },
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5.1",
}, },
], ],
"model": "vercel/openai/gpt-5.5", "model": "vercel/openai/gpt-5.5",
@@ -4653,6 +4662,9 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
{ {
"model": "vercel/zai/glm-5", "model": "vercel/zai/glm-5",
}, },
{
"model": "vercel/zai/glm-5.1",
},
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.5",
}, },
@@ -4667,7 +4679,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"variant": "medium", "variant": "medium",
}, },
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/google/gemini-3-flash", "model": "vercel/google/gemini-3-flash",
@@ -4687,6 +4699,9 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"model": "vercel/anthropic/claude-opus-4.7", "model": "vercel/anthropic/claude-opus-4.7",
"variant": "max", "variant": "max",
}, },
{
"model": "vercel/zai/glm-5.1",
},
], ],
"model": "vercel/google/gemini-3.1-pro-preview", "model": "vercel/google/gemini-3.1-pro-preview",
"variant": "high", "variant": "high",
@@ -4694,7 +4709,7 @@ exports[`generateModelConfig Vercel AI Gateway provider uses vercel/ model strin
"writing": { "writing": {
"fallback_models": [ "fallback_models": [
{ {
"model": "vercel/moonshotai/kimi-k2.5", "model": "vercel/moonshotai/kimi-k2.6",
}, },
{ {
"model": "vercel/anthropic/claude-sonnet-4.6", "model": "vercel/anthropic/claude-sonnet-4.6",
@@ -54,7 +54,7 @@ describe("detectCurrentConfig - single package detection", () => {
it("detects OpenCode Go from the existing omo config", () => { it("detects OpenCode Go from the existing omo config", () => {
// given // given
writeFileSync(testConfigPath, JSON.stringify({ plugin: ["oh-my-opencode"] }, null, 2) + "\n", "utf-8") writeFileSync(testConfigPath, JSON.stringify({ plugin: ["oh-my-opencode"] }, null, 2) + "\n", "utf-8")
writeFileSync(testOmoConfigPath, JSON.stringify({ agents: { atlas: { model: "opencode-go/kimi-k2.5" } } }, null, 2) + "\n", "utf-8") writeFileSync(testOmoConfigPath, JSON.stringify({ agents: { atlas: { model: "opencode-go/kimi-k2.6" } } }, null, 2) + "\n", "utf-8")
// when // when
const result = detectCurrentConfig() const result = detectCurrentConfig()
@@ -31,13 +31,13 @@ describe("model-resolution-config", () => {
process.env.OPENCODE_CONFIG_DIR = testConfigDir process.env.OPENCODE_CONFIG_DIR = testConfigDir
writeFileSync( writeFileSync(
join(testConfigDir, "oh-my-openagent.json"), join(testConfigDir, "oh-my-openagent.json"),
JSON.stringify({ agents: { atlas: { model: "opencode-go/kimi-k2.5" } } }, null, 2) + "\n", JSON.stringify({ agents: { atlas: { model: "opencode-go/kimi-k2.6" } } }, null, 2) + "\n",
"utf-8", "utf-8",
) )
const config = loadOmoConfig() const config = loadOmoConfig()
expect(config?.agents?.atlas?.model).toBe("opencode-go/kimi-k2.5") expect(config?.agents?.atlas?.model).toBe("opencode-go/kimi-k2.6")
} finally { } finally {
rmSync(testConfigDir, { recursive: true, force: true }) rmSync(testConfigDir, { recursive: true, force: true })
} }
+2 -2
View File
@@ -130,7 +130,7 @@ export function generateModelConfig(config: InstallConfig): GeneratedOmoConfig {
if (avail.native.openai) { if (avail.native.openai) {
agentConfig = { model: "openai/gpt-5.4-mini-fast" } agentConfig = { model: "openai/gpt-5.4-mini-fast" }
} else if (avail.opencodeGo) { } else if (avail.opencodeGo) {
agentConfig = { model: "opencode-go/minimax-m2.7" } agentConfig = { model: "opencode-go/qwen3.5-plus" }
} else if (avail.zai) { } else if (avail.zai) {
agentConfig = { model: ZAI_MODEL } agentConfig = { model: ZAI_MODEL }
} else if (avail.vercelAiGateway) { } else if (avail.vercelAiGateway) {
@@ -151,7 +151,7 @@ export function generateModelConfig(config: InstallConfig): GeneratedOmoConfig {
} else if (avail.opencodeZen) { } else if (avail.opencodeZen) {
agentConfig = { model: "opencode/claude-haiku-4-5" } agentConfig = { model: "opencode/claude-haiku-4-5" }
} else if (avail.opencodeGo) { } else if (avail.opencodeGo) {
agentConfig = { model: "opencode-go/minimax-m2.7" } agentConfig = { model: "opencode-go/qwen3.5-plus" }
} else if (avail.copilot) { } else if (avail.copilot) {
agentConfig = { model: "github-copilot/gpt-5-mini" } agentConfig = { model: "github-copilot/gpt-5-mini" }
} else if (avail.vercelAiGateway) { } else if (avail.vercelAiGateway) {
+1 -1
View File
@@ -163,7 +163,7 @@ describe("model fallback hook", () => {
expect(secondOutput.message["model"]).toEqual({ expect(secondOutput.message["model"]).toEqual({
providerID: "opencode-go", providerID: "opencode-go",
modelID: "kimi-k2.5", modelID: "kimi-k2.6",
}) })
expect(secondOutput.message["variant"]).toBeUndefined() expect(secondOutput.message["variant"]).toBeUndefined()
}) })
@@ -103,12 +103,12 @@ describe("buildPrometheusAgentConfig", () => {
expect(result).toBeDefined(); expect(result).toBeDefined();
}); });
test("accepts glm-5 from fallback chain", async () => { test("accepts glm-5.1 from fallback chain", async () => {
const result = await buildPrometheusAgentConfig({ const result = await buildPrometheusAgentConfig({
configAgentPlan: undefined, configAgentPlan: undefined,
pluginPrometheusOverride: undefined, pluginPrometheusOverride: undefined,
userCategories: undefined, userCategories: undefined,
currentModel: "opencode-go/glm-5", currentModel: "opencode-go/glm-5.1",
}); });
expect(result).toBeDefined(); expect(result).toBeDefined();
}); });
+3 -3
View File
@@ -222,7 +222,7 @@ describe("createEventHandler - model fallback", () => {
expect(promptCalls).toEqual([sessionID]) expect(promptCalls).toEqual([sessionID])
expect(output.message["model"]).toMatchObject({ expect(output.message["model"]).toMatchObject({
providerID: "opencode-go", providerID: "opencode-go",
modelID: "kimi-k2.5", modelID: "kimi-k2.6",
}) })
expect(output.message["variant"]).toBeUndefined() expect(output.message["variant"]).toBeUndefined()
}) })
@@ -549,14 +549,14 @@ describe("createEventHandler - model fallback", () => {
//#then - first fallback entry applied (no-op skip: claude-opus-4-7 matches current model after normalization) //#then - first fallback entry applied (no-op skip: claude-opus-4-7 matches current model after normalization)
expect(first.message["model"]).toMatchObject({ expect(first.message["model"]).toMatchObject({
providerID: "opencode-go", providerID: "opencode-go",
modelID: "kimi-k2.5", modelID: "kimi-k2.6",
}) })
expect(first.message["variant"]).toBeUndefined() expect(first.message["variant"]).toBeUndefined()
//#when - second retry cycle //#when - second retry cycle
const second = await triggerRetryCycle() const second = await triggerRetryCycle()
//#then - second fallback entry applied (chain advanced past opencode-go/kimi-k2.5) //#then - second fallback entry applied (chain advanced past opencode-go/kimi-k2.6)
expect(second.message["model"]).toMatchObject({ expect(second.message["model"]).toMatchObject({
providerID: "kimi-for-coding", providerID: "kimi-for-coding",
modelID: "k2p5", modelID: "k2p5",
@@ -1,6 +1,21 @@
import type { ModelCapabilitiesSnapshotEntry } from "./types" import type { ModelCapabilitiesSnapshotEntry } from "./types"
export const SUPPLEMENTAL_MODEL_CAPABILITIES: Record<string, ModelCapabilitiesSnapshotEntry> = { export const SUPPLEMENTAL_MODEL_CAPABILITIES: Record<string, ModelCapabilitiesSnapshotEntry> = {
"kimi-k2.6": {
id: "kimi-k2.6",
family: "kimi",
reasoning: true,
temperature: true,
toolCall: true,
modalities: {
input: ["text", "image", "video"],
output: ["text"],
},
limit: {
context: 262144,
output: 262144,
},
},
"gpt-5.5": { "gpt-5.5": {
id: "gpt-5.5", id: "gpt-5.5",
family: "gpt", family: "gpt",
+36 -28
View File
@@ -41,7 +41,7 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
const second = sisyphus.fallbackChain[1] const second = sisyphus.fallbackChain[1]
expect(second.providers).toEqual(["opencode-go", "vercel"]) expect(second.providers).toEqual(["opencode-go", "vercel"])
expect(second.model).toBe("kimi-k2.5") expect(second.model).toBe("kimi-k2.6")
const third = sisyphus.fallbackChain[2] const third = sisyphus.fallbackChain[2]
expect(third.providers).toEqual(["kimi-for-coding"]) expect(third.providers).toEqual(["kimi-for-coding"])
@@ -72,27 +72,31 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
// then - fallbackChain exists with openai/gpt-5.4-mini-fast as first entry // then - fallbackChain exists with openai/gpt-5.4-mini-fast as first entry
expect(librarian).toBeDefined() expect(librarian).toBeDefined()
expect(librarian.fallbackChain).toBeArray() expect(librarian.fallbackChain).toBeArray()
expect(librarian.fallbackChain).toHaveLength(5) expect(librarian.fallbackChain).toHaveLength(6)
const primary = librarian.fallbackChain[0] const primary = librarian.fallbackChain[0]
expect(primary.providers).toEqual(["openai"]) expect(primary.providers).toEqual(["openai"])
expect(primary.model).toBe("gpt-5.4-mini-fast") expect(primary.model).toBe("gpt-5.4-mini-fast")
const second = librarian.fallbackChain[1] const second = librarian.fallbackChain[1]
expect(second.providers[0]).toBe("opencode-go") expect(second.providers).toContain("opencode-go")
expect(second.model).toBe("minimax-m2.7-highspeed") expect(second.model).toBe("qwen3.5-plus")
const tertiary = librarian.fallbackChain[2] const third = librarian.fallbackChain[2]
expect(tertiary.providers[0]).toBe("opencode-go") expect(third.providers).toEqual(["vercel"])
expect(tertiary.model).toBe("minimax-m2.7") expect(third.model).toBe("minimax-m2.7-highspeed")
const quaternary = librarian.fallbackChain[3] const quaternary = librarian.fallbackChain[3]
expect(quaternary.providers).toContain("anthropic") expect(quaternary.providers).toContain("opencode-go")
expect(quaternary.model).toBe("claude-haiku-4-5") expect(quaternary.model).toBe("minimax-m2.7")
const fifth = librarian.fallbackChain[4] const quinary = librarian.fallbackChain[4]
expect(fifth.providers).toContain("openai") expect(quinary.providers).toContain("anthropic")
expect(fifth.model).toBe("gpt-5.4-nano") expect(quinary.model).toBe("claude-haiku-4-5")
const sixth = librarian.fallbackChain[5]
expect(sixth.providers).toContain("openai")
expect(sixth.model).toBe("gpt-5.4-nano")
}) })
test("explore has valid fallbackChain with openai/gpt-5.4-mini-fast as primary", () => { test("explore has valid fallbackChain with openai/gpt-5.4-mini-fast as primary", () => {
@@ -102,7 +106,7 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
// when - accessing explore requirement // when - accessing explore requirement
expect(explore).toBeDefined() expect(explore).toBeDefined()
expect(explore.fallbackChain).toBeArray() expect(explore.fallbackChain).toBeArray()
expect(explore.fallbackChain).toHaveLength(5) expect(explore.fallbackChain).toHaveLength(6)
const primary = explore.fallbackChain[0] const primary = explore.fallbackChain[0]
expect(primary.providers).toEqual(["openai"]) expect(primary.providers).toEqual(["openai"])
@@ -110,19 +114,23 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
const secondary = explore.fallbackChain[1] const secondary = explore.fallbackChain[1]
expect(secondary.providers).toContain("opencode-go") expect(secondary.providers).toContain("opencode-go")
expect(secondary.model).toBe("minimax-m2.7-highspeed") expect(secondary.model).toBe("qwen3.5-plus")
const tertiary = explore.fallbackChain[2] const third = explore.fallbackChain[2]
expect(tertiary.providers).toContain("opencode-go") expect(third.providers).toEqual(["vercel"])
expect(tertiary.model).toBe("minimax-m2.7") expect(third.model).toBe("minimax-m2.7-highspeed")
const quaternary = explore.fallbackChain[3] const quaternary = explore.fallbackChain[3]
expect(quaternary.providers).toContain("anthropic") expect(quaternary.providers).toContain("opencode-go")
expect(quaternary.model).toBe("claude-haiku-4-5") expect(quaternary.model).toBe("minimax-m2.7")
const fifth = explore.fallbackChain[4] const quinary = explore.fallbackChain[4]
expect(fifth.providers).toContain("openai") expect(quinary.providers).toContain("anthropic")
expect(fifth.model).toBe("gpt-5.4-nano") expect(quinary.model).toBe("claude-haiku-4-5")
const sixth = explore.fallbackChain[5]
expect(sixth.providers).toContain("openai")
expect(sixth.model).toBe("gpt-5.4-nano")
}) })
test("multimodal-looker has valid fallbackChain with gpt-5.5 as primary", () => { test("multimodal-looker has valid fallbackChain with gpt-5.5 as primary", () => {
@@ -130,7 +138,7 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
const multimodalLooker = AGENT_MODEL_REQUIREMENTS["multimodal-looker"] const multimodalLooker = AGENT_MODEL_REQUIREMENTS["multimodal-looker"]
// when - accessing multimodal-looker requirement // when - accessing multimodal-looker requirement
// then - fallbackChain: gpt-5.5 -> opencode-go/kimi-k2.5 -> glm-4.6v -> gpt-5-nano // then - fallbackChain: gpt-5.5 -> opencode-go/kimi-k2.6 -> glm-4.6v -> gpt-5-nano
expect(multimodalLooker).toBeDefined() expect(multimodalLooker).toBeDefined()
expect(multimodalLooker.fallbackChain).toBeArray() expect(multimodalLooker.fallbackChain).toBeArray()
expect(multimodalLooker.fallbackChain).toHaveLength(4) expect(multimodalLooker.fallbackChain).toHaveLength(4)
@@ -142,7 +150,7 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
const secondary = multimodalLooker.fallbackChain[1] const secondary = multimodalLooker.fallbackChain[1]
expect(secondary.providers).toEqual(["opencode-go", "vercel"]) expect(secondary.providers).toEqual(["opencode-go", "vercel"])
expect(secondary.model).toBe("kimi-k2.5") expect(secondary.model).toBe("kimi-k2.6")
const tertiary = multimodalLooker.fallbackChain[2] const tertiary = multimodalLooker.fallbackChain[2]
expect(tertiary.model).toBe("glm-4.6v") expect(tertiary.model).toBe("glm-4.6v")
@@ -222,7 +230,7 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
expect(primary.providers[0]).toBe("anthropic") expect(primary.providers[0]).toBe("anthropic")
const secondary = atlas.fallbackChain[1] const secondary = atlas.fallbackChain[1]
expect(secondary.model).toBe("kimi-k2.5") expect(secondary.model).toBe("kimi-k2.6")
expect(secondary.providers[0]).toBe("opencode-go") expect(secondary.providers[0]).toBe("opencode-go")
const tertiary = atlas.fallbackChain[2] const tertiary = atlas.fallbackChain[2]
@@ -345,7 +353,7 @@ describe("CATEGORY_MODEL_REQUIREMENTS", () => {
const visualEngineering = CATEGORY_MODEL_REQUIREMENTS["visual-engineering"] const visualEngineering = CATEGORY_MODEL_REQUIREMENTS["visual-engineering"]
// when - accessing visual-engineering requirement // when - accessing visual-engineering requirement
// then - fallbackChain: gemini-3.1-pro(high) → glm-5 → opus-4-6(max) → opencode-go/glm-5 → k2p5 // then - fallbackChain: gemini-3.1-pro(high) → glm-5 → opus-4-6(max) → opencode-go/glm-5.1 → k2p5
expect(visualEngineering).toBeDefined() expect(visualEngineering).toBeDefined()
expect(visualEngineering.fallbackChain).toBeArray() expect(visualEngineering.fallbackChain).toBeArray()
expect(visualEngineering.fallbackChain).toHaveLength(5) expect(visualEngineering.fallbackChain).toHaveLength(5)
@@ -365,7 +373,7 @@ describe("CATEGORY_MODEL_REQUIREMENTS", () => {
const fourth = visualEngineering.fallbackChain[3] const fourth = visualEngineering.fallbackChain[3]
expect(fourth.providers[0]).toBe("opencode-go") expect(fourth.providers[0]).toBe("opencode-go")
expect(fourth.model).toBe("glm-5") expect(fourth.model).toBe("glm-5.1")
const fifth = visualEngineering.fallbackChain[4] const fifth = visualEngineering.fallbackChain[4]
expect(fifth.providers[0]).toBe("kimi-for-coding") expect(fifth.providers[0]).toBe("kimi-for-coding")
@@ -458,7 +466,7 @@ describe("CATEGORY_MODEL_REQUIREMENTS", () => {
expect(primary.providers[0]).toBe("google") expect(primary.providers[0]).toBe("google")
const second = writing.fallbackChain[1] const second = writing.fallbackChain[1]
expect(second.model).toBe("kimi-k2.5") expect(second.model).toBe("kimi-k2.6")
expect(second.providers[0]).toBe("opencode-go") expect(second.providers[0]).toBe("opencode-go")
const third = writing.fallbackChain[2] const third = writing.fallbackChain[2]
+17 -15
View File
@@ -25,7 +25,7 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
model: "claude-opus-4-7", model: "claude-opus-4-7",
variant: "max", variant: "max",
}, },
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.5" }, { providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
{ providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["kimi-for-coding"], model: "k2p5" },
{ {
providers: [ providers: [
@@ -72,13 +72,14 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
model: "claude-opus-4-7", model: "claude-opus-4-7",
variant: "max", variant: "max",
}, },
{ providers: ["opencode-go", "vercel"], model: "glm-5" }, { providers: ["opencode-go", "vercel"], model: "glm-5.1" },
], ],
}, },
librarian: { librarian: {
fallbackChain: [ fallbackChain: [
{ providers: ["openai"], model: "gpt-5.4-mini-fast" }, { providers: ["openai"], model: "gpt-5.4-mini-fast" },
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7-highspeed" }, { providers: ["opencode-go"], model: "qwen3.5-plus" },
{ providers: ["vercel"], model: "minimax-m2.7-highspeed" },
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" }, { providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
{ providers: ["anthropic", "opencode", "vercel"], model: "claude-haiku-4-5" }, { providers: ["anthropic", "opencode", "vercel"], model: "claude-haiku-4-5" },
{ providers: ["openai", "opencode", "vercel"], model: "gpt-5.4-nano" }, { providers: ["openai", "opencode", "vercel"], model: "gpt-5.4-nano" },
@@ -87,7 +88,8 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
explore: { explore: {
fallbackChain: [ fallbackChain: [
{ providers: ["openai"], model: "gpt-5.4-mini-fast" }, { providers: ["openai"], model: "gpt-5.4-mini-fast" },
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7-highspeed" }, { providers: ["opencode-go"], model: "qwen3.5-plus" },
{ providers: ["vercel"], model: "minimax-m2.7-highspeed" },
{ providers: ["opencode-go", "vercel"], model: "minimax-m2.7" }, { providers: ["opencode-go", "vercel"], model: "minimax-m2.7" },
{ providers: ["anthropic", "opencode", "vercel"], model: "claude-haiku-4-5" }, { providers: ["anthropic", "opencode", "vercel"], model: "claude-haiku-4-5" },
{ providers: ["openai", "opencode", "vercel"], model: "gpt-5.4-nano" }, { providers: ["openai", "opencode", "vercel"], model: "gpt-5.4-nano" },
@@ -96,7 +98,7 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
"multimodal-looker": { "multimodal-looker": {
fallbackChain: [ fallbackChain: [
{ providers: ["openai", "opencode", "vercel"], model: "gpt-5.5", variant: "medium" }, { providers: ["openai", "opencode", "vercel"], model: "gpt-5.5", variant: "medium" },
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.5" }, { providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
{ providers: ["zai-coding-plan", "vercel"], model: "glm-4.6v" }, { providers: ["zai-coding-plan", "vercel"], model: "glm-4.6v" },
{ providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5-nano" }, { providers: ["openai", "github-copilot", "opencode", "vercel"], model: "gpt-5-nano" },
], ],
@@ -113,7 +115,7 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
model: "gpt-5.5", model: "gpt-5.5",
variant: "high", variant: "high",
}, },
{ providers: ["opencode-go", "vercel"], model: "glm-5" }, { providers: ["opencode-go", "vercel"], model: "glm-5.1" },
{ {
providers: ["google", "github-copilot", "opencode", "vercel"], providers: ["google", "github-copilot", "opencode", "vercel"],
model: "gemini-3.1-pro", model: "gemini-3.1-pro",
@@ -132,7 +134,7 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
model: "gpt-5.5", model: "gpt-5.5",
variant: "high", variant: "high",
}, },
{ providers: ["opencode-go", "vercel"], model: "glm-5" }, { providers: ["opencode-go", "vercel"], model: "glm-5.1" },
{ providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["kimi-for-coding"], model: "k2p5" },
], ],
}, },
@@ -153,13 +155,13 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
model: "gemini-3.1-pro", model: "gemini-3.1-pro",
variant: "high", variant: "high",
}, },
{ providers: ["opencode-go", "vercel"], model: "glm-5" }, { providers: ["opencode-go", "vercel"], model: "glm-5.1" },
], ],
}, },
atlas: { atlas: {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic", "github-copilot", "opencode", "vercel"], model: "claude-sonnet-4-6" }, { providers: ["anthropic", "github-copilot", "opencode", "vercel"], model: "claude-sonnet-4-6" },
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.5" }, { providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
{ {
providers: ["openai", "github-copilot", "opencode", "vercel"], providers: ["openai", "github-copilot", "opencode", "vercel"],
model: "gpt-5.5", model: "gpt-5.5",
@@ -171,7 +173,7 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
"sisyphus-junior": { "sisyphus-junior": {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic", "github-copilot", "opencode", "vercel"], model: "claude-sonnet-4-6" }, { providers: ["anthropic", "github-copilot", "opencode", "vercel"], model: "claude-sonnet-4-6" },
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.5" }, { providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
{ {
providers: ["openai", "github-copilot", "opencode", "vercel"], providers: ["openai", "github-copilot", "opencode", "vercel"],
model: "gpt-5.5", model: "gpt-5.5",
@@ -197,7 +199,7 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
model: "claude-opus-4-7", model: "claude-opus-4-7",
variant: "max", variant: "max",
}, },
{ providers: ["opencode-go", "vercel"], model: "glm-5" }, { providers: ["opencode-go", "vercel"], model: "glm-5.1" },
{ providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["kimi-for-coding"], model: "k2p5" },
], ],
}, },
@@ -218,7 +220,7 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
model: "claude-opus-4-7", model: "claude-opus-4-7",
variant: "max", variant: "max",
}, },
{ providers: ["opencode-go", "vercel"], model: "glm-5" }, { providers: ["opencode-go", "vercel"], model: "glm-5.1" },
], ],
}, },
deep: { deep: {
@@ -284,7 +286,7 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
model: "gpt-5.3-codex", model: "gpt-5.3-codex",
variant: "medium", variant: "medium",
}, },
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.5" }, { providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
{ {
providers: ["google", "github-copilot", "opencode", "vercel"], providers: ["google", "github-copilot", "opencode", "vercel"],
model: "gemini-3-flash", model: "gemini-3-flash",
@@ -306,7 +308,7 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
}, },
{ providers: ["zai-coding-plan", "opencode", "vercel"], model: "glm-5" }, { providers: ["zai-coding-plan", "opencode", "vercel"], model: "glm-5" },
{ providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["opencode-go", "vercel"], model: "glm-5" }, { providers: ["opencode-go", "vercel"], model: "glm-5.1" },
{ providers: ["opencode", "vercel"], model: "kimi-k2.5" }, { providers: ["opencode", "vercel"], model: "kimi-k2.5" },
{ {
providers: [ providers: [
@@ -328,7 +330,7 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
providers: ["google", "github-copilot", "opencode", "vercel"], providers: ["google", "github-copilot", "opencode", "vercel"],
model: "gemini-3-flash", model: "gemini-3-flash",
}, },
{ providers: ["opencode-go", "vercel"], model: "kimi-k2.5" }, { providers: ["opencode-go", "vercel"], model: "kimi-k2.6" },
{ {
providers: ["anthropic", "github-copilot", "opencode", "vercel"], providers: ["anthropic", "github-copilot", "opencode", "vercel"],
model: "claude-sonnet-4-6", model: "claude-sonnet-4-6",
+5 -5
View File
@@ -272,7 +272,7 @@ describe("executeSyncTask - cleanup on error paths", () => {
} }
const fallbackChain = [ const fallbackChain = [
{ providers: ["anthropic"], model: "claude-opus-4-7", variant: "max" }, { providers: ["anthropic"], model: "claude-opus-4-7", variant: "max" },
{ providers: ["opencode-go"], model: "kimi-k2.5" }, { providers: ["opencode-go"], model: "kimi-k2.6" },
] ]
//#when //#when
@@ -282,10 +282,10 @@ describe("executeSyncTask - cleanup on error paths", () => {
//#then //#then
expect(result).toContain("Task completed") expect(result).toContain("Task completed")
expect(result).toContain("Model: opencode-go/kimi-k2.5") expect(result).toContain("Model: opencode-go/kimi-k2.6")
expect(attemptedModels).toEqual([ expect(attemptedModels).toEqual([
{ providerID: "anthropic", modelID: "claude-opus-4-7", variant: "max" }, { providerID: "anthropic", modelID: "claude-opus-4-7", variant: "max" },
{ providerID: "opencode-go", modelID: "kimi-k2.5", variant: undefined }, { providerID: "opencode-go", modelID: "kimi-k2.6", variant: undefined },
]) ])
}) })
@@ -339,7 +339,7 @@ describe("executeSyncTask - cleanup on error paths", () => {
} }
const fallbackChain = [ const fallbackChain = [
{ providers: ["anthropic"], model: "claude-opus-4-7", variant: "max" }, { providers: ["anthropic"], model: "claude-opus-4-7", variant: "max" },
{ providers: ["opencode-go"], model: "kimi-k2.5" }, { providers: ["opencode-go"], model: "kimi-k2.6" },
{ providers: ["openai"], model: "gpt-5.4", variant: "medium" }, { providers: ["openai"], model: "gpt-5.4", variant: "medium" },
] ]
@@ -352,7 +352,7 @@ describe("executeSyncTask - cleanup on error paths", () => {
expect(result).toBe("Final failure") expect(result).toBe("Final failure")
expect(attemptedModels).toEqual([ expect(attemptedModels).toEqual([
{ providerID: "anthropic", modelID: "claude-opus-4-7", variant: "max" }, { providerID: "anthropic", modelID: "claude-opus-4-7", variant: "max" },
{ providerID: "opencode-go", modelID: "kimi-k2.5", variant: undefined }, { providerID: "opencode-go", modelID: "kimi-k2.6", variant: undefined },
{ providerID: "openai", modelID: "gpt-5.4", variant: "medium" }, { providerID: "openai", modelID: "gpt-5.4", variant: "medium" },
]) ])
}) })