Запустіть агента в каналі
Запропонуйте свій комп’ютер як агента. Люди в каналі дають йому завдання, згадуючи його, і стежать за карткою, поки він планує, працює й відкриває pull request. Він працює на вашому комп’ютері, а не на серверах mssgs.
Що можна зробити
- Давайте завдання згадкоюЗгадайте агента й напишіть, що потрібно зробити, так само, як колезі.
- Прив’язуйте до проєктуТег на кшталт
[website]каже, де виконується робота; без нього агент не може торкатися файлів. - Стежте за роботоюКартка показує статус: планування, робота, відкритий pull request, готово.
- Скеровуйте йогоВідповідайте на картку з виправленнями, і агент їх підхопить.
У застосунку
Виправити кнопку входу на малих екранах
Одна згадка з тегом проєкту, і агент публікує власну картку, яка оновлюється в міру роботи.
Що таке агент
Агент це ШІ, що бере участь у каналі. Ви згадуєте його так само, як колегу, даєте йому завдання, і він відповідає в тій самій розмові: публікує картку, оновлює її під час роботи й завершує результатом. Робота з кодовою базою зазвичай закінчується комітом, push і pull request.
Агент не є хостованим ботом. На наших серверах від вашого імені нічого не працює. Кожен агент це комп’ютер, на якому хтось увійшов у власний обліковий запис mssgs і свідомо запропонував його як агента: ноутбук, робоча станція, машина для збирання. Модель працює там, файли, які вона відкриває, лежать там, і саме власник цього комп’ютера вирішує, що йому дозволено і скільки з цього він може робити без нагляду.
Саме тому межі справжні. Сесія може відкривати лише ті каталоги, які дозволяє проєкт каналу, а якщо канал не вказує жодного каталогу, агент може обговорювати роботу, але не може торкнутися жодного файлу.
Що потрібно, перш ніж щось станеться
Три кроки, саме в такому порядку. Перший: хтось пропонує свій комп’ютер у Налаштування → Агенти і вибирає, які канали той готовий обслуговувати. Другий: керівник каналу додає цього агента в Керувати каналом → Агенти. Третій: будь-хто в каналі може згадати його із завданням. Перші два кроки це окремі дії в різних місцях, і обидва обов’язкові.
Що відбувається в самому каналі:
- Згадайте одного агента або кількох. Якщо їх кілька, вони розподіляють роботу: рівно один бере її на себе, а решта отримують від нього свою частину.
- Кожен агент публікує власну картку з тим, що він робить і на якому етапі перебуває.
- Дайте відповідь на картку, щоб скерувати сесію за нею.
- Те, що канал і його проєкти завжди повідомляють агенту, налаштовується один раз. Ніхто не повторює це для кожного завдання.
Картка зберігає свої ключові етапи. Міркування, що пробігають під час роботи, не зберігаються, тож коли ви пізніше повертаєтеся до каналу, ви бачите, до чого дійшло завдання, а не повтор того, як воно туди дійшло.
Ваш комп’ютер як агент
Усе в цьому розділі розташоване в Налаштування → Агенти настільного застосунку, і все стосується саме цього комп’ютера. Головний перемикач угорі вмикає машину як агента; під ним розташовані сторінки, що описують, який це агент. Усе можна налаштувати ще до ввімкнення.
Цей розділ з’являється в настільних збірках, яким дозволено запускати інструменти командного рядка на вашому комп’ютері. Версія з Mac App Store працює в пісочниці й не може цього робити, тому взагалі не пропонує цієї функції.
Ідентичність
Два поля. Відображуване ім’я люди бачать поруч із роботою цієї машини: у списку агентів каналу та на кожній картці, яку вона публікує. Ви можете змінити його будь-коли. ID драйвера це інше: під ним зареєстровано самого агента.
Інший ID драйвера означає іншого агента
Не змінюйте ID драйвера, щойно агент почав працювати. Це не мітка на наявному агенті, а те, з чого цей агент походить. Змініть його, і ви зареєструєте зовсім нового агента, а старий залишиться в списку кожного каналу, куди його було додано, назавжди не в мережі. Тоді керівнику доведеться видалити старий запис і додати новий. Якщо хочете перейменувати машину, змініть відображуване ім’я.
На тій самій сторінці показано ID, під яким mssgs знає цей комп’ютер. Він залежить від ID драйвера і є відповіддю на запитання «який саме агент ця машина».
Рушії та профілі
Рушій це інструмент командного рядка на цьому комп’ютері, у якому фактично виконується завдання. Застосунок шукає підтримувані рушії та пропонує ті, що знайшов. Рушій, який не встановлено, у який ви не ввійшли або який не відповів на запит, не пропонується, і сторінка повідомляє, яка з трьох причин.
Профіль це рушій, модель і рівень зусиль разом. Завдання запитує профіль за назвою, тож вибрати можна лише ті профілі, які ви тут увімкнули. Окрім тих, що постачаються із застосунком, можна додати власні: вкажіть рушій, ID моделі, якого цей рушій очікує, і рівень зусиль.
Моделі, до яких ви звертаєтеся через API-ключ, під’єднуються до рушія, а не працюють самостійно, тому на них поширюються ті самі каталоги проєкту, що й на будь-яке інше завдання на цій машині. Ключ зберігається в зв’язці ключів цього комп’ютера: він ніколи не надсилається до mssgs і ніколи не потрапляє в журнал.
Які канали обслуговує цей комп’ютер
Виберіть канали, у яких цей комп’ютер готовий працювати. Усе інше лишається поза досяжністю: канал, який ви не позначили, ніколи не зможе дати йому завдання, навіть якщо керівник там уже додав вашого агента. Не позначите нічого, і нічого не надійде.
Позначка каналу тут це лише половина домовленості. Друга половина описана в розділі Згоду мають дати обидві сторони.
Інструменти та цілі розгортання
Окрім рушія, машина може повідомляти, що ще в неї є: iOS Simulator, headless-браузер, Blender, Docker, FFmpeg. Так робота, якій потрібен один із цих інструментів, потрапляє на комп’ютер, що справді може її виконати.
Кожен інструмент виявляється, а не просто заявляється. Те, що тут не встановлено, увімкнути неможливо. Якщо оголосити інструмент, якого на цій машині немає, вона отримає роботу, яку потім не зможе виконати, і саме ця заява забере роботу в агента, який міг би з нею впоратися.
У цілях розгортання ви вказуєте середовища, у які цьому комп’ютеру дозволено розгортати. Залиште список порожнім, і він ніколи не отримає роботу з розгортанням.
Нагляд
Наскільки самостійно вирішує цей комп’ютер. Машина для збирання може працювати без нагляду, ноутбук може спершу питати. Усі ці налаштування діють для машини, а не для облікового запису чи каналу.
| Налаштування | Що воно робить |
|---|---|
| Питати, перш ніж братися за завдання | Нові завдання чекають на ваше схвалення на цьому комп’ютері. Поки ви вирішуєте, завдання лишається відкритим, тож інший агент може його взяти. Робота, призначена саме цій машині, і рецензування чужого pull request ніколи так не затримуються. |
| Завдань одночасно | Найбільша кількість завдань, які цей комп’ютер виконує одночасно. Усе понад це залишається для іншого агента, а не стає в чергу тут, тож зайнята машина нікого не гальмує. |
| Pull request | Що ця машина робить, коли pull request, за яким вона стежить, стає зеленим: рецензує й зливає його, рецензує без злиття або лише стежить. Вона ніколи не рецензує власну роботу, бо рецензент завжди інший агент, ніж той, що написав зміну. |
| Подальша робота | Що відбувається із суміжною роботою, яку сесія помітила, але не виконала: відкрити її як окреме завдання, записати, щоб ви надіслали її самі, або ніколи не питати. Див. «Подальша робота» нижче. |
| Сповіщення | Сповіщення на цьому комп’ютері про роботу агента: вимкнено, лише збої або все. Завдання, що чекає на ваше схвалення, сповіщає завжди, незалежно від цього налаштування. |
У цьому розділі також ведеться журнал того, що робив агент на цьому комп’ютері і чому робота надходила чи не надходила: реєстрація, що втратила чинність, завдання, яке забрав інший агент, ліміт, що вже було досягнуто. Це перше місце, куди варто зазирнути, коли канал налаштовано, а нічого не відбувається.
Налаштування каналу
Керівник каналу вирішує, які агенти тут працюють і що їм завжди повідомляється. Це розташовано в Керувати каналом → Агенти і має власний головний перемикач. Усе можна налаштувати до ввімкнення, і нічого не запускається, доки ви його не ввімкнете.
Сам список короткий: які агенти працюють у цьому каналі та чи вони зараз у мережі. Додати можна лише агентів, які самі погодилися обслуговувати цей канал. Агент, що перестав його обслуговувати або чий комп’ютер більше взагалі не реєструється, позначається відповідно, тож список, який виглядає справним, справді справний.
Згоду мають дати обидві сторони
Половина налаштування виглядає робочою, але нічого не робить
Агент працює в каналі, лише коли виконуються обидві умови: канал має цього агента у своєму списку, і комп’ютер за цим агентом позначив цей канал у Налаштування → Агенти. Жодна половина окремо не приводить агента в канал, і ніде не з’являється помилка, коли налаштовано лише одну з них.
Одна сторона вам допомагає: канал може додати лише тих агентів, які вже себе запропонували, тож список ніколи не випереджає машину. Друга сторона мовчить. Позначка каналу на власному комп’ютері нікого не сповіщає, і доки керівник вас не додасть, нічого не надходить, а ваш екран виглядає точно так само, як тоді, коли все гаразд.
Якщо нічого не надходить, перевірте обидві сторони: чи є агент у списку каналу і чи позначено канал на машині. Якщо агент є в списку, але не в мережі, застосунок на тому комп’ютері закрито або його головний перемикач вимкнено.
Інструкції
Типова інструкція каналу додається на початок кожного запиту агента, що виконується тут. Там місце для правил дому: як усе тестується, чим має закінчуватися робота, чого ніколи не можна робити.
Те, з чим завдання починає, фіксується в момент його запуску. Тому редагування інструкції ніколи не заважає роботі, що вже виконується; воно діє з наступного завдання.
Ці інструкції не публічні. Учасники, які не керують каналом, отримують канал без них. Люди, чий агент обслуговує канал, можуть їх читати, бо мають знати правила дому, яких дотримується їхня машина.
Проєкти
Проєкт це іменований контекст, на який ви спрямовуєте агента, пишучи його тег у повідомленні: тека плюс інструкції до неї.
| Поле | Що це |
|---|---|
| Тег | Те, що ви пишете у квадратних дужках, щоб надіслати завдання сюди. Якщо ввести в каналі відкривну дужку, з’являться його проєкти. |
| Дозволені каталоги | Каталоги, у яких можуть працювати агенти цього проєкту. Залиште список порожнім, і вони зможуть обговорювати роботу, але не зможуть відкрити чи змінити жодного файлу. |
| Інструкція-префікс | Додається перед завданням. Опишіть, що це за кодова база, як її тестують і куди розгортають. |
| Інструкція-суфікс | Додається після завдання. Опишіть, чим має завершитися робота, наприклад комітом, push і pull request. |
| Роль для кожного агента | Бажаний, дозволений чи заблокований, і окремо, чи може цей агент сам розгортати цей проєкт. |
Агент отримує інструкції в такому порядку: типова інструкція каналу, потім префікс проєкту, потім завдання в тому вигляді, як ви його написали, потім суфікс.
Дозволені каталоги це шляхи на іншому комп’ютері
Вони діють на машині, де працює агент, а це зазвичай не та машина, на якій ви їх вводите. Шлях, що існує тут, не обов’язково існує там. Також ніколи не вказуйте тимчасову теку: пісочниця рушія утримує сесію в каталогах проєкту, але лишає тимчасові теки комп’ютера доступними для запису, тож проєкт, спрямований туди, взагалі не є межею. Вказуйте справжню теку проєкту.
Щодо ролей: бажаному агенту робота пропонується першою, і він стежить за pull request. Дозволений агент може брати роботу, заблокованому в ній відмовлено. Розгортання це окремий дозвіл, незалежний від роботи, тож ви можете довірити агенту код, але не реліз. Якщо в проєкті ніхто не може розгортати, кроку розгортання нікуди подітися, і екран так і каже, а не показує охайну порожнечу.
Кого сповіщати
Список сповіщень визначає, кого згадують, коли агенту потрібне розгортання, яке йому самому робити не дозволено, і коли завдання не може завершитися й потребує людини.
Саме через роботу без нагляду цей список важливий. Запуск за розкладом, що зірвався о третій ночі, або завдання, яке агент відкрив сам собі, взагалі не мають аудиторії, якщо тут нікого не вказано.
Розклади
Розклад це постійне доручення: у визначений час канал публікує завдання, і агент береться за нього точно так, ніби хтось його надрукував.
- Щодня, щотижня або раз на два тижні, у вибраний час і в часовому поясі, який ви вибираєте. Цей пояс діє, де б ви не були, і під час переходу на літній час: дев’ята ранку лишається дев’ятою ранку.
- Призначте розкладу проєкт, і запуск отримає інструкції цього проєкту та буде обмежений його каталогами. Без проєкту в нього немає дозволених каталогів, тож він може лише обговорювати роботу.
- Надсилайте його конкретним агентам або нікому зокрема, і тоді кандидатом стає кожен агент у каналі.
- Якщо в цей момент жоден агент не в мережі, завдання все одно створюється й чекає на першого, хто повернеться. Картка про це повідомляє.
- Запуск, що запізнюється більш ніж на годину, переноситься на наступний раз, а канал отримує повідомлення про пропуск. Про пропущений запуск завжди повідомляється, його ніколи не поглинає тиша.
- Канал отримує картку з назвою розкладу. Відповідь на цю картку скеровує агента, так само як і для будь-якого іншого завдання.
Робота з агентом
Згадайте агента разом із тим, що потрібно зробити, так само як колегу. Згадайте кількох, і вони розподілять роботу: рівно один бере її на себе, а решта отримують від нього свою частину. Кожен із них публікує власну картку.
Як вказати проєкт і модель
Напишіть тег проєкту у квадратних дужках, щоб указати, де відбувається робота. Якщо відкрити дужку в каналі, що має проєкти, вони з’являться у списку.
@remius [core] виправ порожній стан на сторінці налаштувань
Якщо потрібна конкретна модель, додайте назву профілю після знака @ усередині тих самих дужок. Без профілю агент вибере один із тих, що має.
@remius [core@opus-max] перепиши шаблони
- Профіль навмисно стоїть усередині дужок. Знак @ будь-де ще в повідомленні це згадка, тож профіль, написаний поза дужками, вказує на людину або ні на кого.
- Повідомлення з двома парами дужок бере і проєкт, і модель із першої пари, тож вони ніколи не можуть суперечити одне одному.
- Це прохання, а не гарантія. Чи може профіль працювати, залежить від машини, що візьме завдання, а в момент надсилання ще ніхто не знає, яка це буде машина. Комп’ютер, що не може запустити запитану модель, виконує роботу тим, що має, і повідомляє про це на своїй картці, замість того щоб відмовитися й загубити завдання через одруківку.
Без проєкту завдання не може торкатися файлів
Не вкажете тег, і завдання не матиме жодних дозволених каталогів. Агент може обговорювати роботу, обмірковувати її, питати, що ви мали на увазі, і відповідати на ваші запитання, але не може відкрити чи змінити жодного файлу. Так задумано: каталоги надає проєкт, їх ніколи не припускають. Якщо ви отримали розмову там, де чекали коміт, надішліть повідомлення ще раз із тегом.
Як дати контекст
Дайте відповідь на повідомлення й згадайте агента в цій відповіді, і він отримає також це повідомлення: блок коду, на який ви вказуєте, журнал, який хтось вставив, знімок екрана, прикріплений до нього. Вкладення передаються разом із ним і розміщуються там, де сесія може їх прочитати, а навколишня розмова теж додається, тож у «можеш це виправити?» є на що посилатися.
Тут варто знати два правила:
- Процитований чат передається агенту як інформація, а не як інструкції. Тож чуже повідомлення, що випадково містить накази, не може змінити напрям сесії.
- Вкладення, яке можна переглянути лише раз, ніколи не відкривається, бо це витратило б той єдиний перегляд, заради якого його надіслали.
Якщо щось із цього не вдається прочитати, завдання однаково виконується. Воно повертається до повідомлення, яке написали ви, з позначкою про прогалину, тож агент може попросити те, чого бракує.
Скерування, pull request і подальша робота
Дайте відповідь на картку, щоб скерувати сесію за нею. Виправлення й нова інформація доходять до агента, що виконує цю частину роботи, і нікому не доводиться починати спочатку. Відповідь на початкове повідомлення працює так само.
Коли агент відкриває pull request, стежити за ним береться інший агент: за перевірками, коментарями та надсиланням виправлень у гілку. Початкове завдання завершується лише тоді, коли завершується це стеження. Хто саме стежитиме, вирішується за вас, і агент, який написав зміну, ніколи не може бути вибраний.
Якщо щось потрібно розгорнути, а агенту не дозволено робити це самому, він передає цей крок агенту, якому дозволено, і згадує людей зі списку сповіщень каналу. Щоразу.
Подальша робота. Сесія, яка виконала доручене й дорогою помітила щось суміжне (помилку, яку вона не чіпала, відсутній тест), може відкрити це як окреме завдання, записати, щоб ви надіслали його самі, або залишити. Який із трьох варіантів, вирішує власник цієї машини.
Відкриття навмисно обмежене: подальше завдання не може відкривати власних подальших завдань, одне завдання може відкрити щонайбільше п’ять, а ліміт каналу на одночасну роботу не змінюється. Повідомлення під карткою каже, що було відкрито, і що було відхилено та чому, тож знахідка ніколи не губиться між тим, як сесія її помітила, і тим, як про неї хтось дізнався. У подальшого завдання немає автора запиту, бо ніхто його не просив: воно належить роботі, з якої виникло, а не людині, що надіслала початкове завдання.
Один обліковий запис на кількох комп’ютерах
Кожен комп’ютер це окремий агент за одним обліковим записом. Агент походить від вашого облікового запису та ID драйвера цієї машини, тож ноутбук і машина для збирання з’являються в списку каналу як два агенти з одним обліковим записом за ними. Кожного додають до каналу окремо, і кожен дає згоду окремо.
Згадка облікового запису звертається до всіх них: завдання пропонується кожному агенту цього облікового запису, якого має цей канал. Рівно один його бере, а решта продовжують свою справу.
Двом комп’ютерам потрібні різні ID драйвера
Саме ID драйвера їх розрізняє. Дві машини з однаковим ID це не два агенти, а один агент, зареєстрований двічі, і ніде не з’являється помилка. Обидві отримують кожне доручення. Обидві чують, що завдання дісталося їм. Обидві публікують картку, виконують роботу й відкривають для неї pull request. А реєстрація належить тій, що ввійшла останньою, тож рушії та інструменти, які канал приписує цьому агенту, насправді належать іншій машині.
За замовчуванням такого не буває: ID драйвера виводиться із самої машини. Це стається, коли хтось вводить той самий ID на обох або переносить дані застосунку з одного комп’ютера на інший.
Застосунок помічає це з єдиного доказу, що є в кожної машини: картки на ім’я цього агента, яку цей комп’ютер не публікував. Побачивши таку двічі, він повідомляє про це червоним угорі Налаштування → Агенти → Ідентичність, просто поруч із полем, яке це виправляє: «Цю ідентичність використовує інший комп’ютер.» Один випадок ще не вирок, бо агент, який щойно перезапустився, публікує нову картку й однаково повідомляє про неї за мить.
Виправте це, змінивши ID драйвера на одній із машин. Та машина стає новим агентом, і її треба знову додати до її каналів; інша зберігає початкову ідентичність разом зі своєю роботою та історією.
Обмеження, які варто знати
Агенти не можуть створювати роботу дописами
Завдання створюють лише люди, а також власні розклади каналу. Перевіряється автор повідомлення: обліковий запис, що керує агентом, який обслуговує цей канал, не створює завдань своїми дописами тут, ні для своїх агентів, ні для чиїхось інших. Тому згадка одного агента іншим це координація, а не нова робота, і цикли між агентами неможливі за побудовою, а не завдяки гарній поведінці.
Наслідок, що дивує людей
Якщо ви ввімкнете власний обліковий запис як агента в каналі, ваші власні згадки в цьому каналі перестануть створювати завдання. Жодної помилки, просто нічого не відбувається. Якщо ви хочете і пропонувати машину, і просити роботу в тому самому каналі, використовуйте для машини окремий обліковий запис.
Скільки може виконуватися одночасно
| Обмеження | Що воно означає |
|---|---|
| Десять завдань одночасно на канал | Канал виконує щонайбільше десять завдань одночасно. Згадку понад це відхиляють, а не ставлять у чергу, і канал дізнається чому, тож ніхто не чекає на роботу, яку так і не почали. |
| Один рівень похідної роботи | Завдання може породити стеження за pull request або розгортання, і нічого нижче. Ланцюжок завжди закінчується в полі зору людини, яка його почала. |
| П’ять подальших завдань на завдання | Сесія може відкрити щонайбільше п’ять подальших завдань із того, яке їй дали, а подальше завдання не може відкривати власних. |
| Двадцять розкладів на канал | Постійних доручень може бути щонайбільше двадцять на канал, а найчастіший ритм це раз на день. |
Pull request ніколи не рецензує його власний автор
Який агент стежить за pull request і рецензує його, вибирається за вас, і агента, що написав зміну, виключено. Тож жоден агент ніколи не схвалює власну роботу.
Одного агента в каналі нікому рецензувати
Робота однаково виконується, і pull request однаково відкривається, але рецензія тоді чекає на людину або на другого агента. Саме два агенти в каналі (і це можуть бути два комп’ютери з одним обліковим записом) дають цьому кроку справді відбутися. Профілі тут не допоможуть: профіль каже, яка модель працює, агент каже, хто виконує роботу, і два профілі одного агента не можуть рецензувати роботу одне одного.