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.
{
"$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:
{
"$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.
{
"$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.
{
"$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.
{
"$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
writese controla mediante el permisoedit, que abarca todas las modificaciones de archivos (edit,write,apply_patch).
read
Lee el contenido de archivos de tu base de código.
{
"$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.
{
"$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.
{
"$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(oOPENCODE_EXPERIMENTAL=true).
{
"$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.
{
"$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_patchse controla mediante el permisoedit, 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.
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}todowrite
Gestiona listas de tareas durante las sesiones de programación.
{
"$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.
{
"$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_EXAestá establecida en cualquier valor verdadero (por ejemplo,trueo1).Para habilitarla al iniciar OpenCode:
OPENCODE_ENABLE_EXA=1 opencode
{
"$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
websearchcuando necesites encontrar información (descubrimiento) ywebfetchcuando necesites recuperar contenido de una URL específica (recuperación).
question
Hace preguntas al usuario durante la ejecución.
{
"$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.