Dropstone CLI

Config

Utilizzo della configurazione JSON di Dropstone.

Puoi configurare Dropstone utilizzando un file di configurazione JSON.


Formato

Dropstone supporta sia il formato JSON che JSONC (JSON con commenti).

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "autoupdate": true,
  "server": {
    "port": 4096,
  },
}

Posizioni

Puoi inserire la tua configurazione in diverse posizioni, che hanno un diverso ordine di precedenza.

Note

I file di configurazione vengono uniti tra loro, non sostituiti. Le impostazioni delle seguenti posizioni di configurazione vengono combinate. Le configurazioni successive sovrascrivono quelle precedenti solo per le chiavi in conflitto. Le impostazioni non in conflitto di tutte le configurazioni vengono preservate.

Ad esempio, se la tua configurazione globale imposta autoupdate: true e la configurazione del progetto imposta model: "dropstone/dropstone-pro", la configurazione finale includerà entrambe le impostazioni.


Ordine di precedenza

Le sorgenti di configurazione vengono caricate in questo ordine (le sorgenti successive sovrascrivono quelle precedenti):

  1. Configurazione remota (da .well-known/dropstone) - impostazioni predefinite dell'organizzazione
  2. Configurazione globale (~/.config/dropstone/dropstone.json) - preferenze utente
  3. Configurazione personalizzata (variabile d'ambiente DROPSTONE_CONFIG) - override personalizzati
  4. Configurazione del progetto (dropstone.json nel progetto) - impostazioni specifiche del progetto
  5. Directory .dropstone - agenti, comandi, plugin
  6. File di configurazione gestiti (/Library/Application Support/dropstone/ su macOS) - controllati dall'amministratore
  7. Preferenze gestite di macOS (.mobileconfig tramite MDM) - priorità massima, non sovrascrivibili dall'utente

Questo significa che le configurazioni del progetto possono sovrascrivere le impostazioni predefinite globali, e le configurazioni globali possono sovrascrivere le impostazioni predefinite remote dell'organizzazione. Le impostazioni gestite sovrascrivono tutto.

Note

Le directory .dropstone e ~/.config/dropstone utilizzano nomi plurali per le sottodirectory: agents/, commands/, modes/, plugins/, skills/, tools/. I nomi singolari (ad es. agent/) sono supportati anche per compatibilità con le versioni precedenti.


Remota

Le organizzazioni possono fornire una configurazione predefinita tramite un endpoint .well-known/dropstone sul proprio dominio. Dropstone lo recupera automaticamente al primo accesso per gli utenti il cui account è registrato con quell'organizzazione.

La configurazione remota viene caricata per prima, fungendo da livello di base. Tutte le altre sorgenti di configurazione (globale, progetto) possono sovrascrivere queste impostazioni predefinite.

Ad esempio, se la tua organizzazione fornisce server MCP disabilitati per impostazione predefinita:

{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": false
    }
  }
}

Puoi abilitare server specifici nella tua configurazione locale:

{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": true
    }
  }
}

Globale

Inserisci la tua configurazione globale di Dropstone in ~/.config/dropstone/dropstone.json. Utilizza la configurazione globale per preferenze a livello utente come modelli e permessi.

Per le impostazioni a livello di sessione (tasti, scorrimento, cattura del mouse), utilizza ~/.config/dropstone/tui.json.

La configurazione globale sovrascrive le impostazioni predefinite remote dell'organizzazione.


Per progetto

Aggiungi dropstone.json nella radice del tuo progetto. La configurazione del progetto ha la precedenza più alta tra i file di configurazione standard: sovrascrive sia le configurazioni globali che quelle remote.

Per le impostazioni di sessione specifiche del progetto, aggiungi tui.json accanto ad esso.

Tip

Inserisci la configurazione specifica del progetto nella radice del tuo progetto.

Quando Dropstone si avvia, cerca un file di configurazione nella directory corrente o risale fino alla directory Git più vicina.

Questo file può essere tranquillamente incluso nel controllo di versione Git e utilizza lo stesso schema di quello globale.


Percorso personalizzato

Specifica un percorso personalizzato per il file di configurazione utilizzando la variabile d'ambiente DROPSTONE_CONFIG.

export DROPSTONE_CONFIG=/percorso/al/mio/config-personalizzato.json
dropstone run "Hello world"

La configurazione personalizzata viene caricata tra la configurazione globale e quella del progetto nell'ordine di precedenza.


Impostazioni gestite

Le organizzazioni possono imporre configurazioni che gli utenti non possono sovrascrivere. Le impostazioni gestite vengono caricate al livello di priorità più alto.

Basate su file

Inserisci un file dropstone.json o dropstone.jsonc nella directory di configurazione gestita del sistema:

PiattaformaPercorso
macOS/Library/Application Support/dropstone/
Linux/etc/dropstone/
Windows%ProgramData%\dropstone

Queste directory richiedono accesso amministratore/root per la scrittura, quindi gli utenti non possono modificarle.

Preferenze gestite di macOS

Su macOS, Dropstone legge le preferenze gestite dal dominio di preferenze ai.dropstone.managed. Distribuisci un .mobileconfig tramite MDM (Jamf, Kandji, FleetDM) e le impostazioni vengono applicate automaticamente.

Dropstone controlla questi percorsi:

  1. /Library/Managed Preferences/<utente>/ai.dropstone.managed.plist
  2. /Library/Managed Preferences/ai.dropstone.managed.plist

Le chiavi del plist corrispondono direttamente ai campi di dropstone.json. Le chiavi dei metadati MDM (PayloadUUID, PayloadType, ecc.) vengono rimosse automaticamente.

Creazione di un .mobileconfig

Utilizza il PayloadType ai.dropstone.managed. Le chiavi di configurazione di Dropstone vanno direttamente nel dizionario 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 UUID univoci con uuidgen. Personalizza le impostazioni in base ai requisiti della tua organizzazione.

Distribuzione tramite MDM

  • Jamf Pro: Computer > Profili di configurazione > Carica > assegna ai dispositivi target o ai gruppi smart
  • FleetDM: Aggiungi il .mobileconfig al tuo repository gitops sotto mdm.macos_settings.custom_settings ed esegui fleetctl apply

Verifica su un dispositivo

Fai doppio clic sul .mobileconfig per installarlo localmente per i test (viene visualizzato in Impostazioni di Sistema > Privacy e Sicurezza > Profili), quindi esegui:

dropstone debug config

Tutte le chiavi delle preferenze gestite appaiono nella configurazione risolta e non possono essere sovrascritte dalla configurazione utente o del progetto.


Schema

Lo schema principale della configurazione è definito in dropstone.io/config.json.

La configurazione a livello di sessione (tui.json) utilizza dropstone.io/tui.json.

Il tuo editor dovrebbe essere in grado di validare e completare automaticamente in base allo schema.


Configurazione di sessione

Utilizza un file dedicato tui.json (o tui.jsonc) per le impostazioni a livello di sessione: comportamento di scorrimento, cattura del mouse, rendering delle differenze e così via.

{
  "$schema": "https://dropstone.io/schema/tui.json",
  "scroll_speed": 3,
  "scroll_acceleration": {
    "enabled": true
  },
  "diff_style": "auto",
  "mouse": true
}

Le chiavi legacy theme, keybinds e quelle relative alla sessione in dropstone.json sono deprecate e vengono migrate automaticamente quando possibile.


Server

Puoi configurare le impostazioni del server per i comandi dropstone serve e dropstone web tramite l'opzione 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"]
  }
}

Opzioni disponibili:

  • port - Porta su cui ascoltare.
  • hostname - Hostname su cui ascoltare. Quando mdns è abilitato e non è impostato alcun hostname, il valore predefinito è 0.0.0.0.
  • mdns - Abilita il rilevamento dei servizi mDNS. Ciò consente ad altri dispositivi sulla rete di scoprire il tuo server Dropstone.
  • mdnsDomain - Nome di dominio personalizzato per il servizio mDNS. Il valore predefinito è dropstone.local. Utile per eseguire più istanze sulla stessa rete.
  • cors - Origini aggiuntive da consentire per CORS quando si utilizza il server HTTP da un client basato su browser. I valori devono essere origini complete (schema + host + porta opzionale), ad es. https://app.example.com.

Scopri di più sul server qui.


Shell

Puoi configurare la shell utilizzata per il terminale interattivo tramite l'opzione shell. Le shell compatibili vengono utilizzate anche per le chiamate agli strumenti dell'agente.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "shell": "pwsh"
}

Se non specificato, Dropstone rileva automaticamente e utilizza un valore predefinito sensato in base al tuo sistema operativo (ad es. pwsh o cmd.exe su Windows, /bin/zsh o /bin/bash su macOS/Linux). Puoi fornire un percorso assoluto o un nome breve.


Strumenti

Puoi gestire gli strumenti che un LLM può utilizzare tramite l'opzione tools.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "tools": {
    "write": false,
    "bash": false
  }
}

Scopri di più sugli strumenti qui.


Modello

Imposta il tuo modello predefinito con l'opzione model. Dropstone offre tre livelli:

LivelloID modello
Fastdropstone/dropstone-fast
Prodropstone/dropstone-pro
Heavydropstone/dropstone-heavy
{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro"
}

Fissa una profondità di ragionamento predefinita con variant:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "variant": "high"
}

I valori validi per variant sono low, medium, high, xhigh. Consulta Modelli per la ripartizione completa.

L'opzione small_model configura un modello separato per attività leggere come la generazione dei titoli. Per impostazione predefinita Dropstone sceglie un livello appropriato; puoi sovrascriverlo esplicitamente:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "small_model": "dropstone/dropstone-fast"
}

Agenti

Puoi configurare agenti specializzati per attività specifiche tramite l'opzione agent.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "agent": {
    "code-reviewer": {
      "description": "Rivede il codice per best practice e problemi potenziali",
      "model": "dropstone/dropstone-pro",
      "prompt": "Sei un revisore del codice. Concentrati su sicurezza, prestazioni e manutenibilità.",
      "tools": {
        // Disabilita gli strumenti di modifica dei file per l'agente di sola revisione
        "write": false,
        "edit": false,
      },
    },
  },
}

Puoi anche definire agenti utilizzando file markdown in ~/.config/dropstone/agents/ o .dropstone/agents/. Scopri di più qui.


Agente predefinito

Puoi impostare l'agente predefinito utilizzando l'opzione default_agent. Questa determina quale agente viene utilizzato quando nessuno è specificato esplicitamente.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "default_agent": "plan"
}

L'agente predefinito deve essere un agente primario (non un subagente). Può essere un agente integrato come "build" o "plan", oppure un agente personalizzato che hai definito. Se l'agente specificato non esiste o è un subagente, Dropstone ripiega su "build" con un avviso.

Questa impostazione si applica a tutte le interfacce: sessioni interattive, esecuzioni singole (dropstone run) e GitHub Action.


Comandi

Puoi configurare comandi personalizzati per attività ripetitive tramite l'opzione command.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "command": {
    "test": {
      "template": "Esegui l'intera suite di test con report di copertura e mostra eventuali errori.\nConcentrati sui test falliti e suggerisci correzioni.",
      "description": "Esegue i test con copertura",
      "agent": "build",
      "model": "dropstone/dropstone-fast",
    },
    "component": {
      "template": "Crea un nuovo componente React chiamato $ARGUMENTS con supporto TypeScript.\nIncludi tipizzazione corretta e struttura di base.",
      "description": "Crea un nuovo componente",
    },
  },
}

Puoi anche definire comandi utilizzando file markdown in ~/.config/dropstone/commands/ o .dropstone/commands/. Scopri di più qui.


Mappa dei tasti

Personalizza le scorciatoie da tastiera in tui.json con keymap.

{
  "$schema": "https://dropstone.io/schema/tui.json",
  "keymap": {
    "sections": {
      "global": {
        "command.palette.show": "ctrl+p"
      }
    }
  }
}

keymap viene unito con le impostazioni predefinite integrate, quindi devi configurare solo le scorciatoie che vuoi modificare.

Il campo più vecchio keybinds è deprecato e si applica solo quando keymap non è presente.

Scopri di più qui.


Snapshot

Dropstone utilizza snapshot per tracciare le modifiche ai file durante le operazioni dell'agente, consentendoti di annullare e ripristinare le modifiche all'interno di una sessione. Gli snapshot sono abilitati per impostazione predefinita.

Per repository di grandi dimensioni o progetti con molti sottomoduli, il sistema di snapshot può causare un'indicizzazione lenta e un utilizzo significativo del disco. Puoi disabilitare gli snapshot utilizzando l'opzione snapshot.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "snapshot": false
}

Nota che disabilitare gli snapshot significa che le modifiche apportate dall'agente non possono essere annullate tramite l'interfaccia utente.


Aggiornamento automatico

Dropstone scaricherà automaticamente eventuali nuovi aggiornamenti all'avvio. Puoi disabilitare questa funzione con l'opzione autoupdate.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "autoupdate": false
}

Se non vuoi gli aggiornamenti ma desideri essere avvisato quando è disponibile una nuova versione, imposta autoupdate su "notify". Nota che questo funziona solo se non è stato installato tramite un gestore di pacchetti come Homebrew.


Formattatori

Puoi abilitare e configurare i formattatori di codice tramite l'opzione formatter. Omettila per mantenere i formattatori disabilitati.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "formatter": true
}

Utilizza un oggetto per mantenere abilitati i formattatori integrati mentre configuri override o formattatori personalizzati.

{
  "$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"]
    }
  }
}

Scopri di più sui formattatori qui.


Server LSP

Puoi abilitare e configurare i server LSP tramite l'opzione lsp. Omettila per mantenere LSP disabilitato.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": true
}

Utilizza un oggetto per mantenere abilitati i server LSP integrati mentre configuri override o server LSP personalizzati.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "typescript": {
      "disabled": true
    }
  }
}

Scopri di più sui server LSP qui.


Permessi

Per impostazione predefinita, Dropstone consente tutte le operazioni senza richiedere un'approvazione esplicita. Puoi modificare questo comportamento utilizzando l'opzione permission.

Ad esempio, per garantire che gli strumenti edit e bash richiedano l'approvazione dell'utente:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "edit": "ask",
    "bash": "ask"
  }
}

Scopri di più sui permessi qui.


Compattazione

Puoi controllare il comportamento della compattazione del contesto tramite l'opzione compaction.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "compaction": {
    "auto": true,
    "prune": true,
    "reserved": 10000
  }
}
  • auto - Compatta automaticamente la sessione quando il contesto è pieno (predefinito: true).
  • prune - Rimuove i vecchi output degli strumenti per risparmiare token (predefinito: true).
  • reserved - Buffer di token per la compattazione. Lascia finestra sufficiente per evitare overflow durante la compattazione.

Watcher

Puoi configurare i pattern di ignoramento del watcher dei file tramite l'opzione watcher.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "watcher": {
    "ignore": ["node_modules/**", "dist/**", ".git/**"]
  }
}

I pattern seguono la sintassi glob. Utilizza questa opzione per escludere directory rumorose dal monitoraggio dei file.


Server MCP

Puoi configurare i server MCP che desideri utilizzare tramite l'opzione mcp.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "mcp": {}
}

Scopri di più qui.


Plugin

I Plugin estendono Dropstone con strumenti, hook e integrazioni personalizzati.

Inserisci i file dei plugin in .dropstone/plugins/ o ~/.config/dropstone/plugins/. Puoi anche caricare plugin da npm tramite l'opzione plugin.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "plugin": ["@my-org/custom-plugin", "./local-plugin.ts"]
}

Scopri di più qui.


Istruzioni

Puoi configurare le istruzioni per il modello che stai utilizzando tramite l'opzione instructions.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}

Questa opzione accetta un array di percorsi e pattern glob per i file di istruzioni. Scopri di più sulle regole qui.


Sperimentale

La chiave experimental contiene opzioni attualmente in fase di sviluppo attivo.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "experimental": {}
}

Instabile

Le opzioni sperimentali non sono stabili. Possono cambiare o essere rimosse senza preavviso.


Variabili

Puoi utilizzare la sostituzione delle variabili nei tuoi file di configurazione per fare riferimento a variabili d'ambiente e contenuti di file.


Variabili d'ambiente

Utilizza {env:NOME_VARIABILE} per sostituire le variabili d'ambiente:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "{env:DROPSTONE_MODEL}"
}

Se la variabile d'ambiente non è impostata, verrà sostituita con una stringa vuota.


File

Utilizza {file:percorso/al/file} per sostituire il contenuto di un file:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "instructions": ["./custom-instructions.md"]
}

I percorsi dei file possono essere:

  • Relativi alla directory del file di configurazione
  • Oppure percorsi assoluti che iniziano con / o ~

Questi sono utili per:

  • Includere file di istruzioni di grandi dimensioni senza ingombrare la configurazione.
  • Condividere frammenti di configurazione comuni tra più file di configurazione.
Ctrl+I