Merge pull request #3876 from code-yeongyu/feature/web-team-mode-and-model-updates

feat(web): refresh landing for v4.0 — Team Mode, accurate models, Lighthouse 100
This commit is contained in:
YeonGyu-Kim
2026-05-09 03:58:20 +09:00
committed by GitHub
18 changed files with 559 additions and 111 deletions
+28 -3
View File
@@ -145,6 +145,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
| | 機能 | 何をするのか |
| :---: | :------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 🤖 | **規律あるエージェント (Discipline Agents)** | Sisyphus が Hephaestus、Oracle、Librarian、Explore をオーケストレーションします。完全な AI 開発チームが並列で動きます。 |
| 👥 | **Team Mode** (v4.0, オプトイン) | リードエージェント + 最大 8 メンバーの並列実行、リアルタイム tmux 可視化、専用 `team_*` ツール群。`hyperplan`(5 人の敵対的批評家)と `security-research`(3 人のハンター + 2 人の PoC エンジニア)を駆動します。[ドキュメント →](docs/guide/team-mode.md) |
| ⚡ | **`ultrawork` / `ulw`** | 一言で OK。すべてのエージェントがアクティブになり、終わるまで止まりません。 |
| 🚪 | **[IntentGate](https://factory.ai/news/terminal-bench)** | ユーザーの真の意図を分析してから分類・行動します。もう文字通りに誤解して的外れなことをすることはありません。 |
| 🔗 | **ハッシュベースの編集ツール** | `LINE#ID` のコンテンツハッシュですべての変更を検証します。stale-line エラー 0%。[oh-my-pi](https://github.com/can1357/oh-my-pi) にインスパイアされています。[The Harness Problem →](https://blog.can.ac/2026/02/12/the-harness-problem/) |
@@ -169,7 +170,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) はあなたのメインオーケストレーターです。計画を立て、専門家に委任し、攻撃的な並列実行でタスクを完了まで推進します。途中で投げ出すことはありません。
**Hephaestus** (`gpt-5.4`) はあなたの自律的なディープワーカーです。レシピではなく、目標を与えてください。手取り足取り教えなくても、コードベースを探索し、パターンを調査し、エンドツーエンドで実行します。*正当なる職人 (The Legitimate Craftsman).*
**Hephaestus** (`gpt-5.5`) はあなたの自律的なディープワーカーです。レシピではなく、目標を与えてください。手取り足取り教えなくても、コードベースを探索し、パターンを調査し、エンドツーエンドで実行します。*正当なる職人 (The Legitimate Craftsman).*
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) はあなたの戦略プランナーです。インタビューモードで質問を投げ、スコープを特定し、コードに一行触れる前に詳細な計画を構築します。
@@ -177,7 +178,31 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
> Anthropic が [私たちのせいで OpenCode をブロックしました。](https://x.com/thdxr/status/2010149530486911014) だからこそ Hephaestus は「正当なる職人 (The Legitimate Craftsman)」と呼ばれているのです。皮肉を込めています。
>
> Opus で最もよく動きますが、Kimi K2.6 + GPT-5.4 の組み合わせだけでも、バニラの Claude Code を軽く凌駕します。設定は一切不要です。
> Opus で最もよく動きますが、Kimi K2.6 + GPT-5.5 の組み合わせだけでも、バニラの Claude Code を軽く凌駕します。設定は一切不要です。
### Team Mode (v4.0)
エージェント 1 体でも速い。調和したチームは*圧倒的*です。
**Team Mode** は oh-my-openagent を「サブエージェント付きの一体のエージェント」から、本物のマルチエージェントシステムへと変えます。リードエージェントがカテゴリ特化のメンバーチームを統括し、全員が**並列で**動き、専用ツール(`team_create``team_send_message``team_task_create``team_status`、…)で通信します。tmux レイアウトの focus + grid ウィンドウで、全メンバーの作業を同時に観察できます。
```jsonc
// .opencode/oh-my-openagent.jsonc
{
"team_mode": {
"enabled": true,
"max_parallel_members": 4,
"tmux_visualization": true
}
}
```
opencode を再起動すると `team_*` ツールファミリーが解放されます。すでに 2 つのスキルがその上に乗っています:
- **`hyperplan`** — 5 人の敵対的エージェントが、一行のコードが書かれる前に直交する角度から計画を引き裂きます。
- **`security-research`** — 3 人の脆弱性ハンター + 2 人の PoC エンジニアがコードベースを並列で監査。重大度は*実際の悪用可能性*で校正されます。
> **デフォルトは OFF。必要なときに ON。** [Team Mode ガイド全文 →](docs/guide/team-mode.md)
### エージェントのオーケストレーション
@@ -190,7 +215,7 @@ Sisyphus がサブエージェントにタスクを委任する際、モデル
| `quick` | 単一ファイルの変更、タイポの修正 |
| `ultrabrain` | ハードロジック、アーキテクチャの決定 |
エージェントは作業の種類を伝えるだけで、ハーネスが適切なモデルを選びます。`ultrabrain` はデフォルトで GPT-5.4 xhigh にルーティングされるようになりました。あなたが触るものは何もありません。
エージェントは作業の種類を伝えるだけで、ハーネスが適切なモデルを選びます。`ultrabrain` はデフォルトで GPT-5.5 xhigh にルーティングされるようになりました。あなたが触るものは何もありません。
### Claude Code 互換性
+28 -3
View File
@@ -146,6 +146,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
| | 기능 | 하는 일 |
| :---: | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 🤖 | **Discipline Agents** | Sisyphus가 Hephaestus, Oracle, Librarian, Explore를 지휘합니다. 병렬로 도는 풀스택 AI 개발팀. |
| 👥 | **Team Mode** (v4.0, opt-in) | 리드 에이전트 + 최대 8명의 병렬 멤버, 실시간 tmux 시각화, 전용 `team_*` 도구. `hyperplan`(5명의 적대적 비평가)과 `security-research`(3명의 헌터 + 2명의 PoC 엔지니어)를 구동합니다. [문서 →](docs/guide/team-mode.md) |
| ⚡ | **`ultrawork` / `ulw`** | 한 단어. 모든 에이전트가 켜집니다. 끝날 때까지 멈추지 않습니다. |
| 🚪 | **[IntentGate](https://factory.ai/news/terminal-bench)** | 분류하거나 행동하기 전에 사용자의 진짜 의도부터 분석합니다. 문자 그대로 오해하는 일은 끝. |
| 🔗 | **Hash-Anchored Edit Tool** | `LINE#ID` 콘텐츠 해시가 모든 변경을 검증합니다. 낡은 라인 에러 0건. [oh-my-pi](https://github.com/can1357/oh-my-pi)에서 영감. [The Harness Problem →](https://blog.can.ac/2026/02/12/the-harness-problem/) |
@@ -170,7 +171,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**)는 메인 오케스트레이터입니다. 계획을 세우고, 전문가에게 위임하고, 공격적인 병렬 실행으로 작업을 끝까지 밀어붙입니다. 중간에 멈추지 않습니다.
**Hephaestus** (`gpt-5.4`)는 자율적으로 깊게 파는 작업자입니다. 레시피가 아니라 목표를 주세요. 코드베이스를 탐색하고, 패턴을 조사하고, 손을 잡아주지 않아도 엔드투엔드로 실행합니다. *The Legitimate Craftsman.*
**Hephaestus** (`gpt-5.5`)는 자율적으로 깊게 파는 작업자입니다. 레시피가 아니라 목표를 주세요. 코드베이스를 탐색하고, 패턴을 조사하고, 손을 잡아주지 않아도 엔드투엔드로 실행합니다. *The Legitimate Craftsman.*
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**)는 전략 플래너입니다. 인터뷰 모드: 질문으로 스코프를 파악하고, 코드에 손대기 전에 상세한 계획을 만듭니다.
@@ -178,7 +179,31 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
> Anthropic은 [우리 때문에 OpenCode를 차단했습니다.](https://x.com/thdxr/status/2010149530486911014) 그래서 Hephaestus에게 "The Legitimate Craftsman"이라는 별명이 붙었습니다. 의도된 아이러니입니다.
>
> Opus에서 가장 잘 돌지만, Kimi K2.6 + GPT-5.4 조합만으로도 이미 바닐라 Claude Code를 이깁니다. 별도 설정 없이요.
> Opus에서 가장 잘 돌지만, Kimi K2.6 + GPT-5.5 조합만으로도 이미 바닐라 Claude Code를 이깁니다. 별도 설정 없이요.
### Team Mode (v4.0)
에이전트 한 명도 빠릅니다. 조율된 팀은 *압도적*입니다.
**Team Mode**는 oh-my-openagent를 "서브에이전트를 가진 한 명의 에이전트"에서 진짜 멀티 에이전트 시스템으로 바꿉니다. 리드 에이전트가 카테고리별 전문화된 멤버 팀을 지휘하며, 모두 **병렬로** 동작하고 전용 도구(`team_create`, `team_send_message`, `team_task_create`, `team_status`, ...)로 통신합니다. tmux 레이아웃의 focus + grid 윈도우에서 모든 멤버의 작업을 동시에 지켜보세요.
```jsonc
// .opencode/oh-my-openagent.jsonc
{
"team_mode": {
"enabled": true,
"max_parallel_members": 4,
"tmux_visualization": true
}
}
```
opencode를 재시작하면 `team_*` 도구 패밀리가 활성화됩니다. 이미 두 개의 스킬이 그 위에 올라가 있습니다:
- **`hyperplan`** — 5명의 적대적 에이전트가 코드 한 줄 작성되기 전에 직교 각도에서 당신의 계획을 갈가리 분해합니다.
- **`security-research`** — 3명의 취약점 헌터 + 2명의 PoC 엔지니어가 코드베이스를 병렬로 감사합니다. 심각도는 *실제 익스플로잇 가능성*으로 보정됩니다.
> **기본은 OFF. 원할 때 켜세요.** [Team Mode 가이드 전체 →](docs/guide/team-mode.md)
### Agent Orchestration
@@ -191,7 +216,7 @@ Sisyphus가 서브에이전트에 위임할 때는 모델을 직접 고르지
| `quick` | 단일 파일 변경, 오타 수정 |
| `ultrabrain` | 어려운 로직, 아키텍처 결정 |
에이전트는 필요한 작업 종류만 말하고, 하네스가 적합한 모델을 고릅니다. `ultrabrain`은 이제 기본으로 GPT-5.4 xhigh로 라우팅됩니다. 당신이 건드릴 건 없습니다.
에이전트는 필요한 작업 종류만 말하고, 하네스가 적합한 모델을 고릅니다. `ultrabrain`은 이제 기본으로 GPT-5.5 xhigh로 라우팅됩니다. 당신이 건드릴 건 없습니다.
### Claude Code 호환성
+28 -3
View File
@@ -146,6 +146,7 @@ Even with only the following subscriptions, `ultrawork` works well (this project
| | Feature | What it does |
| :---: | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 🤖 | **Discipline Agents** | Sisyphus orchestrates Hephaestus, Oracle, Librarian, Explore. A full AI dev team in parallel. |
| 👥 | **Team Mode** (v4.0, opt-in) | Lead agent + up to 8 parallel members, real-time tmux visualization, dedicated `team_*` tools. Powers `hyperplan` (5 hostile critics) and `security-research` (3 hunters + 2 PoC engineers). [Docs →](docs/guide/team-mode.md) |
| ⚡ | **`ultrawork` / `ulw`** | One word. Every agent activates. Doesn't stop until done. |
| 🚪 | **[IntentGate](https://factory.ai/news/terminal-bench)** | Analyzes true user intent before classifying or acting. No more literal misinterpretations. |
| 🔗 | **Hash-Anchored Edit Tool** | `LINE#ID` content hash validates every change. Zero stale-line errors. Inspired by [oh-my-pi](https://github.com/can1357/oh-my-pi). [The Harness Problem →](https://blog.can.ac/2026/02/12/the-harness-problem/) |
@@ -170,7 +171,7 @@ Even with only the following subscriptions, `ultrawork` works well (this project
**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.5`) 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.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.
@@ -178,7 +179,31 @@ Every agent is tuned to its model's specific strengths. No manual model juggling
> 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.6 + GPT-5.4 already beats vanilla Claude Code. Zero config needed.
> We run best on Opus, but Kimi K2.6 + GPT-5.5 already beats vanilla Claude Code. Zero config needed.
### Team Mode (v4.0)
One agent is fast. A coordinated team is *devastating*.
**Team Mode** turns oh-my-openagent from "one agent with subagents" into a real multi-agent system. A lead agent orchestrates a team of category-specialized members, all running **in parallel** and communicating through dedicated tools (`team_create`, `team_send_message`, `team_task_create`, `team_status`, ...). Watch every member work simultaneously in a tmux layout with focus + grid windows.
```jsonc
// .opencode/oh-my-openagent.jsonc
{
"team_mode": {
"enabled": true,
"max_parallel_members": 4,
"tmux_visualization": true
}
}
```
Restart opencode and the `team_*` tool family unlocks. Two skills already ride on top:
- **`hyperplan`** — 5 hostile agents tear apart your plan from orthogonal angles before a single line of code is written.
- **`security-research`** — 3 vulnerability hunters + 2 PoC engineers audit your codebase in parallel, with severity calibrated by *actual exploitability*.
> **Off by default. Enable it when you want it.** [Full Team Mode guide →](docs/guide/team-mode.md)
### Agent Orchestration
@@ -191,7 +216,7 @@ When Sisyphus delegates to a subagent, it doesn't pick a model. It picks a **cat
| `quick` | Single-file changes, typos |
| `ultrabrain` | Hard logic, architecture decisions |
The agent says what kind of work it needs; the harness picks the right model. `ultrabrain` now routes to GPT-5.4 xhigh by default. You touch nothing.
The agent says what kind of work it needs; the harness picks the right model. `ultrabrain` now routes to GPT-5.5 xhigh by default. You touch nothing.
### Claude Code Compatibility
+28 -3
View File
@@ -145,6 +145,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
| | Функция | Что делает |
| --- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 🤖 | **Дисциплинированные агенты** | Sisyphus оркестрирует Hephaestus, Oracle, Librarian, Explore. Полноценная AI-команда разработки в параллельном режиме. |
| 👥 | **Team Mode** (v4.0, opt-in) | Лид-агент + до 8 параллельных участников, визуализация в tmux в реальном времени, выделенные инструменты `team_*`. Питает `hyperplan` (5 враждебных критиков) и `security-research` (3 охотника + 2 PoC-инженера). [Документация →](docs/guide/team-mode.md) |
| ⚡ | **`ultrawork` / `ulw`** | Одно слово. Все агенты активируются. Не останавливается, пока задача не выполнена. |
| 🚪 | **[IntentGate](https://factory.ai/news/terminal-bench)** | Анализирует истинное намерение пользователя перед классификацией и действием. Никакого буквального неверного толкования. |
| 🔗 | **Инструмент правок на основе хэш-якорей** | Хэш содержимого `LINE#ID` проверяет каждое изменение. Ноль ошибок с устаревшими строками. Вдохновлено [oh-my-pi](https://github.com/can1357/oh-my-pi). [The Harness Problem →](https://blog.can.ac/2026/02/12/the-harness-problem/) |
@@ -169,7 +170,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) — главный оркестратор. Он планирует, делегирует задачи специалистам и доводит их до завершения с агрессивным параллельным выполнением. Он не останавливается на полпути.
**Hephaestus** (`gpt-5.4`) — автономный глубокий исполнитель. Дайте ему цель, а не рецепт. Он исследует кодовую базу, изучает паттерны и выполняет задачи сквозным образом без лишних подсказок. *Законный Мастер.*
**Hephaestus** (`gpt-5.5`) — автономный глубокий исполнитель. Дайте ему цель, а не рецепт. Он исследует кодовую базу, изучает паттерны и выполняет задачи сквозным образом без лишних подсказок. *Законный Мастер.*
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) — стратегический планировщик. Режим интервью: он задаёт вопросы, определяет объём работ и формирует детальный план до того, как написана хотя бы одна строка кода.
@@ -177,7 +178,31 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
> Anthropic [заблокировал OpenCode из-за нас.](https://x.com/thdxr/status/2010149530486911014) Именно поэтому Hephaestus зовётся «Законным Мастером». Ирония намеренная.
>
> Мы работаем лучше всего на Opus, но Kimi K2.6 + GPT-5.4 уже превосходят ванильный Claude Code. Никакой настройки не требуется.
> Мы работаем лучше всего на Opus, но Kimi K2.6 + GPT-5.5 уже превосходят ванильный Claude Code. Никакой настройки не требуется.
### Team Mode (v4.0)
Один агент — это быстро. Слаженная команда — это *разрушительно*.
**Team Mode** превращает oh-my-openagent из «одного агента с подагентами» в полноценную мультиагентную систему. Лид-агент оркестрирует команду специализированных по категориям участников, все они работают **параллельно** и общаются через выделенные инструменты (`team_create`, `team_send_message`, `team_task_create`, `team_status`, …). Наблюдайте за работой каждого участника одновременно в tmux-раскладке с focus- и grid-окнами.
```jsonc
// .opencode/oh-my-openagent.jsonc
{
"team_mode": {
"enabled": true,
"max_parallel_members": 4,
"tmux_visualization": true
}
}
```
Перезапустите opencode — и семейство инструментов `team_*` будет активировано. Два навыка уже стоят на этом фундаменте:
- **`hyperplan`** — 5 враждебных агентов разносят ваш план под ортогональными углами ещё до написания первой строчки кода.
- **`security-research`** — 3 охотника за уязвимостями + 2 PoC-инженера параллельно проводят аудит кодовой базы. Серьёзность калибруется по *фактической эксплуатируемости*.
> **По умолчанию выключено. Включайте, когда нужно.** [Полное руководство по Team Mode →](docs/guide/team-mode.md)
### Оркестрация агентов
@@ -190,7 +215,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
| `quick` | Изменения в одном файле, опечатки |
| `ultrabrain` | Сложная логика, архитектурные решения |
Агент сообщает тип задачи, а обвязка подбирает нужную модель. `ultrabrain` теперь по умолчанию направляется в GPT-5.4 xhigh. Вы ни к чему не прикасаетесь.
Агент сообщает тип задачи, а обвязка подбирает нужную модель. `ultrabrain` теперь по умолчанию направляется в GPT-5.5 xhigh. Вы ни к чему не прикасаетесь.
### Совместимость с Claude Code
+28 -3
View File
@@ -145,6 +145,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
| | 特性 | 功能说明 |
| :---: | :-------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 🤖 | **自律军团 (Discipline Agents)** | Sisyphus 负责调度 Hephaestus、Oracle、Librarian 和 Explore。一支完整的 AI 开发团队并行工作。 |
| 👥 | **Team Mode** (v4.0, 选择性启用) | 领导 Agent + 最多 8 个并行成员,实时 tmux 可视化,专用 `team_*` 工具家族。驱动 `hyperplan`(5 个敌对评论者) 和 `security-research`(3 个猎手 + 2 个 PoC 工程师)。[文档 →](docs/guide/team-mode.md) |
| ⚡ | **`ultrawork` / `ulw`** | 一键触发,所有智能体出动。任务完成前绝不罢休。 |
| 🚪 | **[IntentGate 意图门](https://factory.ai/news/terminal-bench)** | 真正行动前,先分析用户的真实意图。彻底告别被字面意思误导的 AI 废话。 |
| 🔗 | **基于哈希的编辑工具** | 每次修改都通过 `LINE#ID` 内容哈希验证、0% 错误修改。灵感来自 [oh-my-pi](https://github.com/can1357/oh-my-pi)。[The Harness Problem →](https://blog.can.ac/2026/02/12/the-harness-problem/) |
@@ -169,7 +170,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
**Sisyphus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) 是你的主指挥官。他负责制定计划、分配任务给专家团队,并以极其激进的并行策略推动任务直至完成。他从不半途而废。
**Hephaestus** (`gpt-5.4`) 是你的自主深度工作者。你只需要给他目标,不要给他具体做法。他会自动探索代码库模式,从头到尾独立执行任务,绝不会中途要你当保姆。*名副其实的正牌工匠。*
**Hephaestus** (`gpt-5.5`) 是你的自主深度工作者。你只需要给他目标,不要给他具体做法。他会自动探索代码库模式,从头到尾独立执行任务,绝不会中途要你当保姆。*名副其实的正牌工匠。*
**Prometheus** (`claude-opus-4-7` / **`kimi-k2.6`** / **`glm-5.1`**) 是你的战略规划师。他通过访谈模式,在动一行代码之前,先通过提问确定范围并构建详尽的执行计划。
@@ -177,7 +178,31 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
> 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.5 就足以碾压原版的 Claude Code。完全不需要配置。
### Team Mode (v4.0)
一个 Agent 已经够快。一支协调的团队是 *毁灭性* 的。
**Team Mode** 把 oh-my-openagent 从「带子 Agent 的单个 Agent」升级为真正的多 Agent 系统。一个领导 Agent 协调一队按类别专业化的成员,全部 **并行** 运行,通过专用工具(`team_create``team_send_message``team_task_create``team_status`、…)进行通信。在 tmux 布局的 focus + grid 窗口中同时观察每个成员的工作。
```jsonc
// .opencode/oh-my-openagent.jsonc
{
"team_mode": {
"enabled": true,
"max_parallel_members": 4,
"tmux_visualization": true
}
}
```
重启 opencode`team_*` 工具家族就会解锁。已经有两个技能站在它之上:
- **`hyperplan`** — 5 个敌对 Agent 在写下第一行代码之前,从正交角度撕碎你的计划。
- **`security-research`** — 3 个漏洞猎手 + 2 个 PoC 工程师并行审计你的代码库。严重性按 *实际可利用性* 校准。
> **默认关闭。需要时再开。** [Team Mode 完整指南 →](docs/guide/team-mode.md)
### 智能体调度机制
@@ -190,7 +215,7 @@ Read this and tell me why it's not just another boilerplate: https://raw.githubu
| `quick` | 单文件修改、修错字 |
| `ultrabrain` | 复杂硬核逻辑、架构决策 |
智能体只需要说明要做什么类型的工作,框架就会挑选出最合适的模型去干。`ultrabrain` 现在默认路由到 GPT-5.4 xhigh。你完全不需要操心。
智能体只需要说明要做什么类型的工作,框架就会挑选出最合适的模型去干。`ultrabrain` 现在默认路由到 GPT-5.5 xhigh。你完全不需要操心。
### 完全兼容 Claude Code
+139 -19
View File
@@ -1,7 +1,6 @@
import type { Metadata } from "next"
import type { JSX, SVGProps } from "react"
import { getTranslations } from "next-intl/server"
import Image from "next/image"
import {
Layers,
Star,
@@ -18,6 +17,12 @@ import {
HardDrive,
ArrowRight,
Target,
Users,
Network,
Terminal,
Wrench,
Sparkles,
Sword,
} from "lucide-react"
import { HeroStats } from "@/components/landing/hero-stats"
import { InstallCommand } from "@/components/landing/install-command"
@@ -38,7 +43,7 @@ const FALLBACK_STATS = {
export const landingMetadata: Metadata = {
title: "Oh My OpenAgent — The Best Agent Harness",
description:
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, background agents, 40+ lifecycle hooks.",
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, Team Mode, background agents, 50+ lifecycle hooks.",
}
export async function LandingPage(): Promise<JSX.Element> {
@@ -109,18 +114,13 @@ export async function LandingPage(): Promise<JSX.Element> {
return (
<div className="flex min-h-screen flex-col overflow-x-hidden">
<link rel="preload" as="image" href="/images/hero.webp" fetchPriority="low" />
<section className="relative flex min-h-[90vh] items-center justify-center overflow-hidden pt-16">
<div className="absolute inset-0 z-0 opacity-30">
<Image
src="/images/hero.png"
alt=""
fill
priority
fetchPriority="high"
className="object-cover object-center"
sizes="100vw"
/>
</div>
<div
aria-hidden="true"
className="hero-bg absolute inset-0 z-0 bg-cover bg-center"
style={{ backgroundImage: "url(/images/hero.webp)" }}
/>
<div className="absolute inset-0 z-0 bg-gradient-to-b from-black/80 via-black/90 to-[#0a0a0a]" />
<div className="relative z-10 container mx-auto flex flex-col items-center gap-8 px-4 text-center md:px-6">
@@ -146,10 +146,10 @@ export async function LandingPage(): Promise<JSX.Element> {
}}
labels={{
githubStars: t("hero.githubStars", { count: "{count}" }),
specializedAgents: t("hero.specializedAgents", { count: "10" }),
specializedAgents: t("hero.specializedAgents", { count: "11" }),
totalDownloads: t("hero.totalDownloads", { count: "{count}" }),
monthlyDownloads: t("hero.monthlyDownloads", { count: "{count}" }),
lifecycleHooks: t("hero.lifecycleHooks", { count: "40+" }),
lifecycleHooks: t("hero.lifecycleHooks", { count: "50+" }),
}}
/>
@@ -466,6 +466,126 @@ export async function LandingPage(): Promise<JSX.Element> {
</div>
</section>
<section
id="team-mode"
className="relative overflow-hidden border-t border-white/5 bg-[#0a0a0a] py-24"
>
<div className="absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-fuchsia-900/20 via-black to-black opacity-70" />
<div className="relative z-10 container mx-auto px-4 md:px-6">
<div className="mx-auto max-w-5xl">
<div className="mb-6 flex flex-wrap items-center gap-3">
<Badge className="border-fuchsia-500/30 bg-fuchsia-500/10 px-4 py-1.5 font-mono text-fuchsia-300">
{t("teamMode.badge")}
</Badge>
<Badge variant="outline" className="border-zinc-700 text-xs text-zinc-400">
opt-in
</Badge>
</div>
<h2 className="mb-4 text-4xl font-bold tracking-tight md:text-5xl">
<span className="bg-gradient-to-r from-fuchsia-400 via-purple-400 to-cyan-400 bg-clip-text text-transparent">
{t("teamMode.title")}
</span>
</h2>
<h3 className="mb-6 text-2xl font-bold text-zinc-200 md:text-3xl">
{t("teamMode.headline")}
</h3>
<p className="mb-12 max-w-3xl text-xl leading-relaxed text-zinc-400">
{t("teamMode.description")}
</p>
<div className="mb-16 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4">
{(
[
{ key: "lead", icon: Network },
{ key: "parallel", icon: Users },
{ key: "tmux", icon: Terminal },
{ key: "tools", icon: Wrench },
] as const
).map(({ key, icon: Icon }) => (
<div key={key}>
<Card className="h-full border-zinc-800 bg-zinc-900/30 transition-colors hover:border-fuchsia-500/30">
<CardHeader className="pb-3">
<div className="w-fit rounded-lg bg-fuchsia-500/10 p-2 text-fuchsia-300">
<Icon className="h-5 w-5" />
</div>
<CardTitle className="mt-3 text-lg text-fuchsia-200">
{t(`teamMode.features.${key}.title`)}
</CardTitle>
</CardHeader>
<CardContent>
<p className="text-sm leading-relaxed text-zinc-400">
{t(`teamMode.features.${key}.description`)}
</p>
</CardContent>
</Card>
</div>
))}
</div>
<div className="mb-10 flex items-center gap-3">
<Sparkles className="h-4 w-4 text-fuchsia-400" />
<span className="font-mono text-sm tracking-widest text-fuchsia-300/80 uppercase">
{t("teamMode.poweredBy")}
</span>
<div className="h-px flex-1 bg-gradient-to-r from-fuchsia-500/30 to-transparent" />
</div>
<div className="mb-12 grid grid-cols-1 gap-6 lg:grid-cols-2">
{(
[
{ key: "hyperplan", icon: Sword, accent: "purple" as const },
{ key: "securityResearch", icon: Shield, accent: "rose" as const },
] as const
).map(({ key, icon: Icon, accent }) => (
<div key={key}>
<Card
className={`h-full border-zinc-800 bg-zinc-900/30 ${
accent === "purple"
? "hover:border-purple-500/40"
: "hover:border-rose-500/40"
} transition-colors`}
>
<CardHeader>
<div className="flex items-center gap-3">
<div
className={`rounded-lg p-2 ${
accent === "purple"
? "bg-purple-500/10 text-purple-300"
: "bg-rose-500/10 text-rose-300"
}`}
>
<Icon className="h-5 w-5" />
</div>
<CardTitle
className={`font-mono text-lg ${
accent === "purple" ? "text-purple-300" : "text-rose-300"
}`}
>
{t(`teamMode.skills.${key}.name`)}
</CardTitle>
</div>
</CardHeader>
<CardContent>
<p className="leading-relaxed text-zinc-300">
{t(`teamMode.skills.${key}.description`)}
</p>
</CardContent>
</Card>
</div>
))}
</div>
<div className="flex flex-col items-start gap-4 rounded-xl border border-zinc-800 bg-black/40 p-6 sm:flex-row sm:items-center sm:justify-between">
<code className="font-mono text-sm break-all text-fuchsia-200/90">
{t("teamMode.optIn")}
</code>
<p className="text-sm text-zinc-400 italic sm:text-right">{t("teamMode.tagline")}</p>
</div>
</div>
</div>
</section>
<section className="border-t border-white/5 bg-[#0a0a0a] py-24">
<div className="container mx-auto px-4 md:px-6">
<div className="mb-16 text-center">
@@ -532,10 +652,10 @@ export async function LandingPage(): Promise<JSX.Element> {
<div className="space-y-2">
{[
{ cat: "visual-engineering", model: "Gemini 3.1 Pro" },
{ cat: "ultrabrain", model: "GPT 5.4" },
{ cat: "ultrabrain", model: "GPT 5.5 xHigh" },
{ cat: "artistry", model: "Gemini 3.1 Pro" },
{ cat: "quick", model: "Claude Haiku 4.5" },
{ cat: "deep", model: "GPT 5.3 Codex" },
{ cat: "quick", model: "GPT 5.4 Mini" },
{ cat: "deep", model: "GPT 5.5 Medium" },
{ cat: "writing", model: "Kimi K2.5" },
{ cat: "git", model: "Claude Haiku 4.5" },
].map((item) => (
@@ -556,7 +676,7 @@ export async function LandingPage(): Promise<JSX.Element> {
Skill Injection
</h3>
<div className="grid grid-cols-2 gap-3">
{["playwright", "git-master", "frontend-ui-ux", "dev-browser"].map(
{["playwright", "git-master", "frontend-ui-ux", "team-mode"].map(
(skill) => (
<div
key={skill}
+23 -5
View File
@@ -7,7 +7,6 @@
@theme {
--font-sans: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
--font-mono: var(--font-geist-mono), ui-monospace, SFMono-Regular, monospace;
--font-manrope: var(--font-manrope), sans-serif;
--color-background: var(--background);
--color-foreground: var(--foreground);
@@ -133,11 +132,9 @@
/* Typography */
--font-geist-sans: var(--font-geist-sans);
--font-geist-mono: var(--font-geist-mono);
--font-manrope: var(--font-manrope);
--font-inter: var(--font-inter);
/* Semantic Fonts */
--font-heading: var(--font-manrope);
--font-heading: var(--font-geist-sans);
--font-body: var(--font-geist-sans);
--font-code: var(--font-geist-mono);
}
@@ -153,13 +150,34 @@
"rlig" 1,
"calt" 1;
}
/*
* Hero background image fades in after first paint so the headline text is
* the LCP candidate. The image is decorative (opacity 30%) and is preloaded
* with low priority so it doesn't compete with critical resources.
*/
.hero-bg {
opacity: 0;
animation: hero-bg-fade-in 600ms ease-out 200ms forwards;
}
@keyframes hero-bg-fade-in {
to {
opacity: 0.3;
}
}
@media (prefers-reduced-motion: reduce) {
.hero-bg {
animation: none;
opacity: 0.3;
}
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: var(--font-manrope);
font-family: var(--font-geist-sans);
}
[lang|="ko"] h1,
+19 -28
View File
@@ -1,22 +1,9 @@
import type { Metadata } from "next"
import { GeistSans } from "geist/font/sans"
import { GeistMono } from "geist/font/mono"
import { Inter, Manrope } from "next/font/google"
import Script from "next/script"
import "./globals.css"
const inter = Inter({
subsets: ["latin"],
variable: "--font-inter",
display: "swap",
})
const manrope = Manrope({
subsets: ["latin"],
variable: "--font-manrope",
display: "swap",
})
const primarySiteUrl = "https://ohmyopenagent.com"
export const metadata: Metadata = {
@@ -26,7 +13,7 @@ export const metadata: Metadata = {
template: "%s | Oh My OpenAgent",
},
description:
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, background agents, 40+ lifecycle hooks.",
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, Team Mode, background agents, 50+ lifecycle hooks.",
keywords: [
"opencode",
"oh-my-opencode",
@@ -36,6 +23,8 @@ export const metadata: Metadata = {
"code agent",
"sisyphus",
"multi-model",
"team mode",
"agent orchestration",
"claude",
"gpt",
"gemini",
@@ -50,14 +39,14 @@ export const metadata: Metadata = {
siteName: "Oh My OpenAgent",
title: "Oh My OpenAgent — The Best Agent Harness",
description:
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, background agents, 40+ lifecycle hooks.",
images: [{ url: "/images/hero.png", width: 1200, height: 630, alt: "Oh My OpenAgent" }],
"Meet Sisyphus: The batteries-included agent that codes like you. Multi-model orchestration, Team Mode, background agents, 50+ lifecycle hooks.",
images: [{ url: "/images/hero.webp", width: 1024, height: 683, alt: "Oh My OpenAgent" }],
},
twitter: {
card: "summary_large_image",
title: "Oh My OpenAgent — The Best Agent Harness",
description: "Meet Sisyphus: The batteries-included agent that codes like you.",
images: ["/images/hero.png"],
images: ["/images/hero.webp"],
},
robots: {
index: true,
@@ -82,7 +71,7 @@ const jsonLd = {
url: "https://github.com/code-yeongyu",
},
description:
"The batteries-included agent harness for OpenCode. Multi-model orchestration, background agents, 40+ lifecycle hooks.",
"The batteries-included agent harness for OpenCode. Multi-model orchestration, Team Mode, background agents, 50+ lifecycle hooks.",
offers: {
"@type": "Offer",
price: "0",
@@ -97,19 +86,21 @@ export default function RootLayout({ children }: { children: React.ReactNode })
return (
<html
lang="en"
className={`dark ${GeistSans.variable} ${GeistMono.variable} ${inter.variable} ${manrope.variable}`}
className={`dark ${GeistSans.variable} ${GeistMono.variable}`}
suppressHydrationWarning
>
<body className="flex min-h-screen flex-col bg-[#0a0a0a] text-[#ededed] antialiased">
<Script
src={`https://www.googletagmanager.com/gtag/js?id=${gaMeasurementId}`}
strategy="afterInteractive"
/>
<Script id="google-analytics" strategy="afterInteractive">
{`window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '${gaMeasurementId}', { cookie_domain: '${gaTrackedDomain}' });`}
<Script id="google-analytics-loader" strategy="lazyOnload">
{`if (typeof window !== 'undefined' && window.location.hostname === '${gaTrackedDomain}') {
var s = document.createElement('script');
s.async = true;
s.src = 'https://www.googletagmanager.com/gtag/js?id=${gaMeasurementId}';
document.head.appendChild(s);
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '${gaMeasurementId}', { cookie_domain: '${gaTrackedDomain}' });
}`}
</Script>
<script
type="application/ld+json"
+40 -3
View File
@@ -28,6 +28,7 @@
"@types/node": "^25.6.2",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"critters": "^0.0.25",
"eslint": "^10.3.0",
"eslint-config-next": "15.5.18",
"eslint-config-prettier": "10.1.8",
@@ -720,7 +721,7 @@
"ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
"ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
"aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="],
@@ -762,6 +763,8 @@
"body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="],
"boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="],
"bowser": ["bowser@2.13.1", "", {}, "sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw=="],
"brace-expansion": ["brace-expansion@5.0.4", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg=="],
@@ -780,7 +783,7 @@
"caniuse-lite": ["caniuse-lite@1.0.30001792", "", {}, "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw=="],
"chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
"chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
"ci-info": ["ci-info@4.4.0", "", {}, "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg=="],
@@ -794,6 +797,10 @@
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
"combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
"commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="],
@@ -810,8 +817,14 @@
"cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="],
"critters": ["critters@0.0.25", "", { "dependencies": { "chalk": "^4.1.0", "css-select": "^5.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.2", "htmlparser2": "^8.0.2", "postcss": "^8.4.23", "postcss-media-query-parser": "^0.2.3" } }, "sha512-ROF/tjJyyRdM8/6W0VqoN5Ql05xAGnkf5b7f3sTEl1bI5jTQQf8O918RD/V9tEb9pRY/TKcvJekDbJtniHyPtQ=="],
"cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
"css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="],
"css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="],
"csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
"damerau-levenshtein": ["damerau-levenshtein@1.0.8", "", {}, "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="],
@@ -840,6 +853,14 @@
"doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="],
"dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="],
"domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="],
"domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
"domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="],
"dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="],
"dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
@@ -858,6 +879,8 @@
"enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="],
"entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
"error-stack-parser-es": ["error-stack-parser-es@1.0.5", "", {}, "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA=="],
"es-abstract": ["es-abstract@1.24.1", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw=="],
@@ -1018,6 +1041,8 @@
"has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="],
"has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
"has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="],
"has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="],
@@ -1028,6 +1053,8 @@
"hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
"htmlparser2": ["htmlparser2@8.0.2", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1", "entities": "^4.4.0" } }, "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA=="],
"http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="],
"human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="],
@@ -1234,6 +1261,8 @@
"npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="],
"nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="],
"object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
"object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="],
@@ -1298,6 +1327,8 @@
"postcss": ["postcss@8.5.14", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg=="],
"postcss-media-query-parser": ["postcss-media-query-parser@0.2.3", "", {}, "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig=="],
"prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
"prettier": ["prettier@3.8.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw=="],
@@ -1416,7 +1447,7 @@
"styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="],
"supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="],
"supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
"supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="],
@@ -1544,8 +1575,12 @@
"@node-minify/core/glob": ["glob@9.3.5", "", { "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" } }, "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q=="],
"@opennextjs/aws/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
"@opennextjs/aws/esbuild": ["esbuild@0.25.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.4", "@esbuild/android-arm": "0.25.4", "@esbuild/android-arm64": "0.25.4", "@esbuild/android-x64": "0.25.4", "@esbuild/darwin-arm64": "0.25.4", "@esbuild/darwin-x64": "0.25.4", "@esbuild/freebsd-arm64": "0.25.4", "@esbuild/freebsd-x64": "0.25.4", "@esbuild/linux-arm": "0.25.4", "@esbuild/linux-arm64": "0.25.4", "@esbuild/linux-ia32": "0.25.4", "@esbuild/linux-loong64": "0.25.4", "@esbuild/linux-mips64el": "0.25.4", "@esbuild/linux-ppc64": "0.25.4", "@esbuild/linux-riscv64": "0.25.4", "@esbuild/linux-s390x": "0.25.4", "@esbuild/linux-x64": "0.25.4", "@esbuild/netbsd-arm64": "0.25.4", "@esbuild/netbsd-x64": "0.25.4", "@esbuild/openbsd-arm64": "0.25.4", "@esbuild/openbsd-x64": "0.25.4", "@esbuild/sunos-x64": "0.25.4", "@esbuild/win32-arm64": "0.25.4", "@esbuild/win32-ia32": "0.25.4", "@esbuild/win32-x64": "0.25.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q=="],
"@poppinss/dumper/supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="],
"@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
"@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
@@ -1620,6 +1655,8 @@
"terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="],
"wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
"wrap-ansi/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="],
"@aws-crypto/sha1-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
+1 -2
View File
@@ -26,7 +26,7 @@ test.describe("Landing Page", () => {
await expect(installCommand).toBeVisible()
})
test("renders all 10 agent cards", async ({ page }) => {
test("renders all rendered agent cards", async ({ page }) => {
// given
await page.goto("/")
@@ -41,7 +41,6 @@ test.describe("Landing Page", () => {
"Metis",
"Momus",
"Atlas",
"Sisyphus Junior",
]
for (const name of agentNames) {
await expect(page.getByText(name, { exact: true }).first()).toBeVisible()
+45 -8
View File
@@ -79,7 +79,7 @@
},
"boulderTitle": "Session Continuity",
"boulderDescription": "Active work tracked in boulder.json. Power outage? System crash? Doesn't matter. Pick up exactly where you stopped.",
"model": "Claude Opus 4.6 Max"
"model": "Claude Opus 4.7 Max"
},
"prometheusAtlas": {
"badge": "Orchestration Workflow",
@@ -88,7 +88,7 @@
"prometheus": {
"name": "Prometheus",
"role": "Strategic Planner",
"model": "Claude Opus 4.6 Max",
"model": "Claude Opus 4.7 Max",
"description": "The architect. Interviews you, explores your codebase, and creates detailed battle plans. Never writes code. Uses Metis and Momus as quality gates.",
"features": [
"Intelligent interview mode",
@@ -139,7 +139,44 @@
"verify": "VERIFY — Prove it works"
},
"tagline": "For when good enough isn't.",
"model": "GPT 5.3 Codex Medium"
"model": "GPT 5.5 Medium"
},
"teamMode": {
"badge": "NEW · v4.0",
"title": "Team Mode",
"headline": "Multiple Agents. Side-by-Side. In Parallel.",
"description": "A lead agent orchestrates a team of category-specialized members, all running in parallel and communicating through dedicated tools. Watch every member work simultaneously in tmux. Opt-in — flip team_mode.enabled and restart.",
"features": {
"lead": {
"title": "Lead Orchestration",
"description": "One coordinator. Multiple specialists. Real-time messaging via team_send_message and team_task_create."
},
"parallel": {
"title": "True Parallelism",
"description": "Up to 8 members work simultaneously. No waiting, no queues — every angle covered at once."
},
"tmux": {
"title": "Tmux Visualization",
"description": "Focus and grid windows let you zoom into one teammate without losing the bigger picture."
},
"tools": {
"title": "team_* Tool Family",
"description": "12 dedicated tools (team_create, team_status, team_send_message, ...) gated behind team_mode.enabled."
}
},
"poweredBy": "Powered by Team Mode",
"skills": {
"hyperplan": {
"name": "hyperplan",
"description": "5 hostile agents tear apart your plan from orthogonal angles before a single line of code is written."
},
"securityResearch": {
"name": "security-research",
"description": "3 vulnerability hunters + 2 PoC engineers audit your codebase. Severity calibrated by actual exploitability."
}
},
"optIn": "team_mode.enabled = true → restart opencode",
"tagline": "Off by default. Devastating when on."
},
"agents": {
"title": "Specialized Agents",
@@ -147,31 +184,31 @@
"oracle": {
"name": "Oracle",
"role": "Architecture Consultant",
"model": "GPT 5.4 High",
"model": "GPT 5.5 High",
"description": "Complex debugging and architectural decisions. When the path forward isn't obvious."
},
"librarian": {
"name": "Librarian",
"role": "Docs & Code Search",
"model": "MiniMax M2.5",
"model": "GPT 5.4 Mini Fast",
"description": "Finds real GitHub examples and official docs. Evidence-based, with permalinks."
},
"explore": {
"name": "Explore",
"role": "Codebase Grep",
"model": "MiniMax M2.5",
"model": "GPT 5.4 Mini Fast",
"description": "Blazing fast codebase search. Cheap, parallel, always background."
},
"metis": {
"name": "Metis",
"role": "Plan Consultant",
"model": "Claude Opus 4.6",
"model": "Claude Sonnet 4.6",
"description": "Catches ambiguities in plans before they become production bugs."
},
"momus": {
"name": "Momus",
"role": "Plan Reviewer",
"model": "GPT 5.4",
"model": "GPT 5.5 xHigh",
"description": "Ruthless validation. Only approves when the plan is bulletproof."
},
"dynamicSystem": {
+45 -8
View File
@@ -79,7 +79,7 @@
},
"boulderTitle": "Session Continuity",
"boulderDescription": "アクティブな作業はboulder.jsonに追跡されます。停電?システムクラッシュ?関係ありません。止まったそのままの場所から再開できます。",
"model": "Claude Opus 4.6 Max"
"model": "Claude Opus 4.7 Max"
},
"prometheusAtlas": {
"badge": "オーケストレーションワークフロー",
@@ -88,7 +88,7 @@
"prometheus": {
"name": "Prometheus",
"role": "Strategic Planner",
"model": "Claude Opus 4.6 Max",
"model": "Claude Opus 4.7 Max",
"description": "設計者。あなたとインタビューし、コードベースを探索し、詳細な実行計画を作成します。コードは絶対に書きません。MetisとMomusを品質ゲートとして使用します。",
"features": [
"知的なインタビューモード",
@@ -139,7 +139,44 @@
"verify": "VERIFY — 動作を証明する"
},
"tagline": "良いだけではない時に。",
"model": "GPT 5.3 Codex Medium"
"model": "GPT 5.5 Medium"
},
"teamMode": {
"badge": "NEW · v4.0",
"title": "Team Mode",
"headline": "複数のエージェント。横並び。並列で。",
"description": "リードエージェントがカテゴリ特化のメンバーチームを統括します。全員が並列で動き、専用ツールでリアルタイムに通信。tmuxで全メンバーの作業を同時に観察できます。オプトイン — team_mode.enabledを切り替えて再起動。",
"features": {
"lead": {
"title": "リードオーケストレーション",
"description": "コーディネーター1人、スペシャリスト複数。team_send_messageとteam_task_createによるリアルタイムメッセージング。"
},
"parallel": {
"title": "真の並列性",
"description": "最大8メンバーが同時に作業。待機なし、キューなし — あらゆる角度を一度にカバー。"
},
"tmux": {
"title": "Tmuxビジュアライゼーション",
"description": "Focusとgridウィンドウで一人のチームメンバーに集中しつつ、全体像も見逃しません。"
},
"tools": {
"title": "team_* ツールファミリー",
"description": "12の専用ツール(team_create、team_status、team_send_message、…)。team_mode.enabledの裏でゲーティング。"
}
},
"poweredBy": "Team Modeで動作",
"skills": {
"hyperplan": {
"name": "hyperplan",
"description": "5つの敵対的エージェントが、コード一行が書かれる前に直交する角度から計画を引き裂きます。"
},
"securityResearch": {
"name": "security-research",
"description": "3人の脆弱性ハンター + 2人のPoCエンジニアがコードベースを監査。実際の悪用可能性で重大度を調整。"
}
},
"optIn": "team_mode.enabled = true → opencode再起動",
"tagline": "デフォルトはOFF。ONにすると圧倒的。"
},
"agents": {
"title": "Specialized Agents",
@@ -147,31 +184,31 @@
"oracle": {
"name": "Oracle",
"role": "Architecture Consultant",
"model": "GPT 5.4 High",
"model": "GPT 5.5 High",
"description": "複雑なデバッグとアーキテクチャ決定。前進の道が明らかでない時。"
},
"librarian": {
"name": "Librarian",
"role": "Docs & Code Search",
"model": "MiniMax M2.5",
"model": "GPT 5.4 Mini Fast",
"description": "実際のGitHub例と公式ドキュメントを見つける。証拠ベース、パーマリンク付き。"
},
"explore": {
"name": "Explore",
"role": "Codebase Grep",
"model": "MiniMax M2.5",
"model": "GPT 5.4 Mini Fast",
"description": "超高速コードベース検索。安価で、並列で、常にバックグラウンドで。"
},
"metis": {
"name": "Metis",
"role": "Plan Consultant",
"model": "Claude Opus 4.6",
"model": "Claude Sonnet 4.6",
"description": "プランの曖昧さをプロダクションバグになる前に捕捉する。"
},
"momus": {
"name": "Momus",
"role": "Plan Reviewer",
"model": "GPT 5.4",
"model": "GPT 5.5 xHigh",
"description": "容赦ない検証。プランが弾丸不可能な時だけ承認する。"
},
"dynamicSystem": {
+51 -14
View File
@@ -79,7 +79,7 @@
},
"boulderTitle": "세션 연속성",
"boulderDescription": "모든 작업은 boulder.json에 기록됩니다. 정전? 시스템 크래시? 상관없습니다. 멈춘 그 자리에서 즉시 재개하세요.",
"model": "Claude Opus 4.6 Max"
"model": "Claude Opus 4.7 Max"
},
"prometheusAtlas": {
"badge": "오케스트레이션 워크플로우",
@@ -87,8 +87,8 @@
"headline": "계획과 실행은 엄연히 다른 영역입니다",
"prometheus": {
"name": "Prometheus",
"role": "전략 기획자",
"model": "Claude Opus 4.6 Max",
"role": "Strategic Planner",
"model": "Claude Opus 4.7 Max",
"description": "설계자입니다. 당신과 인터뷰하고, 코드베이스를 탐색하여 상세한 작전 계획을 짭니다. 코드는 절대 쓰지 않습니다. Metis와 Momus를 통해 품질을 검증합니다.",
"features": [
"지능형 인터뷰 모드",
@@ -139,39 +139,76 @@
"verify": "VERIFY — 동작 증명"
},
"tagline": "'적당히'로는 충분하지 않을 때.",
"model": "GPT 5.3 Codex Medium"
"model": "GPT 5.5 Medium"
},
"teamMode": {
"badge": "NEW · v4.0",
"title": "Team Mode",
"headline": "여러 에이전트. 나란히. 병렬로.",
"description": "리드 에이전트가 카테고리별 전문 멤버 팀을 지휘합니다. 모두 병렬로 동작하며 전용 도구로 실시간 통신합니다. tmux에서 모든 멤버가 동시에 작업하는 모습을 지켜보세요. 옵트인 — team_mode.enabled를 켜고 재시작하세요.",
"features": {
"lead": {
"title": "리드 오케스트레이션",
"description": "코디네이터 한 명, 전문가 여럿. team_send_message와 team_task_create를 통한 실시간 메시징."
},
"parallel": {
"title": "진짜 병렬성",
"description": "최대 8명의 멤버가 동시 작업. 대기 없음, 큐 없음 — 모든 각도를 한 번에 커버."
},
"tmux": {
"title": "Tmux 시각화",
"description": "Focus와 grid 윈도우로 한 팀원에 집중하면서도 전체 그림을 놓치지 않습니다."
},
"tools": {
"title": "team_* 도구 패밀리",
"description": "12개 전용 도구(team_create, team_status, team_send_message, ...). team_mode.enabled 뒤에 게이팅."
}
},
"poweredBy": "Team Mode 기반",
"skills": {
"hyperplan": {
"name": "hyperplan",
"description": "5명의 적대적 에이전트가 코드 한 줄 작성되기 전에 직교 각도에서 계획을 갈가리 분해합니다."
},
"securityResearch": {
"name": "security-research",
"description": "3명의 취약점 헌터 + 2명의 PoC 엔지니어가 코드베이스를 감사. 실제 익스플로잇 가능성으로 심각도 보정."
}
},
"optIn": "team_mode.enabled = true → opencode 재시작",
"tagline": "기본은 OFF. 켜면 압도적."
},
"agents": {
"title": "특화 에이전트",
"subtitle": "각 태스크에 최적화된 프롬프트와 툴셋으로 무장한 전문가들입니다.",
"oracle": {
"name": "Oracle",
"role": "아키텍처 컨설턴트",
"model": "GPT 5.4 High",
"role": "Architecture Consultant",
"model": "GPT 5.5 High",
"description": "복잡한 디버깅과 아키텍처 결정. 길이 보이지 않을 때."
},
"librarian": {
"name": "Librarian",
"role": "문서 & 코드 검색",
"model": "MiniMax M2.5",
"role": "Docs & Code Search",
"model": "GPT 5.4 Mini Fast",
"description": "실제 GitHub 예제와 공식 문서를 찾습니다. 증거 기반, 퍼머링크 제공."
},
"explore": {
"name": "Explore",
"role": "코드베이스 탐색",
"model": "MiniMax M2.5",
"role": "Codebase Grep",
"model": "GPT 5.4 Mini Fast",
"description": "초고속 코드베이스 검색. 저렴하고 빠르며, 항상 백그라운드에서 실행."
},
"metis": {
"name": "Metis",
"role": "계획 컨설턴트",
"model": "Claude Opus 4.6",
"role": "Plan Consultant",
"model": "Claude Sonnet 4.6",
"description": "계획의 모호함이 프로덕션 버그로 이어지기 전에 차단합니다."
},
"momus": {
"name": "Momus",
"role": "계획 검토자",
"model": "GPT 5.4",
"role": "Plan Reviewer",
"model": "GPT 5.5 xHigh",
"description": "무자비한 검증. 계획이 완벽하지 않으면 승인하지 않습니다."
},
"dynamicSystem": {
+45 -8
View File
@@ -79,7 +79,7 @@
},
"boulderTitle": "Session Continuity",
"boulderDescription": "活跃工作被记录在 boulder.json 中。停电?系统崩溃?没关系。从你停下的地方精确恢复。",
"model": "Claude Opus 4.6 Max"
"model": "Claude Opus 4.7 Max"
},
"prometheusAtlas": {
"badge": "编排工作流",
@@ -88,7 +88,7 @@
"prometheus": {
"name": "Prometheus",
"role": "Strategic Planner",
"model": "Claude Opus 4.6 Max",
"model": "Claude Opus 4.7 Max",
"description": "架构师。与你访谈,探索代码库,并创建详细的执行计划。从不写代码。使用 Metis 和 Momus 作为质量关卡。",
"features": [
"智能访谈模式",
@@ -139,7 +139,44 @@
"verify": "VERIFY — 证明有效"
},
"tagline": "当足够好还不够时。",
"model": "GPT 5.3 Codex Medium"
"model": "GPT 5.5 Medium"
},
"teamMode": {
"badge": "NEW · v4.0",
"title": "Team Mode",
"headline": "多个 Agent。并排运行。真正并行。",
"description": "一个领导 Agent 协调一队按类别专业化的成员,全部并行运行,通过专用工具实时通信。在 tmux 中同时观察每个成员工作。选择性启用 — 翻转 team_mode.enabled 并重启。",
"features": {
"lead": {
"title": "领导编排",
"description": "一个协调者,多个专家。通过 team_send_message 和 team_task_create 进行实时消息传递。"
},
"parallel": {
"title": "真正的并行",
"description": "最多 8 个成员同时工作。无等待,无队列 — 所有角度一次覆盖。"
},
"tmux": {
"title": "Tmux 可视化",
"description": "Focus 和 grid 窗口让你聚焦一名队员的同时不失全局视野。"
},
"tools": {
"title": "team_* 工具家族",
"description": "12 个专用工具(team_create、team_status、team_send_message、…),在 team_mode.enabled 后启用。"
}
},
"poweredBy": "由 Team Mode 驱动",
"skills": {
"hyperplan": {
"name": "hyperplan",
"description": "5 个敌对 Agent 在写一行代码前,从正交角度撕碎你的计划。"
},
"securityResearch": {
"name": "security-research",
"description": "3 个漏洞猎手 + 2 个 PoC 工程师审计你的代码库。严重性按实际可利用性校准。"
}
},
"optIn": "team_mode.enabled = true → 重启 opencode",
"tagline": "默认关闭。开启时具有毁灭性。"
},
"agents": {
"title": "Specialized Agents",
@@ -147,31 +184,31 @@
"oracle": {
"name": "Oracle",
"role": "Architecture Consultant",
"model": "GPT 5.4 High",
"model": "GPT 5.5 High",
"description": "复杂调试和架构决策。当前路不明时。"
},
"librarian": {
"name": "Librarian",
"role": "Docs & Code Search",
"model": "MiniMax M2.5",
"model": "GPT 5.4 Mini Fast",
"description": "寻找真正的 GitHub 示例和官方文档。基于证据,附带永久链接。"
},
"explore": {
"name": "Explore",
"role": "Codebase Grep",
"model": "MiniMax M2.5",
"model": "GPT 5.4 Mini Fast",
"description": "超高速代码库搜索。便宜、并行、始终在后台运行。"
},
"metis": {
"name": "Metis",
"role": "Plan Consultant",
"model": "Claude Opus 4.6 Max",
"model": "Claude Sonnet 4.6",
"description": "在计划中的歧义变成生产 Bug 之前捕获它们。"
},
"momus": {
"name": "Momus",
"role": "Plan Reviewer",
"model": "GPT 5.4 Extra High",
"model": "GPT 5.5 xHigh",
"description": "严苛验证。只有当计划无懈可击时才批准。"
},
"dynamicSystem": {
+3
View File
@@ -6,6 +6,9 @@ const nextConfig: NextConfig = {
turbopack: {
root: __dirname,
},
experimental: {
optimizeCss: true,
},
}
const withNextIntl = createNextIntlPlugin()
+8 -1
View File
@@ -37,6 +37,12 @@
"tailwind-merge": "^3.5.0",
"tailwindcss-animate": "^1.0.7"
},
"browserslist": [
"chrome >= 100",
"firefox >= 100",
"safari >= 15",
"edge >= 100"
],
"devDependencies": {
"@opennextjs/cloudflare": "^1.19.8",
"@playwright/test": "1.59.1",
@@ -44,6 +50,7 @@
"@types/node": "^25.6.2",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"critters": "^0.0.25",
"eslint": "^10.3.0",
"eslint-config-next": "15.5.18",
"eslint-config-prettier": "10.1.8",
@@ -53,8 +60,8 @@
"prettier": "3.8.3",
"prettier-plugin-tailwindcss": "^0.8.0",
"tailwindcss": "4.2.4",
"typescript-eslint": "^8.59.2",
"typescript": "6.0.3",
"typescript-eslint": "^8.59.2",
"wrangler": "^4.90.0"
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB