Configuration
Utilisation du fichier de configuration JSON Dropstone.
Vous pouvez configurer Dropstone à l'aide d'un fichier de configuration JSON.
Format
Dropstone supporte 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 dans plusieurs emplacements différents qui ont un ordre de précédence différent.
Note:
Les fichiers de configuration sont fusionnés ensemble, non remplacés. Les paramètres des emplacements de configuration suivants sont combinés. Les configurations ultérieures remplacent les configurations antérieures uniquement pour les clés en conflit. Les paramètres non conflictuels de toutes les configurations sont conservés.
Par exemple, si votre configuration globale définit autoupdate: true et votre configuration de projet définit model: "dropstone/dropstone-pro", la configuration finale inclura les deux paramètres.
Ordre de précédence
Les sources de configuration sont chargées dans cet ordre (les sources ultérieures remplacent les antérieures) :
- Configuration distante (depuis
.well-known/dropstone) - valeurs par défaut organisationnelles - Configuration globale (
~/.config/dropstone/dropstone.json) - préférences utilisateur - Configuration personnalisée (variable d'environnement
DROPSTONE_CONFIG) - remplacements personnalisés - Configuration de 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 modifiable par l'utilisateur
Cela signifie que les configurations de projet peuvent remplacer les valeurs par défaut globales, et les configurations globales peuvent remplacer les valeurs par défaut organisationnelles distantes. 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 supportés pour la compatibilité rétroactive.
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 valeurs par défaut.
Par exemple, si votre organisation fournit des serveurs MCP qui sont 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 Dropstone globale 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 (liaisons de clés, défilement, capture de souris), utilisez ~/.config/dropstone/tui.json.
La configuration globale remplace les valeurs par défaut organisationnelles distantes.
Par projet
Ajoutez dropstone.json à la racine de votre projet. La configuration de projet a la plus haute précédence parmi les fichiers de configuration standard - elle remplace les configurations globales et distantes.
Pour les paramètres de session spécifiques au projet, ajoutez tui.json à côté.
Conseil:
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.
C'est également sûr à vérifier dans Git et utilise le même schéma que le schéma global.
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 globales et de projet dans l'ordre de précédence.
Paramètres gérés
Les organisations peuvent appliquer 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ée 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 écrire, donc les utilisateurs ne peuvent 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érence 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 plist correspondent directement aux champs 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 de charge utile :
<?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 pour correspondre aux exigences de votre organisation.
Déploiement via MDM
- Jamf Pro : Computers > Configuration Profiles > Upload > scope to target devices or smart groups
- 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 (s'affiche dans Paramètres système > Confidentialité et sécurité > Profils), puis exécutez :
dropstone debug config
Toutes les clés de préférence gérée apparaissent dans la configuration résolue et ne peuvent pas être remplacées par la configuration utilisateur ou de projet.
Schéma
Le schéma de configuration principal 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 d'auto-compléter 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 du défilement, capture de souris, rendu des différences, etc.
{
"$schema": "https://dropstone.io/schema/tui.json",
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto",
"mouse": true
}
Les clés theme, keybinds et les clés liées à la session héritées dans dropstone.json sont dépréciées et migrées automatiquement si 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 sur lequel écouter.hostname- Nom d'hôte sur lequel écouter. Lorsquemdnsest activé et qu'aucun nom d'hôte n'est défini, la valeur par défaut est0.0.0.0.mdns- Activer la découverte de service mDNS. Cela permet aux 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 à partir d'un client basé sur un navigateur. Les valeurs doivent être des origines complètes (schéma + hôte + port optionnel), par exemplehttps://app.example.com.
En savoir plus sur le serveur ici.
Shell
Vous pouvez configurer le shell utilisé pour le terminal interactif à l'aide de l'option shell. Les shells compatibles sont également utilisés pour les appels d'outils d'agent.
{
"$schema": "https://dropstone.io/schema/config.json",
"shell": "pwsh"
}
S'il n'est pas spécifié, Dropstone découvrira automatiquement et utilisera une valeur par défaut sensé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 variant valides sont low, medium, high, xhigh. Consultez Modèles pour la répartition complète.
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": "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). Cela peut être un agent intégré comme "build" ou "plan", ou 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.
Keymap
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 keybinds plus ancien est déprécié et ne s'applique que lorsque keymap n'est pas présent.
Snapshot
Dropstone utilise des snapshots pour suivre les modifications de fichiers lors des opérations d'agent, ce qui vous permet d'annuler et de rétablir les modifications au sein d'une session. Les snapshots sont activés par défaut.
Pour les grands dépôts ou les projets avec de nombreux sous-modules, le système de snapshot peut causer une indexation lente et une utilisation importante du disque. Vous pouvez désactiver les snapshots à l'aide de l'option snapshot.
{
"$schema": "https://dropstone.io/schema/config.json",
"snapshot": false
}
Notez que la désactivation des snapshots signifie que les modifications apportées par l'agent ne peuvent pas être annulées via l'interface utilisateur.
Mise à jour automatique
Dropstone téléchargera automatiquement toutes 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 voulez pas de mises à jour mais que vous souhaitez être notifié lorsqu'une nouvelle version est disponible, définissez autoupdate sur "notify".
Notez que cela ne fonctionne que s'il n'a pas été installé à l'aide d'un gestionnaire de paquets tel que Homebrew.
Formateurs
Vous pouvez activer et configurer les 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 les remplacements ou les 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 les 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 les remplacements ou les 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 nécessiter d'approbation explicite. Vous pouvez modifier cela à l'aide de l'option permission.
Par exemple, pour s'assurer 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.
Compaction
Vous pouvez contrôler le comportement de compaction du contexte via l'option compaction.
{
"$schema": "https://dropstone.io/schema/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
auto- Compacter automatiquement la session lorsque le contexte est plein (par défaut :true).prune- Supprimer les anciennes sorties d'outils pour économiser des jetons (par défaut :true).reserved- Tampon de jetons pour la compaction. Laisse suffisamment de fenêtre pour éviter le débordement lors de la compaction
Observateur
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 ceci pour exclure les répertoires bruyants de la surveillance 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 personnalisés, des hooks et des intégrations.
Placez les fichiers de plugin 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 du 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 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 être modifiées ou supprimées sans préavis.
Variables
Vous pouvez utiliser la substitution de variables dans vos fichiers de configuration pour référencer les variables d'environnement et le contenu des fichiers.
Variables d'environnement
Utilisez {env:VARIABLE_NAME} pour substituer les 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~
Ceux-ci sont utiles pour :
- Inclure de grands fichiers d'instructions sans encombrer votre configuration.
- Partager des extraits de configuration communs entre plusieurs fichiers de configuration.