Proste oszacowanie kosztów budowy AI: przewiduj kredyty i tokeny na funkcję, określ zakres promptów i unikaj poprawek, aby aplikacja pozostała w budżecie.

Budowanie z pomocą AI wydaje się tanie — aż nagle przestaje. To dlatego, że nie płacisz za stałą cenę funkcji. Płacisz za próby: wiadomości, wygenerowany kod, poprawki, testy i powtórki. Gdy plan jest nieostry, liczba prób szybko rośnie.
Większość skoków kosztów wynika z kilku powtarzalnych wzorców:
Podczas szacowania bądź jasny co do tego, na co właściwie przeznaczasz budżet:
Traktuj każde oszacowanie jako przedział, nie pojedynczą liczbę. Funkcja może wyglądać na małą w UI, a być dużą w logice, albo odwrotnie. Najlepszy scenariusz to mocny pierwszy szkic. Najgorszy — kilka pętli poprawek.
Reszta tego przewodnika używa powtarzalnych koszyków funkcji: auth, CRUD, integracje i przebudowy UI. Jeśli używasz platformy rozliczanej kredytami typu vibe-coding, takiej jak Koder.ai (koder.ai), szybko to poczujesz: rozpoczęcie od „zbuduj dashboard” i późniejsze dodawanie ról, logów audytu i nowego układu spala znacznie więcej kredytów niż spisanie tych ograniczeń z góry.
Ludzie często mieszają trzy różne pojęcia: tokeny, kredyty i kroki budowy. Rozdzielenie ich ułatwia przewidywanie kosztów.
Token to mały kawałek tekstu, który model czyta lub pisze. Twój prompt używa tokenów, odpowiedź modelu używa tokenów, a długa historia czatu zużywa tokeny, bo model musi ją ponownie przeczytać.
Kredyt to jednostka rozliczeniowa Twojej platformy. Na narzędziach takich jak Koder.ai kredyty zwykle obejmują użycie modelu plus pracę platformy stojącą za czatem (np. uruchamianie agentów, tworzenie plików i sprawdzanie wyników). Nie musisz znać wewnętrznych szczegółów, aby budżetować, ale musisz rozpoznać, co zwiększa użycie.
Krok budowy to jedno sensowne zmiany w projekcie: „dodaj logowanie emailowe”, „stwórz tabelę users” albo „podłącz ten ekran do endpointu”. Pojedyncza funkcja często wymaga wielu kroków, a każdy krok może wywołać wiele wywołań modelu.
Użycie rośnie najszybciej, gdy masz długi kontekst (obszerne specyfikacje, dużą historię czatu, wiele plików odniesienia), dużo iteracji, duże wyniki (przepisywanie całych plików, duże bloki kodu) albo niejednoznaczne prośby, które zmuszają model do zgadywania.
Małe zmiany w promptach mogą znacząco zmienić koszty, bo wpływają na liczbę koniecznych poprawek. „Kompletny system auth” zaprasza do wielu opcji, których nie prosiłeś. „Email i hasło tylko, bez logowania społecznościowego, dokładnie dwa ekrany” redukuje ruchome elementy.
Zasada, która się sprawdza: im mniej ruchomych elementów, tym mniej poprawek.
Przestań szacować w „ekranach” lub „wiadomościach”. Szacuj w funkcjach, które użytkownik nazwałby na głos. To łączy budżet z rezultatami, a nie z tym, jak rozmowna stanie się budowa.
Dla każdej funkcji oszacuj trzy części:
Większość przekroczeń budżetu dzieje się podczas testowania i poprawek, nie przy pierwszym szkicu.
Użyj zakresu dla każdej części: niski (proste), typowy (trochę wymiany) i wysoki (niespodzianki). Jeśli Twoja platforma rozlicza kredytami, śledź to w kredytach. Jeśli śledzisz tokeny bezpośrednio, śledź tokeny. Cel jest ten sam: prognoza, która pozostaje uczciwa, gdy rzeczywistość się zmienia.
Dwie pozycje pomagają zapobiec samozadawnym przekroczeniom:
Bufor nieznanych (10–20%) jako własna pozycja. Nie ukrywaj go w funkcjach.
Późniejsze zmiany na żądanie jako osobna pula dla nowych pomysłów po zaakceptowaniu funkcji ("dodaj zespoły", "zrób dashboard jak X"). Jeśli tego nie oddzielisz, obwinisz pierwotne oszacowanie za normalne zmiany.
Oto lekki szablon, który możesz skopiować:
Feature: Password login
- Build: low 30 | typical 60 | high 120
- Test: low 15 | typical 30 | high 60
- Revise: low 10 | typical 20 | high 40
Subtotal (typical): 110
Buffer (15%): 17
Later changes (held): 50
Powtórz to dla każdej funkcji (auth, CRUD, integracja, odświeżenie UI). Sumuj używając „typowy” dla planu i „wysoki” jako kontrola najgorszego scenariusza.
Auth i CRUD wyglądają prosto, ale stają się drogie, gdy zakres jest niejasny. Traktuj je jak menu: każda opcja dodaje koszt.
Zapisz, co oznacza „gotowe” dla kontroli dostępu. Największe czynniki to liczba metod logowania i liczba ścieżek uprawnień.
Bądź konkretny w kwestiach:
Jeśli powiesz tylko "dodaj auth", otrzymasz ogólne rozwiązanie i później zapłacisz za łatki uwzględniające przypadki brzegowe. Decydowanie o kształcie z góry jest tańsze.
Koszt CRUD zależy od liczby encji i ilości zachowań dla każdej z nich. Praktyczny model: każda encja często implikuje 3–6 ekranów (lista, szczegóły, tworzenie, edycja, czasem widoki admina lub audytu), plus pracę API i walidację.
Podczas zakresowania CRUD nazwij encje i uwzględnij pola, typy i reguły walidacji (wymagane, unikalne, zakresy). Następnie zdefiniuj zachowanie listy: filtry, sortowanie, paginacja i wyszukiwanie. „Wyszukiwanie” może znaczyć prosty filtr zawierający lub coś znacznie cięższego.
Zdecyduj też, czy ekrany admina różnią się od ekranów użytkownika. Osobne layouty, dodatkowe pola i akcje masowe mogą podwoić pracę.
Przypadki brzegowe, które szybko podnoszą koszty, to uprawnienia na poziomie wiersza, logi audytu, import/eksport CSV, soft delete i workflowy zatwierdzania. Wszystko to jest wykonalne, ale budżet pozostaje przewidywalny, gdy explicitnie wybierzesz, co chcesz przed generowaniem funkcji.
Integracje wydają się drogie, bo kryją pracę. Naprawa to rozbicie ich na małe, testowalne kroki zamiast „połącz z X”. To sprawia, że oszacowanie jest bardziej przewidywalne i daje czystszy prompt.
Solidny zakres integracji zwykle obejmuje:
Zanim wyślesz prompt, zablokuj kontrakt danych. Wypisz obiekty i dokładne pola, których potrzebujesz. „Synchronizuj klientów” jest niejasne. „Synchronizuj Customer{id, email, status} i Order{id, total, updated_at}” powstrzyma model przed wymyślaniem dodatkowych tabel, ekranów i endpointów.
Potem zdecyduj kierunek i częstotliwość. Synchronizacja jednokierunkowa (tylko import) jest znacznie tańsza niż dwukierunkowa, bo dwukierunkowa potrzebuje reguł konfliktów i więcej testów. Jeśli musisz robić dwukierunkowo, wybierz regułę nadrzędności z góry (źródło prawdy, last-write-wins lub przegląd manualny).
Planuj obsługę błędów jakby była pewna. Dziennik zdarzeń plus alert i przycisk "ponów synchronizację" ręcznie często wystarczy. Utrzymanie minimalności zapobiega płaceniu za pełny system operacyjny, o który nie prosiłeś.
Na koniec dodaj bufor na dziwactwa zewnętrznego API i testy. Nawet "proste" API przynoszą paginację, nietypowe enumy, niespójne dokumentacje i limity. Doliczenie dodatkowych 20–40% na testy integracji i poprawki jest realistyczne.
Prace UI to miejsce, gdzie budżety cicho przeciekają. „Redesign” może oznaczać wymianę kolorów lub przebudowę całego przepływu, więc nazwij, co się zmienia: układ, komponenty, treści czy kroki użytkownika.
Oddziel zmiany wyłącznie wizualne od zmian wpływających na zachowanie. Zmiany wizualne dotykają stylów, odstępów i struktury komponentów. Gdy zmieniasz działanie przycisku, walidację lub sposób ładowania danych, to jest praca funkcjonalna.
Unikaj „przebudowy całej aplikacji.” Wypisz dokładne ekrany i stany. Jeśli nie potrafisz wymienić stron, nie oszacujesz.
Trzymaj zakres krótki i konkretny:
Taki prompt powstrzymuje model przed zgadywaniem projektu w całej bazie kodu, a to właśnie powoduje wymiany.
Zmiany UI zwykle potrzebują co najmniej dwóch kontroli: desktop i mobile. Dodaj szybkie podstawy dostępności (kontrast, stany fokusu, nawigacja klawiaturą), nawet jeśli nie robisz pełnego audytu.
Praktyczna metoda szacowania to:
(liczba stron) x (głębokość zmian) x (liczba rund)
Przykład: 3 strony x średnia głębokość (nowy layout + poprawki komponentów) x 2 rundy (budowa + dopracowanie) to przewidywalny kawałek kredytów. Jeśli dodatkowo zmieniasz onboarding, potraktuj go jako osobną pozycję.
Najtańszy sposób kontrolowania kredytów to zdecydować, czego chcesz, zanim poprosisz model o budowę. Rework to miejsce, gdzie koszty skaczą.
Zacznij od jednego akapitu określającego użytkownika i cel. Na przykład: „Recepcjonistka małego gabinetu loguje się, dodaje pacjentów, umawia wizyty i widzi listę na dziś.” To ustawia granice i zniechęca model do wymyślania dodatkowych ról, ekranów czy przepływów.
Następnie opisz produkt jako ekrany i akcje, nie jako ogólne moduły. Zamiast "moduł wizyt", napisz "Ekran kalendarza: utwórz, przełóż, anuluj, wyszukaj." To sprawia, że praca jest policzalna.
Dołącz tylko dane niezbędne. Nie potrzebujesz jeszcze wszystkich pól, tylko tych, które czynią funkcję realną. Mocny prompt zwykle zawiera:
Kryteria akceptacji zapobiegają płaceniu dwa razy. Dla każdej funkcji napisz 2–4 checki jak "Użytkownik może zresetować hasło przez email" albo "Tworzenie wizyty zapobiega podwójnemu terminowi." Jeśli używasz Koder.ai, te checki naturalnie pasują do Trybu Planowania przed generowaniem kodu.
Bądź explicity o elementach poza zakresem: "bez panelu admina", "bez płatności", "bez wielojęzyczności", "bez synchronizacji z zewnętrznym kalendarzem." To powstrzyma niespodziewane prace typu "miło by było".
Buduj w małych kawałkach i przeszacowuj po każdym kawałku. Prosty rytm: wygeneruj jeden ekran lub endpoint, uruchom go, napraw problemy, potem idź dalej. Jeśli kawałek kosztuje więcej niż oczekiwano, obetnij zakres lub zmniejsz następny kawałek zanim odpłyniesz.
Większość skoków kosztów wynika z robienia za dużo w jednym zapytaniu. Traktuj model jak współpracownika: briefuj go w małych, jasnych krokach.
Zacznij od planu, nie od kodu. Poproś o krótki plan budowy z założeniami i otwartymi pytaniami, potwierdź go, a potem poproś o pierwszy mały krok implementacyjny. Gdy w jednym promptcie łączysz planowanie, budowę, testowanie, copywriting i stylizację, zapraszasz długie odpowiedzi i więcej błędów.
Utrzymuj kontekst zwarty. Dołącz tylko ekrany, komponenty lub notatki API, które mają znaczenie dla zmiany. Jeśli używasz Koder.ai, wybierz konkretne pliki i odnoś się do nich po nazwie. Dodatkowe pliki zwiększają tokeny i wciągają zmiany w niepowiązane obszary.
Proś o małe różnice. Jeden prompt powinien zmieniać jedną rzecz kiedy to możliwe: pojedynczy endpoint, jeden formularz, jeden stan błędu, jeden ekran. Małe zmiany są łatwiejsze do przeglądu, a jeśli coś pójdzie nie tak, nie płacisz za ponowne robienie niepowiązanej pracy.
Zestaw prostych zasad:
Przerywaj pętle wcześnie. Jeśli druga próba nadal nie jest dobra, zmień dane wejściowe, nie tylko sformułowanie. Dodaj brakujący szczegół, usuń sprzeczne wymaganie albo pokaż dokładny przypadek, który zawodzi. Powtarzanie „spróbuj jeszcze raz” często pali tokeny bez przybliżania rozwiązania.
Przykład: chcesz "logowanie + zapomniane hasło" i ładniejszy layout. Zrób to w trzech promptach: (1) nakreśl przepływy i wymagane ekrany, (2) zaimplementuj tylko auth, (3) dopracuj odstępy i kolory UI. Każdy krok jest łatwiejszy do przeglądu i tańszy.
Większość przekroczeń nie wynika z dużych funkcji. Pochodzą z małych luk w zakresie, które mnożą potrzebę dodatkowych rund promptów, więcej wygenerowanego kodu i więcej poprawek.
Budowanie zanim uzgodnisz, co to znaczy "gotowe"
Jeśli generujesz kod bez kryteriów akceptacji, zapłacisz za przepisywanie. Napisz 3–5 checków najpierw: co użytkownik może zrobić, jakie błędy się pokażą, jakie dane muszą być zapisane.
Używanie niejasnych słów
"Nowoczesne", "ładne" i "ulepsz to" zapraszają długie rundy. Zastąp je konkretami, np. "układ dwukolumnowy na desktopie, kolumna pojedyncza na mobile" albo "kolor przycisku primary #1F6FEB."
Upychanie wielu funkcji w jednym promptcie
"Dodaj auth, dodaj billing, dodaj panel admina" utrudnia śledzenie zmian i szacowanie następnych kroków. Rób jedną funkcję na raz i proś o krótkie podsumowanie zmienionych plików.
Zmiana modelu danych późno
Zmiana nazw tabel, relacji lub kluczy w trakcie pracy wymusza edycje w UI, API i migracjach. Zablokuj podstawowe encje wcześnie, nawet jeśli niektóre pola pozostają "na przyszłość."
Pominięcie testowania aż do końca
Błędy zamieniają się w pętle regeneruj-napraw-regeneruj. Poproś o mały zestaw testów dla każdej funkcji, nie jeden ogromny test później.
Konkretny przykład: prosisz Koder.ai o "ulepszenie CRM" i on zmienia layouty, zmienia nazwy pól i poprawia endpointy w jednym kroku. Potem integracja przestaje działać, a Ty spalony kredyty na znalezienie, co się przesunęło. Jeśli zamiast tego powiesz "nie zmieniaj modelu danych, tylko zaktualizuj stronę listy, nie dotykaj tras API i przejdź te 4 checki", ograniczasz churn i trzymasz koszty stabilnie.
Traktuj budżetowanie jak planowanie małego projektu, nie jak pojedynczy magiczny prompt. 2-minutowy check łapie większość przyczyn przepalenia budżetu.
Przejdź przez te punkty i napraw każde „nie” zanim wygenerujesz więcej kodu:
Jeśli używasz Koder.ai, traktuj każdy kawałek jak punkt migawki: wygeneruj fragment, przetestuj go, a potem kontynuuj. Migawki i przywracanie są najbardziej przydatne przed ryzykownymi zmianami (edycje modelu danych, szerokie refaktory UI lub przepisywanie integracji).
Prosty przykład: zamiast promptu "Zbuduj zarządzanie użytkownikami", doprecyzuj do "Logowanie email/hasło, reset hasła wliczony, bez logowania społecznościowego, admin może dezaktywować użytkowników, testy dla logowania i resetu." Jasne checki redukują poprawki, a poprawki to miejsce, gdzie znikają tokeny i kredyty.
Oto mały, realistyczny przykład, który możesz skopiować. Aplikacja to narzędzie wewnętrzne dla zespołu: logowanie, dwa proste moduły i jedna integracja.
Załóżmy, że jeden "cykl budowy" to: krótki plan, wygenerowanie lub aktualizacja kodu, szybki przegląd i naprawa. Twoje kredyty głównie śledzą, ile cykli wykonujesz i jak duże są te cykle.
Lista funkcji dla narzędzia wewnętrznego:
| Feature | What's included | Low | Typical | High |
|---|---|---|---|---|
| Login + roles | Sign in, sign out, two roles (Admin, User), protected pages | 1 cycle | 2 cycles | 4 cycles |
| CRUD module 1 | "Employees" list, create/edit, basic validation, search | 2 cycles | 3 cycles | 6 cycles |
| CRUD module 2 | "Assets" list, create/edit, assign to employee, audit fields | 2 cycles | 4 cycles | 7 cycles |
| One integration | Send an event to an external service when an asset is assigned | 1 cycle | 2 cycles | 5 cycles |
Sekwencja promptów, która utrzymuje kontrolę checkpointów:
Koszty rosną, gdy zmieniasz decyzje po stworzeniu kodu. Typowe wyzwalacze to zmiany ról (nowe role lub ścieżki uprawnień), późne pola (zwłaszcza te, które dotykają obu modułów i integracji), błędy integracji (błędy uwierzytelniania, niezgodność payloadów) i redesign UI po stworzeniu formularzy.
Kolejne kroki: planuj funkcja po funkcji, buduj w cyklach i sprawdzaj kredyty po każdym cyklu. Używaj migawek przed ryzykownymi zmianami, aby szybko przywrócić stan i trzymać projekt w typowym przedziale.
Budżetuj w przedziale, ponieważ płacisz za próby, nie za stałą cenę funkcji. Koszty rosną z powodu:
„Mała” zmiana UI może być droga, jeśli wpływa na logikę, dane lub przepływy.
Tokeny to kawałki tekstu, które model czyta/pisze (Twój prompt, jego odpowiedź oraz historię czatu, którą musi ponownie przeczytać).
Kredyty to jednostka rozliczeniowa platformy (często obejmująca użycie modelu plus zadania platformy, takie jak uruchamianie agentów czy edycje plików).
Kroki budowy to znaczące zmiany w projekcie (dodanie tabeli, podpięcie ekranu, dodanie endpointu). Jedna funkcja zwykle wymaga wielu kroków, a każdy krok może wywołać wiele wywołań modelu.
Szacuj według funkcji, które użytkownik nazwałby na głos ("logowanie z hasłem", "lista pracowników", "przypisz zasób") zamiast "ekranów" czy "wiadomości". Dla każdej funkcji zaplanuj trzy części:
Następnie przypisz wartości: niski / typowy / wysoki i zsumuj.
Dodaj dwie oddzielne linie:
Trzymanie „późniejszych zmian” osobno zapobiega obwinianiu pierwotnego oszacowania za normalny wzrost zakresu.
Opisz, co oznacza „skończone” dla auth. Największe czynniki kosztowe to:
Jeśli chcesz przewidywalnych kosztów, domyślnie wybierz jedną metodę (email/hasło) i 1–2 role.
Koszt CRUD zależy od zachowań, nie tylko od tabel. Dla każdej encji zdefiniuj:
Jeśli dodasz import/eksport CSV, logi audytu, soft delete czy workflowy akceptacji, potraktuj je jako osobne pozycje w budżecie.
Rozbij „podłącz do X” na małe, testowalne kroki:
Zablokuj kontrakt danych (dokładne pola) zanim wygenerujesz kod, aby model nie wymyślał dodatkowych tabel i ekranów.
Zakresuj pracę UI jak listę stron i stanów:
Jeśli redesign zmienia walidację, ładowanie danych lub kroki użytkownika, potraktuj go jak funkcję, a nie "tylko UI."
Użyj zwartej struktury promptu:
Buduj małymi kawałkami (jeden endpoint albo jeden ekran naraz) i re-estymuj po każdej części.
Zatrzymaj się po dwóch nieudanych próbach i zmień dane wejściowe, a nie tylko słowa. Typowe poprawki:
Na końcu każdego kroku poproś o krótkie podsumowanie zmienionych plików, żeby wykryć niezamierzone zmiany.