File size: 9,118 Bytes
0dbc9de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 | ---
title: Herramientas
description: Administre las herramientas que puede usar un LLM.
---
Las herramientas permiten que LLM realice acciones en su c贸digo base. OpenCode viene con un conjunto de herramientas integradas, pero puede ampliarlo con [herramientas personalizadas](/docs/custom-tools) o [servidores MCP](/docs/mcp-servers).
De forma predeterminada, todas las herramientas est谩n **habilitadas** y no necesitan permiso para ejecutarse. Puede controlar el comportamiento de la herramienta a trav茅s de [permisos](/docs/permissions).
---
## Configuraci贸n
Utilice el campo `permission` para controlar el comportamiento de la herramienta. Puede permitir, denegar o exigir aprobaci贸n para cada herramienta.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}
```
Tambi茅n puedes utilizar comodines para controlar varias herramientas a la vez. Por ejemplo, para solicitar aprobaci贸n para todas las herramientas de un servidor MCP:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}
```
[M谩s informaci贸n](/docs/permissions) sobre la configuraci贸n de permisos.
---
## Integradas
Aqu铆 est谩n todas las herramientas integradas disponibles en OpenCode.
---
### bash
Ejecute comandos de shell en el entorno de su proyecto.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}
```
Esta herramienta permite que LLM ejecute comandos de terminal como `npm install`, `git status` o cualquier otro comando de shell.
---
### edit
Modifique archivos existentes utilizando reemplazos de cadenas exactas.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
Esta herramienta realiza ediciones precisas de archivos reemplazando coincidencias de texto exactas. Es la forma principal en que LLM modifica el c贸digo.
---
### write
Cree nuevos archivos o sobrescriba los existentes.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
Utilice esto para permitir que LLM cree nuevos archivos. Sobrescribir谩 los archivos existentes si ya existen.
:::note
La herramienta `write` est谩 controlada por el permiso `edit`, que cubre todas las modificaciones de archivos (`edit`, `write`, `patch`).
:::
---
### read
Lea el contenido del archivo desde su base de c贸digo.
```json title="opencode.json" {4}
{
"$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
Busque contenidos de archivos utilizando expresiones regulares.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}
```
B煤squeda r谩pida de contenido en su base de c贸digo. Admite sintaxis de expresiones regulares completa y filtrado de patrones de archivos.
---
### glob
Encuentre archivos por coincidencia de patrones.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}
```
Busque archivos usando patrones globales como `**/*.js` o `src/**/*.ts`. Devuelve rutas de archivos coincidentes ordenadas por hora de modificaci贸n.
---
### lsp (experimental)
Interact煤e con sus servidores LSP configurados para obtener funciones de inteligencia de c贸digo como definiciones, referencias, informaci贸n de desplazamiento y jerarqu铆a de llamadas.
:::note
Esta herramienta solo est谩 disponible cuando `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (o `OPENCODE_EXPERIMENTAL=true`).
:::
```json title="opencode.json" {4}
{
"$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 su proyecto, consulte [Servidores LSP](/docs/lsp).
---
### patch
Aplicar parches a los archivos.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
Esta herramienta aplica archivos de parche a su c贸digo base. 脷til para aplicar diferencias y parches de diversas fuentes.
:::note
La herramienta `patch` est谩 controlada por el permiso `edit`, que cubre todas las modificaciones de archivos (`edit`, `write`, `patch`).
:::
---
### skill
Cargue una [habilidad](/docs/skills) (un archivo `SKILL.md`) y devuelva su contenido en la conversaci贸n.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}
```
---
### todowrite
Administre listas de tareas pendientes durante las sesiones de codificaci贸n.
```json title="opencode.json" {4}
{
"$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 varios pasos.
:::note
Esta herramienta est谩 deshabilitada para los subagentes de forma predeterminada, pero puede habilitarla manualmente. [M谩s informaci贸n](/docs/agents/#permissions)
:::
---
### webfetch
Obtener contenido web.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}
```
Permite que LLM busque y lea p谩ginas web. 脷til para buscar documentaci贸n o investigar recursos en l铆nea.
---
### websearch
Busque informaci贸n en la web.
:::note
Esta herramienta solo est谩 disponible cuando se utiliza el proveedor OpenCode o cuando la variable de entorno `OPENCODE_ENABLE_EXA` est谩 configurada en cualquier valor verdadero (por ejemplo, `true` o `1`).
Para habilitar al iniciar OpenCode:
```bash
OPENCODE_ENABLE_EXA=1 opencode
```
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"websearch": "allow"
}
}
```
Realiza b煤squedas web utilizando Exa AI para encontrar informaci贸n relevante en l铆nea. 脷til para investigar temas, encontrar eventos actuales o recopilar informaci贸n m谩s all谩 del l铆mite de datos de entrenamiento.
No se requiere ninguna clave API: la herramienta se conecta directamente al servicio MCP alojado de Exa AI sin autenticaci贸n.
:::tip
Utilice `websearch` cuando necesite encontrar informaci贸n (descubrimiento) y `webfetch` cuando necesite recuperar contenido de una URL espec铆fica (recuperaci贸n).
:::
---
### question
Haga preguntas al usuario durante la ejecuci贸n.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}
```
Esta herramienta permite que LLM haga preguntas al usuario durante una tarea. Es 煤til para:
- Recopilar preferencias o requisitos del usuario.
- Aclarar instrucciones ambiguas
- Tomar decisiones sobre las 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 le permiten definir sus propias funciones a las que LLM puede llamar. Estos est谩n definidos en su archivo de configuraci贸n y pueden ejecutar c贸digo arbitrario.
[M谩s informaci贸n](/docs/custom-tools) sobre la creaci贸n de herramientas personalizadas.
---
## Servidores MCP
Los servidores MCP (Model Context Protocol) le permiten integrar herramientas y servicios externos. Esto incluye acceso a bases de datos, integraciones API y servicios de terceros.
[M谩s informaci贸n](/docs/mcp-servers) sobre la configuraci贸n de servidores MCP.
---
## Internos
Internamente, herramientas como `grep` y `glob` usan [ripgrep](https://github.com/BurntSushi/ripgrep) bajo el cap贸. De forma predeterminada, ripgrep respeta los patrones `.gitignore`, lo que significa que los archivos y directorios enumerados en su `.gitignore` se excluir谩n de las b煤squedas y listados.
---
### Ignorar patrones
Para incluir archivos que normalmente se ignorar铆an, cree un archivo `.ignore` en la ra铆z de su proyecto. Este archivo puede permitir expl铆citamente ciertas rutas.
```text title=".ignore"
!node_modules/
!dist/
!build/
```
Por ejemplo, este archivo `.ignore` permite que ripgrep busque dentro de los directorios `node_modules/`, `dist/` y `build/` incluso si figuran en `.gitignore`.
|