Every AI coding agent can spit out a diff. The real problem is knowing whether that diff came from a focused, deliberate process—or a frantic sweep across your repository that happened to stumble into correctness. Right now, most teams cannot tell the difference.
This is not a technical limitation. It is a visibility problem.
When an agent writes three lines of production code, it might have read three files and run the tests. Or it might have touched forty unrelated files, executed a dozen failed commands, skipped your test suite because the dependency install broke, and charged you for the privilege. The diff looks identical either way. Without a record of the journey, you are left guessing about the quality of the arrival.
Why Chat Logs Are Not Receipts
Many tools offer a chat transcript as proof of work. A transcript is not a receipt. It is a box of parts dumped on your desk. It contains every thought loop, every failed attempt, every system prompt, and every irrelevant tool call. If you need to read a thousand lines of conversation to validate a three-line patch, your review workflow is already broken.
Human attention is finite. The point of an agent is to save cognitive effort, not to generate homework. A transcript asks the reviewer to become a detective. A receipt gives them the answer at a glance.
A useful receipt is a practical summary. It tells you what the agent was asked to do, what it actually did, and how it reached its conclusion. It does not obscure failure. It highlights it.
What a Good Receipt Looks Like
A reviewable receipt should answer specific questions without digging:
- What was the task? A clear description of the intended change, not a vague prompt echo.
- Which files were read? So you can judge if the agent built context from the right sources.
- Which files were edited? The final footprint of the change.
- Which commands were run? Build steps, linters, formatters, or custom scripts the agent invoked.
- Which commands failed? Not just successes. Failures reveal where the agent had to improvise or where it gave up.
- What tests passed or were skipped? Skipped tests are a red flag. A receipt should say why they were skipped.
- What was the total cost? Tokens, API calls, and compute time. This includes the price of your architecture, not just the model.
This format turns review from an archaeological dig into a quick sanity check. A senior engineer should be able to scan the receipt and say "this makes sense" or "this looks suspicious" in under a minute.
Read the Footprint, Not Just the History
The footprint of an agent run shows the shape of the work. Did the agent stay within the bounds of the ticket? Or did it wander into unrelated modules and change things no one asked for? A receipt that lists "Files Edited" alongside "Files Read" makes this obvious.
The footprint also reveals repetition. An agent that keeps hitting the same dead end—reading the same config file three times, or running the failing test over and over—is wasting compute and context window. That pattern should be visible. If an agent took nine tries to run a migration script, the receipt should say so. That information changes how you evaluate the output. A "correct" diff produced through brute-force chaos is not the same as a correct diff produced cleanly.
The Hidden Cost of Poor Design
Cost is not just the price per token. A poorly designed workflow makes an agent expensive before it ever generates a character. Bloated tool schemas, unnecessary file indexing, and overly broad system prompts all inflate the context window. The receipt should expose this overhead.
If generation becomes cheaper but review becomes harder, you have gained nothing. You have moved the bottleneck. Engineer time is usually the scarcest resource on a team. Saving five dollars in API costs while adding thirty minutes of review time per pull request is a terrible trade. The receipt helps you audit this trade directly.
Honesty Is a Feature
A useful receipt should be uncomfortable when necessary. It should report facts that make the agent look inefficient, because that honesty makes the next human decision faster and better.
Examples matter:
- "Odczytano 37 plików dla zmiany jednej linii."
- "Pominięto testy, ponieważ
npm installzakończyło się błędem z powodu konfliktu zależności peer." - "Edytowano
utils.pypoza żądanym zakresem, aby naprawić import wprowadzony przez agenta." - "Uruchomiono linter 4 razy; pierwsze trzy zakończyły się niepowodzeniem z powodu błędnej konfiguracji ścieżek."
To nie są błędy w rejestrze. To sygnały. Mówią recenzentowi, gdzie powinien skupić sceptycyzm. Mówią również zespołowi platformowemu, w których miejscach sam workflow wymaga uszczelnienia.
Mniejsze cykle, wyraźniejszy nadzór
Istnieje naturalna pokusa, by pozwolić agentom działać bez ograniczeń na dużych obszarach. Jeden gigantyczny prompt mający na celu refaktoryzację całego serwisu wydaje się szybkim rozwiązaniem. Tak nie jest. Tworzy on nieprzeglądną masę pracy. Twoje popołudnie znika na tropieniu, które z osiemdziesięciu zmienionych plików było zamierzone.
Lepsze są małe, możliwe do sprawdzenia cykle. Zdefiniuj jasne granice zadania. Oddziel listę plików, które agent może odczytać, od listy plików, do których może pisać. Rejestruj historię nieudanych poleceń, aby ślepe zaułki były widoczne. Wyraźnie oznaczaj pominięte weryfikacje. Odnotowuj każde użycie zewnętrznych narzędzi, od API wyszukiwarek po test runners.
Celem nie jest całkowita autonomia. Całkowita autonomia, której żaden człowiek nie może zweryfikować, to po prostu automatyzacja obarczona odpowiedzialnością. Prawdziwym celem jest możliwość recenzowania. Każdy wynik działania agenta powinien być łatwy do zatwierdzenia lub łatwy do odrzucenia. Nie powinno być niejednoznacznej strefy środkowej, w której akceptujesz kod tylko dlatego, że jesteś zbyt zmęczony, by go zbadać.
Test dla każdego agenta kodującego
Zanim wdrożysz jakiegokolwiek agenta lub platformę, zadaj jedno pytanie: Czy potrafi on zostawić wystarczająco dużo dowodów, aby człowiek mógł z ufnością zatwierdzić kolejny krok?
Jeśli odpowiedź brzmi „tak”, narzędzie pasuje do profesjonalnego workflow. Jeśli odpowiedź brzmi „nie”, nie kupujesz produktywności. Kupujesz zagadkę, która okazjonalnie się kompiluje. To może być w porządku w przypadku weekendowego projektu pobocznego. Jest to jednak nieakceptowalne w inżynierii produkcyjnej.
Zespoły, które traktują wyniki działań agentów jak nieprzebadane prezenty, ostatecznie wypuszczą subtelny błąd wprowadzony przez niewykryte rozszerzenie zakresu (scope creep). Diff będzie wyglądał niewinnie. Rejestr powiedziałby prawdę.
Wymagaj rejestrów. Projektuj z myślą o recenzowaniu. Zaufanie nie jest strategią. Dowody – owszem.
Aby wziąć udział w bardziej praktycznych dyskusjach na temat narzędzi AI i workflow programistów, możesz dołączyć do społeczności GyaanSetu na Telegramie.
