I built an AI agent I actually use every day (code available)

2026-07-13 Chris Raroque AI zagraniczne tutorial waga 4/5 16 min czytania

Praktyczny przegląd budowy osobistego agenta AI na iMessage: integracje z aplikacjami Apple przez lokalne bazy SQL, realny przeglądarkowy dostęp i wieloharnessowa architektura. Dla budujących agenty.

Robocza publikacja redakcyjna na podstawie publicznego transkryptu YouTube. Źródło: YouTube.

O czym jest ten film

  1. Autor rozwija otwartego agenta AI o nazwie Boop, który działa na bazie iMessage i po dwóch miesiącach od premiery doczekał się tysięcy forków.
  2. Pokazuje, jak zintegrować agenta z iMessage, Apple Notes i Apple Reminders mimo braku oficjalnego API — poprzez odczyt lokalnych baz SQL.
  3. Wyjaśnia „haczyk” tych integracji: konieczność nadania pełnego dostępu do dysku procesowi uruchamiającemu agenta.
  4. Opisuje dodanie „prawdziwej” przeglądarki, która radzi sobie ze stronami blokującymi boty (Instagram, LinkedIn) dzięki bibliotece Patchright.
  5. Prezentuje wzorzec human in the loop przy logowaniu: agent otwiera przeglądarkę i prosi użytkownika o zalogowanie się zamiast wyłudzać hasło.
  6. Formułuje główną lekcję: agent jest tak dobry, jak narzędzia i dane, które mu damy.
  7. Rekomenduje bazę Convex (sponsor) za działanie w czasie rzeczywistym i backend „jako kod”, zrozumiały dla agentów kodujących.
  8. Opisuje największą zmianę — przepisanie Boopa tak, by był niezależny od dostawcy modelu (obsługa harnessu Anthropic i OpenAI/Codex).
  9. Pokazuje wzorzec UX: zmiana ustawień agenta przez zwykłą wiadomość tekstową zamiast wchodzenia do panelu.
  10. Wprowadza aplikację desktopową (wrapper Electron) rozwiązującą problem uprawnień i automatycznego restartu procesów.

Redakcyjne tłumaczenie

Wprowadzenie: agent, który się rozrósł

Kilka miesięcy temu zbudowałem agenta AI, udostępniłem jego kod na zasadach open source i projekt niespodziewanie wystrzelił. Tysiące z was zrobiło forki, remiksowało go i budowało na jego bazie własne agenty. Jeśli go nie widzieliście — nazywa się Boop. To agent oparty na iMessage, który na powierzchni wygląda bardzo prosto, ale pod spodem ma bardzo złożony system pamięci i jest podłączony do wszystkich moich narzędzi.

Od premiery dwa miesiące temu wypuściłem mnóstwo usprawnień. Zbudowałem dedykowane integracje z iMessage, Apple Notes i Apple Reminders — a jest to coś, czego wiele agentów nie ma, i to z dobrego powodu, do którego zaraz dojdziemy. Dałem też agentowi mocną przeglądarkę, dzięki której potrafi korzystać ze stron takich jak Instagram czy LinkedIn, czyli serwisów, które powszechnie blokują agenty AI. Nauczyłem się przy tym bardzo wiele o tym, co jest potrzebne, by zbudować przydatnego agenta. Dlatego dzisiaj chcę pokazać wam najciekawsze rzeczy, które dodałem, a co ważniejsze — wszystko, czego się nauczyłem, żebyście mogli to wziąć i zastosować we własnych agentach lub aplikacjach AI.

Integracje z aplikacjami Apple — obejście braku API

Obecnie Boop jest podłączony do setek narzędzi dzięki integracji z Composio. To usługa, którą dodałem — ma już w bibliotece tysiące gotowych konektorów, więc wasz agent jest do nich od razu podpięty. Pokrywa to większość przypadków użycia, ale jedną z próśb, jakie dostawałem, była obsługa integracji, których Composio nie ma. Trzy najczęściej wymieniane to iMessage, Apple Notes i Apple Reminders.

Powód, dla którego jest to takie trudne — i dlaczego Composio, a nawet ChatGPT czy Claude nie mają dostępu do tych rzeczy — jest taki, że dla tych usług nie istnieje żadne API. Apple nie chce, żeby aplikacje się z nimi integrowały. Wiedziałem jednak, że to możliwe, bo widziałem, jak robią to inne agenty. Byłem więc ciekaw: jak trudne to może być? I szczerze, okazało się znacznie łatwiejsze, niż się spodziewałem — głównie dlatego, że korzystam z Claude Code, więc to on wykonał za mnie całą trudną część researchu.

Uruchomiłem to. Możesz napisać do Boopa coś w stylu: „Jaka to była marka bidonu, o którą pytała mnie mama?”, a on przeszuka iMessage — nawet lata wstecz, jeśli trzeba — i znajdzie dokładnie to, czego potrzebujesz.

Najbardziej fascynujące jest to, jak taka integracja z iMessage w ogóle działa. I jeśli istnieje jakaś usługa z integracją iMessage, jestem niemal pewien, że robi to właśnie tak. Okazuje się, że cała twoja historia iMessage to dosłownie baza danych SQL leżąca na twoim komputerze, którą możesz po prostu odpytywać i czytać. Więc gdy zadaję pytanie o markę bidonu, Boop konstruuje kilka zapytań SQL, żeby znaleźć właściwy wątek. I podobnie jest z Apple Notes oraz Reminders — to po prostu baza danych leżąca lokalnie na urządzeniu.

Jest jednak jeden haczyk, którego trzeba być świadomym. Twoja aplikacja potrzebuje pełnego dostępu do dysku, żeby móc sięgnąć po te dane. W moim przypadku oznacza to, że pełny dostęp do dysku musi mieć terminal uruchamiający agenta. Trzeba więc wejść w ustawienia Maca i to nadać, co jest trochę irytujące. To po części powód, dla którego zdecydowałem się wypuścić także pełną aplikację desktopową — ale o tym później.

Prawdziwa przeglądarka i omijanie blokad botów

Kolejna rzecz, którą wypuściłem — i to też była duża prośba — to lepsza przeglądarka internetowa. Technicznie Boop już miał przeglądarkę, bo jest zbudowany na Claude Agent SDK. Ma dostęp do tych samych narzędzi przeglądarkowych, co Claude Code — czyli web search i web fetch — więc potrafi wejść na stronę i pobrać treść. W wielu przypadkach działało to dobrze, ale wciąż wracały dwa problemy.

Pierwszy: wiele stron po prostu go blokuje. Kiedy prosiłem, żeby wszedł na mój Instagram i wyciągnął trzy najnowsze posty, żebym mógł spojrzeć na statystyki, nie potrafił tego zrobić, bo Instagram blokuje przeglądarkę Claude’a — mimo że mój profil jest w pełni publiczny. Drugi: nie potrafił sięgnąć po nic za ekranem logowania. Gdybym poprosił o ostatnią wiadomość, którą dostałem na LinkedIn, nie miał najmniejszych szans. Wbudowane narzędzia przeglądarkowe Agent SDK po prostu nie obsługują logowania.

Sądziłem, że będzie to dość proste, bo istnieją znane mi biblioteki — Playwright i Puppeteer — które można dać agentowi, a on programistycznie steruje przeglądarką na urządzeniu. Myślałem, że po prostu je podepnę i zadziała. Okazało się jednak, że wiele stron blokuje także te biblioteki. Wszedłem w wielki ślepy zaułek, próbując to obejść, włącznie z modyfikowaniem Puppeteera i Playwrighta bezpośrednio, żeby ominąć niektóre blokady. Aż w końcu znalazłem bibliotekę Patchright. To w zasadzie zmodyfikowana wersja Playwrighta, która świetnie radzi sobie z omijaniem wykrywania botów.

Krótkie zastrzeżenie: proszę, nie róbcie z tą wiedzą niczego nielegalnego ani podejrzanego. Dzielę się nią, bo istnieje wiele uzasadnionych powodów, by korzystać z czegoś takiego — w tym mój, czyli wyciąganie informacji z własnych prywatnych lub publicznych profili. Użyte właściwie, jest to naprawdę dobry sposób, by dać agentowi porządną przeglądarkę.

A ponieważ jest to prawdziwa przeglądarka, ma miły efekt uboczny: gdy zalogujesz się na stronie, pozostajesz zalogowany. To rodzi ciekawe pytanie o UX: jak obsłużyć sytuację, gdy agent natrafia na ekran logowania i potrzebuje, żeby użytkownik się włączył i zalogował? Opcja pierwsza to poprosić użytkownika o przesłanie danych logowania agentowi, czyli po prostu wysłanie ich w wiadomości. Ale to oczywiście zły pomysł. Wzorzec, na którym stanąłem, jest taki: gdy Boop potrzebuje twojego logowania, przywołuje przeglądarkę na twoim komputerze i mówi: „Hej, otworzyłem przeglądarkę. Możesz się zalogować i dać mi znać, kiedy skończysz?”. A po tym, jak się zalogujesz i napiszesz do niego, kontynuuje zadanie. Ten wzorzec znany jest jako human in the loop.

(Informacja dodatkowa: „human in the loop” to podejście, w którym system AI w kluczowym momencie oddaje decyzję lub działanie człowiekowi, zamiast wykonywać je w pełni automatycznie.)

Główna lekcja: agent jest tak dobry, jak jego narzędzia i dane

Po tym, jak dałem agentowi porządną przeglądarkę i ogarnąłem całą sprawę integracji z Apple, dotarła do mnie duża lekcja: agent jest tylko tak dobry, jak narzędzia i dane, które mu dasz. Jeśli więc budujesz agenta AI — czy szczerze mówiąc jakikolwiek produkt AI — moja rada jest taka, by całą energię włożyć właśnie tam. Zadbaj, by miał naprawdę dobre narzędzia i naprawdę dobry dostęp do danych. Gdy ludzie będą wybierać, na którego agenta postawić, to prawdopodobnie będzie rzecz, na którą spojrzą najbardziej.

Baza danych: Convex

A skoro o narzędziach i danych mowa — sesje przeglądarki, pamięć, to wszystko musi gdzieś żyć. Boop przechowuje to w bazie danych, a tą, którą wybrałem, jest Convex — wielkie podziękowania dla nich za sponsorowanie tego materiału. Przez lata korzystałem z mnóstwa dostawców baz danych i wciąż słyszałem od was w komentarzach, że muszę sprawdzić Convex. W tym projekcie w końcu spróbowałem i cieszę się, że posłuchałem.

Najważniejsze dla mnie jest to, że działa w czasie rzeczywistym od razu, bez konfiguracji. Przy agentach nieustannie coś robiących i pamięci, która się aktualizuje, możliwość obserwowania synchronizacji na żywo jest naprawdę ważna — i nie musiałem tego sam podłączać. Druga rzecz, którą uwielbiam, to że cały backend jest w zasadzie kodem, co ma ogromne znaczenie, gdy pracujesz z agentem kodującym jak Claude Code czy Codex, a szczególnie przy projekcie open source takim jak ten, gdzie wiem, że ludzie będą go modyfikować — bo agent może teraz zobaczyć i łatwo zrozumieć cały twój backend. Ma też sporo innych rzeczy, jak wbudowane zadania cron, które napędzają część automatyzacji Boopa, na przykład sprawdzanie mojej poczty według harmonogramu. Wszystko to bez stawiania osobnego backendu.

Jeszcze jedna wskazówka: jeśli zamierzasz zrobić fork Boopa i przy nim grzebać, zainstaluj wtyczkę Convex w Codeksie lub Claude Code. Uczy ona twojego agenta kodującego, jak działa Convex, bez konieczności dokładania plików ze skillami, dzięki czemu pisze naprawdę zoptymalizowany kod Convex. Mają bardzo hojny darmowy plan, a link zostawię pod filmem.

Największa zmiana: niezależność od dostawcy modelu

Wracając do zmian — oto zdecydowanie największa z nich. Kiedy pierwszy raz budowałem Boopa, całość opierała się na Agent SDK, czyli w zasadzie tym samym harnessie, który napędza Claude Code. To świetne, bo Agent SDK ogarnia pod maską wiele z tego, co składa się na dobrego agenta. Anthropic zrobił cały research i optymalizacje, a my możemy po prostu na tym budować.

Był jednak jeszcze jeden powód, dla którego na tym budowałem: w tamtym czasie wolno było używać subskrypcji Claude Code z czymkolwiek zbudowanym na Agent SDK. Zamiast płacić pełną cenę API za każde żądanie, po prostu czerpało to z twojej subskrypcji Claude Code. W zasadzie, jeśli płacisz za Claude Code, mogłeś uruchamiać to niemal całkowicie za darmo.

Teraz jest trochę niejasne, czy to nadal będzie dozwolone, bo Anthropic powiedział, że nie można, a potem niedawno się z tego wycofał i stwierdził: „OK, na razie możesz, ale w przyszłości możemy to cofnąć”. To wszystko jest naprawdę mętne. I właśnie z powodu tego zamieszania prośbą numer jeden było: czy możesz dodać obsługę subskrypcji Codex obok subskrypcji Claude Code — co oznacza przeportowanie agenta tak, by obsługiwał SDK OpenAI.

Wielu ludzi otworzyło pull requesty — wielkie dzięki dla was. Wziąłem z tych pull requestów wszystko, co najlepsze, i ostatecznie sam zrobiłem pełne przepisanie, bo to dość złożone. Żeby to zrobić, musiałem w zasadzie wziąć wszystkie narzędzia Boopa i uczynić je niezależnymi od agenta. Teraz w ustawieniach możesz wybrać, czy chcesz używać Claude’a jako harnessu, czy Codeksa — a w zależności od wyboru ruch trafia do właściwego adaptera. Kod jest w pełni otwarty, więc jeśli chcesz sprawdzić, jak to działa, możesz zajrzeć do repozytorium albo poprosić Claude Code lub Codex o wyjaśnienie. Miłe w takiej architekturze jest to, że jeśli będę chciał obsłużyć inne harnessy, mogę je dość łatwo dodać.

Główny wniosek, którym mam nadzieję się z wami dzielę, jest taki, że zbudowanie dobrego agenta zarówno na SDK Anthropic, jak i OpenAI jest naprawdę niesamowicie proste. Postawienie działającego, dobrego agenta to zaledwie kilka linijek kodu. A jeśli chcesz czegoś bardziej niezależnego, są SDK i frameworki jak PI czy Vercel Agent SDK, na których możesz budować i używać dowolnego modelu od dowolnego dostawcy.

UX: zmiana ustawień przez wiadomość

Skoro mowa o przełączaniu dostawców — coś powiązanego, co było dość ciekawe. Wciąż słyszałem od ludzi, że nie znoszą wchodzenia w ustawienia, żeby coś zmienić, gdy chcieliby po prostu napisać do agenta, żeby zmienił to za nich. Więc to dodałem — możesz napisać do Boopa: „Czy możesz używać Codeksa?” albo „Czy możesz używać Anthropic jako harnessu?”, a on po prostu to zrobi, obok innych ustawień jak zmiana strefy czasowej. To drobiazg, ale ciekawy wzorzec UX, na który sam nie wpadłem, dopóki ludzie o nim nie wspomnieli. Chodzi o to, by wychodzić ludziom naprzeciw tam, gdzie są, maksymalnie redukować tarcia i nie wyrywać ich z ich przepływu pracy.

Było też wiele innych drobnych zmian poprawiających komfort korzystania z agenta — na przykład obsługa obrazów. Teraz możesz po prostu wysyłać do Boopa zdjęcia, co — jak się okazało — robi ogromną różnicę, czego nie zdawałem sobie sprawy, dopóki nie zacząłem tego używać.

Aplikacja desktopowa

Ostatnią dużą rzeczą, którą wypuściłem, była porządna aplikacja desktopowa. Boop ma panel webowy, w którym widzisz wszystkich działających agentów, swoje pamięci, narzędzia — wszystko bez robienia tego w iMessage. Zdecydowałem się jednak wypuścić pełną aplikację desktopową, która jest w zasadzie wrapperem Electron wokół panelu webowego, z dwóch powodów.

Po pierwsze — pamiętacie, że dla wszystkich integracji Apple, jak iMessage, trzeba było nadać pełny dostęp do dysku? Naprawdę nie podobało mi się, że musisz nadawać to uprawnienie dowolnemu używanemu terminalowi. To po prostu nie czuło się dobrze. Wypuszczając pełną aplikację desktopową, mogę tego uniknąć, bo teraz w ustawieniach po prostu nadajesz uprawnienie aplikacji Boop, żeby obsłużyć wszystkie te integracje Apple. To trochę bardziej intuicyjny UX, ale czuję też, że jest to po prostu odrobinę bezpieczniejsze.

Drugi powód, który okazał się bardziej znaczący, niż sądziłem, był taki, że dotychczas, żeby uruchomić Boopa, trzeba było wejść w terminal i wciąż go restartować. Jeśli zrestartowałem komputer albo terminal się zawiesił, musiałem ciągle Boopa uruchamiać na nowo. Teraz może się to dziać automatycznie w tle za każdym razem, gdy uruchamiasz aplikację — co naprawdę zrobiło dużą różnicę. Gdy otwierasz aplikację, jest rozwijane menu, w którym widzisz wszystkie działające procesy. To wszystko wcześniej trzeba było robić w terminalu, a teraz po prostu dzieje się automatycznie w tle.

Próbowałem przenieść do aplikacji desktopowej także cały proces onboardingu i konfiguracji, ale to było trochę trudniejsze, więc na razie musiałem się wstrzymać — ale na pewno to dopnę.

Podsumowanie

To wszystkie najważniejsze rzeczy, które w ciągu ostatnich dwóch miesięcy dodałem do tego agenta AI. Mam nadzieję, że znalazło się tu coś ciekawego, co możecie wziąć do własnych aplikacji i agentów AI. Ale najbardziej ekscytujące w tym projekcie jest dla mnie to, co wy zrobiliście, odkąd udostępniłem kod. Tak wielu ludzi zmodyfikowało go, żeby stworzyć własne wersje — a wielu mówiło, że studiowali architekturę, bo kod jest cały otwarty, i zbudowali naprawdę ciekawe rzeczy z koncepcji, których się tam nauczyli. Było mi niesamowicie miło to widzieć i wielkie dzięki, że popchnęliście mnie do udostępnienia tego jako open source.

10 najważniejszych takeaways — z kontekstem zastosowania

1.Aplikacje Apple bez API czytaj z lokalnych baz SQL

Na czym polega: iMessage, Apple Notes i Apple Reminders nie mają publicznego API, ale przechowują dane w lokalnych bazach SQLite na Macu. Agent może je po prostu odpytywać zapytaniami SQL, sięgając nawet lata wstecz.

Jak stosować: Jeśli budujesz asystenta na macOS, potraktuj te bazy jako źródło danych tylko do odczytu — niech agent generuje zapytania SQL i wyszukuje wątki lub notatki. Claude Code albo Codex zrobią za ciebie research nad strukturą tych baz.

Na co uważać: Wymagany jest pełny dostęp do dysku (Full Disk Access) dla procesu uruchamiającego agenta, co jest wrażliwym uprawnieniem. Nadawanie go dowolnemu terminalowi jest niebezpieczne — lepiej dedykowana aplikacja. To też dane osobowe: traktuj je ostrożnie i tylko lokalnie.

2.Do stron blokujących boty potrzebna jest „prawdziwa” przeglądarka

Na czym polega: Wbudowane narzędzia web fetch/web search oraz surowe Playwright i Puppeteer są często wykrywane i blokowane (Instagram, LinkedIn). Zmodyfikowana wersja Playwrighta — Patchright — jest zaprojektowana tak, by omijać wykrywanie botów.

Jak stosować: Gdy agent musi sięgać po strony blokujące automatyzację lub treści za logowaniem, użyj narzędzia sterującego realną przeglądarką z anty-detekcją, zamiast prostego fetcha.

Na co uważać: Autor wprost ostrzega, by nie robić z tego niczego nielegalnego ani łamiącego regulaminy serwisów. Ograniczaj się do własnych profili i danych, do których masz prawo. Omijanie zabezpieczeń komercyjnych stron bywa naruszeniem ToS.

3.Logowanie obsługuj wzorcem human in the loop

Na czym polega: Zamiast wyłudzać od użytkownika hasło, agent przy natrafieniu na ekran logowania otwiera przeglądarkę na komputerze i prosi użytkownika, by sam się zalogował i potwierdził — potem kontynuuje zadanie. Dzięki realnej przeglądarce sesja pozostaje zalogowana.

Jak stosować: Projektując agenta wymagającego uwierzytelnienia, buduj punkty przekazania kontroli człowiekowi zamiast przechowywać dane logowania. To bezpieczniejsze i budzi większe zaufanie.

Na co uważać: Nigdy nie każ użytkownikowi wysyłać haseł w wiadomości do agenta. Zadbaj o jasny komunikat i mechanizm potwierdzenia zakończenia logowania, inaczej agent utknie lub ruszy przedwcześnie.

4.Agent jest tak dobry, jak jego narzędzia i dane

Na czym polega: Kluczowa lekcja autora: o wartości agenta decyduje nie sam model, lecz jakość narzędzi i dostęp do danych, jakie mu zapewnisz. To będzie główne kryterium, według którego użytkownicy wybierają agentów.

Jak stosować: Zamiast dopieszczać prompty, inwestuj większość energii w solidne integracje i dobre źródła danych. Zapytaj, do jakich narzędzi realnie potrzebuje dostępu użytkownik, i to zbuduj najlepiej.

Na co uważać: Efektowne demo bez realnego dostępu do danych szybko okazuje się bezużyteczne w codziennym stosowaniu. Nie myl bogactwa modelu z użytecznością produktu.

5.Wybierz bazę działającą w czasie rzeczywistym i „jako kod”

Na czym polega: Autor wybrał Convex, bo daje synchronizację w czasie rzeczywistym bez konfiguracji, backend zapisany w całości jako kod (łatwy do zrozumienia dla agentów kodujących) oraz wbudowane zadania cron do automatyzacji.

Jak stosować: Przy projektach z ciągle działającymi agentami i aktualizowaną pamięcią wybieraj bazę z realtime out-of-the-box i backendem-jako-kod, zwłaszcza jeśli kod będą modyfikować inni lub agenty AI. Cron przydaje się do zadań cyklicznych (np. sprawdzanie poczty).

Na co uważać: To płatny sponsor materiału — traktuj rekomendację jako jedną z opcji, nie jedyną słuszną. Oceń darmowy plan i vendor lock-in pod kątem własnego projektu.

6.Buduj agenta niezależnie od dostawcy modelu

Na czym polega: Autor przepisał agenta tak, by narzędzia były agnostyczne wobec modelu, a warstwa adapterów kierowała żądania do harnessu Anthropic lub OpenAI/Codex. Dodanie kolejnych dostawców staje się wtedy proste.

Jak stosować: Oddziel logikę narzędzi od konkretnego SDK i wprowadź warstwę adapterów. Jeśli chcesz od razu pełnej neutralności, rozważ frameworki jak Vercel AI SDK, pozwalające używać dowolnego modelu dowolnego dostawcy.

Na co uważać: To „dość złożone” przepisanie — nie lekceważ kosztu abstrakcji. Rób to, gdy realnie potrzebujesz wielu dostawców, np. z powodu niepewnych zasad rozliczeń (patrz punkt 7), a nie na zapas.

7.Zasady używania subskrypcji do agentów są niestabilne

Na czym polega: Kiedyś można było uruchamiać agenta na Agent SDK, korzystając z subskrypcji Claude Code zamiast płacić pełne stawki API. Anthropic zakazał tego, potem częściowo się wycofał, zastrzegając, że w przyszłości może to znów zmienić.

Jak stosować: Nie opieraj modelu kosztowego projektu wyłącznie na taniej subskrypcji jednego dostawcy. Zaplanuj plan awaryjny (np. drugi harness, gotowość na pełne ceny API) zawczasu.

Na co uważać: Reguły potrafią się zmienić z dnia na dzień — śledź aktualne warunki dostawcy, bo darmowe dziś rozwiązanie jutro może generować pełne koszty API.

8.Pozwól sterować ustawieniami z poziomu czatu

Na czym polega: Zamiast zmuszać użytkownika do wchodzenia w panel ustawień, autor umożliwił zmianę konfiguracji (np. wybór harnessu, strefa czasowa) zwykłą wiadomością tekstową do agenta.

Jak stosować: Wystaw kluczowe ustawienia jako narzędzia, które agent może wywołać w odpowiedzi na polecenie w rozmowie. Redukuje to tarcia i utrzymuje użytkownika w jego głównym przepływie pracy.

Na co uważać: Daj agentowi możliwość zmiany tylko bezpiecznych ustawień — akcje wrażliwe (np. dostęp, płatności) powinny wymagać wyraźnego potwierdzenia, by uniknąć przypadkowych zmian.

9.Obsługa obrazów daje niewspółmiernie dużą wartość

Na czym polega: Dodanie możliwości wysyłania zdjęć do agenta okazało się drobną zmianą o dużym wpływie na codzienne użytkowanie — czego autor nie doceniał, dopóki nie zaczął z tego korzystać.

Jak stosować: Wcześnie włącz wejście multimodalne (obrazy) do asystentów opartych na wiadomościach — ludzie naturalnie chcą pokazywać, a nie tylko opisywać.

Na co uważać: Nie zakładaj z góry, które funkcje są „drobne” — testuj je w realnym użyciu. To, co wygląda na dodatek, bywa jednym z najczęściej używanych elementów.

10.Aplikacja desktopowa rozwiązuje uprawnienia i niezawodność

Na czym polega: Wrapper Electron wokół panelu webowego pozwala nadać uprawnienia (pełny dostęp do dysku) konkretnej aplikacji zamiast terminalowi oraz automatycznie uruchamiać i restartować procesy agenta w tle po każdym starcie.

Jak stosować: Jeśli agent wymaga wrażliwych uprawnień systemowych lub ma działać nieprzerwanie, rozważ opakowanie go w aplikację desktopową — to czytelniejszy i bezpieczniejszy model uprawnień oraz koniec z ręcznym restartowaniem w terminalu.

Na co uważać: Nie wszystko przenosi się łatwo — autorowi nie udało się jeszcze przenieść pełnego onboardingu do aplikacji. Zaplanuj, że część konfiguracji może na początku pozostać poza wrapperem.