Saltearse al contenido

Herramientas

Gestiona las herramientas que puede usar un LLM.

Las herramientas permiten que el LLM realice acciones en tu base de codigo. OpenCode viene con un conjunto de herramientas integradas, pero puedes extenderlo con herramientas personalizadas o servidores MCP.

De forma predeterminada, todas las herramientas estan habilitadas y no necesitan permiso para ejecutarse. Puedes controlar el comportamiento de las herramientas a traves de permisos.


Configurar

Usa el campo permission para controlar el comportamiento de las herramientas. Puedes permitir, denegar o requerir aprobacion para cada herramienta.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}

Tambien puedes usar comodines para controlar multiples herramientas a la vez. Por ejemplo, para requerir aprobacion para todas las herramientas de un servidor MCP:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}

Mas informacion sobre la configuracion de permisos.


Integradas

Aquí estan todas las herramientas integradas disponibles en OpenCode.


bash

Ejecuta comandos de shell en tu entorno de proyecto.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}

Esta herramienta permite al LLM ejecutar comandos de terminal como npm install, git status o cualquier otro comando de shell.


edit

Modifica archivos existentes usando reemplazos de cadena exactos.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}

Esta herramienta realiza ediciones precisas en los archivos reemplazando coincidencias de texto exactas. Es la forma principal en que el LLM modifica el codigo.


write

Crea nuevos archivos o sobrescribe los existentes.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}

Usa esto para permitir que el LLM cree nuevos archivos. Sobrescribira los archivos existentes si ya existen.


read

Lee el contenido de archivos de tu base de codigo.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}

Esta herramienta lee archivos y devuelve su contenido. Admite la lectura de rangos de líneas especificos para archivos grandes.


grep

Busca contenido de archivos usando expresiones regulares.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}

Busqueda rapida de contenido en tu base de codigo. Admite sintaxis regex completa y filtrado de patrones de archivos.


glob

Encuentra archivos por coincidencia de patrones.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}

Busca archivos usando patrones glob como **/*.js o src/**/*.ts. Devuelve rutas de archivos coincidentes ordenadas por fecha de modificacion.


list

Lista archivos y directorios en una ruta dada.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}

Esta herramienta lista el contenido de los directorios. Acepta patrones glob para filtrar resultados.


lsp (experimental)

Interactua con tus servidores LSP configurados para obtener caracteristicas de inteligencia de codigo como definiciones, referencias, informacion al pasar el mouse y jerarquia de llamadas.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}

Las operaciones admitidas incluyen goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls y outgoingCalls.

Para configurar qué servidores LSP estan disponibles para tu proyecto, consulta Servidores LSP.


patch

Aplica parches a archivos.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}

Esta herramienta aplica archivos de parche a tu base de codigo. Util para aplicar diffs y parches de varias fuentes.


skill

Carga una habilidad (un archivo SKILL.md) y devuelve su contenido en la conversacion.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}

todowrite

Administra listas de tareas durante sesiones de codificacion.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}

Crea y actualiza listas de tareas para realizar un seguimiento del progreso durante operaciones complejas. El LLM usa esto para organizar tareas de multiples pasos.


todoread

Lee listas de tareas existentes.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}

Lee el estado actual de la lista de tareas. Lo usa el LLM para realizar un seguimiento de qué tareas estan pendientes o completadas.


webfetch

Obtiene contenido web.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}

Permite que el LLM obtenga lea paginas web. Util para buscar documentacion o investigar recursos en linea.


question

Haz preguntas al usuario durante la ejecucion.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}

Esta herramienta permite al LLM hacer preguntas al usuario durante una tarea. Es util para:

  • Recopilar preferencias o requisitos del usuario
  • Aclarar instrucciones ambiguas
  • Obtener decisiones sobre opciones de implementacion
  • Ofrecer opciones sobre que direccion tomar

Cada pregunta incluye un encabezado, el texto de la pregunta y una lista de opciones. Los usuarios pueden seleccionar de las opciones proporcionadas o escribir una respuesta personalizada. Cuando hay multiples preguntas, los usuarios pueden navegar entre ellas antes de enviar todas las respuestas.


Herramientas personalizadas

Las herramientas personalizadas te permiten definir tus propias funciones que el LLM puede llamar. Estas se definen en tu archivo de configuracion y pueden ejecutar codigo arbitrario.

Mas informacion sobre la creacion de herramientas personalizadas.


Servidores MCP

Los servidores MCP (Model Context Protocol) te permiten integrar herramientas y servicios externos. Esto incluye acceso a bases de datos, integraciones de API y servicios de terceros.

Mas informacion sobre la configuracion de servidores MCP.


Internal

Internamente, herramientas como grep, glob y list usan ripgrep. De forma predeterminada, ripgrep respeta los patrones .gitignore, lo que significa que los archivos y directorios listados en tu .gitignore seran excluidos de busquedas y listados.


Patrones de ignorado

Para incluir archivos que normalmente se ignorarian, crea un archivo .ignore en la raiz de tu proyecto. Este archivo puede permitir explícitamente ciertas rutas.

.ignore
!node_modules/
!dist/
!build/

Por ejemplo, este archivo .ignore permite a ripgrep buscar dentro de los directorios node_modules/, dist/ y build/ incluso si estan listados en .gitignore.