Herramientas de usuario

Herramientas del sitio


cursos:sdd:03-opencode

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
cursos:sdd:03-opencode [2026/10/26 13:01] – Skills: las tres formas de lanzarlas claudecursos:sdd:03-opencode [2026/10/29 22:34] (actual) – [6. Comandos] claude
Línea 73: Línea 73:
 ===== 3. Agentes ===== ===== 3. Agentes =====
  
-Qué es un subagente y para qué sirve está en el [[cursos:sdd:02-skills-agentes-mcp#agentes|tema 2]]. Plan y Build ([[#plan_y_buildla_tecla_tab|sección 6]]) también son agentes: son los //principales//, los que hablan contigo. De serie, OpenCode trae dos subagentes:+Qué es un subagente y para qué sirve está en el [[cursos:sdd:07-agentes|tema de Agentes]]. Plan y Build ([[#modosplan_y_build|sección 5]]) también son agentes: son los //principales//, los que hablan contigo. De serie, OpenCode trae dos subagentes:
  
   * ''general'': para tareas de varios pasos que investigan y cambian código.   * ''general'': para tareas de varios pasos que investigan y cambian código.
Línea 80: Línea 80:
 ==== Cómo se lanza ==== ==== Cómo se lanza ====
  
-Tú lo lanzas de dos formas, que valen igual:+Hay tres formas de lanzarlo:
  
-  * **Con ''@''** y su nombre. Al escribir ''@'' sale en la lista junto a los ficheros y las //skills//.+  * **Invocándolo directamente con ''@''** y su nombre. Al escribir ''@'' sale en la lista junto a los ficheros y las //skills//.
 <sxh plain> <sxh plain>
 @explore ¿dónde se valida el token JWT y qué endpoints no pasan por esa validación? @explore ¿dónde se valida el token JWT y qué endpoints no pasan por esa validación?
 </sxh> </sxh>
-  * **Diciéndolo** en lenguaje natural:+  * **Con lenguaje natural**, diciéndole que lo use:
 <sxh plain> <sxh plain>
 Usa el subagente general para migrar los tests del módulo pedidos de JUnit 4 a JUnit 5 Usa el subagente general para migrar los tests del módulo pedidos de JUnit 4 a JUnit 5
 </sxh> </sxh>
- +  * **Automáticamente**: lo decide OpenCode, que lo lanza cuando la tarea encaja con su ''description''.
-Además, OpenCode lo lanza **solo** cuando la tarea encaja con su ''description''.+
  
 ==== Dónde se guardan ==== ==== Dónde se guardan ====
Línea 99: Línea 98:
   * ''.opencode/agents/'' **en el proyecto**: está en el repositorio para que sea solo de ese proyecto.   * ''.opencode/agents/'' **en el proyecto**: está en el repositorio para que sea solo de ese proyecto.
   * ''~/.config/opencode/agents/'' **en tu ordenador**: para compartirlo entre proyectos.   * ''~/.config/opencode/agents/'' **en tu ordenador**: para compartirlo entre proyectos.
 +
 +<note important>Un subagente de Claude Code **no vale en OpenCode**: OpenCode no lee ''.claude/agents/'' y su frontmatter es otro (''mode'', ''permission'', el modelo con proveedor). Las diferencias, en [[cursos:sdd:07-agentes#crear_un_agente_en_opencode|Agentes]].</note>
  
 ---- ----
Línea 104: Línea 105:
 ===== 4. Skills ===== ===== 4. Skills =====
  
-Qué es una //skill//, cómo se escribe y dónde se guarda está en el [[cursos:sdd:02-skills-agentes-mcp#skills|tema 2]]. Hay tres formas de lanzarla:+Qué es una //skill// y cómo se escribe está en el [[cursos:sdd:08-skills|tema de Skills]]. 
 + 
 +==== Cómo se lanza ==== 
 + 
 +Hay tres formas de lanzarla:
  
   * **Invocándola directamente con ''@''** y su nombre: al escribir ''@'' sale en la lista junto a los ficheros y los subagentes.   * **Invocándola directamente con ''@''** y su nombre: al escribir ''@'' sale en la lista junto a los ficheros y los subagentes.
Línea 116: Línea 121:
   * **Automáticamente**: lo decide OpenCode, que la carga cuando su ''description'' encaja con lo que pides («revisa el PR 128»).   * **Automáticamente**: lo decide OpenCode, que la carga cuando su ''description'' encaja con lo que pides («revisa el PR 128»).
  
 +==== Dónde se guardan ====
  
----- +Cada //skill// es una carpeta con su ''SKILL.md'':
- +
-===== 5. La caja de entrada: cuatro formas de escribir ===== +
- +
-Todo lo que se hace con OpenCode se escribe en la misma caja. Lo que cambia es con qué empieza la línea. +
- +
-^ Empieza por ^ Qué hace ^ Ejemplo ^ +
-| //texto// | Le hablas al agente. Gasta tokens. | ''arregla el error de validación del formulario'' | +
-| ''@'' | Referencia un fichero **concreto**, o ejecuta un //skill// o un [[#agentes|subagente]]. Al escribir ''@'' se despliega la lista para elegir. | ''@src/api/login.ts revisa el manejo de errores'' | +
-| ''!'' | Ejecuta un comando de shell. **No llama al modelo**, pero la salida queda en la conversación y la ve en el siguiente prompt. | ''!npm test'' | +
-| ''/'' | Comando de OpenCode. Escribiendo solo ''/'' salen todos. | ''/compact'' |+
  
 +  * ''.opencode/skills/'' **en el proyecto**: está en el repositorio para que sea solo de ese proyecto.
 +  * ''~/.config/opencode/skills/'' **en tu ordenador**: para compartirla entre proyectos.
  
-<note tip>''Mayús+Enter'' inserta un salto de línea sin enviar el prompt. Las flechas ''↑'' / ''↓'' recorren los prompts que ya has mandado, para reenviarlos sin volver a escribirlos.</note>+<note tip>OpenCode también lee ''.claude/skills/'' y ''~/.claude/skills/'', así que una misma //skill// vale para las dos herramientas.</note>
  
 ---- ----
  
-===== 6. Plan y Build: la tecla Tab =====+===== 5. Modos: Plan y Build =====
  
 OpenCode tiene **dos modos: Plan y Build**, y se cambia entre ellos con **''Tab''**. OpenCode tiene **dos modos: Plan y Build**, y se cambia entre ellos con **''Tab''**.
Línea 151: Línea 149:
  
 <note warning>Build no revisa los comandos que lanza: un ''rm'' o un ''git checkout'' los ejecuta igual que un ''ls''. Trabaja siempre con todo commiteado, para poder volver atrás.</note> <note warning>Build no revisa los comandos que lanza: un ''rm'' o un ''git checkout'' los ejecuta igual que un ''ls''. Trabaja siempre con todo commiteado, para poder volver atrás.</note>
- 
-==== Mientras trabaja ==== 
- 
-  * **''Esc Esc''** lo interrumpe en seco, esté pensando o a media tarea. 
-  * Cuando va a hacer algo sensible, sale el **diálogo de permisos**: permitir una vez, permitir siempre o rechazar. 
-  * Puedes seguir escribiendo mientras trabaja: los mensajes se **encolan** y los recoge cuando llega a un punto en el que encajan. 
- 
-<note important>''/undo'' quita el último mensaje de la conversación **y deshace los cambios que hizo en los ficheros**; ''/redo'' lo vuelve a aplicar. Solo sabe deshacer lo que hizo OpenCode: el deshacer de verdad sigue siendo ''git'', así que commitea a menudo y revisa el ''diff'' antes de seguir.</note> 
  
 ---- ----
  
-===== 7. AGENTS.md: las instrucciones fijas del proyecto =====+===== 6. Comandos =====
  
-Sin él acabas repitiendo las mismas restricciones en cada prompt: «nada de TypeScript», «usa el gestor de paquetes del proyecto», «no añadas dependencias». Eso se escribe **una vez** en un fichero:+==== /init ====
  
-<code bash> +Genera ''AGENTS.md'', las instrucciones fijas del proyecto: analiza el código y escribe en la raíz qué es el proyecto, su arquitectura y los comandos habituales (arrancar, probar, construir). Se lee solo en cada sesión. Es un punto de partida: revísalo y edítalo a mano.
-/init +
-</code>+
  
-''/init'' analiza el código y genera ''AGENTS.md'' en la raíz: qué es el proyecto, arquitectura, dependencias y comandos habituales (arrancar, probar, construir). Se lee automáticamente en cada sesión.+==== /new ====
  
-  * **Revísalo y edítalo a mano.** Lo que genera es un punto de partida, no la verdad. +Empieza de cero: sesión nueva y contexto vacío. Se hace **cada vez que cambias de tarea**.
-  * **Breve y concreto.** Ocupa contexto en todas las peticiones, así que cada línea de relleno se paga en cada prompt. +
-  * **Va al repositorio**, como cualquier otro fichero del proyecto. +
-  * Es un estándar abierto: el mismo ''AGENTS.md'' lo entienden otras herramientas.+
  
-Lo que escribas en el prompt **siempre manda** sobre lo que ponga en el fichero.+==== /undo ====
  
-----+Deshace: quita el último mensaje de la conversación y deshace los cambios que hizo en los ficheros. ''/redo'' lo vuelve a aplicar.
  
-===== 8. La sesión y el contexto =====+<note important>Solo deshace lo que OpenCode **editó con sus herramientas**. Lo que hizo con un comando de shell (un ''rm'', un ''mv'', un ''git checkout'') no se recupera. El deshacer de verdad sigue siendo ''git''.</note>
  
-Abajo, junto a la caja de entrada, hay un indicador con los tokens consumidos, el **porcentaje de contexto** ocupado y el coste. Sube siempre, porque en cada petición se manda de nuevo toda la conversación: el historial se paga entero cada vez.+==== /compact ====
  
-^ Comando ^ Cuándo ^ +Resume la conversación para liberar contexto y seguir en la misma sesión.
-| ''/compact'' | La conversación sigue siendo la buena pero el contexto va alto. Condensa el historial en un resumen (objetivo, restricciones, progreso) y sigues donde estabas. | +
-| ''/new'' | Cambias de tarea. Sesión nueva, contexto a cero. |+
  
-La regla práctica: **una sesión por tarea**. Arrastrar el historial de lo anterior no ayuda al modelo, lo despista y encima cuesta dinero.+<note warning>**No uses ''/compact''**: antes de llegar a él, usa ''/new''. El resumen lo hace el modelo, que no sabe qué es lo importante para ti, y sigues trabajando con un contexto peor sin darte cuenta.</note>
  
-Al cerrar OpenCode, la terminal imprime el nombre de la sesión y **el comando exacto para retomarla**. Cópialo y la recuperas entera, con su historial, al día siguiente.+==== /copy ====
  
-----+Copia al portapapeles la última respuesta de OpenCode
  
-===== 9. Integración con VS Code ===== 
  
-Primero se instala la extensión:+==== /export ====
  
-<code bash> +Exporta toda la conversación (no solo la última respuesta)
-code --install-extension sst-dev.opencode-v2 +
-</code>+
  
-Con ella instalada, aparece el icono de OpenCode en la barra de actividad, visible con cualquier fichero que tengamos abierto: 
-{{:cursos:sdd:icono_opencode2_vscode.png|}}  
  
-{{:cursos:sdd:icono_opencode2_en_vscode.png|Icono de OpenCode en la barra de actividad de VS Code}} +==== ESC ESC ====
- +
-Si seleccionamos un trozo de código y pulsamos **''Ctrl+Alt+K''**, la referencia al fichero y a las líneas seleccionadas se añade al prompt de OpenCode. Por ejemplo, si seleccionamos las líneas 10 a 12 de ''mi_fichero.txt'', aparece: +
- +
-<code> +
-@mi_fichero.txt#L10-12 +
-</code> +
- +
-Si no hay nada seleccionado, se añade la referencia al fichero entero: +
- +
-<code> +
-@mi_fichero.txt +
-</code>+
  
-<note tip>Esto es muy útil para cuando le tenemos que decir a opencode que ficheros o líneas de nuestro código nuestro tiene que mirar.</note>+No es un comando, son dos pulsaciones de tecla: paran al agente en seco, esté pensando o a media tarea. La primera solo avisa: hasta la segunda no se para. Lo que ya ha hecho se queda hecho: le dices qué cambiar y sigue.
  
 ---- ----
  
-===== 10. Plugins =====+===== 7. Plugins =====
  
 Los plugins añaden a OpenCode funciones que no trae de serie. Son paquetes de npm (o de Git) y se gestionan desde la terminal con ''opencode plugin''. Se guardan en la configuración global, así que valen para todos los proyectos. Los plugins añaden a OpenCode funciones que no trae de serie. Son paquetes de npm (o de Git) y se gestionan desde la terminal con ''opencode plugin''. Se guardan en la configuración global, así que valen para todos los proyectos.
Línea 233: Línea 199:
 </code> </code>
  
-  * Instalar un plugin. Por ejemplo, [[#quotacuanto_credito_te_queda|Quota]]:+  * Instalar un plugin. Por ejemplo, [[https://github.com/slkiser/opencode-quota|Quota]]:
 <code bash> <code bash>
 opencode plugin add @slkiser/opencode-quota opencode plugin add @slkiser/opencode-quota
Línea 255: Línea 221:
 ---- ----
  
-===== 11. Plugins a instalar ===== 
- 
-==== Quota: cuánto crédito te queda ==== 
- 
-[[https://github.com/slkiser/opencode-quota|opencode-quota]] muestra lo que te queda de cuota o de saldo en cada proveedor (OpenCode Zen, OpenRouter, GitHub Copilot, OpenAI...) y los tokens que has gastado, sin ocupar contexto. Una vez instalado y reiniciado OpenCode, **se ve directamente en pantalla**, en el panel lateral, sin escribir nada. Si quieres el detalle, tiene además sus comandos: 
- 
-^ Comando ^ Qué muestra ^ 
-| ''/quota'' | Lo que te queda en cada proveedor | 
-| ''/tokens_session'' | Tokens gastados en esta sesión | 
-| ''/tokens_monthly'' | Tokens de los últimos 30 días, con su coste | 
- 
----- 
- 
-===== 12. Chuleta ===== 
- 
-^ ^ ^ 
-| ''opencode'' | Arrancar en la carpeta actual | 
-| ''/'' | Ver todos los comandos | 
-| ''Ctrl+P'' | Paleta de comandos | 
-| ''Tab'' | Cambiar entre Plan y Build | 
-| ''Esc Esc'' | Parar al agente | 
-| ''Mayús+Enter'' | Salto de línea | 
-| ''↑'' / ''↓'' | Historial de prompts | 
-| ''@fichero'' / ''@skill'' / ''@agente'' | Referenciar un fichero, o ejecutar un //skill// o un subagente | 
-| ''!comando'' | Shell, sin llamar al modelo | 
-| ''/connect'' | Conectar un proveedor | 
-| ''/models'' | Cambiar de modelo | 
-| ''/init'' | Generar ''AGENTS.md'' | 
-| ''/compact'' | Condensar el contexto | 
-| ''/undo'' | Deshacer el último mensaje y sus cambios | 
-| ''/new'' | Sesión nueva | 
-| ''/quota'' | Crédito que te queda (plugin Quota) | 
- 
----- 
  
-===== 13. Enlaces =====+===== 8. Enlaces =====
  
   * [[https://opencode.ai|opencode.ai]]   * [[https://opencode.ai|opencode.ai]]
cursos/sdd/03-opencode.1793016085.txt.gz · Última modificación: por claude