Dropstone CLI

Конфигурация

Использование JSON-конфигурации Dropstone.

Вы можете настроить 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", итоговая конфигурация будет включать оба параметра.


Порядок приоритета

Источники конфигурации загружаются в следующем порядке (более поздние источники переопределяют более ранние):

  1. Удаленная конфигурация (из .well-known/dropstone) — организационные настройки по умолчанию
  2. Глобальная конфигурация (~/.config/dropstone/dropstone.json) — пользовательские предпочтения
  3. Пользовательская конфигурация (переменная окружения DROPSTONE_CONFIG) — пользовательские переопределения
  4. Конфигурация проекта (dropstone.json в проекте) — настройки, специфичные для проекта
  5. Каталоги .dropstone — агенты, команды, плагины
  6. Управляемые файлы конфигурации (/Library/Application Support/dropstone/ на macOS) — контролируются администратором
  7. Управляемые предпочтения 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.

Tip

Размещайте конфигурацию, специфичную для проекта, в корне вашего проекта.

При запуске 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 проверяет следующие пути:

  1. /Library/Managed Preferences/<user>/ai.dropstone.managed.plist
  2. /Library/Managed Preferences/ai.dropstone.managed.plist

Ключи plist напрямую сопоставляются с полями dropstone.json. Метаданные MDM (PayloadUUID, PayloadType и т. д.) автоматически удаляются.

Создание .mobileconfig

Используйте PayloadType ai.dropstone.managed. Ключи конфигурации 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 > scope на целевые устройства или смарт-группы
  • 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 модели
Fastdropstone/dropstone-fast
Prodropstone/dropstone-pro
Heavydropstone/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. См. Модели для полного описания.

Опция 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": "Проверяет код на лучшие практики и потенциальные проблемы",
      "model": "dropstone/dropstone-pro",
      "prompt": "Вы — ревьюер кода. Сосредоточьтесь на безопасности, производительности и поддерживаемости.",
      "tools": {
        // Отключить инструменты изменения файлов для агента, работающего только на ревью
        "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": "Запустите полный набор тестов с отчетом о покрытии и покажите все сбои.\nСосредоточьтесь на падающих тестах и предложите исправления.",
      "description": "Запустить тесты с покрытием",
      "agent": "build",
      "model": "dropstone/dropstone-fast",
    },
    "component": {
      "template": "Создайте новый React-компонент с именем $ARGUMENTS с поддержкой TypeScript.\nВключите правильную типизацию и базовую структуру.",
      "description": "Создать новый компонент",
    },
  },
}

Вы также можете определять команды с помощью markdown-файлов в ~/.config/dropstone/commands/ или .dropstone/commands/. Узнайте больше здесь.


Раскладка клавиш

Настройте сочетания клавиш в 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". Обратите внимание, что это работает только в том случае, если Dropstone не был установлен через менеджер пакетов, такой как 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-серверы включенными, настраивая переопределения или пользовательские 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"]
}

Пути к файлам могут быть:

  • Относительными к каталогу файла конфигурации
  • Или абсолютными путями, начинающимися с / или ~

Это полезно для:

  • Включения больших файлов инструкций без загромождения конфигурации.
  • Совместного использования общих фрагментов конфигурации в нескольких файлах конфигурации.
Ctrl+I