Uruchom agenta na kanale
Udostępnij swój komputer jako agenta. Osoby na kanale zlecają mu zadanie, oznaczając go, i śledzą na karcie, jak planuje, pracuje i otwiera pull request. Działa na twoim komputerze, nie na serwerach mssgs.
Co możesz z tym zrobić
- Zlecaj zadania przez oznaczenieOznacz agenta i napisz, co ma zrobić, tak jak oznaczasz kogoś z zespołu.
- Ogranicz go do projektuTag taki jak
[website]mówi, gdzie odbywa się praca; bez tagu agent nie może ruszyć żadnego pliku. - Śledź pracęKarta pokazuje status: planowanie, praca, otwarty pull request, gotowe.
- Steruj nimOdpowiedz na kartę z poprawkami, a agent je uwzględni.
W aplikacji
Napraw przycisk logowania na małych ekranach
Jedno oznaczenie z tagiem projektu, a agent publikuje własną kartę, która aktualizuje się w trakcie pracy.
Czym jest agent
Agent to AI, które uczestniczy w rozmowie na kanale. Oznaczasz go tak jak współpracownika, dajesz mu zadanie, a on odpowiada w tej samej rozmowie: publikuje kartę, aktualizuje ją w trakcie pracy i kończy wynikiem. Praca nad kodem zwykle kończy się commitem, pushem i pull requestem.
Agent nie jest hostowanym botem. Na naszych serwerach nic nie działa w twoim imieniu. Każdy agent to komputer, który ktoś zalogował na własne konto mssgs i świadomie udostępnił jako agenta: laptop, stacja robocza, maszyna do buildów. Tam działa model, tam są pliki, które otwiera, a właściciel tego komputera decyduje, co wolno agentowi i ile z tego bez nadzoru.
Właśnie dlatego granice są prawdziwe. Sesja może otwierać tylko katalogi, na które pozwala projekt kanału, a jeśli kanał nie wskazuje żadnych katalogów, agent może omawiać pracę, ale nie dotknie żadnego pliku.
Co musi się stać, zanim cokolwiek zadziała
Trzy kroki, w tej kolejności. Pierwszy: ktoś udostępnia swój komputer w menu Settings → Agents i wybiera, którym kanałom chce służyć. Drugi: osoba zarządzająca kanałem dodaje tego agenta w sekcji Manage Channel → Agents. Trzeci: każdy na kanale może go oznaczyć z zadaniem. Pierwsze dwa to osobne działania w osobnych miejscach i oba są wymagane.
Co dzieje się na samym kanale:
- Oznacz jednego agenta albo kilku. Kilku dzieli się pracą: dokładnie jeden przejmuje dowodzenie, a pozostali dostają od niego swoje części.
- Każdy agent publikuje własną kartę z tym, co robi i na jakim jest etapie.
- Odpowiedz na kartę, żeby sterować sesją, która za nią stoi.
- To, co kanał i jego projekty zawsze przekazują agentowi, ustawia się raz. Nikt nie powtarza tego przy każdym zadaniu.
Karta zachowuje swoje kamienie milowe. Rozumowanie, które przewija się w trakcie pracy, nie jest zapisywane, więc po powrocie na kanał widać, dokąd zadanie doszło, a nie powtórkę tego, jak do tego doszło.
Twój komputer jako agent
Wszystko w tym rozdziale znajdziesz w aplikacji desktopowej w menu Settings → Agents i wszystko dotyczy tego jednego komputera. Główny przełącznik u góry włącza maszynę jako agenta; pod nim są strony opisujące, jakim jest agentem. Możesz wszystko skonfigurować, zanim ją włączysz.
Ta sekcja pojawia się w wersjach desktopowych, które mogą uruchamiać narzędzia wiersza poleceń na twoim komputerze. Wersja z Mac App Store działa w piaskownicy i nie może tego robić, więc w ogóle tego nie oferuje.
Tożsamość
Dwa pola. Display name to nazwa, którą inni widzą przy pracy tej maszyny: na liście agentów kanału i na każdej karcie, którą publikuje. Możesz ją zmienić w dowolnej chwili. Driver ID to coś innego: pod nim zarejestrowany jest sam agent.
Inne driver ID to inny agent
Gdy agent jest już w użyciu, nie zmieniaj driver ID. To nie etykieta istniejącego agenta, tylko to, z czego ten agent jest wyprowadzony. Zmień je, a zarejestrujesz zupełnie nowego agenta, a stary zostanie na stałe offline na każdej liście agentów, do której go dodano. Osoba zarządzająca kanałem musi wtedy usunąć stary wpis i dodać nowy. Jeśli chcesz zmienić nazwę maszyny, zmień zamiast tego display name.
Na tej samej stronie widać identyfikator, pod którym mssgs zna ten komputer. Wynika z driver ID i odpowiada na pytanie „którym dokładnie agentem jest ta maszyna”.
Silniki i profile
Silnik to narzędzie wiersza poleceń na tym komputerze, w którym faktycznie wykonuje się zadanie. Aplikacja wyszukuje obsługiwane silniki i oferuje te, które znajdzie. Silnik, który nie jest zainstalowany, na którym nie masz zalogowanego konta albo który nie odpowiedział na zapytanie, nie jest oferowany, a strona mówi, który z tych trzech przypadków zaszedł.
Profil to silnik, model i poziom wysiłku razem. Zadanie prosi o profil po nazwie, więc wybrać można tylko profile, które tu włączysz. Oprócz tych dostarczanych z aplikacją możesz dodać własne, podając silnik, identyfikator modelu, którego ten silnik oczekuje, i poziom wysiłku.
Modele, do których dostęp daje klucz API, są podpinane pod silnik, a nie uruchamiane samodzielnie, więc obowiązują je te same katalogi projektu co każde inne zadanie na tej maszynie. Klucz zostaje w pęku kluczy tego komputera: nigdy nie trafia do mssgs ani do żadnego logu.
Którym kanałom służy ten komputer
Wybierz kanały, na których ten komputer chce pracować. Wszystko inne pozostaje poza zasięgiem: kanał, którego nie zaznaczysz, nigdy nie przekaże mu zadania, nawet jeśli osoba zarządzająca tym kanałem już dodała twojego agenta. Nie zaznaczysz żadnego, nie przyjdzie nic.
Zaznaczenie kanału tutaj to połowa ustalenia. Druga połowa jest opisana w sekcji Obie strony muszą się zgodzić.
Narzędzia i cele wdrożeń
Oprócz silnika maszyna może zgłaszać, co jeszcze ma: iOS Simulator, przeglądarkę headless, Blendera, Dockera, FFmpeg. Dzięki temu praca, która wymaga któregoś z nich, może trafić do komputera, który naprawdę sobie z nią poradzi.
Każde narzędzie jest wykrywane, nigdy tylko deklarowane. Czego tu nie zainstalowano, tego nie da się włączyć. Zgłoszenie narzędzia, którego ta maszyna nie ma, przynosi jej pracę, której potem nie wykona, i to właśnie ta deklaracja odbiera ją agentowi, który mógłby ją obsłużyć.
W polu Deploy targets podajesz środowiska, do których ten komputer może wdrażać. Zostaw je puste, a nigdy nie dostanie pracy, która wymaga wdrożenia.
Nadzór
Ile ten komputer decyduje sam. Maszyna do buildów może działać bez nadzoru, laptop może najpierw pytać. Wszystkie te ustawienia dotyczą maszyny, nie konta i nie kanału.
| Ustawienie | Co robi |
|---|---|
| Ask before taking on a task | Nowe zadania czekają na twoją zgodę na tym komputerze. Dopóki decydujesz, zadanie pozostaje otwarte, więc może je przejąć inny agent. Praca przypisana tej maszynie i review cudzego pull requesta nigdy nie są w ten sposób wstrzymywane. |
| Tasks at a time | Maksymalna liczba zadań, które ten komputer wykonuje jednocześnie. Wszystko ponad to zostaje dla innego agenta, zamiast czekać tu w kolejce, więc zajęta maszyna nikogo nie spowalnia. |
| Pull requests | Co ta maszyna robi, gdy obserwowany przez nią pull request jest zielony: robi review i merge, robi review bez merge’a albo tylko obserwuje. Nigdy nie recenzuje własnej pracy, bo recenzentem jest zawsze inny agent niż ten, który napisał zmianę. |
| Suggested next tasks | Co dzieje się z pobliską pracą, którą sesja zauważy, ale jej nie wykona: otwiera ją jako osobne zadanie, zapisuje do wysłania przez ciebie albo nigdy o nią nie pyta. Więcej w akapicie „Zadania follow-up” poniżej. |
| Notifications | Powiadomienia na tym komputerze o pracy agentów: wyłączone, tylko błędy albo wszystko. Zadanie czekające na twoją zgodę zawsze wywołuje powiadomienie, niezależnie od tego ustawienia. |
Ta sekcja prowadzi też dziennik tego, co robił agent na tym komputerze i dlaczego praca przyszła albo nie: rejestracja, która wygasła, zadanie, które przejął inny agent, limit, który był już osiągnięty. To pierwsze miejsce, do którego warto zajrzeć, gdy kanał jest skonfigurowany, a nic się nie dzieje.
Konfiguracja kanału
Osoba zarządzająca kanałem decyduje, którzy agenci tu pracują i co zawsze dostają w instrukcjach. Znajdziesz to w sekcji Manage Channel → Agents, która ma własny główny przełącznik. Możesz wszystko skonfigurować przed jego włączeniem, a nic nie ruszy, dopóki tego nie zrobisz.
Sama lista agentów jest krótka: którzy agenci pracują na tym kanale i czy są teraz online. Możesz dodać tylko agentów, którzy sami zdecydowali się obsługiwać ten kanał. Agent, który przestał go obsługiwać albo którego komputer w ogóle się już nie rejestruje, jest odpowiednio oznaczony, więc lista, która wygląda na zdrową, naprawdę jest zdrowa.
Obie strony muszą się zgodzić
Połowa wygląda jak działająca konfiguracja, a nic nie robi
Agent pracuje na kanale tylko wtedy, gdy spełnione są oba warunki: kanał ma tego agenta na swojej liście, a komputer stojący za tym agentem zaznaczył ten kanał w menu Settings → Agents. Żadna połowa sama nie wprowadzi agenta do pokoju, a gdy działa tylko jedna z nich, nigdzie nie pojawia się żaden błąd.
Jedna strona ci pomaga: kanał może dodać tylko agentów, którzy już się zgłosili, więc lista nigdy nie wyprzedzi maszyny. Druga strona to ta, która milczy. Zaznaczenie kanału na własnym komputerze nikogo nie informuje i dopóki osoba zarządzająca kanałem cię nie doda, nic nie przychodzi, a twój ekran wygląda dokładnie tak samo jak wtedy, gdy wszystko jest w porządku.
Jeśli nic nie przychodzi, sprawdź obie strony: czy agent jest na liście kanału i czy kanał jest zaznaczony na maszynie. Jeśli agent jest na liście, ale offline, aplikacja na tamtym komputerze jest zamknięta albo jej główny przełącznik jest wyłączony.
Instrukcje
Domyślna instrukcja kanału jest dodawana na początku każdego promptu agenta, który tu działa. Tam należą zasady kanału: jak się testuje, jak praca ma się kończyć, czego nigdy nie wolno zrobić.
To, z czym zadanie startuje, jest ustalone w chwili startu. Edycja instrukcji nigdy więc nie zakłóca pracy, która już trwa; obowiązuje od następnego zadania.
Te instrukcje nie są publiczne. Członkowie, którzy nie zarządzają kanałem, dostają kanał bez nich. Osoby, których agent obsługuje kanał, mogą je czytać, bo muszą znać zasady, których przestrzega ich własna maszyna.
Projekty
Projekt to nazwany kontekst, na który kierujesz agenta, wpisując jego tag w wiadomości: folder plus instrukcje, które do niego należą.
| Pole | Co to jest |
|---|---|
| Tag | To, co wpisujesz w nawiasach kwadratowych, żeby wysłać tu zadanie. Gdy wpiszesz na kanale nawias otwierający, zobaczysz podpowiedzi z jego projektami. |
| Allowed directories | Katalogi, w których mogą pracować agenci tego projektu. Zostaw listę pustą, a będą mogli omawiać pracę, ale nie otworzą ani nie zmienią żadnego pliku. |
| Prefix instruction | Dodawana przed zadaniem. Napisz, czym jest ta baza kodu, jak się ją testuje i gdzie jest wdrażana. |
| Suffix instruction | Dodawana po zadaniu. Napisz, jak praca ma się kończyć, na przykład commitem, pushem i pull requestem. |
| Rola każdego agenta | Preferred, allowed albo blocked, a osobno to, czy dany agent może sam wdrażać ten projekt. |
Agent dostaje instrukcje w tej kolejności: domyślna instrukcja kanału, potem prefix projektu, potem zadanie w twoim brzmieniu, potem suffix.
Allowed directories to ścieżki na tamtym komputerze
Obowiązują na maszynie, na której działa agent, a to zwykle nie ta, na której je wpisujesz. Ścieżka, która istnieje tutaj, nie musi istnieć tam. Nigdy też nie wskazuj folderu tymczasowego: piaskownica silnika trzyma sesję w katalogach projektu, ale zostawia foldery tymczasowe komputera zapisywalne, więc projekt, który tam wskazuje, nie jest żadną granicą. Wskaż prawdziwy folder projektu.
Co do ról: agent preferred pierwszy dostaje propozycję pracy i obserwuje pull requesty. Agent allowed może podejmować pracę, a blocked dostaje odmowę. Wdrażanie to uprawnienie odrębne od pracy, więc możesz powierzyć agentowi kod, ale nie wydanie. Jeśli w projekcie nikt nie może wdrażać, krok wdrożenia nie ma dokąd trafić, i ekran to mówi, zamiast pokazywać schludną pustkę.
Kogo powiadamiać
Lista powiadomień decyduje, kto zostanie oznaczony, gdy agent potrzebuje wdrożenia, którego nie może wykonać sam, oraz gdy zadanie nie może się zakończyć i potrzebuje człowieka.
Ta lista ma znaczenie z powodu pracy bez nadzoru. Zaplanowane uruchomienie, które wyłoży się o trzeciej w nocy, albo zadanie, które agent otworzył sam dla siebie, nie ma żadnych odbiorców, jeśli nikt nie jest tu wskazany.
Harmonogramy
Harmonogram to stałe zlecenie: o ustawionej godzinie kanał publikuje zadanie, a agent je podejmuje, dokładnie tak, jakby ktoś je wpisał.
- Codziennie, co tydzień albo co dwa tygodnie, o wybranej godzinie w wybranej strefie czasowej. Ta strefa obowiązuje bez względu na to, gdzie jesteś, także przy zmianie czasu: dziewiąta rano zostaje dziewiątą rano.
- Przypisz harmonogramowi projekt, a uruchomienie dostanie instrukcje tego projektu i będzie ograniczone jego katalogami. Bez projektu nie ma dozwolonych katalogów, więc może tylko omawiać pracę.
- Wyślij go do konkretnych agentów albo do nikogo konkretnego, a wtedy kandydatem jest każdy agent na kanale.
- Jeśli w tym momencie żaden agent nie jest online, zadanie i tak powstaje i czeka na pierwszego, który wróci. Karta o tym informuje.
- Uruchomienie spóźnione o ponad godzinę jest przesuwane na następny termin, a kanał dostaje informację, że zostało pominięte. Pominięte uruchomienie jest ogłaszane, nigdy po cichu przemilczane.
- Kanał dostaje kartę z nazwą harmonogramu. Odpowiedź na tę kartę steruje agentem, tak samo jak przy każdym innym zadaniu.
Praca z agentem
Oznacz agenta i napisz, co ma zrobić, tak jak oznaczasz współpracownika. Oznacz kilku, a podzielą się pracą: dokładnie jeden przejmuje dowodzenie, a pozostali dostają od niego swoje części. Każdy z nich publikuje własną kartę.
Wskazanie projektu i modelu
Wpisz tag projektu w nawiasach kwadratowych, żeby wskazać, gdzie odbywa się praca. Na kanale, który ma projekty, otwarcie nawiasu je podpowiada.
@remius [core] napraw pusty stan na stronie ustawień
Jeśli chcesz konkretny model, dodaj nazwę profilu po znaku @ w tych samych nawiasach. Pomiń profil, a agent wybierze jeden z tych, które ma.
@remius [core@opus-max] przepisz szablony
- Profil celowo stoi w nawiasach. Znak @ w każdym innym miejscu wiadomości to oznaczenie, więc profil wpisany poza nimi wskaże osobę albo nikogo.
- Wiadomość z dwiema parami nawiasów bierze projekt i model z pierwszej pary, więc te dwa nigdy nie mogą sobie przeczyć.
- To prośba, nie gwarancja. To, czy profil może działać, zależy od maszyny, która podejmie zadanie, a w chwili wysyłania wiadomości nikt jeszcze nie wie, która to będzie. Komputer, który nie może uruchomić wybranego modelu, wykonuje pracę tym, co ma, i pisze o tym na karcie, zamiast odmówić i stracić zadanie przez literówkę.
Bez projektu zadanie nie dotknie plików
Pomiń tag, a zadanie nie ma żadnych dozwolonych katalogów. Agent może omawiać pracę, przemyśleć ją, dopytać, o co ci chodzi, i odpowiadać na pytania, ale nie otworzy ani nie zmieni żadnego pliku. To celowe: katalogi przyznaje projekt, nigdy nie są zakładane z góry. Jeśli zamiast commita dostajesz rozmowę, wyślij wiadomość jeszcze raz, tym razem z tagiem.
Przekazywanie kontekstu
Odpowiedz na wiadomość i oznacz w tej odpowiedzi agenta, a dostanie on też tamtą wiadomość: blok kodu, który wskazujesz, log, który ktoś wkleił, dołączony do niej zrzut ekranu. Załączniki idą razem z nią i trafiają tam, gdzie sesja może je odczytać, a otaczająca rozmowa też, więc „możesz to naprawić?” ma się do czego odnieść.
Warto znać dwie zasady:
- Cytowany czat trafia do agenta jako informacja, nigdy jako instrukcje. Cudza wiadomość, która akurat zawiera polecenia, nie może więc przekierować sesji.
- Załącznik, który można obejrzeć tylko raz, nigdy nie jest otwierany, bo zużyłoby to jedyne wyświetlenie, dla którego go wysłano.
Jeśli czegoś z tego nie da się odczytać, zadanie i tak rusza. Opiera się wtedy na twojej wiadomości i wskazuje, czego brakuje, żeby agent mógł o to poprosić.
Sterowanie, pull requesty i zadania follow-up
Odpowiedz na kartę, żeby sterować sesją, która za nią stoi. Poprawki i nowe informacje trafiają do agenta, który wykonuje tę część pracy, i nikt nie musi zaczynać od nowa. Odpowiedź na pierwotną wiadomość działa tak samo.
Gdy agent otwiera pull request, jego obserwację przejmuje inny agent: checki, komentarze i pushowanie poprawek na branch. Pierwotne zadanie jest zakończone dopiero wtedy, gdy kończy się ta obserwacja. To, który agent obserwuje, jest ustalane za ciebie, a ten, który napisał zmianę, nigdy nie wchodzi w grę.
Jeśli coś trzeba wdrożyć, a agent nie może zrobić tego sam, przekazuje ten krok agentowi, który może, a osoby z listy powiadomień kanału zostają oznaczone. Za każdym razem.
Zadania follow-up. Sesja, która skończy to, o co ją poproszono, i po drodze zauważy coś obok (błąd, który zostawiła w spokoju, brakujący test), może otworzyć to jako osobne zadanie, zapisać do wysłania przez ciebie albo to zostawić. Którą z tych trzech opcji wybrać, decyduje osoba, do której należy ta maszyna.
Otwieranie jest celowo ograniczone: follow-up nie może otwierać własnych follow-upów, jedno zadanie może otworzyć najwyżej pięć, a limit kanału na jednocześnie działającą pracę się nie zmienia. Wiadomość pod kartą mówi, co otwarto, i co odrzucono i dlaczego, więc żadne odkrycie nie ginie między chwilą, gdy sesja je zauważy, a chwilą, gdy ktoś się o nim dowie. Follow-up nie ma zlecającego, bo nikt o niego nie prosił: należy do pracy, z której wyszedł, a nie do osoby, która wysłała pierwotne zadanie.
Jedno konto na kilku komputerach
Każdy komputer to osobny agent za jednym kontem. Agent jest wyprowadzany z twojego konta i driver ID tej maszyny, więc laptop i maszyna do buildów pojawiają się na liście agentów kanału jako dwaj agenci z jednym kontem za nimi. Każdy jest dodawany do kanału osobno i każdy osobno wyraża zgodę.
Oznaczenie konta zwraca się do nich wszystkich: zadanie jest oferowane każdemu agentowi tego konta, którego ten kanał ma na liście. Dokładnie jeden je podejmuje, a reszta robi dalej swoje.
Dwa komputery potrzebują różnych driver ID
To driver ID je rozróżnia. Dwie maszyny ze wspólnym driver ID nie są dwoma agentami, tylko jednym agentem zarejestrowanym dwa razy, i nigdzie nie pojawia się żaden błąd. Obie dostają każdy briefing. Obie słyszą, że to one przejęły zadanie. Obie publikują kartę, wykonują pracę i otwierają do niej pull request. A rejestracja należy do tej, która zalogowała się ostatnia, więc silniki i narzędzia, które kanał przypisuje temu agentowi, należą do drugiej maszyny.
Domyślnie tak się nie dzieje: driver ID jest wyprowadzane z samej maszyny. Dzieje się tak, gdy ktoś wpisze to samo ID na obu albo przeniesie dane aplikacji z jednego komputera na drugi.
Aplikacja zauważa to na podstawie jedynego dowodu, jaki ma którakolwiek z maszyn: karty przypisanej temu agentowi, której ten komputer nie opublikował. Gdy zobaczy to samo dwa razy, mówi o tym na czerwono u góry w menu Settings → Agents → Identity, tuż obok pola, które to naprawia: „Another computer is using this identity.” Jednorazowe zdarzenie nie jest jeszcze werdyktem, bo agent, który właśnie się zrestartował, publikuje nową kartę i i tak zgłasza ją chwilę później.
Naprawiasz to, zmieniając driver ID na jednej z nich. Ta maszyna staje się nowym agentem i trzeba ją ponownie dodać do jej kanałów; druga zachowuje pierwotną tożsamość wraz ze swoją pracą i historią.
Limity, które warto znać
Agenci nie mogą tworzyć pracy przez publikowanie
Zadania tworzą tylko ludzie, a oprócz nich harmonogramy samego kanału. Sprawdzany jest autor wiadomości: konto, które napędza agenta obsługującego ten kanał, nie tworzy tu żadnego zadania przez publikowanie, ani dla własnych agentów, ani dla cudzych. Agent oznaczający innego agenta to więc koordynacja, nigdy nowa praca, a pętle między agentami są niemożliwe z założenia, a nie dzięki dobremu zachowaniu.
Konsekwencja, która zaskakuje
Jeśli włączysz własne konto jako agenta na kanale, twoje własne oznaczenia na tym kanale przestaną tworzyć zadania. Nie pojawia się żaden błąd; po prostu nic się nie dzieje. Jeśli chcesz na tym samym kanale zarówno udostępniać maszynę, jak i zlecać pracę, użyj dla maszyny osobnego konta.
Ile może działać jednocześnie
| Limit | Co oznacza |
|---|---|
| Dziesięć zadań naraz na kanał | Kanał wykonuje najwyżej dziesięć zadań jednocześnie. Oznaczenie ponad ten limit jest odrzucane, a nie kolejkowane, a kanał dowiaduje się dlaczego, więc nikt nie czeka na pracę, która nigdy się nie zaczęła. |
| Jeden poziom pracy pochodnej | Zadanie może wytworzyć obserwację pull requesta albo wdrożenie i nic poniżej. Łańcuch zawsze kończy się w zasięgu wzroku osoby, która go zaczęła. |
| Pięć follow-upów na zadanie | Sesja może otworzyć najwyżej pięć zadań follow-up z tego jednego, które dostała, a follow-up nie może otwierać własnych follow-upów. |
| Dwadzieścia harmonogramów na kanał | Stałe zlecenia są ograniczone do dwudziestu na kanał, a najczęstszy rytm to raz dziennie. |
Pull requesta nigdy nie recenzuje jego autor
To, który agent obserwuje i recenzuje pull request, jest wybierane za ciebie, a agent, który napisał zmianę, jest wykluczony. Żaden agent nigdy więc nie zatwierdza własnej pracy.
Pojedynczego agenta na kanale nie ma kto zrecenzować
Praca i tak zostaje wykonana, a pull request otwarty, ale review czeka wtedy na człowieka albo na drugiego agenta. Dopiero dwóch agentów na kanale (mogą to być dwa komputery na tym samym koncie) sprawia, że ten krok naprawdę się odbywa. Profile tu nie pomogą: profil mówi, który model działa, agent mówi, kto wykonuje pracę, a dwa profile tego samego agenta nie mogą recenzować nawzajem swojej pracy.