Español
Documentación
Herramientas

Tools

Gestiona las herramientas que un LLM puede usar.

Las herramientas permiten que el LLM realice acciones en tu base de código. OpenCode incluye un conjunto de herramientas integradas, pero puedes ampliarlo con herramientas personalizadas o servidores MCP.

De forma predeterminada, todas las herramientas están habilitadas y no necesitan permiso para ejecutarse. Puedes controlar el comportamiento de las herramientas mediante permisos.


Configurar

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

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

También puedes usar comodines para controlar varias herramientas a la vez. Por ejemplo, para requerir aprobación para todas las herramientas de un servidor MCP:

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

Más información sobre cómo configurar permisos.


Integradas

Estas son todas las herramientas integradas disponibles en OpenCode.


bash

Ejecuta comandos de shell en el entorno de tu 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 mediante reemplazos exactos de cadenas.

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 código.


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. Sobrescribirá los archivos existentes si ya existen.

Note: La herramienta write se controla mediante el permiso edit, que abarca todas las modificaciones de archivos (edit, write, apply_patch).


read

Lee el contenido de archivos de tu base de código.

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 específicos para archivos grandes.


grep

Busca contenido en archivos usando expresiones regulares.

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

Búsqueda rápida de contenido en toda tu base de código. Admite la sintaxis completa de regex y el filtrado por patrones de archivos.


glob

Encuentra archivos mediante 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 las rutas de archivos coincidentes ordenadas por hora de modificación.


lsp (experimental)

Interactúa con tus servidores LSP configurados para obtener funciones de inteligencia de código como definiciones, referencias, información al pasar el cursor y jerarquía de llamadas.

Note: Esta herramienta solo está disponible cuando OPENCODE_EXPERIMENTAL_LSP_TOOL=true (o OPENCODE_EXPERIMENTAL=true).

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 están disponibles para tu proyecto, consulta Servidores LSP.


apply_patch

Aplica parches a los archivos.

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

Esta herramienta aplica archivos de parche a tu base de código. Es útil para aplicar diffs y parches de diversas fuentes.

Al manejar los hooks tool.execute.before o tool.execute.after, comprueba input.tool === "apply_patch" (no "patch").

apply_patch usa output.args.patchText en lugar de output.args.filePath. Las rutas se incrustan en líneas marcadoras dentro de patchText y son relativas a la raíz del proyecto (por ejemplo: *** Add File: src/new-file.ts, *** Update File: src/existing.ts, *** Move to: src/renamed.ts, *** Delete File: src/obsolete.ts).

Note: La herramienta apply_patch se controla mediante el permiso edit, que abarca todas las modificaciones de archivos (edit, write, apply_patch).


skill

Carga una skill (un archivo SKILL.md) y devuelve su contenido en la conversación.

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

todowrite

Gestiona listas de tareas durante las sesiones de programación.

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

Crea y actualiza listas de tareas para hacer seguimiento del progreso durante operaciones complejas. El LLM lo usa para organizar tareas de varios pasos.

Note: Esta herramienta está deshabilitada para los subagentes de forma predeterminada, pero puedes habilitarla manualmente. Más información


webfetch

Obtiene contenido web.

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

Permite que el LLM obtenga y lea páginas web. Es útil para consultar documentación o investigar recursos en línea.


websearch

Busca información en la web.

Note: Esta herramienta solo está disponible cuando se usa el proveedor de OpenCode o cuando la variable de entorno OPENCODE_ENABLE_EXA está establecida en cualquier valor verdadero (por ejemplo, true o 1).

Para habilitarla al iniciar OpenCode:

OPENCODE_ENABLE_EXA=1 opencode
opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "websearch": "allow"
  }
}

Realiza búsquedas web usando Exa AI para encontrar información relevante en línea. Es útil para investigar temas, encontrar eventos actuales o recopilar información más allá del corte de los datos de entrenamiento.

No se requiere clave de API: la herramienta se conecta directamente al servicio MCP alojado de Exa AI sin autenticación.

Tip: Usa websearch cuando necesites encontrar información (descubrimiento) y webfetch cuando necesites recuperar contenido de una URL específica (recuperación).


question

Hace preguntas al usuario durante la ejecución.

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

Esta herramienta permite que el LLM le haga preguntas al usuario durante una tarea. Es útil para:

  • Recopilar preferencias o requisitos del usuario
  • Aclarar instrucciones ambiguas
  • Tomar decisiones sobre opciones de implementación
  • Ofrecer opciones sobre qué dirección tomar

Cada pregunta incluye un encabezado, el texto de la pregunta y una lista de opciones. Los usuarios pueden seleccionar entre las opciones proporcionadas o escribir una respuesta personalizada. Cuando hay varias 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 invocar. Se definen en tu archivo de configuración y pueden ejecutar código arbitrario.

Más información sobre cómo crear 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.

Más información sobre cómo configurar servidores MCP.


Internos

Internamente, herramientas como grep y glob usan ripgrep (opens in a new tab) por debajo. De forma predeterminada, ripgrep respeta los patrones de .gitignore, lo que significa que los archivos y directorios listados en tu .gitignore se excluirán de las búsquedas y listados.


Patrones de ignorado

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

!node_modules/
!dist/
!build/

Por ejemplo, este archivo .ignore permite que ripgrep busque dentro de los directorios node_modules/, dist/ y build/ aunque estén listados en .gitignore.