Konfiguration
Verwendung der Dropstone-JSON-Konfiguration.
Sie können Dropstone mithilfe einer JSON-Konfigurationsdatei konfigurieren.
Format
Dropstone unterstützt sowohl JSON als auch JSONC (JSON mit Kommentaren).
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"autoupdate": true,
"server": {
"port": 4096,
},
}
Speicherorte
Sie können Ihre Konfiguration an verschiedenen Orten ablegen, die eine unterschiedliche Reihenfolge der Priorität haben.
Note
Konfigurationsdateien werden zusammengeführt, nicht ersetzt. Einstellungen aus den folgenden Konfigurationsorten werden kombiniert. Spätere Konfigurationen überschreiben frühere nur bei widersprüchlichen Schlüsseln. Nicht widersprüchliche Einstellungen aus allen Konfigurationen bleiben erhalten.
Wenn Ihre globale Konfiguration beispielsweise autoupdate: true und Ihre Projektkonfiguration model: "dropstone/dropstone-pro" festlegt, enthält die endgültige Konfiguration beide Einstellungen.
Prioritätsreihenfolge
Konfigurationsquellen werden in dieser Reihenfolge geladen (spätere Quellen überschreiben frühere):
- Remote-Konfiguration (von
.well-known/dropstone) – organisatorische Standardwerte - Globale Konfiguration (
~/.config/dropstone/dropstone.json) – Benutzereinstellungen - Benutzerdefinierte Konfiguration (
DROPSTONE_CONFIG-Umgebungsvariable) – benutzerdefinierte Überschreibungen - Projektkonfiguration (
dropstone.jsonim Projekt) – projektspezifische Einstellungen .dropstone-Verzeichnisse – Agents, Befehle, Plugins- Verwaltete Konfigurationsdateien (
/Library/Application Support/dropstone/auf macOS) – administratorgesteuert - Verwaltete macOS-Einstellungen (
.mobileconfigüber MDM) – höchste Priorität, nicht vom Benutzer überschreibbar
Das bedeutet, dass Projektkonfigurationen globale Standardwerte überschreiben können und globale Konfigurationen entfernte organisatorische Standardwerte überschreiben können. Verwaltete Einstellungen überschreiben alles.
Note
Die Verzeichnisse .dropstone und ~/.config/dropstone verwenden Pluralnamen für Unterverzeichnisse: agents/, commands/, modes/, plugins/, skills/, tools/. Singularnamen (z. B. agent/) werden aus Gründen der Abwärtskompatibilität ebenfalls unterstützt.
Remote
Organisationen können über einen .well-known/dropstone-Endpunkt auf ihrer Domain Standardkonfigurationen bereitstellen. Dropstone ruft diese beim ersten Anmelden automatisch für Benutzer ab, deren Konto bei dieser Organisation registriert ist.
Die Remote-Konfiguration wird zuerst geladen und dient als Basisschicht. Alle anderen Konfigurationsquellen (global, Projekt) können diese Standardwerte überschreiben.
Wenn Ihre Organisation beispielsweise MCP-Server bereitstellt, die standardmäßig deaktiviert sind:
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
Sie können bestimmte Server in Ihrer lokalen Konfiguration aktivieren:
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
Global
Platzieren Sie Ihre globale Dropstone-Konfiguration in ~/.config/dropstone/dropstone.json. Verwenden Sie die globale Konfiguration für benutzerweite Einstellungen wie Modelle und Berechtigungen.
Für Sitzungseinstellungen (Tastenkürzel, Scrollen, Mauserfassung) verwenden Sie ~/.config/dropstone/tui.json.
Die globale Konfiguration überschreibt entfernte organisatorische Standardwerte.
Pro Projekt
Fügen Sie dropstone.json im Stammverzeichnis Ihres Projekts hinzu. Die Projektkonfiguration hat die höchste Priorität unter den Standardkonfigurationsdateien – sie überschreibt sowohl globale als auch Remote-Konfigurationen.
Für projektspezifische Sitzungseinstellungen fügen Sie tui.json daneben hinzu.
Tip
Platzieren Sie die projektspezifische Konfiguration im Stammverzeichnis Ihres Projekts.
Beim Start sucht Dropstone im aktuellen Verzeichnis nach einer Konfigurationsdatei oder navigiert nach oben zum nächsten Git-Verzeichnis.
Diese Datei kann bedenkenlos in Git eingecheckt werden und verwendet dasselbe Schema wie die globale Konfiguration.
Benutzerdefinierter Pfad
Geben Sie einen benutzerdefinierten Konfigurationsdateipfad mithilfe der Umgebungsvariable DROPSTONE_CONFIG an.
export DROPSTONE_CONFIG=/pfad/zu/meiner/benutzerdefinierten-konfiguration.json
dropstone run "Hallo Welt"
Die benutzerdefinierte Konfiguration wird in der Prioritätsreihenfolge zwischen globaler und Projektkonfiguration geladen.
Verwaltete Einstellungen
Organisationen können Konfigurationen erzwingen, die Benutzer nicht überschreiben können. Verwaltete Einstellungen werden auf der höchsten Prioritätsebene geladen.
Dateibasiert
Legen Sie eine dropstone.json- oder dropstone.jsonc-Datei im systemverwalteten Konfigurationsverzeichnis ab:
| Plattform | Pfad |
|---|---|
| macOS | /Library/Application Support/dropstone/ |
| Linux | /etc/dropstone/ |
| Windows | %ProgramData%\dropstone |
Diese Verzeichnisse erfordern Administrator-/Root-Zugriff zum Schreiben, sodass Benutzer sie nicht ändern können.
Verwaltete macOS-Einstellungen
Auf macOS liest Dropstone verwaltete Einstellungen aus der Präferenzdomäne ai.dropstone.managed. Stellen Sie eine .mobileconfig über MDM (Jamf, Kandji, FleetDM) bereit, und die Einstellungen werden automatisch erzwungen.
Dropstone prüft diese Pfade:
/Library/Managed Preferences/<user>/ai.dropstone.managed.plist/Library/Managed Preferences/ai.dropstone.managed.plist
Die Plist-Schlüssel werden direkt auf dropstone.json-Felder abgebildet. MDM-Metadatenschlüssel (PayloadUUID, PayloadType usw.) werden automatisch entfernt.
Erstellen einer .mobileconfig
Verwenden Sie den ai.dropstone.managed-PayloadType. Die Dropstone-Konfigurationsschlüssel werden direkt in das Payload-Wörterbuch eingefügt:
<?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>
Generieren Sie eindeutige UUIDs mit uuidgen. Passen Sie die Einstellungen an die Anforderungen Ihrer Organisation an.
Bereitstellung über MDM
- Jamf Pro: Computer > Konfigurationsprofile > Hochladen > Zielgeräte oder Smart Groups zuweisen
- FleetDM: Fügen Sie die
.mobileconfigzu Ihrem GitOps-Repository untermdm.macos_settings.custom_settingshinzu und führen Siefleetctl applyaus
Überprüfung auf einem Gerät
Doppelklicken Sie die .mobileconfig, um sie lokal zu Testzwecken zu installieren (angezeigt unter Systemeinstellungen > Datenschutz & Sicherheit > Profile), und führen Sie dann Folgendes aus:
dropstone debug config
Alle verwalteten Präferenzschlüssel erscheinen in der aufgelösten Konfiguration und können nicht durch Benutzer- oder Projektkonfiguration überschrieben werden.
Schema
Das Hauptkonfigurationsschema ist in dropstone.io/config.json definiert.
Die Sitzungskonfiguration (tui.json) verwendet dropstone.io/tui.json.
Ihr Editor sollte in der Lage sein, basierend auf dem Schema zu validieren und automatisch zu vervollständigen.
Sitzungskonfiguration
Verwenden Sie eine dedizierte tui.json- (oder tui.jsonc-)Datei für Sitzungseinstellungen: Scrollverhalten, Mauserfassung, Diff-Darstellung usw.
{
"$schema": "https://dropstone.io/schema/tui.json",
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto",
"mouse": true
}
Veraltete theme-, keybinds- und sitzungsbezogene Schlüssel in dropstone.json sind veraltet und werden nach Möglichkeit automatisch migriert.
Server
Sie können Servereinstellungen für die Befehle dropstone serve und dropstone web über die Option server konfigurieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "myproject.local",
"cors": ["http://localhost:5173"]
}
}
Verfügbare Optionen:
port– Port, auf dem gelauscht werden soll.hostname– Hostname, auf dem gelauscht werden soll. Wennmdnsaktiviert ist und kein Hostname festgelegt wurde, wird standardmäßig0.0.0.0verwendet.mdns– Aktiviert die mDNS-Dienstermittlung. Dadurch können andere Geräte im Netzwerk Ihren Dropstone-Server entdecken.mdnsDomain– Benutzerdefinierter Domänenname für den mDNS-Dienst. Standardmäßigdropstone.local. Nützlich für die Ausführung mehrerer Instanzen im selben Netzwerk.cors– Zusätzliche Ursprünge, die für CORS bei Verwendung des HTTP-Servers von einem browserbasierten Client zugelassen werden. Werte müssen vollständige Ursprünge sein (Schema + Host + optionaler Port), z. B.https://app.example.com.
Erfahren Sie hier mehr über den Server.
Shell
Sie können die für das interaktive Terminal verwendete Shell über die Option shell konfigurieren. Kompatible Shells werden auch für Agent-Tool-Aufrufe verwendet.
{
"$schema": "https://dropstone.io/schema/config.json",
"shell": "pwsh"
}
Wenn nicht angegeben, erkennt Dropstone automatisch einen sinnvollen Standardwert basierend auf Ihrem Betriebssystem (z. B. pwsh oder cmd.exe unter Windows, /bin/zsh oder /bin/bash unter macOS/Linux). Sie können einen absoluten Pfad oder einen Kurznamen angeben.
Tools
Sie können die Tools verwalten, die ein LLM verwenden kann, über die Option tools.
{
"$schema": "https://dropstone.io/schema/config.json",
"tools": {
"write": false,
"bash": false
}
}
Erfahren Sie hier mehr über Tools.
Modell
Legen Sie Ihr Standardmodell mit der Option model fest. Dropstone bietet drei Stufen:
| Stufe | Modell-ID |
|---|---|
| Fast | dropstone/dropstone-fast |
| Pro | dropstone/dropstone-pro |
| Heavy | dropstone/dropstone-heavy |
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro"
}
Legen Sie eine Standard-Denkstufe mit variant fest:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"variant": "high"
}
Gültige variant-Werte sind low, medium, high, xhigh. Die vollständige Aufschlüsselung finden Sie unter Modelle.
Die Option small_model konfiguriert ein separates Modell für leichte Aufgaben wie die Titelerzeugung. Standardmäßig wählt Dropstone eine geeignete Stufe aus; Sie können sie explizit überschreiben:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"small_model": "dropstone/dropstone-fast"
}
Agents
Sie können spezialisierte Agents für bestimmte Aufgaben über die Option agent konfigurieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"agent": {
"code-reviewer": {
"description": "Überprüft Code auf Best Practices und potenzielle Probleme",
"model": "dropstone/dropstone-pro",
"prompt": "Sie sind ein Code-Reviewer. Konzentrieren Sie sich auf Sicherheit, Leistung und Wartbarkeit.",
"tools": {
// Dateibearbeitungswerkzeuge für reine Review-Agents deaktivieren
"write": false,
"edit": false,
},
},
},
}
Sie können Agents auch mithilfe von Markdown-Dateien in ~/.config/dropstone/agents/ oder .dropstone/agents/ definieren. Erfahren Sie hier mehr.
Standard-Agent
Sie können den Standard-Agent mithilfe der Option default_agent festlegen. Diese bestimmt, welcher Agent verwendet wird, wenn keiner explizit angegeben ist.
{
"$schema": "https://dropstone.io/schema/config.json",
"default_agent": "plan"
}
Der Standard-Agent muss ein primärer Agent sein (kein Subagent). Dies kann ein integrierter Agent wie "build" oder "plan" oder ein von Ihnen definierter benutzerdefinierter Agent sein. Wenn der angegebene Agent nicht existiert oder ein Subagent ist, fällt Dropstone mit einer Warnung auf "build" zurück.
Diese Einstellung gilt für alle Schnittstellen: interaktive Sitzungen, Einmalausführungen (dropstone run) und die GitHub Action.
Befehle
Sie können benutzerdefinierte Befehle für wiederkehrende Aufgaben über die Option command konfigurieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"command": {
"test": {
"template": "Führen Sie die vollständige Testsuite mit Coverage-Bericht aus und zeigen Sie alle Fehler an.\nKonzentrieren Sie sich auf die fehlgeschlagenen Tests und schlagen Sie Korrekturen vor.",
"description": "Tests mit Coverage ausführen",
"agent": "build",
"model": "dropstone/dropstone-fast",
},
"component": {
"template": "Erstellen Sie eine neue React-Komponente mit dem Namen $ARGUMENTS mit TypeScript-Unterstützung.\nFügen Sie eine ordnungsgemäße Typisierung und Grundstruktur hinzu.",
"description": "Neue Komponente erstellen",
},
},
}
Sie können Befehle auch mithilfe von Markdown-Dateien in ~/.config/dropstone/commands/ oder .dropstone/commands/ definieren. Erfahren Sie hier mehr.
Tastaturbelegung
Passen Sie Tastaturkürzel in tui.json mit keymap an.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"global": {
"command.palette.show": "ctrl+p"
}
}
}
}
keymap wird mit den integrierten Standardwerten zusammengeführt, sodass Sie nur die Kürzel konfigurieren müssen, die Sie ändern möchten.
Das ältere Feld keybinds ist veraltet und wird nur angewendet, wenn keymap nicht vorhanden ist.
Snapshot
Dropstone verwendet Snapshots, um Dateiänderungen während Agent-Operationen zu verfolgen, sodass Sie Änderungen innerhalb einer Sitzung rückgängig machen und zurücksetzen können. Snapshots sind standardmäßig aktiviert.
Bei großen Repositorys oder Projekten mit vielen Submodulen kann das Snapshot-System zu langsamer Indizierung und erheblichem Speicherplatzverbrauch führen. Sie können Snapshots mit der Option snapshot deaktivieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"snapshot": false
}
Beachten Sie, dass das Deaktivieren von Snapshots bedeutet, dass Änderungen des Agents nicht über die Benutzeroberfläche zurückgerollt werden können.
Automatische Aktualisierung
Dropstone lädt beim Start automatisch alle neuen Updates herunter. Sie können dies mit der Option autoupdate deaktivieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"autoupdate": false
}
Wenn Sie keine Updates wünschen, aber benachrichtigt werden möchten, wenn eine neue Version verfügbar ist, setzen Sie autoupdate auf "notify".
Beachten Sie, dass dies nur funktioniert, wenn Dropstone nicht über einen Paketmanager wie Homebrew installiert wurde.
Formatierer
Sie können Code-Formatierer über die Option formatter aktivieren und konfigurieren. Lassen Sie sie weg, um Formatierer deaktiviert zu lassen.
{
"$schema": "https://dropstone.io/schema/config.json",
"formatter": true
}
Verwenden Sie ein Objekt, um integrierte Formatierer aktiviert zu lassen und gleichzeitig Überschreibungen oder benutzerdefinierte Formatierer zu konfigurieren.
{
"$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"]
}
}
}
Erfahren Sie hier mehr über Formatierer.
LSP-Server
Sie können LSP-Server über die Option lsp aktivieren und konfigurieren. Lassen Sie sie weg, um LSP deaktiviert zu lassen.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Verwenden Sie ein Objekt, um integrierte LSP-Server aktiviert zu lassen und gleichzeitig Überschreibungen oder benutzerdefinierte LSP-Server zu konfigurieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
Erfahren Sie hier mehr über LSP-Server.
Berechtigungen
Standardmäßig erlaubt Dropstone alle Operationen ohne ausdrückliche Genehmigung. Sie können dies mit der Option permission ändern.
Um beispielsweise sicherzustellen, dass die Tools edit und bash eine Benutzergenehmigung erfordern:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
Erfahren Sie hier mehr über Berechtigungen.
Komprimierung
Sie können das Verhalten der Kontextkomprimierung über die Option compaction steuern.
{
"$schema": "https://dropstone.io/schema/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
auto– Komprimiert die Sitzung automatisch, wenn der Kontext voll ist (Standard:true).prune– Entfernt alte Tool-Ausgaben, um Tokens zu sparen (Standard:true).reserved– Token-Puffer für die Komprimierung. Lässt genügend Fenster, um einen Überlauf während der Komprimierung zu vermeiden.
Watcher
Sie können Ignoriermuster für den Datei-Watcher über die Option watcher konfigurieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
Muster folgen der Glob-Syntax. Verwenden Sie dies, um laute Verzeichnisse von der Dateiüberwachung auszuschließen.
MCP-Server
Sie können MCP-Server, die Sie verwenden möchten, über die Option mcp konfigurieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"mcp": {}
}
Plugins
Plugins erweitern Dropstone um benutzerdefinierte Tools, Hooks und Integrationen.
Platzieren Sie Plugin-Dateien in .dropstone/plugins/ oder ~/.config/dropstone/plugins/. Sie können Plugins auch über die Option plugin aus npm laden.
{
"$schema": "https://dropstone.io/schema/config.json",
"plugin": ["@my-org/custom-plugin", "./local-plugin.ts"]
}
Anweisungen
Sie können die Anweisungen für das von Ihnen verwendete Modell über die Option instructions konfigurieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
Dies akzeptiert ein Array von Pfaden und Glob-Mustern zu Anweisungsdateien. Erfahren Sie hier mehr über Regeln.
Experimentell
Der Schlüssel experimental enthält Optionen, die sich in aktiver Entwicklung befinden.
{
"$schema": "https://dropstone.io/schema/config.json",
"experimental": {}
}
Instabil
Experimentelle Optionen sind nicht stabil. Sie können ohne Vorankündigung geändert oder entfernt werden.
Variablen
Sie können in Ihren Konfigurationsdateien Variablenersetzung verwenden, um auf Umgebungsvariablen und Dateiinhalte zu verweisen.
Umgebungsvariablen
Verwenden Sie {env:VARIABLE_NAME}, um Umgebungsvariablen zu ersetzen:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "{env:DROPSTONE_MODEL}"
}
Wenn die Umgebungsvariable nicht festgelegt ist, wird sie durch eine leere Zeichenfolge ersetzt.
Dateien
Verwenden Sie {file:pfad/zur/datei}, um den Inhalt einer Datei zu ersetzen:
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["./custom-instructions.md"]
}
Dateipfade können sein:
- Relativ zum Verzeichnis der Konfigurationsdatei
- Oder absolute Pfade, die mit
/oder~beginnen
Diese sind nützlich für:
- Das Einbinden großer Anweisungsdateien, ohne Ihre Konfiguration zu überladen.
- Das Teilen gemeinsamer Konfigurationsausschnitte über mehrere Konfigurationsdateien hinweg.