Configurazione
Utilizzo del file di configurazione JSON di Dropstone.
Puoi configurare Dropstone utilizzando un file di configurazione JSON.
Formato
Dropstone supporta sia i formati JSON che JSONC (JSON con commenti).
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"autoupdate": true,
"server": {
"port": 4096,
},
}
Posizioni
Puoi posizionare la tua configurazione in diverse posizioni e hanno un ordine di precedenza diverso.
Note:
I file di configurazione vengono uniti insieme, non sostituiti. Le impostazioni dalle seguenti posizioni di configurazione vengono combinate. Le configurazioni successive sovrascrivono quelle precedenti solo per le chiavi in conflitto. Le impostazioni non in conflitto da tutte le configurazioni vengono preservate.
Ad esempio, se la tua configurazione globale imposta autoupdate: true e la tua configurazione di progetto imposta model: "dropstone/dropstone-pro", la configurazione finale includerà entrambe le impostazioni.
Ordine di precedenza
Le fonti di configurazione vengono caricate in questo ordine (le fonti successive sovrascrivono quelle precedenti):
- Configurazione remota (da
.well-known/dropstone) - impostazioni predefinite organizzative - Configurazione globale (
~/.config/dropstone/dropstone.json) - preferenze utente - Configurazione personalizzata (variabile di ambiente
DROPSTONE_CONFIG) - override personalizzati - Configurazione di 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 macOS (
.mobileconfigtramite MDM) - priorità massima, non modificabili dall'utente
Questo significa che le configurazioni di progetto possono sovrascrivere i valori predefiniti globali, e le configurazioni globali possono sovrascrivere i valori predefiniti organizzativi remoti. 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 nel loro dominio. Dropstone la 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 base. Tutte le altre fonti di configurazione (globale, progetto) possono sovrascrivere questi valori predefiniti.
Ad esempio, se la tua organizzazione fornisce server MCP che sono 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
Posiziona la tua configurazione globale di Dropstone in ~/.config/dropstone/dropstone.json. Usa la configurazione globale per le preferenze a livello di utente come modelli e permessi.
Per le impostazioni a livello di sessione (keybind, scorrimento, cattura del mouse), usa ~/.config/dropstone/tui.json.
La configurazione globale sovrascrive i valori predefiniti organizzativi remoti.
Per progetto
Aggiungi dropstone.json nella radice del tuo progetto. La configurazione di 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.
Suggerimento:
Posiziona 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.
È anche sicuro da controllare in Git e utilizza lo stesso schema di quello globale.
Percorso personalizzato
Specifica un percorso di file di configurazione personalizzato utilizzando la variabile di ambiente DROPSTONE_CONFIG.
export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"
La configurazione personalizzata viene caricata tra le configurazioni globali e di progetto nell'ordine di precedenza.
Impostazioni gestite
Le organizzazioni possono applicare una configurazione 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 dal 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 macOS
Su macOS, Dropstone legge le preferenze gestite dal dominio di preferenza ai.dropstone.managed. Distribuisci un .mobileconfig tramite MDM (Jamf, Kandji, FleetDM) e le impostazioni vengono applicate automaticamente.
Dropstone controlla questi percorsi:
/Library/Managed Preferences/<user>/ai.dropstone.managed.plist/Library/Managed Preferences/ai.dropstone.managed.plist
Le chiavi plist si mappano direttamente ai campi dropstone.json. Le chiavi di metadati MDM (PayloadUUID, PayloadType, ecc.) vengono rimosse automaticamente.
Creazione di un .mobileconfig
Usa 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 per corrispondere ai requisiti della tua organizzazione.
Distribuzione tramite MDM
- Jamf Pro: Computers > Configuration Profiles > Upload > assegna ai dispositivi target o ai gruppi intelligenti
- FleetDM: Aggiungi il
.mobileconfigal tuo repository gitops sottomdm.macos_settings.custom_settingsed eseguifleetctl apply
Verifica su un dispositivo
Fai doppio clic su .mobileconfig per installare localmente per il test (viene visualizzato in Impostazioni di sistema > Privacy e sicurezza > Profili), quindi esegui:
dropstone debug config
Tutte le chiavi di preferenza gestite appaiono nella configurazione risolta e non possono essere sovrascrittte dalla configurazione utente o di progetto.
Schema
Lo schema di configurazione principale è 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 convalidare e completare automaticamente in base allo schema.
Configurazione della sessione
Usa un file dedicato tui.json (o tui.jsonc) per le impostazioni a livello di sessione: comportamento dello scorrimento, cattura del mouse, rendering diff, 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 relative alla sessione in dropstone.json sono deprecate e 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- Nome host su cui ascoltare. Quandomdnsè abilitato e nessun hostname è impostato, il valore predefinito è0.0.0.0.mdns- Abilita il rilevamento del servizio mDNS. Questo 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 utilizzando l'opzione shell. Le shell compatibili vengono utilizzate anche per le chiamate degli strumenti dell'agente.
{
"$schema": "https://dropstone.io/schema/config.json",
"shell": "pwsh"
}
Se non specificato, Dropstone scoprirà e utilizzerà automaticamente 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 fornisce 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 variant validi sono low, medium, high, xhigh. Vedi Modelli per il dettaglio completo.
L'opzione small_model configura un modello separato per attività leggere come la generazione di 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": "Esamina il codice per le migliori pratiche e i potenziali problemi",
"model": "dropstone/dropstone-pro",
"prompt": "Sei un revisore di codice. Concentrati sulla sicurezza, le prestazioni e la 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. Questo determina quale agente viene utilizzato quando nessuno è esplicitamente specificato.
{
"$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", o un agente personalizzato che hai definito. Se l'agente specificato non esiste o è un subagente, Dropstone tornerà a "build" con un avviso.
Questa impostazione si applica a tutte le interfacce: sessioni interattive, esecuzioni una tantum (dropstone run), e l'azione GitHub.
Comandi
Puoi configurare comandi personalizzati per attività ripetitive tramite l'opzione command.
{
"$schema": "https://dropstone.io/schema/config.json",
"command": {
"test": {
"template": "Esegui la suite di test completa con rapporto di copertura e mostra eventuali errori.\nConcentrati sui test falliti e suggerisci correzioni.",
"description": "Esegui test con copertura",
"agent": "build",
"model": "dropstone/dropstone-fast",
},
"component": {
"template": "Crea un nuovo componente React denominato $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.
Keymap
Personalizza i tasti di scelta rapida in tui.json con keymap.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"global": {
"command.palette.show": "ctrl+p"
}
}
}
}
keymap viene unito con i valori predefiniti integrati, quindi devi configurare solo i tasti di scelta rapida che desideri modificare.
Il campo keybinds più vecchio è deprecato e si applica solo quando keymap non è presente.
Snapshot
Dropstone utilizza snapshot per tracciare i cambiamenti dei file durante le operazioni dell'agente, consentendoti di annullare e ripristinare i cambiamenti all'interno di una sessione. Gli snapshot sono abilitati per impostazione predefinita.
Per repository di grandi dimensioni o progetti con molti submoduli, il sistema di snapshot può causare un'indicizzazione lenta e un utilizzo significativo dello spazio su 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 i cambiamenti apportati dall'agente non possono essere ripristinati 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 desideri aggiornamenti ma vuoi essere notificato quando è disponibile una nuova versione, imposta autoupdate su "notify".
Nota che questo funziona solo se non è stato installato utilizzando 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
}
Usa un oggetto per mantenere i formattatori integrati abilitati 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
}
Usa un oggetto per mantenere i server LSP integrati abilitati 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 assicurarti 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- Rimuovi i vecchi output degli strumenti per risparmiare token (predefinito:true).reserved- Buffer di token per la compattazione. Lascia una finestra sufficiente per evitare l'overflow durante la compattazione
Watcher
Puoi configurare i pattern di ignoranza del file watcher tramite l'opzione watcher.
{
"$schema": "https://dropstone.io/schema/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
I pattern seguono la sintassi glob. Usalo 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 personalizzati, hook e integrazioni.
Posiziona 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"]
}
Questo 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 che sono 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 di variabili nei tuoi file di configurazione per fare riferimento a variabili di ambiente e contenuti di file.
Variabili di ambiente
Usa {env:VARIABLE_NAME} per sostituire le variabili di ambiente:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "{env:DROPSTONE_MODEL}"
}
Se la variabile di ambiente non è impostata, verrà sostituita con una stringa vuota.
File
Usa {file:path/to/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
- O percorsi assoluti che iniziano con
/o~
Questi sono utili per:
- Includere file di istruzioni di grandi dimensioni senza ingombrare la tua configurazione.
- Condividere snippet di configurazione comuni tra più file di configurazione.