Konfiguration
Verwendung der Dropstone JSON-Konfiguration.
Sie können Dropstone mit einer JSON-Konfigurationsdatei konfigurieren.
Format
Dropstone unterstützt sowohl JSON als auch JSONC (JSON mit Kommentaren) Formate.
{
"$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 platzieren, und diese haben eine unterschiedliche Prioritätsreihenfolge.
Note:
Konfigurationsdateien werden zusammengeführt, nicht ersetzt. Einstellungen aus den folgenden Konfigurationsorten werden kombiniert. Spätere Konfigurationen überschreiben frühere nur bei konfliktierenden Schlüsseln. Nicht konfligierende Einstellungen aus allen Konfigurationen bleiben erhalten.
Wenn beispielsweise Ihre globale Konfiguration autoupdate: true setzt und Ihre Projektkonfiguration model: "dropstone/dropstone-pro" setzt, 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) - Organisationsstandardwerte - Globale Konfiguration (
~/.config/dropstone/dropstone.json) - Benutzereinstellungen - Benutzerdefinierte Konfiguration (
DROPSTONE_CONFIGUmgebungsvariable) - benutzerdefinierte Überschreibungen - Projektkonfiguration (
dropstone.jsonim Projekt) - projektspezifische Einstellungen .dropstoneVerzeichnisse - Agenten, Befehle, Plugins- Verwaltete Konfigurationsdateien (
/Library/Application Support/dropstone/auf macOS) - von Admin kontrolliert - macOS verwaltete Einstellungen (
.mobileconfigüber MDM) - höchste Priorität, nicht vom Benutzer überschreibbar
Dies bedeutet, dass Projektkonfigurationen globale Standardwerte überschreiben können, und globale Konfigurationen können Remote-Organisationsstandardwerte überschreiben. 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 auch aus Gründen der Rückwärtskompatibilität unterstützt.
Remote
Organisationen können Standardkonfiguration über einen .well-known/dropstone Endpunkt in ihrer Domäne bereitstellen. Dropstone ruft dies automatisch beim ersten Anmelden für Benutzer ab, deren Konto bei dieser Organisation registriert ist.
Remote-Konfiguration wird zuerst geladen und dient als Basisebene. 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 globale Konfiguration für benutzerweite Einstellungen wie Modelle und Berechtigungen.
Für Sitzungsebenen-Einstellungen (Tastenkombinationen, Scrollen, Mauserfassung) verwenden Sie ~/.config/dropstone/tui.json.
Globale Konfiguration überschreibt Remote-Organisationsstandardwerte.
Pro Projekt
Fügen Sie dropstone.json in Ihrem Projektstammverzeichnis hinzu. Projektkonfiguration hat die höchste Priorität unter Standard-Konfigurationsdateien - sie überschreibt sowohl globale als auch Remote-Konfigurationen.
Für projektspezifische Sitzungseinstellungen fügen Sie tui.json daneben hinzu.
Tipp:
Platzieren Sie projektkonfigurationsspezifische Einstellungen im Stammverzeichnis Ihres Projekts.
Wenn Dropstone startet, sucht es nach einer Konfigurationsdatei im aktuellen Verzeichnis oder durchsucht bis zum nächsten Git-Verzeichnis.
Dies ist auch sicher, um in Git eingecheckt zu werden, und verwendet das gleiche Schema wie die globale.
Benutzerdefinierter Pfad
Geben Sie einen benutzerdefinierten Konfigurationsdateipfad mit der Umgebungsvariable DROPSTONE_CONFIG an.
export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"
Benutzerdefinierte Konfiguration wird zwischen globaler und Projektkonfiguration in der Prioritätsreihenfolge geladen.
Verwaltete Einstellungen
Organisationen können Konfiguration 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 in das vom System verwaltete Konfigurationsverzeichnis:
| Plattform | Pfad |
|---|---|
| macOS | /Library/Application Support/dropstone/ |
| Linux | /etc/dropstone/ |
| Windows | %ProgramData%\dropstone |
Diese Verzeichnisse erfordern Admin-/Root-Zugriff zum Schreiben, sodass Benutzer sie nicht ändern können.
macOS verwaltete Einstellungen
Auf macOS liest Dropstone verwaltete Einstellungen aus der Einstellungsdomä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 gehen direkt in das Payload-Dict:
<?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: Computers > Configuration Profiles > Upload > auf Zielgeräte oder intelligente Gruppen anwenden
- 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 auf die .mobileconfig, um sie lokal zum Testen zu installieren (wird in Systemeinstellungen > Datenschutz & Sicherheit > Profile angezeigt), und führen Sie dann aus:
dropstone debug config
Alle verwalteten Einstellungsschlüssel werden in der aufgelösten Konfiguration angezeigt und können nicht durch Benutzer- oder Projektkonfiguration überschrieben werden.
Schema
Das Hauptkonfigurationsschema ist in dropstone.io/config.json definiert.
Sitzungsebenen-Konfiguration (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 Sitzungsebenen-Einstellungen: Scroll-Verhalten, Mauserfassung, Diff-Rendering 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 bei Bedarf automatisch migriert.
Server
Sie können Server-Einstellungen 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 zum Abhören.hostname- Hostname zum Abhören. Wennmdnsaktiviert ist und kein Hostname gesetzt ist, wird standardmäßig0.0.0.0verwendet.mdns- Aktivieren Sie mDNS-Diensterkennung. Dies ermöglicht anderen Geräten im Netzwerk, Ihren Dropstone-Server zu entdecken.mdnsDomain- Benutzerdefinierter Domänenname für mDNS-Dienst. Standardmäßigdropstone.local. Nützlich für die Ausführung mehrerer Instanzen im gleichen Netzwerk.cors- Zusätzliche Ursprünge, die für CORS zulässig sind, wenn der HTTP-Server von einem Browser-basierten Client verwendet wird. Werte müssen vollständige Ursprünge sein (Schema + Host + optionaler Port), z. B.https://app.example.com.
Erfahren Sie mehr über den Server hier.
Shell
Sie können die Shell für das interaktive Terminal mit der Option shell konfigurieren. Kompatible Shells werden auch für Agent-Tool-Aufrufe verwendet.
{
"$schema": "https://dropstone.io/schema/config.json",
"shell": "pwsh"
}
Falls nicht angegeben, erkennt Dropstone automatisch und verwendet einen sinnvollen Standard 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 mehr über Tools hier.
Modell
Legen Sie Ihr Standardmodell mit der Option model fest. Dropstone wird mit drei Ebenen ausgeliefert:
| Ebene | 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"
}
Fixieren Sie eine Standard-Reasoning-Tiefe mit variant:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"variant": "high"
}
Gültige variant Werte sind low, medium, high, xhigh. Siehe Modelle für die vollständige Aufschlüsselung.
Die Option small_model konfiguriert ein separates Modell für leichte Aufgaben wie Titelerzeugung. Standardmäßig wählt Dropstone eine angemessene Ebene; Sie können sie explizit überschreiben:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"small_model": "dropstone/dropstone-fast"
}
Agenten
Sie können spezialisierte Agenten für bestimmte Aufgaben über die Option agent konfigurieren.
{
"$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,
},
},
},
}
Sie können auch Agenten mit Markdown-Dateien in ~/.config/dropstone/agents/ oder .dropstone/agents/ definieren. Erfahren Sie mehr hier.
Standard-Agent
Sie können den Standard-Agent mit der Option default_agent festlegen. Dies 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" sein, oder ein benutzerdefinierter Agent, den Sie definiert haben. Wenn der angegebene Agent nicht existiert oder ein Subagent ist, wird Dropstone mit einer Warnung auf "build" zurückfallen.
Diese Einstellung gilt für alle Schnittstellen: interaktive Sitzungen, One-Shot-Läufe (dropstone run) und die GitHub Action.
Befehle
Sie können benutzerdefinierte Befehle für wiederholte Aufgaben über die Option command konfigurieren.
{
"$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",
},
},
}
Sie können auch Befehle mit Markdown-Dateien in ~/.config/dropstone/commands/ oder .dropstone/commands/ definieren. Erfahren Sie mehr hier.
Tastaturzuordnung
Passen Sie Tastenkombinationen in tui.json mit keymap an.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"global": {
"command.palette.show": "ctrl+p"
}
}
}
}
keymap wird mit integrierten Standardwerten zusammengeführt, sodass Sie nur die Tastenkombinationen 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, was es Ihnen ermöglicht, Änderungen innerhalb einer Sitzung rückgängig zu machen und zurückzusetzen. Snapshots sind standardmäßig aktiviert.
Bei großen Repositories oder Projekten mit vielen Submodulen kann das Snapshot-System zu langsamer Indizierung und erheblicher Festplattennutzung 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 vom Agent vorgenommene Änderungen nicht über die Benutzeroberfläche zurückgerollt werden können.
Automatische Aktualisierung
Dropstone lädt beim Start automatisch neue Updates herunter. Sie können dies mit der Option autoupdate deaktivieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"autoupdate": false
}
Wenn Sie keine Updates möchten, aber benachrichtigt werden möchten, wenn eine neue Version verfügbar ist, setzen Sie autoupdate auf "notify".
Beachten Sie, dass dies nur funktioniert, wenn es nicht mit einem 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 halten.
{
"$schema": "https://dropstone.io/schema/config.json",
"formatter": true
}
Verwenden Sie ein Objekt, um integrierte Formatierer aktiviert zu halten, während Sie Überschreibungen oder benutzerdefinierte Formatierer 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 mehr über Formatierer hier.
LSP-Server
Sie können LSP-Server über die Option lsp aktivieren und konfigurieren. Lassen Sie sie weg, um LSP deaktiviert zu halten.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Verwenden Sie ein Objekt, um integrierte Server aktiviert zu halten, während Sie Überschreibungen oder benutzerdefinierte LSP-Server konfigurieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
Erfahren Sie mehr über LSP-Server hier.
Berechtigungen
Standardmäßig erlaubt dropstone alle Operationen ohne explizite Genehmigung. Sie können dies mit der Option permission ändern.
Um beispielsweise sicherzustellen, dass die Tools edit und bash Benutzerbestätigung erfordern:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
Erfahren Sie mehr über Berechtigungen hier.
Komprimierung
Sie können das Verhalten der Kontext-Komprimierung über die Option compaction steuern.
{
"$schema": "https://dropstone.io/schema/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
auto- Komprimieren Sie die Sitzung automatisch, wenn der Kontext voll ist (Standard:true).prune- Entfernen Sie alte Tool-Ausgaben, um Token zu sparen (Standard:true).reserved- Token-Puffer für Komprimierung. Lässt genug Fenster, um Überläufe während der Komprimierung zu vermeiden
Watcher
Sie können Datei-Watcher-Ignorierungsmuster ü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 mit benutzerdefinierten Tools, Hooks und Integrationen.
Platzieren Sie Plugin-Dateien in .dropstone/plugins/ oder ~/.config/dropstone/plugins/. Sie können auch Plugins von npm über die Option plugin 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 Modell, das Sie verwenden, über die Option instructions konfigurieren.
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
Dies nimmt ein Array von Pfaden und Glob-Mustern zu Anweisungsdateien. Erfahren Sie mehr über Regeln hier.
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 sich ändern oder ohne Vorankündigung entfernt werden.
Variablen
Sie können Variablenersetzung in Ihren Konfigurationsdateien 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 gesetzt ist, wird sie durch eine leere Zeichenkette ersetzt.
Dateien
Verwenden Sie {file:path/to/file} um den Inhalt einer Datei zu ersetzen:
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["./custom-instructions.md"]
}
Dateipfade können sein:
- Relativ zum Konfigurationsdateiverzeichnis
- Oder absolute Pfade, die mit
/oder~beginnen
Diese sind nützlich für:
- Einschließen großer Anweisungsdateien ohne Ihr Config zu überladen.
- Gemeinsame Nutzung von Konfigurationsausschnitten über mehrere Konfigurationsdateien hinweg.