Dyscyplina w kodowaniu z AI — dlaczego liczą się ustrukturyzowane prompty i Contracts
Prawidłowa konfiguracja AI
Kodowanie wspomagane przez AI rodzi realne, często pozostające bez odpowiedzi pytania: jak skonfigurować AI i jego poszczególne Agents, aby wszystko działało poprawnie, nie psując istniejącego już kodu i logiki? Refaktoryzacja nigdy nie może zniszczyć struktury, która już istnieje w bazie kodu.
Co jest najważniejsze dla AI
- Precyzyjny, szczegółowy prompt — im jaśniej opisano wymaganie, tym lepiej jest ono wykonane.
- Podział pracy na mniejsze, drobnoziarniste kroki z weryfikacją po każdym z nich daje lepsze wyniki niż jeden duży prompt.
- Ograniczanie halucynacji — AI ma tendencję do wybierania najbliżej brzmiącej opcji na podstawie dopasowania słów kluczowych, nawet gdy nie odpowiada ona faktycznemu wymaganiu.
- Osadzenie logiki biznesowej i jawnych ograniczeń „czego nie wolno zepsuć" w prompcie daje lepsze wyniki niż sam prompt z testami jednostkowymi.
- Testy jednostkowe, integracyjne i end-to-end służą potwierdzeniu, że dana zmiana nie zepsuła funkcjonalności poza zakresem samego Task.
Co AITM dodaje do standardowego Agent AI
- Contracts, elementy DOM, łańcuchy zachowań i opisy logiki biznesowej, do których zwykły Agent AI nie ma dostępu.
- Tasks generowane z Chat lub Brainstorm wykorzystują Contracts, dokumentację i behawioralną logikę biznesową, aby szybko zlokalizować części kodu, których nie wolno zmieniać, i wstrzyknąć odpowiednią logikę biznesową do promptu, zanim AI cokolwiek ruszy — w efekcie powstaje prompt dopasowany do AI, z minimalną halucynacją i najlepszą możliwą implementacją.
- Prompty otrzymują też Skills i konkretne Contracts, co pozwala precyzyjnie ukierunkować Task na istniejące wzorce kodowania i istniejącą logikę biznesową, poprawiając dopasowanie zmiany do bieżącego kodu.
- Każdy Task Pipeline jest generowany zgodnie z typem żądania — Bug, Enhancement lub Feature — i dla każdego typu jest inaczej wykonywany i weryfikowany w Pipeline, co utrzymuje stale wysoką jakość kodu.
- Duże wymagania są dzielone na mniejsze, zależne od siebie Tasks, które budują jeden na drugim; ostatni Task w łańcuchu weryfikuje, że wszystkie zostały utworzone poprawnie i precyzyjnie.
- Duże lub nielogiczne zmiany powodują zatrzymanie Task, wymagając od człowieka (lub mocniejszego modelu) potwierdzenia, że zmiana jest faktycznie poprawna, zanim będzie kontynuowany.
- Krok Architect zbiera informacje o tym, co i gdzie się zmieni, analizuje metryki pokrycia kodu i dokładnie zapisuje, co się dzieje — nic więcej, nic spekulatywnego.