Чат репозиторію
Деякі запитання швидше поставити, ніж шукати на них відповідь. Де насправді оновлюється токен? Що змінив цей коміт, одним реченням? Навіщо існує цей файл? Чат репозиторію відповідає по відкритому репозиторію й показує рядки, на які спирався.
Він ділить праву колонку з Подробицями: вкладки вгорі перемикають між ними, тож граф не втрачає позначення, коли ви щось питаєте.

Що він читає
Кожна відповідь будується у два проходи. Перший обирає невеликий набір шляхів і дослівних пошуків зі списку відстежуваних файлів самого репозиторію. Другий відповідає лише за принесеними уривками й може посилатися тільки на них: вигаданий файл чи рядок — це помилка перевірки, а не правдоподібна відповідь.
Другий погляд. Перший прохід мусить угадувати за самими назвами, які файли важливі, — саме та здогадка, що провалюється на питанні «звідки це викликається». Тому відповіді дозволено перепитати замість того, щоб гадати: вона може назвати ще шляхи, ще дослівні рядки пошуку або хеші комітів із нещодавньої історії, і питання ставиться знову разом із тим, що вони принесли. Так буває щонайбільше двічі — кожне коло це ще один виклик моделі, на який ви чекаєте, — а на останньому вона мусить відповісти тим, що має. Ви не побачите нічого, крім трохи довшого очікування й кращої відповіді.
| Увімкнено | Виключено |
|---|---|
| Відстежувані файли, як вони є в робочому каталозі | Невідстежувані файли |
| Проіндексовані та непроіндексовані діфи відстежуваних файлів | Усе, що підпадає під правило ігнорування, навіть відстежуване |
| Гілка, попереду/позаду та список змінених шляхів | Файли, схожі на секрети, бінарні файли, згенеровані шляхи |
Читання робочого каталогу дає змогу говорити про незакомічені правки. Воно ж означає, що ці правки залишають комп’ютер під час запитання: їх отримує провайдер, налаштований у Функціях ШІ.
Один нюанс: з увімкненими пропозиціями дій до стану репозиторію потрапляють імена невідстежуваних файлів — «проіндексуй новий файл» без них не обійдеться, — але їхній вміст, як і раніше, ніколи не читається.
Закріплення контексту
Що читати, вирішує модель. Закріплення — спосіб це перевизначити: закріплене читається першим і забирає більшу частку бюджету контексту.
Чотири способи, усі ведуть до одного ряду фішок над полем повідомлення:
| Зробіть це | Отримаєте |
|---|---|
| Натисніть запропоновану фішку | Файл, відкритий у переглядачі, або коміт, позначений у графі |
| Перетягніть рядок із вкладки Файли | Цей файл |
| Перетягніть рядок із графа комітів | Цей коміт — його повідомлення та діф по фрагментах |
| + → Вибрати файл…, або перетягніть із Finder/Провідника | Будь-який файл на диску, зокрема поза репозиторієм |
Фішки лишаються закріпленими для наступних запитань; × прибирає одну, а
очищення розмови — усі. Межа — вісім.
Закріплений коміт додає своє повідомлення та до дванадцяти фрагментів діфа. Фрагменти на виключених шляхах випадають із цього діфа, а не весь коміт.
Налаштування
Налаштування → ШІ → Чат репозиторію:
| Налаштування | Що робить |
|---|---|
| Ставте запитання про репозиторій | Вимкнено прибирає вкладку, кнопку панелі та ціль скорочення. Решта ШІ працює |
| Модель чату | Модель лише для чату. Порожньо — модель профілю: запитання дешевші за рев’ю, меншої часто досить |
| Лише закомічений вміст | Відповідає за останнім комітом, а не за робочим каталогом: незакомічені правки не залишають комп’ютер |
| Пропонувати дії з файлами та Git | Вимкнено знову робить чат суто для читання: ані карток дій, ані списку схвалення |
| Режим файлів лише для читання | Увімкнений режим блокує створення, редагування, заміну й видалення файлів, але залишає доступними дії Git. Увімкнений типово |
| Як виконуються запропоновані дії | Режим схвалення — див. Режими схвалення. Руйнівні дії підтверджуються в будь-якому разі |
| Дозволити чату пропонувати віддалені дії | Типово вимкнено. Увімкнення додає fetch, pull, push, відкриття пулл-реквесту та надсилання стека |
Якщо ШІ вимкнено цілком, чат зникає разом із ним — жодної панелі, що обіцяє відповідь, якої ніхто не дасть.
Модель чату можна перемкнути й у заголовку самої панелі, поряд із назвою провайдера, — це те саме налаштування, без відкривання налаштувань.
Кнопка з чарівною паличкою поряд із заголовком панелі відкриває майстер налаштування ШІ — покроковий сценарій, що генерує файли конфігурації асистента (інструкції, агенти, хуки) для цього репозиторію. Див. Функції ШІ.

Робота з повідомленнями
Повідомлення — звичайний текст. Виділіть будь-яку частину й скопіюйте її або клацніть по бульбашці правою кнопкою: Копіювати бере виділення, Копіювати повідомлення — усе повідомлення (відповідь копіюється як її вихідний Markdown), а якщо клац влучив у посилання, Копіювати посилання — його адресу.
Посилання відкриваються в типовому браузері, ніколи всередині Gitcito — як
Markdown-посилання у відповідях, так і звичайні адреси https:// у ваших
повідомленнях.
Коли повідомлення згадує зображення — шлях у репозиторії на кшталт
docs/logo.png або URL із розширенням зображення — наведення на згадку
показує невеликий попередній перегляд. Шляхи репозиторію читаються з робочого
дерева; згадка, що не веде до читабельного зображення, просто нічого не
показує.

Виконання дій із чату
Попросіть про зміну, а не про факт — проіндексуй markdown-файли, закоміть це як фікс, додай результат збірки до ігнорованих — і відповідь прийде з карткою дій. Порожня розмова пропонує під вступом кілька прикладів запитів у вигляді фішок; натискання на одну заповнює поле введення, тож запит можна відредагувати перед надсиланням. Картка перелічує конкретні кроки, які хоче зробити асистент, по рядку на дію, з кнопками Виконати та Відхилити. Нічого з картки ще не сталося; модель може лише пропонувати, і кожна пропозиція звіряється з робочим каталогом до того, як ви її побачите, — дія з неіснуючим файлом відхиляється, а не показується.


Чат репозиторію може пропонувати точкові правки, створення або повну заміну файлів та їх видалення, а далі дії Git: правила ігнорування, індексацію, зняття з індексу, коміт, стеш, відкидання змін, гілку, перемикання, тег і — оскільки йому показують список гілок та нещодавні коміти — merge, rebase, revert і cherry-pick. Розгортаний diff Gitcito рахує локально. Наявні файли мають походити з прочитаних свідчень; небезпечні, секретні, ігноровані, згенеровані, бінарні, застарілі, завеликі та досяжні через символьні посилання цілі відхиляються. Reset, переписування історії, видалення гілок і будь-які примусові операції лишаються тільки у своєму інтерфейсі.
Merge або rebase може спинитися на конфлікті. Тоді виконання зупиняється там, картка позначає рядок як невдалий і зберігає лічильник уже виконаного, а банер конфлікту перебирає керування так само, як для тієї ж операції, запущеної з панелі.
Увесь пакет повторно перевіряється до першого запису й відкочується, якщо крок завершився помилкою. Перед комітом Gitcito також перевіряє наявність змін в індексі. Картка позначає виконані, невдалі та пропущені дії й зберігає частковий результат. Потім окремий виклик без дій підсумовує фактичний результат.
Він уміє й писати .gitcito.json. Чату передають форму
власного файла налаштувань репозиторію, тому додай посилання
на задачі виду JIRA-1234 чи захисти release-гілки стає файловою дією,
написаною за справжньою схемою, а не правдоподібними ключами, які завантажувач
відкине. Потрібні увімкнені файлові дії — той самий перемикач режиму «лише
читання» для файлів.
Рядки, яким потрібен малюнок, його мають. Однорядкового опису досить для «заіндексуй два файли» й аж ніяк не досить для «відкрий чотири пулл-реквести за стеком», тож рядки, що описують форму, її й малюють: гілку, яку публікує push, і наскільки вона попереду; два посилання merge або rebase; коміти, які повторив би revert чи cherry-pick, з їхніми темами; пулл-реквест таким, яким він вийде; і стек як драбину — з базою кожного рівня й тим, що надсилання з ним зробить: відкриє, перенацілить чи лишить як є.
Дії, що виходять за межі машини
Fetch, pull, push, відкриття пулл-реквесту та надсилання стека типово вимкнені — за перемикачем Дозволити чату пропонувати віддалені дії. Публікація роботи заслуговує на свідоме рішення, а з вимкненим налаштуванням моделі навіть не кажуть, що такі дії існують: вона не може запропонувати одну з них і дістати відмову — саме цей сценарій привчає вмикати налаштування не читаючи.
Коли увімкнено:
| Дія | Що робить |
|---|---|
| Отримати / Забрати | Ті самі fetch і pull, що й на панелі; режим pull (merge, лише fast-forward, rebase) входить у пропозицію |
| Надіслати | Публікує одну гілку в один remote. Ніколи з force: примусового надсилання немає у словнику пропозиції, тож запропонувати його неможливо |
| Відкрити PR | Відкриває один пулл-реквест, чернетку чи ні, в origin репозиторію. Картка зберігає посилання |
| Надіслати стек | Повне надсилання стека PR: push кожного рівня, відкриття або перенацілення по одному пулл-реквесту, запис розділу навігації, реєстрація стека в GitHub |

Запропонований push спершу проходить ті самі перевірки, що й push із панелі: підтвердження для захищеної гілки, попередження про публікацію файлів, схожих на облікові дані, і власний чек-лист репозиторію перед надсиланням. Це діалоги, тож на них відповідають до старту плану, а не зсередини нього.
Скасування плану
План схвалюють цілком — отже, і скасовують цілком. Перед першою дією, здатною щось змінити, Gitcito запам'ятовує, де стояла гілка, і робить знімок робочого дерева; завершена картка після цього пропонує Скасувати план. Гілка повертається до того коміту, дерево — до знімка, а все створене планом відкидається, тому спершу запитують підтвердження й називають коміт повернення. Відкриті пулл-реквести лишаються відкритими: локальний знімок не відкликає те, що вже пішло на сервер.
Режими схвалення
Спадний список зі щитом під полем введення (він же в Налаштування → ШІ → Чат репозиторію) вирішує, як виконується картка:
| Режим | Виконує |
|---|---|
| Завжди питати | Нічого, доки ви не натиснете Виконати на картці |
| Автоматично виконувати безпечні дії | Пропозиції лише з оборотної рутини — індексація, зняття з індексу, ігнорування, гілка, тег — виконуються одразу після надходження; решта чекає на кнопку |
| Автоматично виконувати всі дії | Кожна пропозиція виконується одразу після надходження, окрім руйнівних |
Пропозиція, що скасувала б незакомічені правки, завжди спершу питає — у будь-якому режимі, і підтвердження перелічує файли, які було б втрачено. Картка звітує, що сталося насправді, — скільки дій виконано чи яка помилка їх зупинила, — а асистент дізнається підсумок, тож наступне запитання знає, чи його план виконано, чи відхилено.
Виправлення помилок з асистентом
Коли git-операція зазнає невдачі й чат ШІ доступний, у сповіщення про помилку з’являється кнопка з іскоркою: вона відкриває чат із текстом збою, вставленим у поле введення, — «чому це не спрацювало і що робити» стає одним клацанням. Чернетку можна редагувати — нічого не надішлеться, доки ви не натиснете «Надіслати».
У чому він відмовляє
- Файли, схожі на секрети, ніколи не читаються, закріплені вони чи ні: фішка повертається позначеною як пропущена, із причиною. Закріплення не обходить маскування секретів.
- Бінарні файли та файли понад 512 КБ ззовні репозиторію пропускаються так само. Усередині діють звичайні правила.
- Він ніколи не пише сам. У моделі немає інструментів, лише текст: зміна приходить карткою пропозиції, виконується лише за вашими правилами схвалення, а руйнівний крок завжди підтверджується. З вимкненим Пропонувати git-дії в чаті він навіть не пропонує.
- Розмови живуть лише в пам’яті. Кожен репозиторій має свою нитку; вихід із Gitcito їх стирає.
Як відкрити
| Клавіші | Що роблять |
|---|---|
| Кнопка з хмаринкою в панелі інструментів | Перемикає вкладку «Чат» |
| ⌘⌥B / Ctrl+Alt+B | Перемикає всю праву панель |
| Enter | Надсилає повідомлення |
| Shift+Enter | Вставляє новий рядок |
Решта, зокрема перепризначення перемикачів панелей, — у розділі Клавіатура та скорочення.
Див. також: Функції ШІ · Безпека та секрети · Вікі репозиторію