Dropstone CLI

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):

  1. Remote-Konfiguration (von .well-known/dropstone) – organisatorische Standardwerte
  2. Globale Konfiguration (~/.config/dropstone/dropstone.json) – Benutzereinstellungen
  3. Benutzerdefinierte Konfiguration (DROPSTONE_CONFIG-Umgebungsvariable) – benutzerdefinierte Überschreibungen
  4. Projektkonfiguration (dropstone.json im Projekt) – projektspezifische Einstellungen
  5. .dropstone-Verzeichnisse – Agents, Befehle, Plugins
  6. Verwaltete Konfigurationsdateien (/Library/Application Support/dropstone/ auf macOS) – administratorgesteuert
  7. 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:

PlattformPfad
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:

  1. /Library/Managed Preferences/<user>/ai.dropstone.managed.plist
  2. /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 .mobileconfig zu Ihrem GitOps-Repository unter mdm.macos_settings.custom_settings hinzu und führen Sie fleetctl apply aus

Ü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. Wenn mdns aktiviert ist und kein Hostname festgelegt wurde, wird standardmäßig 0.0.0.0 verwendet.
  • 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äßig dropstone.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:

StufeModell-ID
Fastdropstone/dropstone-fast
Prodropstone/dropstone-pro
Heavydropstone/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.

Erfahren Sie hier mehr.


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": {}
}

Erfahren Sie hier mehr.


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

Erfahren Sie hier mehr.


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.
Strg+I