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 cela automatiquement 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
}
}
}
Global
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 à la fois 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 > étendre 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. Voir Modèles pour le détail complet.
L'option small_model configure un modèle séparé 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": "Examine le code pour les bonnes pratiques et les problèmes potentiels",
"model": "dropstone/dropstone-pro",
"prompt": "Vous êtes un réviseur de code. Concentrez-vous sur la sécurité, les performances et la maintenabilité.",
"tools": {
// Désactive les outils de modification de fichiers pour l'agent de révision uniquement
"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": "Exécutez la suite de tests complète avec un rapport de couverture et affichez les échecs.\nConcentrez-vous sur les tests qui échouent et suggérez des corrections.",
"description": "Exécute les tests avec couverture",
"agent": "build",
"model": "dropstone/dropstone-fast",
},
"component": {
"template": "Créez un nouveau composant React nommé $ARGUMENTS avec le support TypeScript.\nIncluez un typage approprié et une structure de base.",
"description": "Crée un nouveau composant",
},
},
}
Vous pouvez également définir des commandes à l'aide de fichiers markdown dans ~/.config/dropstone/commands/ ou .dropstone/commands/. En savoir plus ici.
Effort de révision
La commande intégrée /review exécute une révision en plusieurs phases : des angles de détection indépendants font remonter des candidats, un vérificateur confirme ou infirme chacun d'eux, et seuls les résultats qui survivent sont rapportés. Définissez review.effort pour choisir combien d'angles sont exécutés et combien de résultats sont conservés.
{
"$schema": "https://dropstone.io/schema/config.json",
"review": {
"effort": "high"
}
}
| Valeur | Angles | Candidats par angle | Résultats | Supplément |
|---|---|---|---|---|
low | 1 passage de diff | — | 8 | Pas de vérification, pas de sous-agents, uniquement les hunks |
medium | 8 | 6 | 8 | Vérification orientée précision |
high (défaut) | 8 | 6 | 10 | Vérification orientée rappel |
xhigh | 10 | 8 | 15 | Angles intégrés, déduplication uniquement, balayage des lacunes |
max | 10 | 8 | 15 | Vérification orientée rappel plus balayage des lacunes |
Un effort plus élevé génère plus de sous-agents de détection et de vérification, ce qui coûte plus cher et prend plus de temps.
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.
Le champ plus ancien 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 du 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 cela 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 notifié 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 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 de 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 (défaut :true).prune- Supprime les anciennes sorties d'outils pour économiser des tokens (défaut :true).reserved- Tampon de tokens pour le compactage. Laisse suffisamment de fenêtre pour éviter un dépassement pendant le compactage.
Observateur de fichiers
Vous pouvez configurer les motifs 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 motifs suivent la syntaxe glob. Utilisez cela 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"]
}
Cela prend un tableau de chemins et de motifs 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~
Cela est utile pour :
- Inclure de grands fichiers d'instructions sans encombrer votre configuration.
- Partager des extraits de configuration communs entre plusieurs fichiers de configuration.