Mi configuración personal de OpenCode con 11 agentes especializados que trabajan como un equipo coordinado. Build orquesta, los workers ejecutan.
| Agente | Tipo | Modelo | Función |
|---|---|---|---|
build |
Primary | DeepSeek Chat | Orquestador principal. Implementa código y delega a workers. |
plan |
Primary | DeepSeek Reasoner | Analiza y planifica sin modificar código. Solo delega a workers de lectura. |
@explore |
Subagent | Kimi K2 (Groq) | Navega el repo. Solo lectura. |
@general |
Subagent | DeepSeek Reasoner | Razonamiento profundo, debugging complejo. |
@quick-thinker |
Subagent | GPT-OSS-20B (Groq) | Respuestas rápidas (~1000 t/s). |
@review |
Subagent | DeepSeek Chat | Revisión de calidad de código. Solo lectura. |
@audit |
Subagent | GPT-OSS Safeguard (Groq) | Auditoría de seguridad. Solo lectura. |
@docs-writer |
Subagent | DeepSeek Chat | Genera y actualiza documentación. |
@committer |
Subagent | Qwen3-32B (Groq) | Commits con Conventional Commits. |
@task-runner |
Subagent | DeepSeek Chat | Tarea completa en worktree aislado → PR. |
compaction |
Sistema | DeepSeek Chat | Resume contexto largo automáticamente. Oculto. |
Solo escribes en el chat, los agentes hacen el resto:
| Situación | Qué hacer |
|---|---|
| Llegas al proyecto y no recuerdas la estructura | @explore muéstrame la estructura del proyecto |
| Duda rápida de sintaxis o concepto | @quick-thinker ¿diferencia entre map y flatMap? |
| Bug complejo | build delega a @explore + @general, luego implementa |
| Feature nueva con PR | build pregunta si quieres worktree → @task-runner |
| Feature rápida sin PR | build implementa → @review → @committer |
| Terminaste de trabajar | /ship (review + audit + docs + commit automático) |
| Analizar antes de implementar | Tab → plan, luego Tab → build |
| Varias tareas a la vez | @task-runner múltiples veces (cada una en su worktree) |
| Documentar el proyecto | @docs-writer actualiza la documentación |
| Auditoría de seguridad | @review + @audit |
La mayoría del tiempo solo hablas con
buildy él decide a quién delegar. Los@directos son para cuando tú quieres forzar un worker específico.
@explore muéstrame la estructura del proyecto y dónde están los controllers
agrega un endpoint para listar partidas activas
→ build pregunta: "¿Quieres worktree aislado?"
→ dices sí
→ @task-runner se encarga de todo: worktree → branch → código → tests → commit → push → PR → cleanup
agrega validación de email en el registro, sin worktree
→ build explora → implementa → @review valida → @committer hace commit
el endpoint /api/games devuelve 500 intermitentemente
→ build delega a @explore (localizar) → @general (analizar causa raíz con razonamiento profundo) → build implementa el fix
@quick-thinker ¿cuál es la diferencia entre @Transactional(readOnly=true) y sin readOnly?
→ Respuesta en ~1 segundo
/ship
→ Ejecuta automáticamente: @review → @audit → @docs-writer → @committer
@review revisa los cambios del último commit
@audit revísalo también
@docs-writer actualiza toda la documentación del proyecto
@task-runner implementa paginación en el listado de partidas
@task-runner también agrega filtro por estado de partida
→ Cada tarea en su propio worktree dentro de .ai-worktrees/
[Tab] → plan
analiza cómo podría agregar websockets para partidas en tiempo real
[Tab] → build
implementa lo que propuso plan, con PR
Los worktrees creados por @task-runner viven dentro del repo:
mi-proyecto/
├── .ai-worktrees/ ← ignorado por git automáticamente
│ ├── task-2026-03-21-add-jwt-auth/
│ ├── task-2026-03-21-fix-null-response/
│ └── task-2026-03-21-docs-readme/
├── .gitignore ← contiene .ai-worktrees/
├── src/
└── ...
Comandos útiles:
@task-runner qué worktrees tengo activos?— listar tareas en progreso@task-runner retoma la tarea de jwt-refresh— continuar una tareagit worktree list— ver worktrees desde la terminal
Ejecuta el flujo completo de validación después de implementar cambios:
@review→ revisa calidad@audit→ revisa seguridad- Evaluación → si hay problemas, pregunta antes de continuar
@docs-writer→ actualiza documentación@committer→ hace commit(s) con Conventional Commits
~/.config/opencode/
├── opencode.json ← config principal (agentes, modelos, permisos)
├── AGENTS.md ← instrucciones globales + orquestación
├── prompts/
│ ├── build.md ← prompt del orquestador
│ ├── plan.md
│ ├── explore.md
│ ├── general.md
│ ├── quick-thinker.md
│ ├── review.md
│ ├── audit.md
│ ├── docs-writer.md
│ ├── committer.md
│ └── task-runner.md
└── commands/
└── ship.md ← comando /ship
- Tab alterna entre agentes primarios (
build↔plan) - @nombre invoca un subagente directamente
- /ship es tu "ya terminé, valida todo"
- @task-runner es tu "hazlo todo seguro con PR"
- Si algo sale mal →
/undo(OpenCode guarda snapshots) - build nunca hace
git pushnigit commitdirectamente — siempre delega
Configuración creada con Claude + OpenCode. Usa DeepSeek y Groq como proveedores.