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.
{ "$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:
{ "$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.
{ "$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.
{ "$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.
{ "$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.
{ "$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.
{ "$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.
{ "$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.
{ "$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.
{ "$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.
{ "$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.
{ "$schema": "https://opencode.ai/config.json", "permission": { "skill": "allow" }}todowrite
Administra listas de tareas durante sesiones de codificacion.
{ "$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.
{ "$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.
{ "$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.
{ "$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.
!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.