AI-assisted development w praktyce - na przykładzie Open Mercato z Piotrem Karwatką
“Najgorsze co można zrobić, to zerknąć.” Piotr Karwatka o pętlach kodujących, w których agent pracuje 4 dni non-stop, a Ty masz siedzieć na rękach. Bo jak zerkniesz, trafisz na głupotę, przerwiesz mu tok myślenia i wszystko się posypie. Witamy w świecie, gdzie spec-driven development zastępuje ping-pong z Claude’em. 🎯 Open Mercato to 750 tysięcy linii kodu, z których żadna nie została napisana ręcznie. Framework do aplikacji biznesowych z hasłem “start with 80% done” - CRM, OMS, WMS w paczkach npm, monolit modularny inspirowany Shopify, stos wybrany pod to, co LLM-y znają najlepiej: Next.js, Postgres, Redis. Core team? 4 osoby full time. Koszt odtworzeniowy? ~20 developerów na rok. ⚠️ Harness AI, skille do specyfikacji, planowania i implementacji, atomowe commity z testami, refinement specek pytaniem “co może pójść źle?” - i open source’owy model monetyzacji, który Piotr porównuje do homologacji kampera na Fiacie Ducato. Bo “w zeszłym tygodniu pan Darek zrobił vibe codingiem jakieś ten, wszystko działało, a potem baza znikła.” Czy AI-assisted development na poważnie wymaga więcej myślenia niż tradycyjne kodowanie? Sprawdź, zanim odpalisz kolejnego agenta bez specki. A teraz nie ma co się obijać! 👉 Wpadajcie na naszego Discorda: https://discord.gg/78zPcEaP22 ! 🔥Tam możecie się z nami pokłócić o przyspieszanie SQL-a, podyskutować o naiwnych nadziejach na AI albo po prostu podzielić się swoimi IT-owymi przemyśleniami. Słuchasz Patoarchitektów dzięki PROTOPII – firmie, w której Łukasz i Szymon działają na co dzień, wspierając zespoły IT na każdym etapie: od projektowania, przez wdrożenia i migracje, aż po optymalizację i zabezpieczenia. Oferujemy też mentoring i szkolenia dostosowane do potrzeb każdej firmy, niezależnie od wielkości. Sprawdź nas: 👉 protopia.tech - Nasze sociale i linki - Materiały do odcinka - Pato szkolenia
Cześć. Słuchajcie, Patriotów dzisiaj w Trójkącie wprowadzą. Przemowarda, Łukasz Kałużny i Piotr Karwatka. Cześć. Super. Dzięki za zaproszenie. Dzięki. To słuchajcie, dzisiaj nagrywamy specjalna edycja infoszerowa. Zostaliśmy zaproszeni do studia podcastowego i wzięliśmy Piotrka w tym miejscu z ciekawego tematu. Ja tak zacznę Piotrek, jednym zdaniem próbowałem Cię złapać, czyli założyciel Exit Divante, współtwórca View Storefront, partner w każde tornado i temat dzisiejszego odcinka Open Mercato, na którym będziemy bazować. Dzięki, super. Myślę, że to fajne przedstawienie w sercu przedsiębiorca i programista cały czas.
Potwierdzam, klop wchodzi w tle teraz. Zaczynałem swoją karierę jako deweloper i gdzieś to jest cały czas bliskie mojemu sercu, a teraz z tym AI-em to no kupę ekscytujących rzeczy nowych do poznania, więc super. Dobrze, to teraz tak jakbyś mógł powiedzieć, czym właściwie jest Open Mercato? Jak czym się radzuje, jak powstało konkretnie? OK. Open Mercato to jest framework do budowania aplikacji biznesowych. Mówimy, że zacznij z 80% gotowymi. Start with 80% done. To znaczy, że to jest framework, który nie tylko ma takie jakby bazowe elementy do budowy aplikacji, jak nie wiem, moduły, routing, jakieś tam wzorce projektowe, migracje bazy danych i tak dalej.
To jest jakby jeden taki bazowy element. Możesz Open Mercato postawić totalnie puste, bez żadnych dodatkowych modułów i zacząć sobie budować aplikacje tak jak właśnie na Django od zera. Ale większość osób wybiera Open Mercato właśnie przez ten promis, że tam jest 80% rzeczy, które potrzebujesz gotowe. Co to znaczy w praktyce? To znaczy w praktyce, że mamy tam CRMA, mamy tam katalog produktów, OMS, WMS jest teraz w trakcie budowy, jakieś zarządzanie zasobami, system workflow, dużo takich biznesowych modułów. I my jakby obstawiamy taki bet, że ludzie wcześniej korzystali z różnego rodzaju SaaSów, np. CRM to jakiś tam HubSpot albo coś innego. One często były niedopasowane do ich potrzeb, miały funkcje, których nie używałeś, musiałeś za to płacić itd.
Teraz w czasach AI lepiej się może sprawdzić takie podejście, że dostajesz te wszystkie funkcje, takie jak mają sasy, ale możesz dzięki AI i przez to, jak jest Open Mercato zbudowane, dopasować to do swojego biznesu, czyli te brakujące 20% dostawić. I ostatnia rzecz, jest to zdeliverowane w taki sposób, że te bazowe moduły są dystrybuowane jako paczki NPM. Jesteśmy w technicznym podcastie, to mogę mówić. O tym jeszcze będziemy mówili. To mamy specjalny punkt na to, więc nie martw się. Dobra, to tylko podsumuję, że po prostu idea jest taka, że możesz to zmieniać, ale bez modyfikacji tego core'a. Ciągle możesz to aktualizować, co nie? Tak. Dobra. Następne pytanie, które leci, bo powiedzmy, zrobiliśmy dość duży research, macie różne przekazy marketingowe w różnych miejscach.
Też postawiłem Open Mercato i zrobiłem pewną zabawę, więc w tym. Słuchaj, i podejdźmy, pierwsza taka rzecz, która nas interesuje w kontekście, i to jest dobra rzecz dla słuchaczy, Bo jesteście jednymi z pierwszych, którzy bardzo mocno publicznie mówią, że prawie wszystko jest robione de facto promptami. Prawie całe podejście generowania kodu. I słuchaj, jeżeli popatrzymy, określiliście to jako AI Engineering Foundation Framework. I słuchaj, teraz tak. Co to do diabła tak z Twojej perspektywy znaczy, że to jest właśnie Build with an AI and Design for AI? Wiesz co, już tłumaczę. Założenie na samym początku projektu było takie, że nie piszemy ani jednej linii kodu, nie piszemy jako ludzie, że będziemy generować kod AI, To nie znaczy, że architektura też jest generowana AI, bo akurat nie jest, bo architektura jest tam mocno przemyślana i mocno za każdym razem ją weryfikujemy w takim core teamie deweloperów, który pracuje nad projektem i tak samo code review nadal jest w dużej mierze też robiony przez ludzi, bo zależy nam, żeby nie wstydzić się tego, co tam dowozimy, co nie?
Ja w Enterprise Software jestem od 20 lat i te doświadczenia chciałem po prostu na to przełożyć. Pojawił się AI, pojawiła się taka możliwość, że bez zatrudniania 40 osób do zespołu, co było strasznie drogie i pewnie trudne do zrobienia, Można było się z tym zmierzyć. Więc tu jakby ten AI. I teraz, żeby wykorzystać to na maksa, bardzo szybko się okazało, że tak naprawdę to my mamy do rozwoju dwa produkty. A jakby tak popatrzeć, to nawet trzy. Pierwszy produkt to jest Open Mercato samo w sobie, czyli my zaczęliśmy np. od budowy CRM-a, to funkcje biznesowe, taka biznesowa aplikacja, tylko że bardzo rozszerzalna itd. Druga rzecz, framework. Też od dnia zero dosłownie zaczęliśmy budować Open Mercato jako framework.
Czyli nie, że tylko tam budujemy fajnego CRM-a, ale żeby ten CRM wykorzystywał takie reużytelne mechanizmy, jak tam jakiś system eventów, właśnie te migracje bazy danych, wzorce projektowe takie jak command i inne. Dużo takich elementów, żeby one były we frameworku. Więc to już jest drugi produkt. I trzeci produkt, najciekawszy. Znaczy tak z mojej perspektywy, bo to jest coś całkiem nowego. To jest właśnie ten AI taki harness. Czyli tak, to jest zbiór skilli AI-owy, które bardzo są rozbudowane w Open Mercato i w ogóle zachęcam, żeby każdy sobie tam w wolnej chwili popatrzył, się tym pobawił. AgentsMD to jest duży skrót, bo to nie jest jeden plik, tylko to jest tam cała struktura, taki graf tych wszystkich plików AgentsMD i zapewnienie, żeby agenty kodujące followowały ten graf tak jak my chcemy, żeby one
Te instrukcje wykonywały. Później jeszcze cała taka infrastruktura CLI-owa, że tam można sobie projekt nowy wystartować itd. Więc jakby to są takie trzy elementy. Obecnie się bardzo mocno skupiam na tym elemencie właśnie harnessu AI, żeby go zoptymalizować i żeby developer experience był jak najwyższy. Jak zobaczycie w Open Mercato, my siłą rzeczy staramy się nie nadbudowywać jakichś sztucznych tworów na to, co dają takie supertule jak Cloud Codex albo GitHub CLI na przykład. Wiesz co, rozwinąłbym właśnie, bo zahaczyłeś dobrą rzecz w tym, o co chodzi z tymi harnessami u was, czyli jak wy podchodzicie do gate race'ów i innych rzeczy, ograniczenia i walidacji tego. Wiesz co, nam chodzi o to, żeby po pierwsze to było powtarzalne, czyli jak wydasz polecenie, czy tam dasz prompta, nie wiem, zbuduj mi moduł do zarządzania na przykład zgłoszeniami serwisowymi, nie?
Ale nam chodzi o to, żeby to był taki spójny proces, a celem jest to, żeby z jednej strony była jakość softu, bo my ten soft już budujemy dosyć długo, tam jest ponad 750 tysięcy linii kodu, to to jest kawał softu. To jest duro softu. To jest dużo softu i on jakoś nieszczególnie deterioruje jakościowo, co jest zarąbiste, myślę. I to jest dzięki temu harnessowi w dużej mierze. Natomiast druga rzecz, żeby deweloper, który przychodzi do Open Mercato i właśnie Mówi, zrób mi tam moduł do tego na przykład zarządzania zgłoszeniami serwisowymi. W każdej nowej wersji Open Mercato dostał ten sam rezultat, taki benchmarking. My to też normalnie ewaluujemy, mamy do tego tool, który to sprawdza. On jest tam w repo publicznych? Nie, akurat tego toola nie ma. Członek Core Teamu Patryk Lewczuk nad tym pracuje.
Patrząc, w tym roku specjalnie wymieniałem pod to M5 Maxa, specjalnie wziąłem pod ten cel. Ty wiesz co, ale jak popatrzę, to jest ciekawe. Ja już nie powiedziałbym, że one są takie głupie w ogóle. Nie, nie, nie, to było w cudzysłowie. Głupsze. Może tak. Głupsze tak, ale wiesz co, to taka rzecz... Może trochę prostsze. ...prostsze. Polecam tego nowego Qwena, najnowszego. On naprawdę... On jest niesamowity. Tak, w sensie jakość tego... Ten Gemma od Google'a też robi w ogóle ten... Ja testowałem właśnie Open Mercato ostatnio w ogóle na takim bardzo... Bardzo mały modelu, gdzie można by było powiedzieć, że jest trochę głupi, czyli GPT-20 OSS od OpenAI. On działa na naprawdę takich słabych komp, znaczy słabych, nie wiem, 32 giga RAM-u, to w czasach AI jest słaby komp, ale działa to dobrze na moim laptopie i powiem Wam, że on nie umie tak szerzej patrzeć.
Te skilly nas bardzo interesują. Słuchaj, no... To wszystko ewoluowało razem z naszą wiedzą, doświadczeniem, ale przede wszystkim też tym, jak się zmieniają te agenty kodujące, no bo sama idea Open Mercato, we wrześniu zaczęliśmy projekt, wtedy wyszedł kodeks 5.1, tak mi się wydaje, i klot był chyba 4.5. Za szybko to idzie, zostawmy konkretne wersje. Tak, wersje są już nieważne. Ale wiedzieliśmy, koło tych wersji, to pewnie też słuchacze i pewnie wy też potwierdzicie, że tam no był taki jakiś, kurczę, przełom jakościowy. Było, wiesz co, opust 4,5 był takim... Dokładnie. Tam był skok, nie? Takim już drastyczny, o tak. To był drastyczny skok, że po prostu od tego momentu kod, który te agenty generują, Przyjmijmy, że one są jakościowo bardzo podobne do siebie.
W ogóle chcemy przejść na agent-browser, bo on dużo jest wydajniejszy, bo nie robi screenów, tylko zrzut tego accessibility, więc to jest fajna sprawa. Jakaś weryfikacja każdego taska. No i jak poświęcić ten czas, żeby zrobić to planowanie, takie bardzo już granularne, to później naprawdę można odpalić to w pętli. Pętlę można robić w różny sposób. Ja ogólnie robię pętlę w ramach samego agenta, czyli na przykład w Clodzie możesz powiedzieć coś takiego, że jesteś koordynatorem zadań, odpalaj sobie subagenty na taski, które ze sobą nie koalidują, albo po prostu po kolei, aż skończysz. Najdłuższa pętla, cztery dni. Moje takie już ośmiogodzinne widzę, że wymiegają. Nie, powiem wam, że to naprawdę była długa wtedy tam pętla i to był cały jakiś tam framework taki duży do Open Mercato doimplementowywaliśmy.
Wiesz co, mamy dużo takich rozkminek i ci więksi klienci to zawsze o to pytają. Tutaj tak naprawdę jest parę opcji. Jedna opcja jest taka, że można Open Mercato podzielić na osobne apki, bo te moduły mają bardzo zunifikowany standard i one w założeniach i w naszym harnessie nie mogą od siebie zależeć wprost. Czyli jeden moduł nie może z drugiego tam zaciągać. To do tego jeszcze może dojdziemy. To tylko mówię dlatego, że jakby jedną opcją jest takie skalowanie wertykalne tej apki. Czyli można, nie wiem, moduł produktów odpalić na jednym serwerze, tamten moduł na innym serwerze. Baza danych, no Postgres to też łatwa jest dosyć do skalowania takiego przez jakiś Sharding, Master Slave, albo w ogóle Sharding.
Plus jest ten Redis, mamy kolejki, system kolejek, więc jakby tam nie ma raczej takich problemów, że to nie da się skalować, bo to jest mega standardowe. Plus jakby to, co jest w repo, to co sobie ludzie odpalają i widzą, no to jest jakby panel admina, tak? Kind of. Jeżeli ktoś chce zrobić aplikację front-endową z Open Mercato jako panel mianowania, to w ogóle zajebiście i to super działa. I też jest taka opcja, że tamte rootsy takie front-endowe mogą być. By the way, na YouTube naszym jest tutorial właśnie z zeszłego tygodnia, jak coś takiego zrobić, że landing page, gdzie leady wpadają do CRM-a w Open Mercato. Ale można też użyć Open Mercato w wersji takiej właśnie headless, czyli jakby ten frontend to może być zupełnie inna apka, która się skaluje zupełnie jakoś inaczej i korzysta tylko z naszego backendu przez API.
Eventy i tak dalej. Czyli inaczej, tych mechanizmów jest dużo. Harness jest tak skonstruowany, że jak jesteś w trybie standalone app, czyli mamy takie CLI właśnie, Create Mercato App, nazwa apki i on wtedy stawia Ci puste repo w sumie z jednym plikiem TSX i package JSON wciąga przez npm całe Open Mercato po prostu jako pakiet npm. To w tym trybie, jak jesteś, to Harness AI jest inny niż w trybie Monorepo, czyli rozbudowy Cora, bo ten w Korze to jest taki pod Cora, że tam gdzie co jest. A w tym Standalone to jest bardziej opisane, że tu jest mechanizm eventu, tu jest mechanizm nadpisywania. Czyli jak chcesz coś zrobić, to ten agent będzie starał się nie modyfikować Cora, tylko właśnie użyć tych mechanizmów, żeby osiągnąć efekt.
Są dwie wartości. Pierwsza, tam są po prostu płatne moduły. Tam są takie moduły typu zaawansowany rekordlocking z optymistycznym merge'owaniem zmian, że jak dwie osoby edytowały ten sam rekord, to tam się nie wypierdzieli, tylko pokazuje, że tutaj se zmerge'uj. Coś jak Google Docs, że tam można pracować na jednym tym. I to jest fajna funkcja. Dużo ludzi o nią pyta i ona tam faktycznie w tym Enterprise jest. A druga to jest tam rzeczy związane z security i jest tam kilka. Tu factor authorization, ale też SSO. Takie wiecie, Enterprise bardziej rzeczy, co nie? To jest jedna rzecz. Druga rzecz to audyty, homologacje. My mówimy coś takiego, no słuchajcie, używacie Open Mercato zajebiście, robi wam to partner albo sami sobie dewelopujecie ekstra, to tak jakbyście budowali swojego kampera, co nie?
Czyli zrobimy code review, testy, sprawdzimy czy ten kod dopisany jest zgodny z architekturą Open Mercato, nie psuje Cora i tak dalej. I powiem wam, że to trafia. W sensie ci klienci mówią, kurczę, no ma to sens, bo w zeszłym tygodniu u nas pan Darek zrobił tam vibe-codingiem, wszystko działało, a potem baza znikła. To teraz jak wam zapłacimy, to wy sprawicie, że nie zniknie. A my mówimy, no dokładnie tak, bo my to w zasadzie zapewniamy. Więc jest do kogo się potem zwrócić w razie czego, jak jest problem. Znaczy gracie delegacją ryzyka po prostu. Trochę tak, ale to jest taka faktyczna wartość, że ten support jest. A druga rzecz, pomyślałem, że to nie będzie tak dobrze działało, a dobrze to działa dosyć, że ludzie mówią faktycznie, macie ten moduł od security, w tym enterprise, to my musimy kupić
Bo nam to jest po prostu potrzebne. Ja myślałem, że to będzie mniejsza wartość, dlatego że... SSO jest super wartość. Tak, ale ja myślałem, wiesz co, że ludzie będą nawet sami to jakoś budować, nie? Ale ludzie nie chcą tego dotykać, nie? Nie chcą tego dotykać, kurczę. Mnie rozwaliło, wiesz, jak zobaczyłem, że któreś ministerstwo, Pewnie kojarzysz lepiej, bo ja tylko kojarzę, jak zacząłem z któregoś ministerstwa, że szukają partnera do zrobienia jakiegoś rejestru czy czegoś takiego. Było zapytanie na zrobienie na Open Mercato, jako open source'owym systemie, jakiegoś systemu do obsługi kancelarii. I wiem, bo słyszałem od firmy, która wygrała, bo to nie był przetarg, ale takie zapytanie. To było zapytanie, tak, w formie zapytania. I robią tego poca.
W ogóle jestem mega dumny, że nasz software będzie używany przez rządową jakąś tam instytucję. Słuchaj, to teraz powoli kończymy i takie spojrzenie wstecz. No bo sam wiesz, że zaczynaliście Open Mercato już jakiś czas temu. Teraz, gdybyś miał zacząć teraz od zera, co byś zmienił? Jakie wnioski i jak by to wyglądało? Szybciej, wolniej? Co by się działo? Wydaje mi się, żebym przeszedł... Jedyne, co bym zmienił, to bym zaczął od razu od spec-driven development, bo zaczęliśmy to robić po dwóch, trzech miesiącach. To i tak szybko. No i tak szybko, ale gdzieś tam ileś rzeczy powstało bez tego i teraz to nie chodzi o to, że one są jakieś złe, to jest wszystko git, tylko bardziej na tej zasadzie, że no nie mamy na przykład tych specek, aby się przydały. Bo czasami jak robimy nowe specki, no to faktycznie te stare specki są mega w użyciu.
Przy czym, jak sobie zobaczycie na repo, to ilość dokumentacji w Open Mercato wydaje mi się, że ona bije w ogóle jakieś wszystkie inne systemy, nawet Enterprise, bo Wiadomo było zawsze, że jak się robi duży system, to trzeba utrzymywać repozytorium ADR, że Architecture Decision Record itd. Tylko nikt tego potem nie robił, albo nie aktualizował. Tam były stare rzeczy, co jest jeszcze gorsze, niż jakby nie było ich w ogóle czasami. A my to mamy, bo LLM to po prostu robi. I czyta. No to właśnie, i czyta. To jest właśnie niesamowite. Jestem ciekaw jednego, do czego dojdziecie, to co ja będę obserwował, czyszczenia tej dokumentacji, bo to będzie... Bo to będzie ten biały kontekst. Raczej, wiesz, jestem ciekaw tego, bo będzie ten moment, że będzie trzeba pewnie usuwać z repo historyczną dokumentację.
Ale czy możesz im wszystko zlecić? Pewnie możesz im coraz więcej zlecić, ale czy chcesz? W sensie jaka będzie na końcu twoja rola jako architekta albo po prostu twórcy? Ja na przykład robię ten code review, to się łapie na tym, że ja go nie robię dlatego, że ja tam wychwytuję faktycznie błędy. Znaczy zdarza się, tak? Zdarza się, że wychwytuję, ale to się bardziej zdarza. A czemu to robię ciągle? Dlatego, że ja chcę wiedzieć, co jest w moim systemie. To jak przyjdzie klient i mnie zapyta, czy my mamy tam szyfrowanie czy coś tamten, to ja chcę wiedzieć, że faktycznie mamy, że to działa i ja to dlatego czytam. I bez tego nie uważałbym Open Mercato za swój system, a dzięki temu mówię szczerze, tak wiem, co tam jest. Ja to osobiście widzę jako taką rolę właśnie takiego team-lidera, który ma dowolną ilość deweloperów, kiedy chce.
Pokazano wszystkie 21 dopasowań. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.
Piotr Karwatka wyjaśnia, jak Open Mercato wykorzystuje AI do generowania kodu i dostosowywania się do potrzeb klienta.
Kontynuacja omówienia AI Engineering Foundation Framework i jego zastosowania w Open Mercato.
Piotr opisuje proces deweloperski, w tym role agenci kodującego i harnessu AI w Open Mercato.
Rozmowa o optymalizacji procesu deweloperskiego w Open Mercato, w tym użyciu małych modeli AI.
Piotr opisuje testowanie procesu deweloperskiego i ewolucję Open Mercato wraz z zmianami w modelach AI.
Kontynuacja omówienia spec-driven development i korzyści z monorepo w Open Mercato.
Piotr opisuje proces planowania i refactoringu speck w Open Mercato, w tym podział na fazy i taski.
Rozmowa o eksperymentach z procesem deweloperskim w Open Mercato, w tym użyciu serwera zdalnego do monitorowania procesu.
Rozmowa o planowaniu czyszczenia dokumentacji i zarządzaniu skillami w Open Mercato.
Rozdziały i streszczenia generowane automatycznie. Pełna transkrypcja nie jest publikowana — wyszukaj frazę, aby zobaczyć dopasowane fragmenty.
Kliknij, aby znaleźć fragmenty, w których pada.