Схема конфигурации командной строки делится на обязательную часть и необязательную. Обязательная невелика: версия схемы, режим ввода в редакторе и два массива разрешений - разрешённого и запрещённого. Всё остальное - настройки, которые можно не задавать вовсе, и это правильный подход к конфигурации: минимальный файл должен работать, а поля добавляются под конкретную потребность. Версия схемы при этом не украшение: именно она позволяет формату меняться, не ломая старые файлы молча.
Отдельно стоит запомнить ограничение проектного слоя: там поддерживаются только разрешения. Это архитектурное решение, а не недоработка. Проект вправе определять границы, в которых работает агент у любого, кто клонировал репозиторий, но не вправе навязывать чужие личные предпочтения - модель, оформление вывода или режим ввода. Разделение проходит ровно по линии ответственности: границы касаются всех, оформление касается одного человека.
Полезно один раз свести группы полей в таблицу. Ниже такая карта: версия и обязательные поля, разрешения, модель и режим подтверждений, отображение и интерфейс, песочница и сеть, уведомления и подсказки, обновления и атрибуция. Группировка помогает понять, где искать нужное, и сразу видно, какие группы относятся к границам, а какие к удобству.
| Группа | Что задаёт | Слой |
|---|---|---|
| Версия схемы | Совместимость файла с текущим форматом | Глобальный |
| Разрешения | Списки разрешённого и запрещённого по пяти типам действий | Глобальный и проектный |
| Режим подтверждений | Уровень автономности: список, проверка или без ограничений | Глобальный |
| Модель | Модель по умолчанию и связанные параметры | Глобальный |
| Редактор и отображение | Режим ввода, номера строк, показ рассуждений, индикаторы | Глобальный |
| Песочница и сеть | Изоляция выполнения и сетевые ограничения | Глобальный |
| Уведомления и подсказки | Оповещения, подсказки следующего шага, откат | Глобальный |
| Обновления и атрибуция | Канал обновлений и пометки авторства |
| Глобальный |
При работе с этим справочником полезно помнить про порядок появления новых полей. Изменения в командной строке нередко выходят раньше, чем обновляется статическая документация, и раньше, чем печатается любая книга. Поэтому если поле не находится в справочнике, это не всегда означает, что его нет: стоит посмотреть текущую конфигурацию через встроенную команду и заметки к версиям. Обратное правило тоже действует: неизвестное поле обычно просто игнорируется, и файл при этом выглядит рабочим - поэтому наличие строки в конфигурации не доказывает, что она что-то делает.
Поле может и исчезнуть или изменить смысл, и это опаснее. Именно поэтому в общей конфигурации команды стоит держать только то, что вы понимаете и проверили. Скопированный чужой файл с двадцатью полями работает ровно до обновления, после которого никто не помнит, зачем половина из них была нужна. Проверка простая и дешёвая: снять поле, увидеть изменение поведения, вернуть. Если разницы нет, поле не нужно.
Из ограничения проектного слоя следует практический вывод, который часто узнают поздно. Уровень автономности и настройки песочницы живут в личном файле, а значит, репозиторий не может задать их за коллегу. Требование все работают с проверкой каждого действия через этот файл не реализуется - оно держится только на договорённости, а договорённость не является контролем. Если требование обязательное, ему нужен другой механизм: списки разрешённого и запрещённого в проектном слое либо административная политика, которую нельзя ослабить снизу.
Полезно знать и про поля атрибуции, потому что у них разумное значение по умолчанию и неочевидные последствия при выключении. По умолчанию к коммитам и запросам на слияние, сделанным агентом, добавляется пометка авторства. Выключать её ради чистоты истории - плохой обмен: через полгода при разборе странного изменения именно эта пометка отвечает на вопрос, писал это человек или агент, и стоит ли искать промпт, а не автора. Один служебный след в сообщении коммита дешевле, чем час археологии.
Практический подход прост: начинать с минимума и добавлять поле только тогда, когда можете назвать проблему, которую оно решает. Такой файл легко ревьюить, легко объяснять новому человеку и легко чинить - потому что каждая строка в нём отвечает на конкретный вопрос эксплуатации.
Инженерный вывод простой: конфигурация - это не место для полноты. Полнота живёт в документации, а в вашем файле живут решения. Чем меньше решений, тем меньше поверхности для расхождений между машинами и для сюрпризов при обновлении.
Типичные провалы предсказуемы. Положить личные предпочтения в проектный файл, где поддерживаются только разрешения. Ожидать от личного файла, что он задаст автономность всей команде. Скопировать чужую конфигурацию целиком. Выключить пометки авторства и потерять след при разборе. И добавлять поля впрок, не имея проблемы, которую они решают.