Configuración
Usando 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 varios lugares diferentes y tienen un orden de precedencia diferente.
Note:
Los archivos de configuración se fusionan juntos, no se reemplazan. La configuración de las siguientes ubicaciones se combina. Las configuraciones posteriores anulan las anteriores solo para claves en conflicto. Se preservan las configuraciones no conflictivas de todas las configuraciones.
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á ambas configuraciones.
Orden de precedencia
Las fuentes de configuración se cargan en este orden (las fuentes posteriores anulan 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) - configuración específica del proyecto - Directorios
.dropstone- agentes, comandos, complementos - Archivos de configuración administrados (
/Library/Application Support/dropstone/en macOS) - controlados por administrador - Preferencias administradas de macOS (
.mobileconfigvía MDM) - máxima prioridad, no anulable por el usuario
Esto significa que las configuraciones del proyecto pueden anular los valores predeterminados globales, y las configuraciones globales pueden anular los valores predeterminados organizacionales remotos. La configuración administrada anula todo.
Note:
Los directorios .dropstone y ~/.config/dropstone usan nombres en plural para subdirectorios: agents/, commands/, modes/, plugins/, skills/, tools/. También se admiten nombres singulares (por ejemplo, agent/) para compatibilidad hacia atrás.
Remota
Las organizaciones pueden proporcionar configuración predeterminada a través de un punto final .well-known/dropstone en su dominio. Dropstone lo obtiene automáticamente en el primer inicio de sesión para usuarios cuya cuenta está inscrita en esa organización.
La configuración remota se carga primero, sirviendo como capa base. Todas las otras fuentes de configuración (global, proyecto) pueden anular estos valores predeterminados.
Por ejemplo, si tu organización proporciona servidores MCP que están deshabilitados de forma predeterminada:
{
"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 usuario como modelos y permisos.
Para configuración a nivel de sesión (keybinds, desplazamiento, captura de ratón), usa ~/.config/dropstone/tui.json.
La configuración global anula los valores predeterminados organizacionales remotos.
Por proyecto
Agrega dropstone.json en la raíz de tu proyecto. La configuración del proyecto tiene la precedencia más alta entre los archivos de configuración estándar - anula tanto las configuraciones globales como las remotas.
Para configuración de sesión específica del proyecto, agrega tui.json junto a él.
Consejo:
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 recorre hacia arriba hasta el directorio Git más cercano.
También es seguro verificarlo 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 las configuraciones globales y del proyecto en el orden de precedencia.
Configuración administrada
Las organizaciones pueden aplicar configuración que los usuarios no pueden anular. La configuración administrada se carga con la prioridad más alta.
Basada 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 preferencias administradas desde el dominio de preferencias ai.dropstone.managed. Implementa un .mobileconfig vía MDM (Jamf, Kandji, FleetDM) y la configuración se aplica automáticamente.
Dropstone verifica estas rutas:
/Library/Managed Preferences/<user>/ai.dropstone.managed.plist/Library/Managed Preferences/ai.dropstone.managed.plist
Las claves plist se asignan directamente a campos dropstone.json. Las claves de metadatos 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 diccionario de carga:
<?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 UUID únicos con uuidgen. Personaliza la configuración para que coincida con los requisitos de tu organización.
Implementación vía MDM
- Jamf Pro: Computers > Configuration Profiles > Upload > scope a dispositivos o grupos inteligentes de destino
- FleetDM: Agrega 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 (se muestra en Configuración del Sistema > Privacidad y Seguridad > Perfiles), 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 de configuración principal 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 basándose en el esquema.
Configuración de sesión
Usa un archivo dedicado tui.json (o tui.jsonc) para configuración a nivel de sesión: comportamiento de desplazamiento, captura de ratón, renderizado de diferencias, 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 relacionadas con sesión en dropstone.json están deprecadas y se migran automáticamente cuando es posible.
Servidor
Puedes configurar la configuración 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- Nombre de host en el que escuchar. Cuandomdnsestá habilitado y no se establece ningún nombre de host, por defecto es0.0.0.0.mdns- Habilitar descubrimiento de servicio mDNS. Esto permite que otros dispositivos en la red descubran tu servidor Dropstone.mdnsDomain- Nombre de dominio personalizado para el servicio mDNS. Por defecto esdropstone.local. Útil para ejecutar múltiples instancias en la misma red.cors- Orígenes adicionales para permitir CORS cuando se usa 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.
Obtén más información 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 llamadas de herramientas de agentes.
{
"$schema": "https://dropstone.io/schema/config.json",
"shell": "pwsh"
}
Si no se especifica, Dropstone descubrirá automáticamente y usará un valor predeterminado sensato basado en 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 administrar 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
}
}
Obtén más información sobre 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 Modelos para el desglose completo.
La opción small_model configura un modelo separado para tareas ligeras como 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": "Reviews code for best practices and potential issues",
"model": "dropstone/dropstone-pro",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
// Disable file modification tools for review-only agent
"write": false,
"edit": false,
},
},
},
}
También puedes definir agentes usando archivos markdown en ~/.config/dropstone/agents/ o .dropstone/agents/. Obtén más información aquí.
Agente predeterminado
Puedes establecer el agente predeterminado usando la opción default_agent. Esto determina qué agente se usa cuando ninguno se especifica explícitamente.
{
"$schema": "https://dropstone.io/schema/config.json",
"default_agent": "plan"
}
El agente predeterminado debe ser un agente primario (no un subagente). Esto 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 volverá a "build" con una advertencia.
Esta configuración se aplica en todas las interfaces: sesiones interactivas, ejecuciones de una sola vez (dropstone run) y la Acción de GitHub.
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": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
"description": "Run tests with coverage",
"agent": "build",
"model": "dropstone/dropstone-fast",
},
"component": {
"template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
"description": "Create a new component",
},
},
}
También puedes definir comandos usando archivos markdown en ~/.config/dropstone/commands/ o .dropstone/commands/. Obtén más información aquí.
Mapa de teclas
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 deseas cambiar.
El campo keybinds más antiguo está deprecado y solo se aplica cuando keymap no está presente.
Instantánea
Dropstone usa instantáneas para rastrear cambios de archivos durante operaciones de agentes, permitiéndote deshacer y revertir cambios dentro de una sesión. Las instantáneas están habilitadas de forma predeterminada.
Para repositorios grandes o proyectos con muchos submódulos, el sistema de instantáneas puede causar indexación lenta y uso significativo de disco. Puedes deshabilitar las instantáneas usando la opción snapshot.
{
"$schema": "https://dropstone.io/schema/config.json",
"snapshot": false
}
Ten en cuenta que deshabilitar las instantáneas significa que los cambios realizados por el agente no se pueden revertir a través de la interfaz de usuario.
Actualización automática
Dropstone descargará automáticamente cualquier actualización nueva cuando se inicie. Puedes deshabilitar esto con la opción autoupdate.
{
"$schema": "https://dropstone.io/schema/config.json",
"autoupdate": false
}
Si no deseas actualizaciones pero deseas ser notificado cuando hay una nueva versión disponible, establece autoupdate en "notify".
Ten en cuenta que esto solo funciona si no fue instalado 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"]
}
}
}
Obtén más información sobre 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
}
}
}
Obtén más información sobre 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"
}
}
Obtén más información sobre permisos aquí.
Compactación
Puedes controlar el comportamiento de compactación de contexto a través de la opción compaction.
{
"$schema": "https://dropstone.io/schema/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
auto- Compactar automáticamente la sesión cuando el contexto está lleno (predeterminado:true).prune- Eliminar salidas de herramientas antiguas para ahorrar tokens (predeterminado:true).reserved- Buffer de tokens para compactación. Deja suficiente ventana para evitar desbordamiento durante la compactación
Observador
Puedes configurar patrones de ignorancia del observador 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 de la observación de archivos.
Servidores MCP
Puedes configurar servidores MCP que deseas usar a través de la opción mcp.
{
"$schema": "https://dropstone.io/schema/config.json",
"mcp": {}
}
Complementos
Los complementos extienden Dropstone con herramientas personalizadas, hooks e integraciones.
Coloca archivos de complementos en .dropstone/plugins/ o ~/.config/dropstone/plugins/. También puedes cargar complementos 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 a archivos de instrucciones. Obtén más información sobre 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 ser eliminadas 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 archivo pueden ser:
- Relativas al directorio del archivo de configuración
- O rutas absolutas que comienzan con
/o~
Estos son útiles para:
- Incluir archivos de instrucciones grandes sin saturar tu configuración.
- Compartir fragmentos de configuración común entre múltiples archivos de configuración.