Config
Utilisation de la configuration JSON de Dropstone.
Vous pouvez configurer Dropstone à l'aide d'un fichier de configuration JSON.
Format
Dropstone prend en charge les formats JSON et JSONC (JSON avec commentaires).
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"autoupdate": true,
"server": {
"port": 4096,
},
}
Emplacements
Vous pouvez placer votre configuration à différents endroits, et ceux-ci ont un ordre de priorité différent.
Note
Les fichiers de configuration sont fusionnés, et non remplacés. Les paramètres des emplacements de configuration suivants sont combinés. Les configurations ultérieures ne remplacent les précédentes que pour les clés conflictuelles. Les paramètres non conflictuels de toutes les configurations sont conservés.
Par exemple, si votre configuration globale définit autoupdate: true et que votre configuration de projet définit model: "dropstone/dropstone-pro", la configuration finale inclura les deux paramètres.
Ordre de priorité
Les sources de configuration sont chargées dans cet ordre (les sources ultérieures remplacent les précédentes) :
- Configuration distante (depuis
.well-known/dropstone) - paramètres par défaut de l'organisation - Configuration globale (
~/.config/dropstone/dropstone.json) - préférences utilisateur - Configuration personnalisée (variable d'environnement
DROPSTONE_CONFIG) - remplacements personnalisés - Configuration du projet (
dropstone.jsondans le projet) - paramètres spécifiques au projet - Répertoires
.dropstone- agents, commandes, plugins - Fichiers de configuration gérés (
/Library/Application Support/dropstone/sur macOS) - contrôlés par l'administrateur - Préférences gérées macOS (
.mobileconfigvia MDM) - priorité la plus élevée, non remplaçables par l'utilisateur
Cela signifie que les configurations de projet peuvent remplacer les paramètres par défaut globaux, et que les configurations globales peuvent remplacer les paramètres par défaut distants de l'organisation. Les paramètres gérés remplacent tout.
Note
Les répertoires .dropstone et ~/.config/dropstone utilisent des noms au pluriel pour les sous-répertoires : agents/, commands/, modes/, plugins/, skills/, tools/. Les noms au singulier (par exemple agent/) sont également pris en charge pour la rétrocompatibilité.
Distant
Les organisations peuvent fournir une configuration par défaut via un point de terminaison .well-known/dropstone sur leur domaine. Dropstone récupère automatiquement cette configuration lors de la première connexion pour les utilisateurs dont le compte est inscrit auprès de cette organisation.
La configuration distante est chargée en premier, servant de couche de base. Toutes les autres sources de configuration (globale, projet) peuvent remplacer ces paramètres par défaut.
Par exemple, si votre organisation fournit des serveurs MCP désactivés par défaut :
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
Vous pouvez activer des serveurs spécifiques dans votre configuration locale :
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
Globale
Placez votre configuration globale Dropstone dans ~/.config/dropstone/dropstone.json. Utilisez la configuration globale pour les préférences à l'échelle de l'utilisateur, comme les modèles et les permissions.
Pour les paramètres au niveau de la session (raccourcis clavier, défilement, capture de la souris), utilisez ~/.config/dropstone/tui.json.
La configuration globale remplace les paramètres par défaut distants de l'organisation.
Par projet
Ajoutez dropstone.json à la racine de votre projet. La configuration du projet a la priorité la plus élevée parmi les fichiers de configuration standard - elle remplace les configurations globale et distante.
Pour les paramètres de session spécifiques au projet, ajoutez tui.json à côté.
Tip
Placez la configuration spécifique au projet à la racine de votre projet.
Au démarrage, Dropstone recherche un fichier de configuration dans le répertoire courant ou remonte jusqu'au répertoire Git le plus proche.
Ce fichier peut également être versionné dans Git et utilise le même schéma que la configuration globale.
Chemin personnalisé
Spécifiez un chemin de fichier de configuration personnalisé à l'aide de la variable d'environnement DROPSTONE_CONFIG.
export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"
La configuration personnalisée est chargée entre les configurations globale et projet dans l'ordre de priorité.
Paramètres gérés
Les organisations peuvent imposer une configuration que les utilisateurs ne peuvent pas remplacer. Les paramètres gérés sont chargés au niveau de priorité le plus élevé.
Basés sur des fichiers
Déposez un fichier dropstone.json ou dropstone.jsonc dans le répertoire de configuration géré du système :
| Plateforme | Chemin |
|---|---|
| macOS | /Library/Application Support/dropstone/ |
| Linux | /etc/dropstone/ |
| Windows | %ProgramData%\dropstone |
Ces répertoires nécessitent un accès administrateur/root pour être écrits, les utilisateurs ne peuvent donc pas les modifier.
Préférences gérées macOS
Sur macOS, Dropstone lit les préférences gérées depuis le domaine de préférences ai.dropstone.managed. Déployez un .mobileconfig via MDM (Jamf, Kandji, FleetDM) et les paramètres sont appliqués automatiquement.
Dropstone vérifie ces chemins :
/Library/Managed Preferences/<user>/ai.dropstone.managed.plist/Library/Managed Preferences/ai.dropstone.managed.plist
Les clés du plist correspondent directement aux champs de dropstone.json. Les clés de métadonnées MDM (PayloadUUID, PayloadType, etc.) sont supprimées automatiquement.
Création d'un .mobileconfig
Utilisez le PayloadType ai.dropstone.managed. Les clés de configuration Dropstone vont directement dans le dictionnaire du 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>
Générez des UUID uniques avec uuidgen. Personnalisez les paramètres en fonction des besoins de votre organisation.
Déploiement via MDM
- Jamf Pro : Ordinateurs > Profils de configuration > Télécharger > attribuer aux appareils cibles ou aux groupes intelligents
- FleetDM : Ajoutez le
.mobileconfigà votre dépôt gitops sousmdm.macos_settings.custom_settingset exécutezfleetctl apply
Vérification sur un appareil
Double-cliquez sur le .mobileconfig pour l'installer localement à des fins de test (il apparaît dans Réglages Système > Confidentialité et sécurité > Profils), puis exécutez :
dropstone debug config
Toutes les clés de préférences gérées apparaissent dans la configuration résolue et ne peuvent pas être remplacées par la configuration utilisateur ou projet.
Schéma
Le schéma principal de configuration est défini dans dropstone.io/config.json.
La configuration au niveau de la session (tui.json) utilise dropstone.io/tui.json.
Votre éditeur devrait être capable de valider et de compléter automatiquement en fonction du schéma.
Configuration de session
Utilisez un fichier dédié tui.json (ou tui.jsonc) pour les paramètres au niveau de la session : comportement de défilement, capture de la souris, rendu des diffs, etc.
{
"$schema": "https://dropstone.io/schema/tui.json",
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto",
"mouse": true
}
Les clés héritées theme, keybinds et les clés liées à la session dans dropstone.json sont obsolètes et automatiquement migrées lorsque c'est possible.
Serveur
Vous pouvez configurer les paramètres du serveur pour les commandes dropstone serve et dropstone web via l'option 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"]
}
}
Options disponibles :
port- Port d'écoute.hostname- Nom d'hôte d'écoute. Lorsquemdnsest activé et qu'aucun nom d'hôte n'est défini, la valeur par défaut est0.0.0.0.mdns- Active la découverte de services mDNS. Cela permet à d'autres appareils du réseau de découvrir votre serveur Dropstone.mdnsDomain- Nom de domaine personnalisé pour le service mDNS. La valeur par défaut estdropstone.local. Utile pour exécuter plusieurs instances sur le même réseau.cors- Origines supplémentaires à autoriser pour CORS lors de l'utilisation du serveur HTTP depuis un client basé sur un navigateur. Les valeurs doivent être des origines complètes (schéma + hôte + port facultatif), par exemplehttps://app.example.com.
En savoir plus sur le serveur ici.
Shell
Vous pouvez configurer le shell utilisé pour le terminal interactif via l'option shell. Les shells compatibles sont également utilisés pour les appels d'outils de l'agent.
{
"$schema": "https://dropstone.io/schema/config.json",
"shell": "pwsh"
}
S'il n'est pas spécifié, Dropstone détectera automatiquement et utilisera une valeur par défaut appropriée en fonction de votre système d'exploitation (par exemple pwsh ou cmd.exe sur Windows, /bin/zsh ou /bin/bash sur macOS/Linux). Vous pouvez fournir un chemin absolu ou un nom court.
Outils
Vous pouvez gérer les outils qu'un LLM peut utiliser via l'option tools.
{
"$schema": "https://dropstone.io/schema/config.json",
"tools": {
"write": false,
"bash": false
}
}
En savoir plus sur les outils ici.
Modèle
Définissez votre modèle par défaut avec l'option model. Dropstone propose trois niveaux :
| Niveau | ID du modèle |
|---|---|
| Fast | dropstone/dropstone-fast |
| Pro | dropstone/dropstone-pro |
| Heavy | dropstone/dropstone-heavy |
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro"
}
Épinglez une profondeur de raisonnement par défaut avec variant :
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"variant": "high"
}
Les valeurs valides pour variant sont low, medium, high, xhigh. Consultez Modèles pour le détail complet.
L'option small_model configure un modèle distinct pour les tâches légères comme la génération de titres. Par défaut, Dropstone choisit un niveau approprié ; vous pouvez le remplacer explicitement :
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"small_model": "dropstone/dropstone-fast"
}
Agents
Vous pouvez configurer des agents spécialisés pour des tâches spécifiques via l'option agent.
{
"$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,
},
},
},
}
Vous pouvez également définir des agents à l'aide de fichiers markdown dans ~/.config/dropstone/agents/ ou .dropstone/agents/. En savoir plus ici.
Agent par défaut
Vous pouvez définir l'agent par défaut à l'aide de l'option default_agent. Cela détermine quel agent est utilisé lorsqu'aucun n'est explicitement spécifié.
{
"$schema": "https://dropstone.io/schema/config.json",
"default_agent": "plan"
}
L'agent par défaut doit être un agent principal (pas un sous-agent). Il peut s'agir d'un agent intégré comme "build" ou "plan", ou d'un agent personnalisé que vous avez défini. Si l'agent spécifié n'existe pas ou est un sous-agent, Dropstone reviendra à "build" avec un avertissement.
Ce paramètre s'applique à toutes les interfaces : sessions interactives, exécutions ponctuelles (dropstone run) et l'action GitHub.
Commandes
Vous pouvez configurer des commandes personnalisées pour les tâches répétitives via l'option command.
{
"$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",
},
},
}
Vous pouvez également définir des commandes à l'aide de fichiers markdown dans ~/.config/dropstone/commands/ ou .dropstone/commands/. En savoir plus ici.
Mappage de touches
Personnalisez les raccourcis clavier dans tui.json avec keymap.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"global": {
"command.palette.show": "ctrl+p"
}
}
}
}
keymap est fusionné avec les valeurs par défaut intégrées, vous n'avez donc besoin de configurer que les raccourcis que vous souhaitez modifier.
L'ancien champ keybinds est obsolète et ne s'applique que lorsque keymap n'est pas présent.
Instantané
Dropstone utilise des instantanés pour suivre les modifications de fichiers pendant les opérations de l'agent, vous permettant d'annuler et de revenir en arrière sur les modifications au sein d'une session. Les instantanés sont activés par défaut.
Pour les grands dépôts ou les projets avec de nombreux sous-modules, le système d'instantanés peut entraîner une indexation lente et une utilisation importante de l'espace disque. Vous pouvez désactiver les instantanés à l'aide de l'option snapshot.
{
"$schema": "https://dropstone.io/schema/config.json",
"snapshot": false
}
Notez que la désactivation des instantanés signifie que les modifications apportées par l'agent ne peuvent pas être annulées via l'interface.
Mise à jour automatique
Dropstone téléchargera automatiquement les nouvelles mises à jour au démarrage. Vous pouvez désactiver cette fonctionnalité avec l'option autoupdate.
{
"$schema": "https://dropstone.io/schema/config.json",
"autoupdate": false
}
Si vous ne souhaitez pas de mises à jour mais que vous voulez être averti lorsqu'une nouvelle version est disponible, définissez autoupdate sur "notify".
Notez que cela ne fonctionne que si Dropstone n'a pas été installé via un gestionnaire de paquets tel que Homebrew.
Formateurs
Vous pouvez activer et configurer des formateurs de code via l'option formatter. Omettez-la pour garder les formateurs désactivés.
{
"$schema": "https://dropstone.io/schema/config.json",
"formatter": true
}
Utilisez un objet pour garder les formateurs intégrés activés tout en configurant des remplacements ou des formateurs personnalisés.
{
"$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"]
}
}
}
En savoir plus sur les formateurs ici.
Serveurs LSP
Vous pouvez activer et configurer des serveurs LSP via l'option lsp. Omettez-la pour garder LSP désactivé.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Utilisez un objet pour garder les serveurs LSP intégrés activés tout en configurant des remplacements ou des serveurs LSP personnalisés.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
En savoir plus sur les serveurs LSP ici.
Permissions
Par défaut, Dropstone autorise toutes les opérations sans exiger d'approbation explicite. Vous pouvez modifier cela à l'aide de l'option permission.
Par exemple, pour garantir que les outils edit et bash nécessitent l'approbation de l'utilisateur :
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
En savoir plus sur les permissions ici.
Compactage
Vous pouvez contrôler le comportement du compactage du contexte via l'option compaction.
{
"$schema": "https://dropstone.io/schema/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
auto- Compacte automatiquement la session lorsque le contexte est plein (par défaut :true).prune- Supprime les anciennes sorties d'outils pour économiser des jetons (par défaut :true).reserved- Tampon de jetons pour le compactage. Laisse suffisamment de fenêtre pour éviter un débordement pendant le compactage.
Observateur de fichiers
Vous pouvez configurer les modèles d'ignorance de l'observateur de fichiers via l'option watcher.
{
"$schema": "https://dropstone.io/schema/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
Les modèles suivent la syntaxe glob. Utilisez cette option pour exclure les répertoires bruyants de l'observation des fichiers.
Serveurs MCP
Vous pouvez configurer les serveurs MCP que vous souhaitez utiliser via l'option mcp.
{
"$schema": "https://dropstone.io/schema/config.json",
"mcp": {}
}
Plugins
Les plugins étendent Dropstone avec des outils, des hooks et des intégrations personnalisés.
Placez les fichiers de plugins dans .dropstone/plugins/ ou ~/.config/dropstone/plugins/. Vous pouvez également charger des plugins depuis npm via l'option plugin.
{
"$schema": "https://dropstone.io/schema/config.json",
"plugin": ["@my-org/custom-plugin", "./local-plugin.ts"]
}
Instructions
Vous pouvez configurer les instructions pour le modèle que vous utilisez via l'option instructions.
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
Cette option accepte un tableau de chemins et de modèles glob vers des fichiers d'instructions. En savoir plus sur les règles ici.
Expérimental
La clé experimental contient des options en cours de développement actif.
{
"$schema": "https://dropstone.io/schema/config.json",
"experimental": {}
}
Instable
Les options expérimentales ne sont pas stables. Elles peuvent changer ou être supprimées sans préavis.
Variables
Vous pouvez utiliser la substitution de variables dans vos fichiers de configuration pour référencer des variables d'environnement et le contenu de fichiers.
Variables d'environnement
Utilisez {env:VARIABLE_NAME} pour substituer des variables d'environnement :
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "{env:DROPSTONE_MODEL}"
}
Si la variable d'environnement n'est pas définie, elle sera remplacée par une chaîne vide.
Fichiers
Utilisez {file:path/to/file} pour substituer le contenu d'un fichier :
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["./custom-instructions.md"]
}
Les chemins de fichiers peuvent être :
- Relatifs au répertoire du fichier de configuration
- Ou des chemins absolus commençant par
/ou~
Ces éléments sont utiles pour :
- Inclure de grands fichiers d'instructions sans encombrer votre configuration.
- Partager des extraits de configuration courants entre plusieurs fichiers de configuration.