DEV Community

Cover image for Configuración de opencode sin complicaciones
ALVARO
ALVARO

Posted on

Configuración de opencode sin complicaciones

Configuración de opencode: guía completa

Se ha demostrado que opencode ha marcado un antes y un después en el mundo del desarrollo. Por esta razón, tener una configuración adecuada es de vital importancia.

Los archivos de configuración pueden ubicarse en diferentes localizaciones, y su comportamiento es fusionarse entre sí, no sobrescribirse completamente unos a otros.

Ubicación de los archivos de configuración

  • Configuración remota (.well-known/opencode): valores predeterminados de la organización
  • Configuración global (~/.config/opencode/opencode.json): preferencias del usuario
  • Configuración personalizada (OPENCODE_CONFIG): anulaciones específicas
  • Configuración del proyecto (opencode.json): configuración propia del repositorio

Estructura del archivo de configuración

Encabezado

Define el esquema base para validación:

"$schema": "https://json-schema.org/draft/2020-12/schema",
Enter fullscreen mode Exit fullscreen mode

Nivel de logs

Controla la cantidad de información mostrada en la terminal.

{
  "logLevel": "DEBUG"
}
Enter fullscreen mode Exit fullscreen mode

Servidor web

Configura el servidor para opencode server y opencode web.

{
  "server": {
    "port": 4000,
    "hostname": "localhost",
    "mdns": true,
    "mdnsDomain": "miequipo.local",
    "cors": ["https://mi-app.com"]
  }
}
Enter fullscreen mode Exit fullscreen mode

Comandos personalizados

Permite definir atajos reutilizables mediante plantillas.

{
  "command": {
    "review": {
      "template": "Revisa el código en {{file}} y sugiere mejoras",
      "description": "Revisión rápida de código",
      "agent": "build"
    },
    "doc": {
      "template": "Genera documentación JSDoc para {{selection}}",
      "description": "Documentar código seleccionado"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Carpeta de skills

Permite añadir rutas locales o remotas con instrucciones especializadas.

{
  "skills": {
    "paths": [
      "./my-skills",
      "/home/user/shared-skills"
    ],
    "urls": [
      "https://example.com/.well-known/skills/"
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

Modelo principal

Define el modelo por defecto.

{
  "model": "anthropic/claude-opus-4-5",
  "small_model": "anthropic/claude-haiku-4-5-20251001"
}
Enter fullscreen mode Exit fullscreen mode

Agentes

Configura los agentes disponibles.

{
  "agent": {
    "build": {
      "model": "anthropic/claude-sonnet-4-6",
      "prompt": "Eres un experto en TypeScript. Usa siempre tipos estrictos.",
      "steps": 30,
      "permission": {
        "bash": "allow",
        "edit": "allow",
        "webfetch": "deny"
      }
    },
    "mi-agente": {
      "mode": "subagent",
      "description": "Especialista en tests",
      "model": "anthropic/claude-haiku-4-5-20251001",
      "prompt": "Solo escribe tests.",
      "color": "#FF5733"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Permisos globales

Define acciones permitidas sin confirmación.

{
  "permission": {
    "bash": "ask",
    "edit": "allow",
    "read": "allow",
    "webfetch": "deny",
    "websearch": "allow"
  }
}
Enter fullscreen mode Exit fullscreen mode

Proveedores de modelos

Permite registrar o personalizar proveedores.

{
  "provider": {
    "openai": {
      "options": {
        "apiKey": "sk-...",
        "baseURL": "https://api.openai.com/v1"
      }
    },
    "ollama": {
      "api": "openai",
      "options": {
        "baseURL": "http://localhost:11434/v1"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Servidores MCP

Define integraciones externas.

{
  "mcp": {
    "filesystem": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "/ruta/proyecto"],
      "enabled": true
    },
    "mi-api": {
      "type": "remote",
      "url": "https://mcp.mi-empresa.com/sse",
      "headers": { "Authorization": "Bearer token" }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Language Servers (LSP)

Mejora el análisis del código.

{
  "lsp": {
    "typescript": {
      "command": ["typescript-language-server", "--stdio"],
      "extensions": [".ts", ".tsx", ".js", ".jsx"]
    },
    "python": {
      "command": ["pylsp"],
      "extensions": [".py"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Formateo de código

Define herramientas de formateo.

{
  "formatter": {
    "prettier": {
      "command": ["npx", "prettier", "--write"],
      "extensions": [".ts", ".tsx", ".js", ".json", ".css"]
    },
    "black": {
      "command": ["black"],
      "extensions": [".py"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Instrucciones

Archivos incluidos como contexto adicional.

{
  "instructions": [
    "./CONVENTIONS.md",
    "./docs/ARCHITECTURE.md",
    "./.opencode/context/*.md"
  ]
}
Enter fullscreen mode Exit fullscreen mode

Compartir sesiones

{
  "share": "manual"
}
Enter fullscreen mode Exit fullscreen mode

Actualizaciones automáticas

{
  "autoupdate": "notify"
}
Enter fullscreen mode Exit fullscreen mode

Compactación del modelo

Le indica que hacer cuando se alcanza el limite de contexto

{
  "compaction": {
    "auto": true,
    "prune": true,
    "reserved": 8000
  }
}
Enter fullscreen mode Exit fullscreen mode

Snapshot de archivos

Guarda snapshots del sistema de archivos, util para que pueda revertir cambios, y si se desactiva mejora el rendimiento

{
  "snapshot": true
}
Enter fullscreen mode Exit fullscreen mode

Filtrado de proveedores

{
  "enabled_providers": ["anthropic", "openai"],
  "disabled_providers": ["cohere"]
}
Enter fullscreen mode Exit fullscreen mode

Funciones experimentales

{
  "experimental": {
    "batch_tool": true,
    "openTelemetry": false,
    "continue_loop_on_deny": true
  }
}
Enter fullscreen mode Exit fullscreen mode

Nombre de usuario

Para tener un nombre personalizado para interactuar con la herramienta

{
  "username": "Custom"
}
Enter fullscreen mode Exit fullscreen mode

Agente por defecto

{
  "default_agent": "build"
}
Enter fullscreen mode Exit fullscreen mode

Observador de archivos

{
  "watcher": {
    "ignore": ["node_modules", "dist", ".git", "*.log"]
  }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)