Config
Uso de la configuración JSON de Dropstone.
Puedes configurar Dropstone usando un archivo de configuración JSON.
Formato
Dropstone admite formatos JSON y JSONC (JSON con comentarios).
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"autoupdate": true,
"server": {
"port": 4096,
},
}
Ubicaciones
Puedes colocar tu configuración en varias ubicaciones diferentes y tienen un orden de precedencia distinto.
Note
Los archivos de configuración se fusionan, no se reemplazan. Los ajustes de las siguientes ubicaciones de configuración se combinan. Las configuraciones posteriores solo anulan a las anteriores en claves conflictivas. Los ajustes no conflictivos de todas las configuraciones se conservan.
Por ejemplo, si tu configuración global establece autoupdate: true y tu configuración de proyecto establece model: "dropstone/dropstone-pro", la configuración final incluirá ambos ajustes.
Orden de precedencia
Las fuentes de configuración se cargan en este orden (las fuentes posteriores anulan a las anteriores):
- Configuración remota (desde
.well-known/dropstone) - valores predeterminados organizacionales - Configuración global (
~/.config/dropstone/dropstone.json) - preferencias del usuario - Configuración personalizada (variable de entorno
DROPSTONE_CONFIG) - anulaciones personalizadas - Configuración del proyecto (
dropstone.jsonen el proyecto) - ajustes específicos del proyecto - Directorios
.dropstone- agentes, comandos, plugins - Archivos de configuración administrados (
/Library/Application Support/dropstone/en macOS) - controlados por el administrador - Preferencias administradas de macOS (
.mobileconfigvía MDM) - máxima prioridad, no anulables por el usuario
Esto significa que las configuraciones de proyecto pueden anular los valores predeterminados globales, y las configuraciones globales pueden anular los valores predeterminados organizacionales remotos. Los ajustes administrados lo anulan todo.
Note
Los directorios .dropstone y ~/.config/dropstone usan nombres en plural para los subdirectorios: agents/, commands/, modes/, plugins/, skills/, tools/. Los nombres en singular (por ejemplo, agent/) también son compatibles por retrocompatibilidad.
Remota
Las organizaciones pueden proporcionar configuración predeterminada a través de un endpoint .well-known/dropstone en su dominio. Dropstone lo obtiene automáticamente en el primer inicio de sesión para los usuarios cuya cuenta está inscrita en esa organización.
La configuración remota se carga primero, sirviendo como capa base. Todas las demás fuentes de configuración (global, proyecto) pueden anular estos valores predeterminados.
Por ejemplo, si tu organización proporciona servidores MCP que están deshabilitados por defecto:
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
Puedes habilitar servidores específicos en tu configuración local:
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
Global
Coloca tu configuración global de Dropstone en ~/.config/dropstone/dropstone.json. Usa la configuración global para preferencias de todo el usuario, como modelos y permisos.
Para ajustes a nivel de sesión (teclas, scroll, captura del mouse), usa ~/.config/dropstone/tui.json.
La configuración global anula los valores predeterminados organizacionales remotos.
Por proyecto
Añade dropstone.json en la raíz de tu proyecto. La configuración del proyecto tiene la mayor precedencia entre los archivos de configuración estándar: anula tanto la configuración global como la remota.
Para ajustes de sesión específicos del proyecto, añade tui.json junto a él.
Tip
Coloca la configuración específica del proyecto en la raíz de tu proyecto.
Cuando Dropstone se inicia, busca un archivo de configuración en el directorio actual o sube hasta el directorio Git más cercano.
También es seguro incluirlo en Git y usa el mismo esquema que el global.
Ruta personalizada
Especifica una ruta de archivo de configuración personalizada usando la variable de entorno DROPSTONE_CONFIG.
export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"
La configuración personalizada se carga entre la configuración global y la del proyecto en el orden de precedencia.
Ajustes administrados
Las organizaciones pueden imponer configuraciones que los usuarios no pueden anular. Los ajustes administrados se cargan en el nivel de prioridad más alto.
Basados en archivos
Coloca un archivo dropstone.json o dropstone.jsonc en el directorio de configuración administrada del sistema:
| Plataforma | Ruta |
|---|---|
| macOS | /Library/Application Support/dropstone/ |
| Linux | /etc/dropstone/ |
| Windows | %ProgramData%\dropstone |
Estos directorios requieren acceso de administrador/root para escribir, por lo que los usuarios no pueden modificarlos.
Preferencias administradas de macOS
En macOS, Dropstone lee las preferencias administradas del dominio de preferencias ai.dropstone.managed. Implementa un .mobileconfig vía MDM (Jamf, Kandji, FleetDM) y los ajustes se aplican automáticamente.
Dropstone verifica estas rutas:
/Library/Managed Preferences/<user>/ai.dropstone.managed.plist/Library/Managed Preferences/ai.dropstone.managed.plist
Las claves del plist se asignan directamente a los campos de dropstone.json. Las claves de metadatos de MDM (PayloadUUID, PayloadType, etc.) se eliminan automáticamente.
Creando un .mobileconfig
Usa el PayloadType ai.dropstone.managed. Las claves de configuración de Dropstone van directamente en el dict del payload:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>ai.dropstone.managed</string>
<key>PayloadIdentifier</key>
<string>com.example.dropstone.config</string>
<key>PayloadUUID</key>
<string>GENERATE-YOUR-OWN-UUID</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>share</key>
<string>disabled</string>
<key>server</key>
<dict>
<key>hostname</key>
<string>127.0.0.1</string>
</dict>
<key>permission</key>
<dict>
<key>*</key>
<string>ask</string>
<key>bash</key>
<dict>
<key>*</key>
<string>ask</string>
<key>rm -rf *</key>
<string>deny</string>
</dict>
</dict>
</dict>
</array>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadIdentifier</key>
<string>com.example.dropstone</string>
<key>PayloadUUID</key>
<string>GENERATE-YOUR-OWN-UUID</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Genera UUIDs únicos con uuidgen. Personaliza los ajustes para que coincidan con los requisitos de tu organización.
Implementación vía MDM
- Jamf Pro: Computers > Configuration Profiles > Upload > scope a dispositivos objetivo o grupos inteligentes
- FleetDM: Añade el
.mobileconfiga tu repositorio gitops bajomdm.macos_settings.custom_settingsy ejecutafleetctl apply
Verificación en un dispositivo
Haz doble clic en el .mobileconfig para instalarlo localmente para pruebas (aparece en System Settings > Privacy & Security > Profiles), luego ejecuta:
dropstone debug config
Todas las claves de preferencias administradas aparecen en la configuración resuelta y no pueden ser anuladas por la configuración del usuario o del proyecto.
Esquema
El esquema principal de configuración se define en dropstone.io/config.json.
La configuración a nivel de sesión (tui.json) usa dropstone.io/tui.json.
Tu editor debería poder validar y autocompletar según el esquema.
Configuración de sesión
Usa un archivo dedicado tui.json (o tui.jsonc) para ajustes a nivel de sesión: comportamiento del scroll, captura del mouse, renderizado de diffs, etc.
{
"$schema": "https://dropstone.io/schema/tui.json",
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto",
"mouse": true
}
Las claves heredadas theme, keybinds y las relacionadas con la sesión en dropstone.json están obsoletas y se migran automáticamente cuando es posible.
Servidor
Puedes configurar los ajustes del servidor para los comandos dropstone serve y dropstone web a través de la opción server.
{
"$schema": "https://dropstone.io/schema/config.json",
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "myproject.local",
"cors": ["http://localhost:5173"]
}
}
Opciones disponibles:
port- Puerto en el que escuchar.hostname- Hostname en el que escuchar. Cuandomdnsestá habilitado y no se establece ningún hostname, el valor predeterminado es0.0.0.0.mdns- Habilita el descubrimiento de servicios mDNS. Esto permite que otros dispositivos en la red descubran tu servidor Dropstone.mdnsDomain- Nombre de dominio personalizado para el servicio mDNS. El valor predeterminado esdropstone.local. Útil para ejecutar múltiples instancias en la misma red.cors- Orígenes adicionales permitidos para CORS al usar el servidor HTTP desde un cliente basado en navegador. Los valores deben ser orígenes completos (esquema + host + puerto opcional), por ejemplohttps://app.example.com.
Aprende más sobre el servidor aquí.
Shell
Puedes configurar el shell usado para la terminal interactiva usando la opción shell. Los shells compatibles también se usan para las llamadas de herramientas del agente.
{
"$schema": "https://dropstone.io/schema/config.json",
"shell": "pwsh"
}
Si no se especifica, Dropstone descubrirá automáticamente y usará un valor predeterminado sensato según tu sistema operativo (por ejemplo, pwsh o cmd.exe en Windows, /bin/zsh o /bin/bash en macOS/Linux). Puedes proporcionar una ruta absoluta o un nombre corto.
Herramientas
Puedes gestionar las herramientas que un LLM puede usar a través de la opción tools.
{
"$schema": "https://dropstone.io/schema/config.json",
"tools": {
"write": false,
"bash": false
}
}
Aprende más sobre las herramientas aquí.
Modelo
Establece tu modelo predeterminado con la opción model. Dropstone incluye tres niveles:
| Nivel | ID del modelo |
|---|---|
| Fast | dropstone/dropstone-fast |
| Pro | dropstone/dropstone-pro |
| Heavy | dropstone/dropstone-heavy |
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro"
}
Fija una profundidad de razonamiento predeterminada con variant:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"variant": "high"
}
Los valores válidos de variant son low, medium, high, xhigh. Consulta Models para el desglose completo.
La opción small_model configura un modelo separado para tareas ligeras como la generación de títulos. Por defecto, Dropstone elige un nivel apropiado; puedes anularlo explícitamente:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"small_model": "dropstone/dropstone-fast"
}
Agentes
Puedes configurar agentes especializados para tareas específicas a través de la opción agent.
{
"$schema": "https://dropstone.io/schema/config.json",
"agent": {
"code-reviewer": {
"description": "Revisa el código en busca de mejores prácticas y problemas potenciales",
"model": "dropstone/dropstone-pro",
"prompt": "Eres un revisor de código. Concéntrate en seguridad, rendimiento y mantenibilidad.",
"tools": {
// Deshabilita las herramientas de modificación de archivos para el agente de solo revisión
"write": false,
"edit": false,
},
},
},
}
También puedes definir agentes usando archivos markdown en ~/.config/dropstone/agents/ o .dropstone/agents/. Aprende más aquí.
Agente predeterminado
Puedes establecer el agente predeterminado usando la opción default_agent. Esto determina qué agente se usa cuando no se especifica ninguno explícitamente.
{
"$schema": "https://dropstone.io/schema/config.json",
"default_agent": "plan"
}
El agente predeterminado debe ser un agente principal (no un subagente). Puede ser un agente integrado como "build" o "plan", o un agente personalizado que hayas definido. Si el agente especificado no existe o es un subagente, Dropstone recurrirá a "build" con una advertencia.
Este ajuste se aplica en todas las interfaces: sesiones interactivas, ejecuciones de una sola vez (dropstone run) y la GitHub Action.
Comandos
Puedes configurar comandos personalizados para tareas repetitivas a través de la opción command.
{
"$schema": "https://dropstone.io/schema/config.json",
"command": {
"test": {
"template": "Ejecuta la suite de pruebas completa con informe de cobertura y muestra cualquier fallo.\nConcéntrate en las pruebas que fallan y sugiere correcciones.",
"description": "Ejecuta pruebas con cobertura",
"agent": "build",
"model": "dropstone/dropstone-fast",
},
"component": {
"template": "Crea un nuevo componente React llamado $ARGUMENTS con soporte de TypeScript.\nIncluye tipado adecuado y estructura básica.",
"description": "Crea un nuevo componente",
},
},
}
También puedes definir comandos usando archivos markdown en ~/.config/dropstone/commands/ o .dropstone/commands/. Aprende más aquí.
Keymap
Personaliza los atajos de teclado en tui.json con keymap.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"global": {
"command.palette.show": "ctrl+p"
}
}
}
}
keymap se fusiona con los valores predeterminados integrados, por lo que solo necesitas configurar los atajos que quieres cambiar.
El campo más antiguo keybinds está obsoleto y solo se aplica cuando keymap no está presente.
Snapshot
Dropstone usa snapshots para rastrear cambios de archivos durante las operaciones del agente, lo que te permite deshacer y revertir cambios dentro de una sesión. Los snapshots están habilitados por defecto.
Para repositorios grandes o proyectos con muchos submódulos, el sistema de snapshots puede causar indexación lenta y uso significativo de disco. Puedes deshabilitar los snapshots usando la opción snapshot.
{
"$schema": "https://dropstone.io/schema/config.json",
"snapshot": false
}
Ten en cuenta que deshabilitar los snapshots significa que los cambios realizados por el agente no se pueden revertir a través de la interfaz.
Autoupdate
Dropstone descargará automáticamente cualquier nueva actualización cuando se inicie. Puedes deshabilitar esto con la opción autoupdate.
{
"$schema": "https://dropstone.io/schema/config.json",
"autoupdate": false
}
Si no quieres actualizaciones pero deseas ser notificado cuando haya una nueva versión disponible, establece autoupdate en "notify".
Ten en cuenta que esto solo funciona si no se instaló usando un gestor de paquetes como Homebrew.
Formateadores
Puedes habilitar y configurar formateadores de código a través de la opción formatter. Omítela para mantener los formateadores deshabilitados.
{
"$schema": "https://dropstone.io/schema/config.json",
"formatter": true
}
Usa un objeto para mantener los integrados habilitados mientras configuras anulaciones o formateadores personalizados.
{
"$schema": "https://dropstone.io/schema/config.json",
"formatter": {
"prettier": {
"disabled": true
},
"custom-prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
}
}
}
Aprende más sobre los formateadores aquí.
Servidores LSP
Puedes habilitar y configurar servidores LSP a través de la opción lsp. Omítela para mantener LSP deshabilitado.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Usa un objeto para mantener los integrados habilitados mientras configuras anulaciones o servidores LSP personalizados.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
Aprende más sobre los servidores LSP aquí.
Permisos
Por defecto, Dropstone permite todas las operaciones sin requerir aprobación explícita. Puedes cambiar esto usando la opción permission.
Por ejemplo, para asegurar que las herramientas edit y bash requieran aprobación del usuario:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
Aprende más sobre los permisos aquí.
Compactación
Puedes controlar el comportamiento de compactación del contexto a través de la opción compaction.
{
"$schema": "https://dropstone.io/schema/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
auto- Compacta automáticamente la sesión cuando el contexto está lleno (predeterminado:true).prune- Elimina salidas de herramientas antiguas para ahorrar tokens (predeterminado:true).reserved- Buffer de tokens para la compactación. Deja suficiente ventana para evitar desbordamiento durante la compactación.
Watcher
Puedes configurar patrones de ignorado del watcher de archivos a través de la opción watcher.
{
"$schema": "https://dropstone.io/schema/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
Los patrones siguen la sintaxis glob. Usa esto para excluir directorios ruidosos del seguimiento de archivos.
Servidores MCP
Puedes configurar los servidores MCP que quieras usar a través de la opción mcp.
{
"$schema": "https://dropstone.io/schema/config.json",
"mcp": {}
}
Plugins
Los Plugins extienden Dropstone con herramientas, hooks e integraciones personalizadas.
Coloca los archivos de plugins en .dropstone/plugins/ o ~/.config/dropstone/plugins/. También puedes cargar plugins desde npm a través de la opción plugin.
{
"$schema": "https://dropstone.io/schema/config.json",
"plugin": ["@my-org/custom-plugin", "./local-plugin.ts"]
}
Instrucciones
Puedes configurar las instrucciones para el modelo que estás usando a través de la opción instructions.
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
Esto toma un array de rutas y patrones glob para archivos de instrucciones. Aprende más sobre las reglas aquí.
Experimental
La clave experimental contiene opciones que están en desarrollo activo.
{
"$schema": "https://dropstone.io/schema/config.json",
"experimental": {}
}
Inestable
Las opciones experimentales no son estables. Pueden cambiar o eliminarse sin previo aviso.
Variables
Puedes usar sustitución de variables en tus archivos de configuración para hacer referencia a variables de entorno y contenidos de archivos.
Variables de entorno
Usa {env:VARIABLE_NAME} para sustituir variables de entorno:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "{env:DROPSTONE_MODEL}"
}
Si la variable de entorno no está establecida, se reemplazará con una cadena vacía.
Archivos
Usa {file:path/to/file} para sustituir el contenido de un archivo:
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["./custom-instructions.md"]
}
Las rutas de archivos pueden ser:
- Relativas al directorio del archivo de configuración
- O rutas absolutas que comiencen con
/o~
Estas son útiles para:
- Incluir archivos de instrucciones grandes sin saturar tu configuración.
- Compartir fragmentos de configuración comunes entre múltiples archivos de configuración.