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):
- Configurazione remota (da
.well-known/dropstone) - impostazioni predefinite dell'organizzazione - Configurazione globale (
~/.config/dropstone/dropstone.json) - preferenze utente - Configurazione personalizzata (variabile d'ambiente
DROPSTONE_CONFIG) - override personalizzati - Configurazione del progetto (
dropstone.jsonnel progetto) - impostazioni specifiche del progetto - Directory
.dropstone- agenti, comandi, plugin - File di configurazione gestiti (
/Library/Application Support/dropstone/su macOS) - controllati dall'amministratore - Preferenze gestite di macOS (
.mobileconfigtramite 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:
| Piattaforma | Percorso |
|---|---|
| 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:
/Library/Managed Preferences/<utente>/ai.dropstone.managed.plist/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
.mobileconfigal tuo repository gitops sottomdm.macos_settings.custom_settingsed eseguifleetctl 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. Quandomdnsè 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.
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:
| Livello | ID modello |
|---|---|
| Fast | dropstone/dropstone-fast |
| Pro | dropstone/dropstone-pro |
| Heavy | dropstone/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.
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": {}
}
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"]
}
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.