Herramientas de OpenCode
Las capacidades principales de OpenCode no solo provienen del modelo en sí, sino también de las herramientas que puede invocarherramientas (Tools)。
La esencia de las herramientas: hacer que el LLM pase de hablar a hacer cosas.
Tools = capacidad de ejecución de OpenCode, y permisos = frontera de seguridad.
1. ¿Qué son las herramientas (Tools)?
Las herramientas son interfaces de capacidad del LLM para realizar operaciones en el proyecto, por ejemplo:
- Leer código
- Modificar archivos
- Ejecutar comandos
- Buscar código
- Acceder a la red
Sin herramientas: solo puede generar código
Con herramientas: puedeOperar directamente sobre el proyecto
2. Control de permisos de herramientas (lo más importante)
Por defecto:
- Todas las herramientas están habilitadas
- y pueden ejecutarse sin confirmación
¡En producción es obligatorio configurar permisos!
1、Configuración básica de permisos
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}
| Valor de permiso | Descripción |
|---|---|
| allow | Permitir ejecución directa |
| deny | Prohibir por completo |
| ask | Requiere confirmación humana antes de ejecutar |
2、Control con comodines
Se pueden controlar herramientas en lote:
{
"permission": {
"mymcp_*": "ask"
}
}
Todas las herramientas provenientes de MCP requieren aprobación
<<<SEP>>> 3. Explicación detallada de las herramientas integradas
OpenCode incluye un conjunto completo de herramientas de nivel de ingeniería:
1、bash (ejecución de comandos)
{
"permission": {
"bash": "allow"
}
}
Función:
- Ejecutar comandos de shell
- como npm install, git status
Riesgo:Alto (se recomienda configurarlo como ask)
2、edit (herramienta principal)
{
"permission": {
"edit": "allow"
}
}
Función:
- Modificar archivos existentes
- Basado en reemplazo de texto exacto
Nota:Esta es la capacidad principal de la IA para modificar código
3、write (creación de archivos)
Función:
- Crear nuevos archivos
- Sobrescribir archivos existentes
Atención:
write está controlado por el permiso de edit
4、read (lectura de archivos)
{
"permission": {
"read": "allow"
}
}
Función:
- Leer archivos de código
- Admite lectura línea por línea
Riesgo:Bajo (se recomienda always allow)
5、grep (búsqueda de contenido)
{
"permission": {
"grep": "allow"
}
}
Función:
- Buscar código con expresiones regulares
6、glob (coincidencia de archivos)
Función:
- Buscar rutas de archivos (por ejemplo, src/**/*.ts)
7、list (exploración de directorios)
Función:
- Listar la estructura de directorios
8、patch (aplicación de parches)
Función:
- Aplicar parches diff
Nota:Controlado por el permiso de edit
9、lsp (experimental)
Función:
- Análisis inteligente de código (ir a definición, consultar referencias)
Forma de habilitación:
OPENCODE_EXPERIMENTAL_LSP_TOOL=true
10、skill (carga de habilidades)
Función:
- Cargar SKILL.md
- Mejorar el comportamiento de la IA
11、todowrite (gestión de tareas)
Función:
- Mantener la lista de tareas
- Seguir flujos complejos
12、webfetch (lectura de páginas web)
Función:
- Obtener el contenido de una URL específica
13、websearch (búsqueda en línea)
Forma de habilitación:
OPENCODE_ENABLE_EXA=1 opencode
Función:
- Buscar información en internet
Diferencia:
- websearch: buscar información (descubrimiento)
- webfetch: leer contenido (obtención)
14、question (preguntas interactivas)
Función:
- Hacer preguntas al usuario
- Recopilar requisitos
Adecuado para:
- Requisitos poco claros
- Decisiones que requieren del usuario
4. Herramientas personalizadas
Puedes definir tus propias herramientas para que la IA ejecute lógica personalizada.
Por ejemplo:
- Llamar a API internas
- Operar bases de datos
- Ejecutar lógica de negocio
Esencia:Hacer que el LLM invoque funciones
5. Servidores MCP (capacidades avanzadas)
MCP (Model Context Protocol) te permite conectar sistemas externos:
- Bases de datos
- API de terceros
- Servicios internos
Equivale a conectar "capacidades externas" a la IA
6. Mecanismo subyacente (importante)
OpenCode utiliza ripgrep como motor de búsqueda:
- Respeta el .gitignore
- Ignora por defecto directorios como node_modules
Cómo anular las reglas de ignorado
Crear archivo:
.ignore
Ejemplo:
!node_modules/ !dist/ !build/
Forzar la inclusión de estos directorios
7. Mejores prácticas (muy recomendado)
- read / grep / glob → allow
- edit → ask (etapa de desarrollo)
- bash → ask (entorno de producción)
- webfetch → allow
Principios clave:
- La lectura se puede liberar
- La modificación debe controlarse
- La ejecución de comandos debe hacerse con precaución