Spróbowałem vibe coding z Gemini CLI.
Żeby było zabawnie poprosiłem je o napisanie mi czegoś podobnego do Gemini CLI, ale działającego z lokalnym modelem.
Myślałem o Codellama i Deepseek-r1, okazało się, że mniejsze modele z Codellama i Deepseek-r1 nie dawały w ogóle rady, ale już Codellama 34b, coś tam daje radę...
Zacząłem od prompta, który wytłumaczył, że chcę zbudować coś podobnego do Gemini CLI, ale z lokalnym modelem i że żeby dostać się do tego modelu to może używać kodu modułu mistral.py, który mu dałem. Wytłumaczyłem też, że powinien dodać do kodu fragmenty pozwalające na wykonywanie funkcji takich jak zapisanie pliku, przeczytanie pliku i uruchomienie komendy. Jako testu kazałem Gemini CLI instruować tworzonego agenta, że ma stworzyć plik z kodem w Pythonie, który stworzy program do liczenia Pi metodą Monte Carlo.
Zacząć działać, a ponieważ budowa agenta nie jest czymś co zostało oprogramowane już wiele razy to model, którego używa nie ma raczej duże wiedzy o tym...
Wygenerował kod i tu był pierwszy problem ;-) bo postanowił uruchomić agenta, ale jak go uruchomił to nie miał możliwości interakcji z nim ;-) bo przecież Gemini CLI to NPM i 1 wątek...
Przerwałem mu, wytłumaczyłem problem i zaproponowałem zrobienie wersji z serwerem HTTP, która będzie słuchać i odpowiadać, a on będzie mógł gadać do niej cUrlem...
Spodobało mu się, przepisał kod.
Uruchomił, wysłał cUrla i okazało się, że mu nie działa...
Zaczął debugować i z uporem maniaka prosił mnie o to żebym ręcznie włączył lub wyłączył serwer... wytłumaczyłem, że przecież sam to może robić... stwierdził, że fakt, i zaczął uruchamiać serwer w background (z &), a później killować go z pkill...
Problem był taki, że model zwracał kod, ale tworzony agent nie chciał go zapisać na dysk... czyli najpierw Gemini CLI kilka razy sam chciał ten kod zapisać do pliku, wyjaśniłem w końcu mu grzecznie, że oszukuje, że to ma zrobić agent.
Więc zaczął go poprawiać, uruchamiać, zabijać... uznał, że musi zrobić debug... tu miał masę problemów, jednym z nich było to, że znów żeby móc widzieć output serwera HTTP to musiał go uruchomić... ale w foreground, więc nie mógł wysłać cUrlem nic, bo wisiał ;-)
W końcu mu przerwałem i zaproponowałem, że może lepiej będzie użyć przekierowania do pliku, ba że może przecież przekierować do pliku output z serwera i z cUrla i porównać...
Sam też sprawdziłem kod i okazało się, że w prompt'cie tłumaczył modelowi, że ma komendy owijać w <<CMD>> </CMD>>, ale w kodzie szukał końcowego znacznika <</CMD>> więc go tam nie było...
W międzyczasie sam wymyślił, że lepiej od przekierowywania strumienia użyć biblioteki logging ;-)
Wypalił w trakcie całą pulę tokenów/requestów do lepszego modelu, przełączył się na gemini-2.5-flash i spalił 63% contextu.
W końcu zrobił jakąś pierwszą wersję agenta, która umie pisać na dysku i która stworzyła plik z kodem liczącym Pi metodą Monte Carlo, ale już uruchomić tego nie umiał... a w końcu chciał nadpisać plik "example content" ;-)
Często blokował się na czymś trywialnym i trzeba mu to było tłumaczyć jak "bardzo tępemu juniorowi", chociaż bardziej komuś kto niby kojarzy, że kod można pisać, ale jest pozbawiony jakichkolwiek zdolności do rozwiązywania problemów ;-)
Z tym, że parę lat temu nawet w to miejsce by nie można było dotrzeć ;-)