Praca programisty zmienia się dynamicznie już od dekad, a od wielu lat niemal każdego miesiąca pojawiają się nowe narzędzia, biblioteki, standardy lub języki programowania. Niekiedy nawet tworzone są zupełnie nowe role lub całe dziedziny IT. Szybkość zmian z czasem tylko przybiera na sile, a ostatnie lata obfitują w niezliczoną liczbę nowych produktów związanych ze sztuczną inteligencją lub tworzonych z jej wykorzystaniem.
Coraz więcej firm z branży informatycznej korzysta z pomocy sztucznej inteligencji – nie inaczej wygląda sytuacja wśród programistów odpowiedzialnych za wytwarzanie oprogramowania. Korzystanie z takich narzędzi przez deweloperów jest coraz częściej nie tylko dozwolone, ale bywa także częścią standardowego procesu.
Wspomniane narzędzia, z których korzystają firmy i programiści, przestają być zwykłymi chatami w przeglądarce czy na telefonie. Coraz częściej stają się natomiast chatami oraz asystentami zintegrowanymi z IDE, a nawet agentami wspierającymi deweloperów w codziennej pracy. Ich możliwości obejmują zarówno odpowiadanie na proste pytania, jak i tworzenie gotowych funkcji programu lub projektowanie architektury całego systemu.
Twórcy narzędzi deweloperskich podążają za boomem na rozwiązania związane ze sztuczną inteligencją, oferując coraz większe wsparcie w korzystaniu z modeli językowych w swoich produktach. Firma JetBrains zapewnia integrację LLM-ów we wszystkich swoich największych IDE takich jak:
- IntelliJ IDEA,
- PyCharm,
- CLion.
Jeśli chcesz zacząć korzystać z pomocy AI w swojej codziennej pracy z IDE od JetBrains, zapraszam do dalszej lektury.
Tytułem wstępu
W poniższym artykule skupię się głównie na narzędziu CLion. Wynika to z faktu, że w swojej pracy najdłużej związany jestem z językiem C++ i technologiami popularnymi w tym ekosystemie, a wspomniane narzędzie dobrze sobie z nimi radzi. Korzystałem jednak także z PyCharm oraz IntelliJ Idea i tematy, które poruszę, powinny być aktualne również w innych IDE firmy JetBrains.
Dodatkowo informuję, że nie jestem w żaden sposób związany z firmą JetBrains, a po prostu lubię ich narzędzia. Opinie, które tutaj przedstawię, są moim osobistym zdaniem.
Integracja AI z IDE
Zazwyczaj mówi się, że pierwszy krok jest najtrudniejszy, jednak w tym przypadku jest on zdecydowanie najłatwiejszy.
Jeśli masz już za sobą instalację wybranego IDE od JetBrains na swoim komputerze, automatycznie masz także zainstalowanych zarówno asystenta AI jak i chat korzystający z LLM-a, co oznacza, że możesz zacząć z nich od razu korzystać! Oba narzędzia są w dużym stopniu zintegrowane z IDE, co zwiększa ich możliwości i ułatwia pracę z kodem.
Skorzystanie z chata wymaga otwarcia odpowiedniego okna i rozpoczęcia konwersacji. Można to zrobić, klikając ikonę widoczną w menu po prawej stronie okna Twojego środowiska programistycznego (Ryc. 1).

Asystent AI działa w tle i automatycznie analizuje kod znajdujący się w naszych plikach w projekcie. Podpowiada, co możemy zrobić lepiej, ułatwia i automatyzuje wprowadzanie poprawek oraz podążanie za ustalonymi wytycznymi kodowania. Potrafi nawet przywidywać, jaki kod moglibyśmy chcieć napisać na podstawie już stworzonego fragmentu, a następnie generuje go za nas, pozostawiając nam jednak ostateczną decyzję co do akceptacji zaproponowanego rozwiązania.
Chat pozwala na wykonywanie z jego pomocą, a nawet całkowicie przez niego, wielu codziennych czynności typowych dla pracy programisty. Dzięki temu możemy bardziej skupić się na rozwoju naszego oprogramowania na wyższym poziomie (np. projektując nowe funkcje), a pisanie kodu czy tworzenie dokumentacji zostawić narzędziu.
Jeśli nasze okno konwersacji jest puste, możemy zapoznać się z dostępnymi funkcjami chata oraz asystenta, z których mamy możliwość korzystania bezpośrednio w IDE. Wystarczy kliknąć przycisk „All features” lub wejść w opcje okna chata, a następnie wybrać „Discover Features” (Ryc. 2).

Otwarte w ten sposób okno pozwoli nam zobaczyć wszystkie (według autorów) funkcje sztucznej inteligencji dostępne w narzędziu (Ryc. 3). Dodatkowo dla każdej z nich zostanie nam przedstawiona krótka instrukcja, jak z danej funkcji skorzystać. Opis będzie zawierał kroki, które należy wykonać, a także skróty klawiszowe, dzięki którym praca może stać się jeszcze szybsza. Dla części instrukcji przygotowano także nagrania prezentujące działanie danej funkcji w praktyce oraz sposób jej wywołania (Ryc. 4).


Pierwsze kroki w automatyzacji pracy z AI Chatem
Poniżej prezentuję przykład działania AI Chata dla prostego przypadku, w którym poprosiłem go o wykonanie analizy podstawowego programu „Hello World” w języku C++ (Ryc. 5). Na podstawie tej analizy chat miał wygenerować dokumentację w formacie zgodnym z narzędziem Doxygen. Dzięki temu mogę zaoszczędzić czas na tworzeniu dokumentacji kodu i zająć się tworzeniem nowych funkcji mojego programu.

Chat bez problemu utworzył dokumentację, o którą go poprosiłem, stosując przy tym format wymagany przez Doxygen. Warto zwrócić uwagę, że przeanalizował nie tylko nagłówek funkcji, ale także jej treść, a nawet opisał znajdujące się w niej szczegóły. Choć czasami opis bywa zbyt szczegółowy, uważam, że mimo wszystko łatwiej ręcznie usunąć nadmiar detali po pracy narzędzia AI niż tworzyć dokumentację od zera.
Tak wygenerowany przez chat kod mogę włączyć do mojego programu na kilka sposobów. Wszystkie cztery opcje dostępne w tym momencie oznaczyłem czerwonym prostokątem na poniższym obrazie (Ryc. 6). Opiszę każdą z nich, zaczynając od strony lewej.

Opcja I
Pierwsza z opcji pozwala na automatyczne zastosowanie zmian w kodzie bezpośrednio w pliku źródłowym. Obecnie jest to funkcja w wersji beta, dlatego mogą występować pewne problemy – zalecam korzystanie z niej z zachowaniem ostrożności. Jednak jej dużym plusem jest fakt, że sugestia od chata wyświetla się w formie porównania koncepcyjnie zbliżonego do tego, co możemy zaobserwować podczas pracy z narzędziem GIT. Liczba funkcji jest znacznie mniejsza niż we wspomnianym programie, ale mimo to możemy zobaczyć, jak wyglądałyby zmiany naniesione na plik, zanim je zaakceptujemy lub odrzucimy.
Przykład dla wygenerowanej przez chata sugestii znajdziecie poniżej (Ryc. 7).

Opcja II
Druga opcja to skopiowanie całej sugestii AI Chata do schowka. Otrzymany wynik możemy następnie wkleić w wybrane przez nas miejsce, także gdzieś poza IDE. Określiłbym tę metodę jako częściową automatyzację najbardziej podstawowego sposobu wprowadzania zmian – metody Copy’ego-Paste’a, czyli tradycyjnego „kopiuj-wklej”.
Opcja III
Opcja trzecia to wklejenie sugestii wytworzonej przez chata w miejsce, w którym aktualnie znajduje się kursor naszej myszy w pliku.
Opcja IV
Ostatnia z możliwości umożliwia jednym kliknięciem utworzenie pliku z wygenerowanym przez chata kodem. Z moich obserwacji wynika jednak, że choć chat poprawnie wstawia wygenerowaną zawartość do pliku, nazwy tworzonych przez niego plików nie zawsze mają sens lub nie są zgodne z konwencjami przyjętymi w projekcie.
W zamieszczonym przypadku plik utworzony przez narzędzie otrzymał nazwę „hello_world_app.cpp”. Rozwiązanie tego problemu wymaga ręcznej ingerencji w proces twórczy AI, niemniej jednak wciąż może przyspieszyć naszą pracę.
Dołączanie znaczników zapytań
Warto dodać, że dzięki integracji z IDE AI Chat ma możliwość analizy struktury projektu i zawartych w nim plików. Oprócz tego możemy w łatwy sposób dodać do kontekstu naszego żądania więcej informacji, także spoza projektu. Na poniższej grafice (Ryc. 8) zaznaczyłem czerwonymi prostokątami trzy istotne fragmenty, które chcę omówić w kontekście dołączania załączników do zapytań.

Pierwsza sekcja zawiera informacje o tym, jakie załączniki zostały dodane podczas tworzenia wiadomości. Mogą być to elementy dodane ręcznie przeze mnie lub, jak w tym przypadku, dodane automatycznie przez IDE.
Drugi element to załączniki, które chat dodał sam do analizy podczas udzielania mi odpowiedzi na zadane pytanie. Możliwość tę możemy wyłączyć, wybierając opcję widoczną na załączonym zrzucie ekranu (Ryc. 9).

Trzeci obszar przedstawia możliwość ręcznego dołączania załączników do czatu podczas opisywania dla niego zadania. Dodać możemy pliki, grafiki, konkretne „commit-y”, a nawet kontekst okna interfejsu użytkownika IDE.
Konfiguracja chata i asystenta AI
JetBrains umożliwia korzystanie z wielu modeli językowych. Domyślnie dostępne są wśród nich LLM-y od największych graczy na rynku, m.in.:
Dodatkowo często występują w kilku różnych wersjach.
Wyboru modelu możemy dokonać z menu wbudowanego w oknie AI Chata w IDE. Gama LLM-ów do wyboru jest naprawdę szeroka, a do tego JetBrains umożliwił łatwą integrację z kolejnymi modelami dostarczanymi przez strony trzecie (Ryc. 10).

Wybór LLM-a to nie jedyna opcja konfiguracji dostępna w IDE. Możemy na przykład zawrzeć informację o tym, którymi technologiami jesteśmy zainteresowani w przypadku asystenta AI oraz określić, jakie działania ma wykonywać podczas analizy plików projektowych. Istnieje także sposób na zbudowanie biblioteki zapytań (tzw. promptów) dla naszego chata.
Do tych i wielu innych opcji mamy dostęp w sekcji Settings → Tools → AI Assistant (Ryc. 11).

A może czas zatrudnić agenta?
Przejdźmy od słów do czynów. Domyślnie funkcja AI Chat w IDE działa właśnie w trybie chatu. Oznacza to, że możemy prowadzić tu konwersację, prosić o analizę kodu lub dokumentów czy o przygotowanie rozwiązania zleconego zadania – narzędzie wciąż pozostaje jednak jedynie chatem.
Możemy rozszerzyć możliwości AI naszego narzędzia poprzez zastosowanie agentowego sposobu pracy, co dodaje sztucznej inteligencji więcej funkcji, z których może korzystać podczas wykonywania zadań. Funkcje te obejmują np.:
- uruchamianie testów lub programów,
- wykonywanie komend systemowych,
- generowanie kodu na pełną skalę.
Bazowo IDE sugeruje możliwość korzystania z jedynie kilku rozwiązań agentowych dostępnych na rynku – na ten moment jest to Claude od Anthropica, Codex od OpenAI, a także agent Junie stworzony przez JetBrains.
Dodatkowo warto nadmienić, że i tutaj firma dała użytkownikom dużą elastyczność w integracji kolejnych agentów – wspomnę o tym w dalszej części artykułu.
Zmiana trybu pracy z rozmowy na tryb agentowy odbywa się poprzez wybór konkretnego agenta, z którego chcemy skorzystać. Wymaga to jednak wykonania dodatkowych kroków, takich jak zaakceptowanie określonych warunków czy doinstalowanie specjalnej wtyczki danego agenta (informacja o wymaganych działaniach zostanie wyświetlona po wysłaniu pierwszej wiadomości w oknie chatu). Bez tego nie będziemy mogli korzystać z trybu agentowego, nawet jeśli wybierzemy jednego z agentów sugerowanych przez IDE (Ryc. 12).

Integracja innego agenta, dla którego istnieje wsparcie w postaci wtyczki dla naszego IDE, jest porównywalnie prosta i szybka. Podczas wyboru agenta należy wybrać ostatnią opcję, czyli „Install From ACP Registry…” – spowoduje to otwarcie okna ustawień, w którym będziemy mogli jednym kliknięciem zintegrować innego agenta, np. Cline (Ryc. 13).

Po instalacji wtyczki przyciskiem „Install” i zaakceptowaniu zmian przyciskiem „Apply” – a to jedyne kroki, jakie musiałem w przypadku agenta Cline wykonać – będzie on dostępny na liście agentów, z których możemy korzystać (Ryc. 14).

Tryby pracy i konfiguracja agenta AI
Możliwości dostosowania działania naszego agenta AI są dość ograniczone i sprowadzają się jedynie do wyboru kilku podstawowych opcji. Dodatkowo dostępne ustawienia zależą od konkretnego agenta, którego zdecydujemy się używać. Z tego powodu przed podjęciem decyzji warto zapoznać się z kilkoma różnymi agentami i sprawdzić, z którym pracuje się nam najlepiej.
Osobiście skupię się w tym przypadku na agencie Junie od JetBrains – jest on dostarczany przez autora IDE, dlatego liczę na najlepsze wsparcie w połączeniu z samym narzędziem. Dodatkowo wydaje się dawać największe możliwości łatwej konfiguracji w samym IDE, a także pozwala wybrać tryb pracy: rozmowy, kodowania lub decyzji automatycznej. Daje możliwość potencjalnego wydłużenia czasu „myślenia” modelu, z nadzieją na uzyskanie odpowiedzi lepszej jakości.
Dostępny jest również tryb pracy „Brave” dzięki, któremu agent będzie mógł wykonywać komendy systemowe bez naszej zgody – do tej ostatniej opcji podchodzę osobiście z dużym dystansem, choć rozumiem potencjalną chęć zwiększenia poziomu automatyzacji pracy agenta.
Konfigurację trybów pracy, o których wspomniałem, przeprowadzamy w części okna chatu zaprezentowanego na poniższej grafice (Ryc. 15).

Po instalacji wtyczki dla agenta Junie mamy możliwość jego bardziej szczegółowej konfiguracji. Przykładowo, możemy wybrać model językowy, z którego nasz agent będzie korzystał, wskazać ścieżkę do pliku z wytycznymi dla niego, wybrać technologie, na jakich ma się skupić, skonfigurować ustawienia dla serwera MCP czy wskazać, jakie komendy systemowe nasz agent
będzie mógł wykonywać bez naszej zgody. Wszystkie te opcje są dostępne w zakładce Settings → Tools → Junie (Ryc. 16).

Oprócz konfiguracji za pomocą opcji wystawionych w interfejsie użytkownika Junie umożliwia także korzystanie z tzw. umiejętności (ang. skills), czyli zdefiniowanych instrukcji, szablonów, skryptów i innych materiałów wykorzystywanych przez agentów do wykonania konkretnych zadań.
Różnica między nimi a wytycznymi (ang. guidelines) jest taka, że pierwsze wykorzystywane są jedynie do określonych typów zadań i dołączane opcjonalnie, te drugie natomiast zostają dołączone automatycznie do każdego zapytania, które wykonujemy.
Agent korzysta z umiejętności serwowanych w formacie Agent Skills, czyli ustandaryzowanym i powszechnym sposobie definiowania umiejętności dla agentów AI. Dzięki temu w internecie można znaleźć już gotowe rozwiązania, a skille są kompatybilne z różnymi agentami – to z kolei zapewnia nam przenośność naszej konfiguracji, jeśli zdecydujemy się na skorzystanie z innego rozwiązania niż Junie.
Dostępność i cennik
IDE od JetBrains dostarczają taką samą listę funkcji, z których możemy korzystać niezależnie od tego, czy posiadamy wersję komercyjną danego narzędzia, czy darmową.
Różnice pojawią się w kwestiach przetwarzania danych, prywatności i pozwolenia na prowadzenie działalności zarobkowej. Informacje takie można znaleźć na stronie producenta oprogramowania np. dla produktu CLion będzie to sekcja FAQ na stronie tego narzędzia.
Biorąc pod uwagę powyższe informacje, każdy może bezpłatnie wypróbować produkty JetBrains, aby sprawdzić, czy dane narzędzie odpowiada jego potrzebom. W ten sam sposób można również przetestować funkcje AI oferowane przez IDE. Warto jednak pamiętać o paru istotnych kwestiach, ponieważ JetBrains oferuje kilka planów cenowych dotyczących wsparcia sztucznej inteligencji.
Wersja darmowa udostępnia bardzo ograniczoną liczbę tokenów miesięcznie, ale zero złotych brzmi jak całkiem uczciwa oferta. Niestety, minusem może być brak możliwości skorzystania z agenta Junie. Warto również wziąć pod uwagę fakt, że bezpłatna wersja IDE może wysyłać na serwery JetBrains szczegółowe, choć zanonimizowane dane, natomiast wersja płatna zapewnia nad tym większą kontrolę.
Podsumowanie
Narzędzia wykorzystujące sztuczną inteligencję otaczają nas dzisiaj z każdej strony, a firmy na potęgę dokładają funkcji opartych na AI do swoich produktów.
Sprawia to, że sposób wykonywania przez nas pracy zmienia się, czy tego chcemy, czy nie. Jako programiści musimy zaadaptować się do rynku pracy i nowych sposobów wytwarzania oprogramowania, aby nie pozostać w tyle za pędzącym światem technologii. Im szybciej się na to zdecydujemy, tym lepiej dla nas – szybciej będziemy mogli opanować nowe procesy tworzenia rozwiązań IT oraz zwiększyć efektywność naszej pracy.
Mam nadzieję, że w jasny i przystępny sposób pokazałem, że w dzisiejszych czasach rozpoczęcie stosowania metod sztucznej inteligencji w codziennej pracy programisty jest relatywnie łatwe. Zwłaszcza jeśli zdecydujemy się skorzystać z rozwiązań doświadczonych firm IT takich jak JetBrains. Według mnie firma ta bardzo dobrze zintegrowała LLM-y oraz oparte na nich narzędzia ze swoimi produktami – mam tu na myśli zarówno chat, asystenta AI jak i agentów wykonujących zadania w dużej mierze za nas. Dziękuję za przeczytanie mojego pierwszego artykułu i bardzo zachęcam przynajmniej do wypróbowania dowolnego IDE z portfolio firmy JetBrains – można to zrobić za darmo i jednocześnie łatwo postawić swoje pierwsze kroki w świecie programowania wspieranego przez sztuczną inteligencję 😊
Zostaw komentarz