Конфигурация
Использование конфигурационного файла Dropstone JSON.
Вы можете настроить Dropstone с помощью конфигурационного файла JSON.
Формат
Dropstone поддерживает форматы JSON и JSONC (JSON с комментариями).
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"autoupdate": true,
"server": {
"port": 4096,
},
}
Расположение
Вы можете разместить конфигурацию в нескольких разных местах, и они имеют разный порядок приоритета.
Note:
Конфигурационные файлы объединяются, а не заменяются. Параметры из следующих мест конфигурации объединяются. Более поздние конфигурации переопределяют более ранние только для конфликтующих ключей. Неконфликтующие параметры из всех конфигураций сохраняются.
Например, если ваша глобальная конфигурация устанавливает autoupdate: true, а конфигурация проекта устанавливает model: "dropstone/dropstone-pro", итоговая конфигурация будет включать оба параметра.
Порядок приоритета
Источники конфигурации загружаются в этом порядке (более поздние источники переопределяют более ранние):
- Удаленная конфигурация (из
.well-known/dropstone) — организационные значения по умолчанию - Глобальная конфигурация (
~/.config/dropstone/dropstone.json) — пользовательские предпочтения - Пользовательская конфигурация (переменная окружения
DROPSTONE_CONFIG) — пользовательские переопределения - Конфигурация проекта (
dropstone.jsonв проекте) — параметры, специфичные для проекта - Директории
.dropstone— агенты, команды, плагины - Управляемые конфигурационные файлы (
/Library/Application Support/dropstone/на macOS) — контролируемые администратором - Управляемые предпочтения macOS (
.mobileconfigчерез MDM) — наивысший приоритет, не переопределяется пользователем
Это означает, что конфигурации проекта могут переопределять глобальные значения по умолчанию, а глобальные конфигурации могут переопределять удаленные организационные значения по умолчанию. Управляемые параметры переопределяют все остальное.
Note:
Директории .dropstone и ~/.config/dropstone используют множественные имена для поддиректорий: agents/, commands/, modes/, plugins/, skills/, tools/. Единственные имена (например agent/) также поддерживаются для обратной совместимости.
Удаленная конфигурация
Организации могут предоставить конфигурацию по умолчанию через конечную точку .well-known/dropstone на своем домене. Dropstone автоматически загружает это при первом входе для пользователей, учетные записи которых зарегистрированы в этой организации.
Удаленная конфигурация загружается первой, служа базовым слоем. Все остальные источники конфигурации (глобальная, проекта) могут переопределять эти значения по умолчанию.
Например, если ваша организация предоставляет серверы MCP, которые отключены по умолчанию:
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
Вы можете включить определенные серверы в своей локальной конфигурации:
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
Глобальная конфигурация
Разместите глобальную конфигурацию Dropstone в ~/.config/dropstone/dropstone.json. Используйте глобальную конфигурацию для пользовательских предпочтений, таких как модели и разрешения.
Для параметров уровня сеанса (привязки клавиш, прокрутка, захват мыши) используйте ~/.config/dropstone/tui.json.
Глобальная конфигурация переопределяет удаленные организационные значения по умолчанию.
Для каждого проекта
Добавьте dropstone.json в корень вашего проекта. Конфигурация проекта имеет наивысший приоритет среди стандартных конфигурационных файлов — она переопределяет как глобальную, так и удаленную конфигурации.
Для параметров сеанса, специфичных для проекта, добавьте tui.json рядом с ней.
Совет:
Разместите конфигурацию, специфичную для проекта, в корне вашего проекта.
При запуске Dropstone ищет конфигурационный файл в текущей директории или проходит вверх до ближайшей директории Git.
Это также безопасно проверять в Git и использует ту же схему, что и глобальная конфигурация.
Пользовательский путь
Укажите пользовательский путь к конфигурационному файлу, используя переменную окружения DROPSTONE_CONFIG.
export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"
Пользовательская конфигурация загружается между глобальной и конфигурацией проекта в порядке приоритета.
Управляемые параметры
Организации могут применять конфигурацию, которую пользователи не могут переопределять. Управляемые параметры загружаются с наивысшим приоритетом.
На основе файлов
Поместите файл dropstone.json или dropstone.jsonc в системную директорию управляемой конфигурации:
| Платформа | Путь |
|---|---|
| macOS | /Library/Application Support/dropstone/ |
| Linux | /etc/dropstone/ |
| Windows | %ProgramData%\dropstone |
Эти директории требуют доступа администратора/root для записи, поэтому пользователи не могут их изменять.
Управляемые предпочтения macOS
На macOS Dropstone читает управляемые предпочтения из домена предпочтений ai.dropstone.managed. Разверните .mobileconfig через MDM (Jamf, Kandji, FleetDM), и параметры будут применены автоматически.
Dropstone проверяет эти пути:
/Library/Managed Preferences/<user>/ai.dropstone.managed.plist/Library/Managed Preferences/ai.dropstone.managed.plist
Ключи plist напрямую соответствуют полям dropstone.json. Ключи метаданных MDM (PayloadUUID, PayloadType и т. д.) удаляются автоматически.
Создание .mobileconfig
Используйте ai.dropstone.managed PayloadType. Ключи конфигурации Dropstone идут прямо в словарь 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>
Генерируйте уникальные UUID с помощью uuidgen. Настройте параметры в соответствии с требованиями вашей организации.
Развертывание через MDM
- Jamf Pro: Computers > Configuration Profiles > Upload > область действия для целевых устройств или смарт-групп
- FleetDM: Добавьте
.mobileconfigв ваш gitops репозиторий подmdm.macos_settings.custom_settingsи запуститеfleetctl apply
Проверка на устройстве
Дважды щелкните .mobileconfig для локальной установки в целях тестирования (отображается в System Settings > Privacy & Security > Profiles), затем запустите:
dropstone debug config
Все ключи управляемых предпочтений появляются в разрешенной конфигурации и не могут быть переопределены пользовательской или проектной конфигурацией.
Схема
Основная схема конфигурации определена в dropstone.io/config.json.
Конфигурация уровня сеанса (tui.json) использует dropstone.io/tui.json.
Ваш редактор должен иметь возможность проверять и автодополнять на основе схемы.
Конфигурация сеанса
Используйте выделенный файл tui.json (или tui.jsonc) для параметров уровня сеанса: поведение прокрутки, захват мыши, отображение различий и т. д.
{
"$schema": "https://dropstone.io/schema/tui.json",
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto",
"mouse": true
}
Устаревшие ключи theme, keybinds и связанные с сеансом ключи в dropstone.json устарели и автоматически переносятся, если возможно.
Сервер
Вы можете настроить параметры сервера для команд dropstone serve и dropstone web через опцию 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"]
}
}
Доступные опции:
port— порт для прослушивания.hostname— имя хоста для прослушивания. Когдаmdnsвключен и имя хоста не установлено, по умолчанию используется0.0.0.0.mdns— включить обнаружение сервиса mDNS. Это позволяет другим устройствам в сети обнаруживать ваш сервер Dropstone.mdnsDomain— пользовательское имя домена для сервиса mDNS. По умолчаниюdropstone.local. Полезно для запуска нескольких экземпляров в одной сети.cors— дополнительные источники для разрешения CORS при использовании HTTP-сервера из клиента на основе браузера. Значения должны быть полными источниками (схема + хост + опциональный порт), напримерhttps://app.example.com.
Узнайте больше о сервере здесь.
Оболочка
Вы можете настроить оболочку, используемую для интерактивного терминала, с помощью опции shell. Совместимые оболочки также используются для вызовов инструментов агента.
{
"$schema": "https://dropstone.io/schema/config.json",
"shell": "pwsh"
}
Если не указано, Dropstone автоматически обнаружит и будет использовать разумное значение по умолчанию на основе вашей операционной системы (например pwsh или cmd.exe на Windows, /bin/zsh или /bin/bash на macOS/Linux). Вы можете предоставить абсолютный путь или короткое имя.
Инструменты
Вы можете управлять инструментами, которые может использовать LLM, через опцию tools.
{
"$schema": "https://dropstone.io/schema/config.json",
"tools": {
"write": false,
"bash": false
}
}
Узнайте больше об инструментах здесь.
Модель
Установите вашу модель по умолчанию с помощью опции model. Dropstone поставляется с тремя уровнями:
| Уровень | ID модели |
|---|---|
| Fast | dropstone/dropstone-fast |
| Pro | dropstone/dropstone-pro |
| Heavy | dropstone/dropstone-heavy |
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro"
}
Закрепите глубину рассуждений по умолчанию с помощью variant:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"variant": "high"
}
Допустимые значения variant — low, medium, high, xhigh. Полный разбор см. в разделе Models.
Опция small_model настраивает отдельную модель для легких задач, таких как генерация заголовков. По умолчанию Dropstone выбирает подходящий уровень; вы можете переопределить его явно:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"small_model": "dropstone/dropstone-fast"
}
Агенты
Вы можете настроить специализированные агенты для конкретных задач через опцию 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,
},
},
},
}
Вы также можете определять агенты, используя файлы markdown в ~/.config/dropstone/agents/ или .dropstone/agents/. Узнайте больше здесь.
Агент по умолчанию
Вы можете установить агента по умолчанию, используя опцию default_agent. Это определяет, какой агент используется, когда ни один не указан явно.
{
"$schema": "https://dropstone.io/schema/config.json",
"default_agent": "plan"
}
Агент по умолчанию должен быть основным агентом (не подагентом). Это может быть встроенный агент, такой как "build" или "plan", или пользовательский агент, который вы определили. Если указанный агент не существует или является подагентом, Dropstone вернется к "build" с предупреждением.
Этот параметр применяется ко всем интерфейсам: интерактивным сеансам, однократным запускам (dropstone run) и GitHub Action.
Команды
Вы можете настроить пользовательские команды для повторяющихся задач через опцию 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",
},
},
}
Вы также можете определять команды, используя файлы markdown в ~/.config/dropstone/commands/ или .dropstone/commands/. Узнайте больше здесь.
Keymap
Настройте сочетания клавиш в tui.json с помощью keymap.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"global": {
"command.palette.show": "ctrl+p"
}
}
}
}
keymap объединяется со встроенными значениями по умолчанию, поэтому вам нужно настроить только те сочетания, которые вы хотите изменить.
Устаревшее поле keybinds применяется только при отсутствии keymap.
Снимок
Dropstone использует снимки для отслеживания изменений файлов во время операций агента, позволяя вам отменять и откатывать изменения в рамках сеанса. Снимки включены по умолчанию.
Для больших репозиториев или проектов с множеством подмодулей система снимков может вызвать медленное индексирование и значительное использование дискового пространства. Вы можете отключить снимки, используя опцию snapshot.
{
"$schema": "https://dropstone.io/schema/config.json",
"snapshot": false
}
Обратите внимание, что отключение снимков означает, что изменения, сделанные агентом, не могут быть откачены через пользовательский интерфейс.
Автообновление
Dropstone автоматически загружает любые новые обновления при запуске. Вы можете отключить это с помощью опции autoupdate.
{
"$schema": "https://dropstone.io/schema/config.json",
"autoupdate": false
}
Если вы не хотите обновлений, но хотите получать уведомления о доступности новой версии, установите autoupdate на "notify".
Обратите внимание, что это работает только если он не был установлен с помощью менеджера пакетов, такого как Homebrew.
Форматеры
Вы можете включить и настроить форматеры кода через опцию formatter. Опустите ее, чтобы форматеры остались отключены.
{
"$schema": "https://dropstone.io/schema/config.json",
"formatter": true
}
Используйте объект, чтобы оставить встроенные форматеры включенными, одновременно настраивая переопределения или пользовательские форматеры.
{
"$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"]
}
}
}
Узнайте больше о форматерах здесь.
LSP серверы
Вы можете включить и настроить LSP серверы через опцию lsp. Опустите ее, чтобы LSP остался отключен.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Используйте объект, чтобы оставить встроенные серверы включенными, одновременно настраивая переопределения или пользовательские LSP серверы.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
Узнайте больше о LSP серверах здесь.
Разрешения
По умолчанию dropstone разрешает все операции без требования явного одобрения. Вы можете изменить это, используя опцию permission.
Например, чтобы убедиться, что инструменты edit и bash требуют одобрения пользователя:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
Узнайте больше о разрешениях здесь.
Компактирование
Вы можете управлять поведением компактирования контекста через опцию compaction.
{
"$schema": "https://dropstone.io/schema/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
auto— автоматически компактировать сеанс, когда контекст полон (по умолчанию:true).prune— удалять старые выходы инструментов для экономии токенов (по умолчанию:true).reserved— буфер токенов для компактирования. Оставляет достаточно окна, чтобы избежать переполнения во время компактирования
Наблюдатель
Вы можете настроить шаблоны игнорирования наблюдателя файлов через опцию watcher.
{
"$schema": "https://dropstone.io/schema/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
Шаблоны следуют синтаксису glob. Используйте это, чтобы исключить шумные директории из наблюдения за файлами.
MCP серверы
Вы можете настроить MCP серверы, которые хотите использовать, через опцию mcp.
{
"$schema": "https://dropstone.io/schema/config.json",
"mcp": {}
}
Плагины
Плагины расширяют Dropstone пользовательскими инструментами, хуками и интеграциями.
Разместите файлы плагинов в .dropstone/plugins/ или ~/.config/dropstone/plugins/. Вы также можете загружать плагины из npm через опцию plugin.
{
"$schema": "https://dropstone.io/schema/config.json",
"plugin": ["@my-org/custom-plugin", "./local-plugin.ts"]
}
Инструкции
Вы можете настроить инструкции для используемой модели через опцию instructions.
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
Это принимает массив путей и шаблонов glob к файлам инструкций. Узнайте больше о правилах здесь.
Экспериментальные
Ключ experimental содержит опции, которые находятся в активной разработке.
{
"$schema": "https://dropstone.io/schema/config.json",
"experimental": {}
}
Нестабильно:
Экспериментальные опции не стабильны. Они могут измениться или быть удалены без уведомления.
Переменные
Вы можете использовать подстановку переменных в ваших конфигурационных файлах для ссылки на переменные окружения и содержимое файлов.
Переменные окружения
Используйте {env:VARIABLE_NAME} для подстановки переменных окружения:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "{env:DROPSTONE_MODEL}"
}
Если переменная окружения не установлена, она будет заменена пустой строкой.
Файлы
Используйте {file:path/to/file} для подстановки содержимого файла:
{
"$schema": "https://dropstone.io/schema/config.json",
"instructions": ["./custom-instructions.md"]
}
Пути к файлам могут быть:
- Относительными к директории конфигурационного файла
- Или абсолютными путями, начинающимися с
/или~
Это полезно для:
- Включения больших файлов инструкций без загромождения конфигурации.
- Совместного использования общих фрагментов конфигурации между несколькими конфигурационными файлами.