<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SysAdmin on Adur</title><link>https://adurrr.github.io/tags/sysadmin/</link><description>Recent content in SysAdmin on Adur</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sat, 02 May 2026 10:00:00 +0100</lastBuildDate><atom:link href="https://adurrr.github.io/tags/sysadmin/index.xml" rel="self" type="application/rss+xml"/><item><title>OpenCode, Orquestación de Agentes y Desarrollo Guiado por Subagentes: Una Guía Completa</title><link>https://adurrr.github.io/p/opencode-orquestaci%C3%B3n-de-agentes-y-desarrollo-guiado-por-subagentes-una-gu%C3%ADa-completa/</link><pubDate>Sat, 02 May 2026 10:00:00 +0100</pubDate><guid>https://adurrr.github.io/p/opencode-orquestaci%C3%B3n-de-agentes-y-desarrollo-guiado-por-subagentes-una-gu%C3%ADa-completa/</guid><description>&lt;h2 id="introducción"&gt;Introducción
&lt;/h2&gt;&lt;p&gt;OpenCode es un agente de codificación con IA de código abierto, nativo de terminal, construido en Go. A diferencia de IDEs en la nube como Cursor o Claude Code, es completamente agnóstico respecto al proveedor: traes tus propias claves API, ejecutas modelos localmente, o te suscribes a planes gestionados, y OpenCode se encarga de la orquestación. Con soporte para más de 75 proveedores de LLM, integración nativa con LSP, extensibilidad MCP, y un ecosistema de plugins en crecimiento, se ha convertido en un referente para la codificación agentic.&lt;/p&gt;
&lt;p&gt;Esta guía está estructurada para llevarte desde la instalación hasta flujos de trabajo de producción. Comenzamos con conceptos centrales — agentes, subagentes, LSP y MCP — luego introducimos &lt;strong&gt;Desarrollo Guiado por Subagentes (SDD)&lt;/strong&gt;, la metodología que une orquestación, planificación y ejecución en un flujo coherente. Desde allí, mapeamos SDD a dominios del mundo real: desarrollo full-stack, operaciones de sysadmin e infraestructura DevOps, basándonos en casos de uso documentados por desarrolladores en el campo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="qué-es-opencode"&gt;¿Qué es OpenCode?
&lt;/h2&gt;&lt;p&gt;OpenCode es un agente de codificación con IA de código abierto (licencia MIT) diseñado para ejecutarse en tu terminal, escritorio o IDE. Trata a los agentes como un sistema de runtime, no como prompts sueltos. Los agentes se definen en código o se cargan desde Markdown, se fusionan en un registro compartido, y se ejecutan a través de un pipeline unificado de prompt, permisos y sesión.&lt;/p&gt;
&lt;h3 id="características-clave"&gt;Características Clave
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agnóstico respecto al proveedor&lt;/strong&gt;: Claude, OpenAI, Google Gemini, Groq, Fireworks, Together AI, OpenRouter, Azure, AWS Bedrock, y modelos locales vía Ollama.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interfaz de terminal nativa&lt;/strong&gt;: Construido con Bubble Tea (Go) para una experiencia TUI fluida.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte multi-sesión&lt;/strong&gt;: Ejecuta múltiples agentes en paralelo, cada uno con su propio contexto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integración LSP&lt;/strong&gt;: Carga automáticamente servidores del Language Server Protocol para inteligencia de código.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte MCP&lt;/strong&gt;: Extiende capacidades a través del Model Context Protocol.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistema de plugins&lt;/strong&gt;: Plugins de TypeScript/JavaScript con más de 25 hooks de ciclo de vida.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arquitectura cliente/servidor&lt;/strong&gt;: Ejecuta el servidor sin cabeza y conecta desde múltiples clientes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacidad primero&lt;/strong&gt;: No almacena tu código ni datos de contexto.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="instalación"&gt;Instalación
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Via install script&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://opencode.ai/install &lt;span class="p"&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Via npm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g opencode-ai
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Start OpenCode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;opencode
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;En el primer lanzamiento, OpenCode detecta tu estructura de proyecto, inicializa un directorio &lt;code&gt;.opencode/&lt;/code&gt; y te pide configurar un proveedor de modelos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="opencode-go-acceso-a-modelos-de-bajo-costo"&gt;OpenCode Go: Acceso a Modelos de Bajo Costo
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;OpenCode Go&lt;/strong&gt; es una suscripción de bajo costo ($5 el primer mes, luego $10/mes) que proporciona acceso confiable a modelos de codificación de código abierto seleccionados. Está diseñado para desarrolladores que quieren límites generosos y acceso global estable sin gestionar múltiples claves API.&lt;/p&gt;
&lt;h3 id="lo-que-obtienes"&gt;Lo que Obtienes
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Precio&lt;/strong&gt;: $5 primer mes, luego $10/mes. Cancela en cualquier momento.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modelos incluidos&lt;/strong&gt;: GLM-5.1, GLM-5, Kimi K2.5, Kimi K2.6, MiMo-V2-Pro, MiMo-V2-Omni, MiMo-V2.5-Pro, MiMo-V2.5, Qwen3.5 Plus, Qwen3.6 Plus, MiniMax M2.5, MiniMax M2.7, DeepSeek V4 Pro, DeepSeek V4 Flash.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting&lt;/strong&gt;: EE.UU., UE y Singapur para acceso global estable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacidad&lt;/strong&gt;: Política de cero retención; los proveedores no usan tus datos para entrenamiento de modelos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="límites-de-uso"&gt;Límites de Uso
&lt;/h3&gt;&lt;p&gt;Los límites se definen en valor en dólares en lugar de recuentos de solicitudes fijos:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Ventana&lt;/th&gt;
 &lt;th&gt;Límite&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Por 5 horas&lt;/td&gt;
 &lt;td&gt;$12&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Por semana&lt;/td&gt;
 &lt;td&gt;$30&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Por mes&lt;/td&gt;
 &lt;td&gt;$60&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Los modelos más baratos rinden más. DeepSeek V4 Flash permite ~31,650 solicitudes por 5 horas, mientras que GLM-5.1 permite ~880.&lt;/p&gt;
&lt;h3 id="configuración"&gt;Configuración
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Suscríbete en &lt;a class="link" href="https://opencode.ai/go" target="_blank" rel="noopener"
 &gt;opencode.ai/go&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Copia tu clave API.&lt;/li&gt;
&lt;li&gt;En el TUI, ejecuta &lt;code&gt;/connect&lt;/code&gt;, selecciona &lt;strong&gt;OpenCode Go&lt;/strong&gt; y pega tu clave.&lt;/li&gt;
&lt;li&gt;Ejecuta &lt;code&gt;/models&lt;/code&gt; para ver los modelos disponibles.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Los IDs de modelo usan el formato &lt;code&gt;opencode-go/&amp;lt;model-id&amp;gt;&lt;/code&gt;, por ejemplo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;opencode-go/kimi-k2.6&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="conceptos-fundamentales"&gt;Conceptos Fundamentales
&lt;/h2&gt;&lt;p&gt;Antes de sumergirte en los flujos de trabajo, es esencial entender los bloques de construcción de OpenCode: agentes, subagentes, LSP, MCP, y el sistema de reglas del proyecto.&lt;/p&gt;
&lt;h3 id="agentes-y-subagentes"&gt;Agentes y Subagentes
&lt;/h3&gt;&lt;p&gt;OpenCode tiene dos tipos de agentes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agentes primarios&lt;/strong&gt;: Los asistentes principales con los que interactúas directamente. Cycle through them with the &lt;strong&gt;Tab&lt;/strong&gt; key. Los agentes primarios integrados incluyen &lt;strong&gt;Build&lt;/strong&gt; (herramientas completas) y &lt;strong&gt;Plan&lt;/strong&gt; (solo lectura, no puede modificar archivos).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subagentes&lt;/strong&gt;: Asistentes especializados que los agentes primarios invocan para tareas específicas. También puedes invocarlos manualmente con &lt;code&gt;@mención&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subagentes integrados:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Subagente&lt;/th&gt;
 &lt;th&gt;Rol&lt;/th&gt;
 &lt;th&gt;Herramientas&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;General&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Investigación y ejecución multi-paso&lt;/td&gt;
 &lt;td&gt;Acceso completo excepto todo&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Explore&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Exploración rápida del código base en solo lectura&lt;/td&gt;
 &lt;td&gt;Solo lectura y búsqueda&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Cuando un agente delega trabajo, no simplemente añade un prompt. Crea una &lt;strong&gt;sesión hija&lt;/strong&gt; con contexto fresco, pasa una instrucción limitada, y recibe un resultado estructurado. Esto hace que la delegación sea basada en sesiones, reanudable e inspeccionable.&lt;/p&gt;
&lt;h3 id="lsp-language-server-protocol"&gt;LSP (Language Server Protocol)
&lt;/h3&gt;&lt;p&gt;La integración LSP le da a OpenCode una inteligencia de código profunda. La IA puede ver información de tipos, firmas de funciones, rutas de importación y diagnósticos — no solo texto sin formato.&lt;/p&gt;
&lt;p&gt;Operaciones soportadas: &lt;code&gt;goToDefinition&lt;/code&gt;, &lt;code&gt;findReferences&lt;/code&gt;, &lt;code&gt;hover&lt;/code&gt;, &lt;code&gt;documentSymbol&lt;/code&gt;, &lt;code&gt;workspaceSymbol&lt;/code&gt;, &lt;code&gt;goToImplementation&lt;/code&gt;, &lt;code&gt;prepareCallHierarchy&lt;/code&gt;, &lt;code&gt;incomingCalls&lt;/code&gt;, &lt;code&gt;outgoingCalls&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;La herramienta &lt;code&gt;lsp&lt;/code&gt; está disponible cuando se establece &lt;code&gt;OPENCODE_EXPERIMENTAL_LSP_TOOL=true&lt;/code&gt;. OpenCode incluye servidores LSP pre-configurados para más de 30 idiomas.&lt;/p&gt;
&lt;h3 id="mcp-model-context-protocol"&gt;MCP (Model Context Protocol)
&lt;/h3&gt;&lt;p&gt;Los servidores MCP extienden OpenCode con herramientas y servicios externos. Las herramientas integradas similares a MCP incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;websearch&lt;/strong&gt;: Realiza búsquedas web vía Exa AI (no se requiere clave API con el proveedor OpenCode).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;webfetch&lt;/strong&gt;: Obtiene y lee URLs específicas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;lsp&lt;/strong&gt;: Interactúa con Language Servers configurados.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los servidores MCP personalizados se configuran en &lt;code&gt;opencode.json&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;stdio&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;npx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;-y&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;@modelcontextprotocol/server-github&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;GITHUB_PERSONAL_ACCESS_TOKEN=ghp_...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Sé selectivo: los servidores MCP añaden definiciones de herramientas a tu ventana de contexto. El MCP de GitHub solo puede consumir tokens significativos.&lt;/p&gt;
&lt;h3 id="agentsmd-y-reglas-del-proyecto"&gt;AGENTS.md y Reglas del Proyecto
&lt;/h3&gt;&lt;p&gt;Ejecuta &lt;code&gt;/init&lt;/code&gt; para generar un archivo &lt;code&gt;AGENTS.md&lt;/code&gt; en la raíz de tu proyecto. Este archivo enseña a OpenCode sobre la estructura de tu proyecto, convenciones y patrones de codificación. Es similar a las reglas de Cursor y mejora la calidad del código generado.&lt;/p&gt;
&lt;p&gt;Ejemplo de un monorepo de TypeScript en producción:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# Project: Payment Processing API
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;This is a TypeScript monorepo using Bun workspaces.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Structure
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`packages/core/`&lt;/span&gt; - Shared business logic
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`packages/api/`&lt;/span&gt; - Express API handlers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`packages/workers/`&lt;/span&gt; - Background job processors
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Conventions
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Use Zod for all input validation
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; All database queries go through the repository pattern
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Prefer composition over inheritance
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Test files live next to source files (*.test.ts)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Commands
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`bun test`&lt;/span&gt; - Run all tests
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`bun run lint`&lt;/span&gt; - Run ESLint and Prettier
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`bun run build`&lt;/span&gt; - TypeScript compilation
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="permisos"&gt;Permisos
&lt;/h3&gt;&lt;p&gt;OpenCode filtra herramientas antes de que el modelo las vea, luego verifica permisos nuevamente en tiempo de ejecución. Esto hace que la orquestación esté limitada por políticas, no por confianza.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;permission&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;bash&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ask&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;edit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ask&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;write&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;allow&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Valores: &lt;code&gt;allow&lt;/code&gt;, &lt;code&gt;deny&lt;/code&gt;, &lt;code&gt;ask&lt;/code&gt;. Para producción o entornos sensibles, establece &lt;code&gt;bash&lt;/code&gt; y &lt;code&gt;edit&lt;/code&gt; en &lt;code&gt;ask&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="orquestación-de-agentes-con-oh-my-opencode-slim"&gt;Orquestación de Agentes con oh-my-opencode-slim
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;oh-my-opencode-slim&lt;/strong&gt; es un plugin de orquestación de agentes para OpenCode. En lugar de forzar a un solo modelo a manejar cada tarea, enruta trabajos a subagentes especializados, equilibrando calidad, velocidad y costo.&lt;/p&gt;
&lt;h3 id="el-panteón"&gt;El Panteón
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Agente&lt;/th&gt;
 &lt;th&gt;Rol&lt;/th&gt;
 &lt;th&gt;Modelo Predeterminado&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Orchestrator&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Maestro delegador y coordinador estratégico&lt;/td&gt;
 &lt;td&gt;openai/gpt-5.4&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Explorer&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Búsqueda rápida en el código y coincidencia de patrones&lt;/td&gt;
 &lt;td&gt;openai/gpt-5.4-mini&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Librarian&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Documentación externa e investigación de bibliotecas&lt;/td&gt;
 &lt;td&gt;openai/gpt-5.4-mini&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Oracle&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Asesor técnico estratégico, revisor de código, simplificador&lt;/td&gt;
 &lt;td&gt;openai/gpt-5.4&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Designer&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Especialista en UI/UX para pulido visual&lt;/td&gt;
 &lt;td&gt;openai/gpt-5.4-mini&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Fixer&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Especialista de implementación rápida para tareas delimitadas&lt;/td&gt;
 &lt;td&gt;openai/gpt-5.4-mini&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Observer&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Análisis visual de solo lectura (imágenes, PDFs, diagramas)&lt;/td&gt;
 &lt;td&gt;Deshabilitado por defecto&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="instalación-1"&gt;Instalación
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bunx oh-my-opencode-slim@latest install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El instalador genera una configuración predeterminada de OpenAI. Edita &lt;code&gt;~/.config/opencode/oh-my-opencode-slim.json&lt;/code&gt; para usar Kimi, GitHub Copilot u otros proveedores. La configuración soporta JSONC e incluye un esquema JSON oficial para autocompletado.&lt;/p&gt;
&lt;h3 id="características-clave-1"&gt;Características Clave
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Council&lt;/strong&gt;: Ejecuta múltiples modelos en paralelo y sintetiza una sola respuesta con &lt;code&gt;@council&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiplexer Integration&lt;/strong&gt;: Observa a los agentes trabajar en vivo en paneles de Tmux o Zellij.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Session Management&lt;/strong&gt;: Reutiliza sesiones recientes de agentes hijos con alias cortos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto-continue&lt;/strong&gt;: Reanuda automáticamente sesiones del orquestador con enfriamientos y verificaciones de seguridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preset Switching&lt;/strong&gt;: Cambia presets de modelo de agente en tiempo de ejecución con &lt;code&gt;/preset&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cartography Skill&lt;/strong&gt;: Genera codemaps jerárquicos para entender bases de código grandes más rápido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interview&lt;/strong&gt;: Convierte ideas aproximada en especificaciones estructuradas en markdown vía un flujo de Q&amp;amp;A basado en navegador.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="desarrollo-guiado-por-subagentes-sdd"&gt;Desarrollo Guiado por Subagentes (SDD)
&lt;/h2&gt;&lt;p&gt;Desarrollo Guiado por Subagentes es la metodología que hace práctica la orquestación de agentes. No es una sola herramienta sino un patrón de flujo de trabajo: descompón el trabajo en tareas independientes, despacha un subagente fresco para cada tarea, y aplica revisión antes de completar. SDD previene la contaminación del contexto, controla costos y mantiene calidad.&lt;/p&gt;
&lt;p&gt;Hay dos interpretaciones complementarias de SDD en el ecosistema de OpenCode:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Spec-Driven Development&lt;/strong&gt;: Requisitos → Diseño → Tareas → Implementación. Las especificaciones son andamiaje temporal; el código es la fuente de verdad. Elimina especificaciones después de la implementación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subagent-Driven Development&lt;/strong&gt;: Cada tarea independiente obtiene un subagente fresco con contexto aislado, seguido de revisión automática de dos etapas.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En la práctica, estos se fusionan: escribes una especificación, la descompones en tareas, y despachas subagentes para cada tarea con puertas de revisión.&lt;/p&gt;
&lt;h3 id="cuándo-usar-sdd"&gt;Cuándo Usar SDD
&lt;/h3&gt;&lt;p&gt;Usa SDD cuando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tienes un plan de implementación detallado.&lt;/li&gt;
&lt;li&gt;Las tareas son mayormente independientes con dependencias débiles.&lt;/li&gt;
&lt;li&gt;Quieres completar todas las tareas en una sesión sin cambiar de contexto.&lt;/li&gt;
&lt;li&gt;Las puertas de calidad (cumplimiento de especificación + revisión de código) son innegociables.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Evita SDD para cambios pequeños de un solo archivo donde la sobrecarga del despacho de subagentes excede el beneficio. En esos casos, usa un agente Build único directamente.&lt;/p&gt;
&lt;h3 id="el-flujo-de-trabajo-sdd"&gt;El Flujo de Trabajo SDD
&lt;/h3&gt;&lt;h4 id="fase-1-exploración-y-escritura-de-especificaciones"&gt;Fase 1: Exploración y Escritura de Especificaciones
&lt;/h4&gt;&lt;p&gt;El agente Orchestrator o Planner analiza la solicitud y crea una especificación.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Initialize SDD scaffolding (if using sdd-flow or Agent Teams Lite)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/sdd-init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Or manually: switch to Plan mode and ask for a spec&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;Plan a user authentication system with JWT tokens, refresh token rotation, and role-based access control. Write the spec to specs/auth.md&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="fase-2-descomposición-de-tareas"&gt;Fase 2: Descomposición de Tareas
&lt;/h4&gt;&lt;p&gt;Divide la especificación en tareas independientes. Cada tarea debe tener un alcance único y delimitado.&lt;/p&gt;
&lt;p&gt;Tareas de ejemplo para un sistema de auth:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Implementar utilidades de generación y validación de tokens JWT.&lt;/li&gt;
&lt;li&gt;Crear endpoints de login y refresh.&lt;/li&gt;
&lt;li&gt;Agregar middleware para control de acceso basado en roles.&lt;/li&gt;
&lt;li&gt;Escribir pruebas unitarias para las utilidades de tokens.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="fase-3-despacho-de-subagentes"&gt;Fase 3: Despacho de Subagentes
&lt;/h4&gt;&lt;p&gt;Para cada tarea, el Orchestrator genera un subagente fresco vía la herramienta Task. Cada subagente comienza con &lt;strong&gt;cero contexto&lt;/strong&gt; de tareas previas, previniendo contaminación. El Orchestrator inyecta solo la sección de especificación relevante y los estándares del proyecto.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Orchestrator → Task(subagent=&amp;#34;sdd-apply&amp;#34;, prompt=&amp;#34;Implement task 1: JWT utilities. Read specs/auth.md section 3.1. Follow TDD. Run tests before returning.&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="fase-4-revisión-de-dos-etapas"&gt;Fase 4: Revisión de Dos Etapas
&lt;/h4&gt;&lt;p&gt;Después de que un subagente completa su tarea, SDD aplica dos etapas de revisión antes de marcar la tarea como completa:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Revisión de Cumplimiento de Especificación&lt;/strong&gt;: Un subagente revisor verifica si la implementación coincide exactamente con la especificación. ¿Implementó lo que se pidió? ¿Las interfaces son correctas?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revisión de Calidad de Código&lt;/strong&gt;: Un segundo revisor verifica seguridad, rendimiento, mantenibilidad y cobertura de pruebas.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si cualquiera de las revisiones falla, la tarea se devuelve al subagente implementador con retroalimentación. Esto crea puntos de control automáticos.&lt;/p&gt;
&lt;h4 id="fase-5-integración-y-validación"&gt;Fase 5: Integración y Validación
&lt;/h4&gt;&lt;p&gt;Una vez que todas las tareas pasan revisión, el Orchestrator integra el trabajo, ejecuta el conjunto completo de pruebas y valida el comportamiento de extremo a extremo.&lt;/p&gt;
&lt;h3 id="herramientas-y-plugins-de-sdd"&gt;Herramientas y Plugins de SDD
&lt;/h3&gt;&lt;p&gt;Varios proyectos de la comunidad implementan flujos de trabajo SDD para OpenCode:&lt;/p&gt;
&lt;h4 id="cc-sdd-spec-driven-development"&gt;cc-sdd (Spec-Driven Development)
&lt;/h4&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/gotalab/cc-sdd" target="_blank" rel="noopener"
 &gt;cc-sdd&lt;/a&gt; trae Spec-Driven Development estructurado a OpenCode con comandos de barra:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx cc-sdd@latest --opencode-skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Los comandos incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/kiro-spec-init&lt;/code&gt;: Iniciar una nueva especificación de feature.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/kiro-spec-requirements&lt;/code&gt;: Escribir requisitos.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/kiro-spec-design&lt;/code&gt;: Crear diseño de arquitectura.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/kiro-spec-tasks&lt;/code&gt;: Generar lista de tareas.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/kiro-impl&lt;/code&gt;: Implementación autónoma con subagentes por tarea, TDD y revisión independiente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada tarea obtiene un implementador fresco corriendo TDD (RED → GREEN), un revisor independiente, y un paso de auto-depuración si se bloquea.&lt;/p&gt;
&lt;h4 id="sdd-flow"&gt;sdd-flow
&lt;/h4&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/Heldinhow/sdd-flow" target="_blank" rel="noopener"
 &gt;sdd-flow&lt;/a&gt; es un plugin que incrusta SDD directamente en tu repositorio:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# One-time bootstrap&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/sdd-init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Switch to the &amp;#34;Spec Driven&amp;#34; planning agent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Describe your feature in natural language&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Approve each phase before it advances&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Execute the plan&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/implement
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Los activos son locales del repositorio: &lt;code&gt;.opencode/skills/&lt;/code&gt;, &lt;code&gt;.specify/&lt;/code&gt;, &lt;code&gt;specs/&lt;/code&gt; y &lt;code&gt;AGENTS.md&lt;/code&gt;. Esto significa que el flujo de trabajo viaja con el código, no solo con la configuración local del desarrollador.&lt;/p&gt;
&lt;h4 id="agent-teams-lite-gentleman-programming"&gt;Agent Teams Lite (Gentleman Programming)
&lt;/h4&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/Gentleman-Programming/agent-teams-lite" target="_blank" rel="noopener"
 &gt;Agent Teams Lite&lt;/a&gt; proporciona un orquestador SDD completo con 10 sub-agentes especializados y comandos de barra:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Comando&lt;/th&gt;
 &lt;th&gt;Propósito&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/sdd-init&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Inicializar contexto SDD&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/sdd-explore&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Investigar una idea&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/sdd-new&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Iniciar un nuevo cambio&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/sdd-apply&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Implementar tareas&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/sdd-verify&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Validar implementación&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/sdd-archive&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Archivar cambio completado&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;El sistema usa un registro de habilidades: &lt;code&gt;.atl/skill-registry.md&lt;/code&gt; captura las convenciones del proyecto, y el orquestador inyecta reglas compactas en cada prompt de subagente como &lt;code&gt;## Project Standards (auto-resolved)&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id="sdd-profiles"&gt;SDD Profiles
&lt;/h4&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/Gentleman-Programming/gentle-ai" target="_blank" rel="noopener"
 &gt;OpenCode SDD Profiles&lt;/a&gt; te permiten crear configuraciones de modelo nombradas y cambiar entre ellas con &lt;strong&gt;Tab&lt;/strong&gt; dentro de OpenCode. Cada perfil genera su propio orquestador más 10 sub-agentes en &lt;code&gt;opencode.json&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gentle-ai sync &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --profile cheap:anthropic/claude-haiku-3.5-20241022 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --profile-phase cheap:sdd-apply:anthropic/claude-sonnet-4-20250514
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto crea un perfil &amp;ldquo;cheap&amp;rdquo; donde todo corre en Haiku excepto &lt;code&gt;sdd-apply&lt;/code&gt;, que usa Sonnet. Presiona &lt;strong&gt;Tab&lt;/strong&gt; para alternar entre &lt;code&gt;sdd-orchestrator&lt;/code&gt;, &lt;code&gt;sdd-orchestrator-cheap&lt;/code&gt; y &lt;code&gt;sdd-orchestrator-premium&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="delegación-de-subagente-a-subagente"&gt;Delegación de Subagente a Subagente
&lt;/h3&gt;&lt;p&gt;OpenCode PR #7756 introdujo la delegación de subagente a subagente con &lt;code&gt;task_budget&lt;/code&gt; configurable y límites de profundidad para prevenir bucles infinitos. Por defecto, solo los agentes primarios pueden asignar tareas a subagentes. Para habilitar la delegación de subagentes, establece un presupuesto:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;agent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;sdd-apply&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;task_budget&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;permission&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;task&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;sdd-debug&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;allow&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto permite que un subagente implementador genere un subagente depurador hasta 3 veces si se queda atascado.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="configuración-de-modelos-y-presets"&gt;Configuración de Modelos y Presets
&lt;/h2&gt;&lt;h3 id="configuración-de-alto-rendimiento"&gt;Configuración de Alto Rendimiento
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;$schema&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://opencode.ai/config.json&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;agents&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;coder&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;anthropic/claude-sonnet-4-5-20250929&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxTokens&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;reasoningEffort&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;medium&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;task&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;openai/gpt-4.1-mini&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxTokens&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;openai/gpt-4.1-mini&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="configuración-de-presupuesto-30mes"&gt;Configuración de Presupuesto (~$30/mes)
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;agents&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;coder&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;opencode-go/kimi-k2.6&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxTokens&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;task&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;opencode-go/deepseek-v4-flash&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxTokens&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;copilot/gpt-4o-mini&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="configuración-gratuita"&gt;Configuración Gratuita
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;provider&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ollama&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;api_url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;http://localhost:11434/v1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;opencode/minimax-m2.5-free&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;fast&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ollama/qwen3.6-35b-a3b&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="configuración-enfocada-en-devops"&gt;Configuración Enfocada en DevOps
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;$schema&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://opencode.ai/config.json&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;opencode-go/qwen3.6-plus&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;permission&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;bash&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ask&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;edit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ask&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;write&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;allow&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;agents&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;devops-engineer&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;opencode-go/glm-5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxTokens&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;instructions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;You are a DevOps specialist. Confirm before applying Kubernetes manifests. Prefer idempotent patterns.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;lsp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;yaml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;yaml-language-server&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;--stdio&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;terraform&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;terraform-ls&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;serve&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="variantes-y-perfiles-de-modelos"&gt;Variantes y Perfiles de Modelos
&lt;/h3&gt;&lt;p&gt;Muchos modelos soportan variantes de razonamiento. Usa &lt;code&gt;variant_cycle&lt;/code&gt; para alternar entre &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt; y &lt;code&gt;xhigh&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;provider&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;anthropic&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;models&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;claude-sonnet-4-5-20250929&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;options&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;thinking&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;budgetTokens&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;16000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Los fallbacks multi-proveedor previenen fallos de sesión:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;agents&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;coder&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;opencode-go/kimi-k2.6&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;fallback_models&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;opencode-go/glm-5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;anthropic/claude-sonnet-4-5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="aplicaciones-específicas-por-dominio"&gt;Aplicaciones Específicas por Dominio
&lt;/h2&gt;&lt;p&gt;Las siguientes secciones mapean la metodología SDD a casos de uso del mundo real documentados por desarrolladores, sysadmins e ingenieros DevOps.&lt;/p&gt;
&lt;h3 id="desarrollo-full-stack"&gt;Desarrollo Full-Stack
&lt;/h3&gt;&lt;h4 id="aplicación-greenfield-con-sdd"&gt;Aplicación Greenfield con SDD
&lt;/h4&gt;&lt;p&gt;En un tutorial basado en proyectos de &lt;a class="link" href="https://www.zbuild.io/resources/news/opencode-tutorial-2026" target="_blank" rel="noopener"
 &gt;ZBuild&lt;/a&gt;, un desarrollador construyó un gestor de marcadores full-stack en ~30 minutos usando OpenCode. El stack incluía Express.js/TypeScript, SQLite con FTS5, y un frontend vanilla.&lt;/p&gt;
&lt;p&gt;Mapeado a fases SDD:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Spec&lt;/strong&gt;: El modo Plan delineó el modelo de datos, rutas de API y esquema de base de datos. La especificación se guardó en &lt;code&gt;.opencode/plans/bookmark-manager.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasks&lt;/strong&gt;: Descompuesto en andamiaje, modelo de datos, endpoints de API, búsqueda, etiquetas, frontend y pruebas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dispatch&lt;/strong&gt;: El modo Build implementó cada tarea secuencialmente, con el agente ejecutando &lt;code&gt;curl&lt;/code&gt; para verificar el comportamiento de la API después de cada endpoint.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review&lt;/strong&gt;: El agente ejecutó el conjunto de pruebas y corrigió fallos antes de proceder.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Este ciclo Plan/Build previene que la IA tome grandes decisiones estructurales a ciegas.&lt;/p&gt;
&lt;h4 id="refactorización-multi-agente-con-orquestación"&gt;Refactorización Multi-Agente con Orquestación
&lt;/h4&gt;&lt;p&gt;Un ingeniero de Vercel documentó usar &lt;a class="link" href="https://vercel.com/kb/guide/how-i-use-opencode-with-vercel-ai-gateway-to-build-features-fast" target="_blank" rel="noopener"
 &gt;OpenCode con Vercel AI Gateway&lt;/a&gt; para migrar un módulo de autenticación de auth basada en sesiones a tokens JWT usando la palabra clave &lt;code&gt;ulw&lt;/code&gt; (ultrawork).&lt;/p&gt;
&lt;p&gt;El flujo de trabajo estilo SDD:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Orchestrator&lt;/strong&gt; (Claude Opus 4.6) recibió la solicitud.&lt;/li&gt;
&lt;li&gt;Generó dos subagentes en segundo plano en paralelo:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Explore&lt;/strong&gt; (GPT-5 Mini): Mapeó 12 archivos en el flujo de auth.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Librarian&lt;/strong&gt; (Claude Sonnet 4.6): Encontró el patrón JWT recomendado del framework.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Después de recibir los hallazgos, el Orchestrator delegó subtareas:
&lt;ul&gt;
&lt;li&gt;Lógica criptográfica → trabajador GPT-5.4.&lt;/li&gt;
&lt;li&gt;Actualizaciones de middleware → trabajador Claude Haiku 4.5.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent-browser&lt;/strong&gt; verificó el flujo de login en un navegador real.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Resultado: ~70% de reducción de costos comparado con un solo modelo grande, sin cambio manual de modelos.&lt;/p&gt;
&lt;h4 id="revisión-de-código-multi-lente-como-verificación-sdd"&gt;Revisión de Código Multi-Lente como Verificación SDD
&lt;/h4&gt;&lt;p&gt;&lt;a class="link" href="https://jpcaparas.medium.com/one-reviewer-three-lenses-building-a-multi-agent-code-review-system-with-opencode-21ceb28dde10" target="_blank" rel="noopener"
 &gt;JP Caparas&lt;/a&gt; construyó un sistema de revisión multi-agente que refleja el patrón de revisión de dos etapas de SDD. Un agente revisor líder analiza el diff, luego genera revisores especialistas en paralelo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;review-frontend&lt;/strong&gt;: archivos &lt;code&gt;.tsx&lt;/code&gt;, &lt;code&gt;.jsx&lt;/code&gt;, &lt;code&gt;.vue&lt;/code&gt;, &lt;code&gt;.css&lt;/code&gt;, &lt;code&gt;.scss&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;review-backend&lt;/strong&gt;: &lt;code&gt;.py&lt;/code&gt;, &lt;code&gt;.go&lt;/code&gt;, &lt;code&gt;.ts&lt;/code&gt; en &lt;code&gt;api/&lt;/code&gt; o &lt;code&gt;services/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;review-devops&lt;/strong&gt;: &lt;code&gt;Dockerfile&lt;/code&gt;, &lt;code&gt;*.yaml&lt;/code&gt;, &lt;code&gt;*.tf&lt;/code&gt;, &lt;code&gt;.github/workflows/*&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El agente líder sintetiza hallazgos en un reporte unificado: &lt;strong&gt;LGTM&lt;/strong&gt;, &lt;strong&gt;NEEDS CHANGES&lt;/strong&gt; o &lt;strong&gt;DISCUSS&lt;/strong&gt;. Esta es la etapa de verificación de SDD aplicada a código existente en lugar de nueva implementación.&lt;/p&gt;
&lt;h4 id="e2b-sandbox-para-equipos"&gt;E2B Sandbox para Equipos
&lt;/h4&gt;&lt;p&gt;Un &lt;a class="link" href="https://www.reddit.com/r/opencodeCLI/comments/1r85nve/running_opencode_in_e2b_cloud_sandboxes_so_my/" target="_blank" rel="noopener"
 &gt;usuario de Reddit&lt;/a&gt; documentó ejecutar OpenCode dentro de E2B cloud sandboxes para usuarios no técnicos. El flujo de trabajo usa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un &lt;code&gt;AGENTS.md&lt;/code&gt; personalizado con reglas de persona y guardas anti-alucinación.&lt;/li&gt;
&lt;li&gt;Un sistema de tres archivos de contexto: &lt;code&gt;PROJECT.md&lt;/code&gt; (spec), &lt;code&gt;MEMORY.md&lt;/code&gt; (build notes), y un log de conversación slim.&lt;/li&gt;
&lt;li&gt;Verificación automatizada después de cada build (verificaciones de esquema, validación de cableado de API).&lt;/li&gt;
&lt;li&gt;Auto-commit cada 5 minutos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto muestra principios SDD aplicados en un entorno gestionado: spec primero, ejecución segundo, verificación siempre.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="sysadmin-y-operaciones"&gt;SysAdmin y Operaciones
&lt;/h3&gt;&lt;h4 id="gestión-remota-de-servidores-en-lenguaje-natural"&gt;Gestión Remota de Servidores en Lenguaje Natural
&lt;/h4&gt;&lt;p&gt;El blog &lt;a class="link" href="https://argv.cloud/blog/2025/ai-remote-ops/" target="_blank" rel="noopener"
 &gt;argv.cloud&lt;/a&gt; introdujo &amp;ldquo;Agentic Sysadmin&amp;rdquo; usando OpenCode con una herramienta personalizada &lt;code&gt;remote.ts&lt;/code&gt; que ejecuta comandos sobre SSH.&lt;/p&gt;
&lt;p&gt;Configuración:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.ssh/config&lt;/code&gt; estándar con alias de host.&lt;/li&gt;
&lt;li&gt;Herramienta personalizada que envuelve &lt;code&gt;execa&lt;/code&gt; para ejecutar &lt;code&gt;ssh -o BatchMode=yes &amp;lt;host&amp;gt; &amp;lt;command&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Sudo opcional vía variable de entorno &lt;code&gt;OC_SSH&lt;/code&gt; inyectada en stdin (la LLM nunca ve la contraseña).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapeo SDD:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spec&lt;/strong&gt;: &amp;ldquo;Audit test-server with Lynis and generate a Markdown summary.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Task&lt;/strong&gt;: Ejecutar Lynis silenciosamente, luego leer el reporte.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dispatch&lt;/strong&gt;: El agente ejecuta el comando remotamente y obtiene el reporte.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review&lt;/strong&gt;: El agente sintetiza la salida cruda en Markdown estructurado localmente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prompts de ejemplo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;opencode ask &lt;span class="s2"&gt;&amp;#34;Update system packages on server-33 and check for leftover services&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;opencode ask &lt;span class="s2"&gt;&amp;#34;Create a crontab on big-pc that runs Lynis weekly and saves the report to /var/log/lynis-weekly.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;No hay YAML, ni playbook de Ansible, ni manifest de Puppet. La LLM razona sobre el estado actual y genera comandos apropiados sobre la marcha.&lt;/p&gt;
&lt;h4 id="documentación-y-migración-de-servidores"&gt;Documentación y Migración de Servidores
&lt;/h4&gt;&lt;p&gt;&lt;a class="link" href="https://pserey.substack.com/p/using-opencode-as-a-sysadmin" target="_blank" rel="noopener"
 &gt;Pedro Serey&lt;/a&gt; mapeó un servidor &amp;ldquo;caja negra&amp;rdquo; en documentación estructurada usando el agente Explore. Comandos de descubrimiento (&lt;code&gt;lsblk&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;systemctl list-units&lt;/code&gt;) fueron sintetizados en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;storage.md&lt;/code&gt;: Unidades, puntos de montaje, sistemas de archivos.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;services/README.md&lt;/code&gt;: Contenedores, archivos Docker Compose, variables de entorno.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;network.md&lt;/code&gt;: Interfaces, reglas de enrutamiento, reglas de firewall.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Después del mapeo, la documentación sirvió como la &lt;strong&gt;spec&lt;/strong&gt; para un plan de migración de Proxmox. El agente generó una rutina de respaldo disciplinada con dumps de base de datos apropiados, previniendo corrupción de datos.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Lección crítica&lt;/strong&gt;: Después de que el agente preparó commits de &lt;code&gt;git&lt;/code&gt; no intencionales durante la migración, el autor cambió a un flujo de trabajo &lt;strong&gt;human-in-the-loop&lt;/strong&gt;: el agente Plan propone comandos, el humano ejecuta en &lt;code&gt;tmux&lt;/code&gt;, la salida se pega de vuelta. Esto es el modo Plan usado como puerta de spec/revisión SDD antes de la ejecución.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h4 id="generación-de-comandos-shell-con-ia"&gt;Generación de Comandos Shell con IA
&lt;/h4&gt;&lt;p&gt;El plugin &lt;a class="link" href="https://github.com/andreacasarin/zsh-ask-opencode" target="_blank" rel="noopener"
 &gt;zsh-ask-opencode&lt;/a&gt; integra OpenCode en ZSH. Presiona &lt;code&gt;Ctrl+O&lt;/code&gt; para transformar lenguaje natural en comandos shell optimizados:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ list all files modified in the last &lt;span class="m"&gt;24&lt;/span&gt; hours
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ^O generates: find . -mtime -1 -type f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ compress all jpg files in this directory to 50% size
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ^O generates: convert *.jpg -quality 50% compressed.jpg&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El plugin clasifica tres opciones por velocidad, seguridad y confiabilidad. Revisas antes de ejecutar — una puerta de revisión manual para tareas de una línea.&lt;/p&gt;
&lt;h4 id="gestión-interactiva-de-pty"&gt;Gestión Interactiva de PTY
&lt;/h4&gt;&lt;p&gt;El plugin &lt;a class="link" href="https://github.com/JosXa/opencode-pty" target="_blank" rel="noopener"
 &gt;opencode-pty&lt;/a&gt; le da a OpenCode control sobre pseudo-terminales. A diferencia de la herramienta síncrona &lt;code&gt;bash&lt;/code&gt;, &lt;code&gt;pty_spawn&lt;/code&gt; permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Procesos en segundo plano (ej., &lt;code&gt;tail -f /var/log/syslog&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Entrada interactiva (&lt;code&gt;Ctrl+C&lt;/code&gt;, teclas de flecha).&lt;/li&gt;
&lt;li&gt;Capturas de terminal sin ruido ANSI.&lt;/li&gt;
&lt;li&gt;Esperar hasta que el contenido de la pantalla coincida con una regex.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto es esencial para tareas de sysadmin que involucran procesos de larga duración, como monitorear despliegues o navegar por instaladores interactivos.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="devops-e-infraestructura"&gt;DevOps e Infraestructura
&lt;/h3&gt;&lt;h4 id="generación-de-infraestructura-como-código"&gt;Generación de Infraestructura como Código
&lt;/h4&gt;&lt;p&gt;&lt;a class="link" href="https://computingforgeeks.com/ai-coding-agents-devops-terraform-ansible-kubernetes/" target="_blank" rel="noopener"
 &gt;ComputingForGeeks&lt;/a&gt; documentó usar OpenCode para flujos de trabajo DevOps. El agente sobresale generando boilerplate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Terraform&lt;/strong&gt;: Variables, outputs, andamiaje de recursos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ansible&lt;/strong&gt;: Playbooks con conciencia de SELinux y handlers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;: Manifiestos de Deployment, Service, Ingress, HPA.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prompt de ejemplo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;opencode run &lt;span class="s2"&gt;&amp;#34;Create Kubernetes manifests for a Python Flask app: a Deployment with 3 replicas, resource limits, health checks, and a non-root security context. Add a ClusterIP Service and an Ingress with TLS.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Evaluación honesta&lt;/strong&gt;: Los agentes de IA consistentemente fallan en el versionado de proveedores y dependencias de estado complejas. Trata la infraestructura generada por IA como un pull request de un ingeniero junior: siempre ejecuta &lt;code&gt;terraform plan&lt;/code&gt; y prueba en staging.&lt;/p&gt;
&lt;p&gt;Mapeo SDD para IaC:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spec&lt;/strong&gt;: &amp;ldquo;We need a three-tier AWS architecture with VPC, private subnets, RDS, and an EKS cluster.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasks&lt;/strong&gt;: Módulo VPC, módulo subnets, módulo RDS, módulo EKS, outputs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dispatch&lt;/strong&gt;: Cada módulo obtiene un subagente. El LSP de Terraform valida la sintaxis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review&lt;/strong&gt;: &lt;code&gt;terraform plan&lt;/code&gt; es la verificación de cumplimiento de spec. Un segundo revisor busca anti-patterns de seguridad (grupos de seguridad abiertos, secretos hardcodeados).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="creación-de-pipeline-cicd-multi-agente"&gt;Creación de Pipeline CI/CD Multi-Agente
&lt;/h4&gt;&lt;p&gt;Usando el modo &lt;code&gt;ultrawork&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;opencode run &lt;span class="s2"&gt;&amp;#34;@ultrawork Set up a complete CI/CD pipeline with GitHub Actions that builds a Docker image, pushes to ECR, runs Trivy security scan, deploys to EKS staging with Helm, runs integration tests, and promotes to production on approval.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El agente planner asegura cohesión:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt; referencia archivos de valores Helm exactos.&lt;/li&gt;
&lt;li&gt;La etiqueta de imagen Docker se propaga a través de cada paso.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/integration-test.sh&lt;/code&gt; golpea la URL de staging correcta.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto es SDD a escala: una spec se convierte en docenas de archivos coordinados, con el planner actuando como el Orchestrator asegurando consistencia entre archivos.&lt;/p&gt;
&lt;h4 id="agentes-devops-específicos-de-proyecto"&gt;Agentes DevOps Específicos de Proyecto
&lt;/h4&gt;&lt;p&gt;El repositorio &lt;a class="link" href="https://github.com/jon23d/opencode-configs" target="_blank" rel="noopener"
 &gt;jon23d/opencode-configs&lt;/a&gt; demuestra una jerarquía de agentes madura:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dockerfile-best-practices/SKILL.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deployment-planning/SKILL.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubernetes-manifests/SKILL.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El pipeline modela un ciclo de vida completo de entrega de software:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;User request
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → build (clarify)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → architect (plan)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → build (review plan)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → backend/frontend engineers (implement)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → code-reviewer → security-reviewer → observability-reviewer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → qa (E2E + OpenAPI)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → devops-engineer (infra change)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → developer-advocate (docs, docker-compose)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → build (report)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto es SDD con subagentes especializados para cada etapa de revisión.&lt;/p&gt;
&lt;h4 id="agentes-nativos-de-kubernetes-con-kubeopencode"&gt;Agentes Nativos de Kubernetes con KubeOpenCode
&lt;/h4&gt;&lt;p&gt;&lt;a class="link" href="https://kubeopencode.github.io/kubeopencode/" target="_blank" rel="noopener"
 &gt;KubeOpenCode&lt;/a&gt; ejecuta agentes OpenCode como Kubernetes CRDs:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;kubeopencode.io/v1alpha1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Agent&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;dev-agent&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Interactive development agent&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;workspaceDir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;/workspace&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;persistence&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sessions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;2Gi&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;standby&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;idleTimeout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;30m&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Adjunta desde tu terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubeoc agent attach default -n kubeopencode-system
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto es ideal para pipelines CI/CD y agentes compartidos en equipo. Usa un patrón de dos contenedores: un init container copia el binario de OpenCode, y el worker container ejecuta tareas.&lt;/p&gt;
&lt;h4 id="docker-y-ejecutores-de-modelos-locales"&gt;Docker y Ejecutores de Modelos Locales
&lt;/h4&gt;&lt;p&gt;Proyectos de la comunidad proporcionan configuraciones Docker listas para usar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/fluxbase-eu/opencode-docker" target="_blank" rel="noopener"
 &gt;nimbleflux/opencode-docker&lt;/a&gt;: Imagen Docker, Compose y Helm chart.&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/utek/opencode-docker" target="_blank" rel="noopener"
 &gt;utek/opencode-docker&lt;/a&gt;: Entorno ligero con Node.js, Python, Git y GitHub CLI.&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.docker.com/guides/opencode-model-runner/" target="_blank" rel="noopener"
 &gt;Docker Model Runner&lt;/a&gt;: Conecta OpenCode a modelos servidos localmente.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="seguridad-protección-y-mejores-prácticas"&gt;Seguridad, Protección y Mejores Prácticas
&lt;/h2&gt;&lt;h3 id="los-permisos-predeterminados-son-permisivos"&gt;Los Permisos Predeterminados Son Permisivos
&lt;/h3&gt;&lt;p&gt;Por defecto, OpenCode habilita la mayoría de las herramientas sin aprobación. Un &lt;a class="link" href="https://www.reddit.com/r/LocalLLaMA/comments/1r8oehn/opencode_arbitrary_code_execution_major_security/" target="_blank" rel="noopener"
 &gt;PSA de Reddit&lt;/a&gt; destacó que el agente puede generar un script de Python e inmediatamente ejecutarlo. Bloquea esto:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;permission&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;bash&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ask&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;edit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ask&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;write&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ask&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="usa-el-modo-plan-para-auditorías"&gt;Usa el Modo Plan para Auditorías
&lt;/h3&gt;&lt;p&gt;Para sysadmins y SREs, el modo Plan es esencial para auditar scripts e infraestructura como código sin ejecutar nada accidentalmente.&lt;/p&gt;
&lt;h3 id="human-in-the-loop-para-producción"&gt;Human-in-the-Loop para Producción
&lt;/h3&gt;&lt;p&gt;Incluso con buenas intenciones, un agente con acceso SSH puede preparar cambios no intencionales. El flujo de trabajo recomendado:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El agente propone el comando en modo Plan.&lt;/li&gt;
&lt;li&gt;El humano revisa y ejecuta manualmente (ej., en un panel de &lt;code&gt;tmux&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;El humano pega la salida de vuelta al agente.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="sandboxing"&gt;Sandboxing
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contenedores/VMs&lt;/strong&gt;: Ejecuta OpenCode dentro de Docker o una VM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandboxing a nivel de SO&lt;/strong&gt;: &lt;a class="link" href="https://github.com/always-further/nono" target="_blank" rel="noopener"
 &gt;nono&lt;/a&gt; usa Landlock (Linux) y Seatbelt (macOS) para acceso deny-by-default.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nono run --allow ./my_project_dir -- opencode
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="gestión-de-ventana-de-contexto"&gt;Gestión de Ventana de Contexto
&lt;/h3&gt;&lt;p&gt;Desarrolladores han &lt;a class="link" href="https://www.reddit.com/r/opencodeCLI/comments/1rr5kkg/are_you_running_out_of_context_tokens/" target="_blank" rel="noopener"
 &gt;reportado&lt;/a&gt; que la compactación de contexto puede ocurrir múltiples veces durante tareas grandes. Mitigaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Habilita &lt;code&gt;autoCompact: true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Usa la habilidad &lt;strong&gt;Cartography&lt;/strong&gt; para generar codemaps.&lt;/li&gt;
&lt;li&gt;Divide tareas grandes en sesiones más pequeñas y delimitadas.&lt;/li&gt;
&lt;li&gt;En SDD, subagentes frescos por tarea naturalmente limitan la expansión del contexto.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="configuración-avanzada"&gt;Configuración Avanzada
&lt;/h2&gt;&lt;h3 id="agentes-personalizados"&gt;Agentes Personalizados
&lt;/h3&gt;&lt;p&gt;Crea agentes específicos de proyecto añadiendo archivos markdown a &lt;code&gt;.opencode/agents/&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;description: &amp;#34;Reviews code for best practices and potential issues&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mode: subagent
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;model: anthropic/claude-sonnet-4-20250514
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;permission:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; edit: deny
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;You are a code reviewer. Focus on security, performance, and maintainability.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Do not make changes; only provide feedback.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="rutas-de-contexto"&gt;Rutas de Contexto
&lt;/h3&gt;&lt;p&gt;Incluye archivos de contexto adicionales:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;contextPaths&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;.github/copilot-instructions.md&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;.cursorrules&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;opencode.md&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="auto-compact"&gt;Auto-Compact
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;autoCompact&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="gestión-de-sesiones"&gt;Gestión de Sesiones
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Usa &lt;strong&gt;multi-sesión&lt;/strong&gt; para trabajar en múltiples features en paralelo.&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;/undo&lt;/code&gt; y &lt;code&gt;/redo&lt;/code&gt; para revertir cambios.&lt;/li&gt;
&lt;li&gt;Comparte enlaces de sesión con compañeros de equipo.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="conclusión"&gt;Conclusión
&lt;/h2&gt;&lt;p&gt;OpenCode representa un nuevo paradigma en desarrollo asistido por IA: código abierto, agnóstico respecto al proveedor, e integrado profundamente en las herramientas que los desarrolladores ya usan. Pero la herramienta por sí sola no es suficiente. &lt;strong&gt;Desarrollo Guiado por Subagentes&lt;/strong&gt; proporciona la metodología que hace la orquestación de agentes coherente, segura y escalable.&lt;/p&gt;
&lt;p&gt;El flujo de trabajo SDD — explorar, spec, descomponer, despachar, revisar, integrar — mapea naturalmente a desarrollo full-stack, operaciones de sysadmin e infraestructura DevOps. Practicantes del mundo real han demostrado que este patrón escala desde un gestor de marcadores de 30 minutos hasta pipelines CI/CD multi-agente, desde gestión de servidores en lenguaje natural hasta plataformas de agentes nativos de Kubernetes.&lt;/p&gt;
&lt;p&gt;Puntos clave:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Comienza con una spec.&lt;/strong&gt; Usa el modo Plan, AGENTS.md y la habilidad Cartography para construir contexto antes de escribir código.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Descompón en tareas independientes.&lt;/strong&gt; Cada tarea obtiene un subagente fresco con contexto aislado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aplica revisión de dos etapas.&lt;/strong&gt; Cumplimiento de spec primero, calidad de código segundo. Ninguna tarea pasa sin ambas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configura permisos cuidadosamente.&lt;/strong&gt; Establece &lt;code&gt;bash&lt;/code&gt; y &lt;code&gt;edit&lt;/code&gt; en &lt;code&gt;ask&lt;/code&gt; en producción. Usa sandboxes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aprovecha agentes especializados.&lt;/strong&gt; Deja que el Orchestrator enrute el trabajo; no fuerces a un modelo a hacer todo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usa OpenCode Go&lt;/strong&gt; para acceso confiable y de bajo costo a modelos de código abierto seleccionados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantén a un humano en el loop&lt;/strong&gt; para operaciones de producción, especialmente cuando el agente tiene acceso a shell o SSH.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;¡Feliz codificación agentic!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="referencias"&gt;Referencias
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://opencode.ai/" target="_blank" rel="noopener"
 &gt;OpenCode Official Site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://open-code.ai/en/docs" target="_blank" rel="noopener"
 &gt;OpenCode Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://opencode.ai/go" target="_blank" rel="noopener"
 &gt;OpenCode Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/opencode-ai/opencode" target="_blank" rel="noopener"
 &gt;OpenCode GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://opencode.ai/docs/agents/" target="_blank" rel="noopener"
 &gt;OpenCode Agents Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://dev.opencode.ai/docs/rules/" target="_blank" rel="noopener"
 &gt;OpenCode Rules Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/alvinunreal/oh-my-opencode-slim" target="_blank" rel="noopener"
 &gt;oh-my-opencode-slim GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ohmyopencode.com/" target="_blank" rel="noopener"
 &gt;Oh My OpenCode (Original Plugin)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/gotalab/cc-sdd" target="_blank" rel="noopener"
 &gt;cc-sdd: Spec-Driven Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/Heldinhow/sdd-flow" target="_blank" rel="noopener"
 &gt;sdd-flow: Spec-Driven Development for OpenCode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/Gentleman-Programming/agent-teams-lite" target="_blank" rel="noopener"
 &gt;Agent Teams Lite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/Gentleman-Programming/gentle-ai" target="_blank" rel="noopener"
 &gt;Gentleman AI: SDD Profiles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://lzw.me/docs/opencodedocs/obra/superpowers/advanced/subagent-development/index.html" target="_blank" rel="noopener"
 &gt;Subagent-Driven Development Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://agenticoding.ai/docs/practical-techniques/lesson-12-spec-driven-development" target="_blank" rel="noopener"
 &gt;Agentic Coding: Spec-Driven Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://dev.to/gc-victor/agent-orchestration-in-opencode-3n4k" target="_blank" rel="noopener"
 &gt;DEV Community: Agent Orchestration in OpenCode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://vercel.com/kb/guide/how-i-use-opencode-with-vercel-ai-gateway-to-build-features-fast" target="_blank" rel="noopener"
 &gt;Vercel KB: OpenCode with AI Gateway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.zbuild.io/resources/news/opencode-tutorial-2026" target="_blank" rel="noopener"
 &gt;ZBuild: Full-Stack Bookmark Manager Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://jpcaparas.medium.com/one-reviewer-three-lenses-building-a-multi-agent-code-review-system-with-opencode-21ceb28dde10" target="_blank" rel="noopener"
 &gt;JP Caparas: Multi-Agent Code Review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://graphwiz.ai/ai/opencode-guide" target="_blank" rel="noopener"
 &gt;Graphwiz: Vibe Coding with OpenCode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://aiforyou.life/use-cases/for-work/opencode-examples/" target="_blank" rel="noopener"
 &gt;AI for You: OpenCode Practical Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://argv.cloud/blog/2025/ai-remote-ops/" target="_blank" rel="noopener"
 &gt;argv.cloud: Agentic Sysadmin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://pserey.substack.com/p/using-opencode-as-a-sysadmin" target="_blank" rel="noopener"
 &gt;Pedro Serey: Using OpenCode as a SysAdmin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/andreacasarin/zsh-ask-opencode" target="_blank" rel="noopener"
 &gt;zsh-ask-opencode GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/JosXa/opencode-pty" target="_blank" rel="noopener"
 &gt;opencode-pty GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://computingforgeeks.com/ai-coding-agents-devops-terraform-ansible-kubernetes/" target="_blank" rel="noopener"
 &gt;ComputingForGeeks: AI Agents for DevOps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/jon23d/opencode-configs" target="_blank" rel="noopener"
 &gt;jon23d/opencode-configs GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://kubeopencode.github.io/kubeopencode/" target="_blank" rel="noopener"
 &gt;KubeOpenCode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.docker.com/guides/opencode-model-runner/" target="_blank" rel="noopener"
 &gt;Docker Docs: OpenCode with Docker Model Runner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/cesarandreslopez/sidekick-agent-hub" target="_blank" rel="noopener"
 &gt;Sidekick Agent Hub (VS Code Extension)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.reddit.com/r/opencodeCLI/comments/1r85nve/running_opencode_in_e2b_cloud_sandboxes_so_my/" target="_blank" rel="noopener"
 &gt;Reddit: E2B Cloud Sandboxes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.reddit.com/r/opencodeCLI/comments/1rr5kkg/are_you_running_out_of_context_tokens/" target="_blank" rel="noopener"
 &gt;Reddit: Context Window Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.reddit.com/r/LocalLLaMA/comments/1r8oehn/opencode_arbitrary_code_execution_major_security/" target="_blank" rel="noopener"
 &gt;Reddit: Security and Permissions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>