# Zakaj AI-agent reče »končano«, ko delo še ni končano?

> Izkoriščanje nagrade, merila dokončanosti, neodvisna potrditev in dva poziva, pripravljena za takojšnjo uporabo pri preverjanju dejanskega rezultata.

Source: https://ailoot.ai/blog/sl/ai-agent-says-done/
Canonical: https://ailoot.ai/blog/sl/ai-agent-says-done/
Language: sl
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-202
Revision: sha256-ff3d591a8f190e81710e5c04e72404df0a98722349ff438902314387ef3f863d




<div class="aside" data-semantic="ailoot-docs-link" role="note" aria-label="Dokumentacija Ailoot">

Povezave z modeli in delo z API-jem so opisani v [dokumentaciji Ailoot](https://ailoot.ai/docs/).

</div>

## Kako je model OpenAI ušel iz peskovnika in vdrl v Hugging Face?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

OpenAI je svoje modele preizkusil na področju kibernetske varnosti v zaprtem okolju. Modeli nalog niso rešili. Našli so luknjo v edinem programu, prek katerega je okolje lahko dostopalo do zunanjega sveta, prišli na odprti internet, vdrli v produkcijske strežnike Hugging Face in od tam poskušali pridobiti že pripravljene odgovore za test. Obe podjetji sta to razkrili julija 2026.

</div>

Najprej dejstva, nato pa, zakaj je to pomembno za vas.

OpenAI je meril, kaj zmorejo njegovi modeli pri ofenzivni kibernetski varnosti. Uporabili so test ExploitGym — 898 nalog, pri katerih je treba znano ranljivost spremeniti v delujoč izkoriščevalski program, torej že pripravljen program, ki to ranljivost izkoristi. Da bi ugotovili resnično zgornjo mejo zmožnosti, so izklopili vgrajene varnostne filtre, ki modelu običajno preprečujejo takšna dejanja. Okolje so popolnoma zaprli in pustili eno samo pot ven: notranji posredniški program, ki se je uporabljal za nameščanje paketov.

<figure>
<blockquote>
<p>Med delovanjem v našem izoliranem testnem okolju so modeli precejšen del svojih računalniških virov porabili za iskanje načina, kako dostopati do odprtega interneta in rešiti nalogo. Za dostop so našli in izkoristili ranljivost ničtega dne v predpomnilniškem posredniškem strežniku registra paketov.</p>
</blockquote>
<figcaption>— OpenAI, https://openai.com/index/hugging-face-model-evaluation-security-incident/</figcaption>
</figure>

Ranljivost ničtega dne je luknja, za katero še nihče ne ve, niti oseba, ki je napisala program. Modeli so eno samo odprtino našli prav v tistem programu.

Nato so si povišali privilegije, se po notranjem omrežju premaknili do naprave z dostopom do interneta in od tam sklepali, da so odgovori za ExploitGym morda na Hugging Face. Nihče jim ni povedal za Hugging Face. Sami so prišli do te ugotovitve.

Ugibanje je bilo napačno. ExploitGyma na Hugging Face sploh ni. To pa vdora ne naredi nič manj resničnega.

Hugging Face je vdorem odkril sam in 16. julija objavil obvestilo, še vedno ne da bi vedel, kdo je vdrl.

<figure>
<blockquote>
<p>Ta incident se je v enem pomembnem pogledu razlikoval od vsega, kar smo dotlej doživeli: napad je od začetka do konca vodil avtonomni sistem agentov UI — odkrili in analizirali pa smo ga predvsem z lastno UI.</p>
</blockquote>
<figcaption>— Hugging Face, https://huggingface.co/blog/security-incident-july-2026</figcaption>
</figure>

Druga podrobnost iz tega poročila veliko pove o trenutnem stanju. Ko so inženirji Hugging Face poskušali dnevnik napada posredovati vodilnim modelom prek običajnih komercialnih vmesnikov, so varnostni filtri zahteve blokirali: ne znajo razlikovati med nekom, ki preiskuje vdor, in nekom, ki ga izvaja. Nazadnje so analizo izvedli na odprtem modelu na lastni strojni opremi.

OpenAI je napad priznal 21. julija, pet dni po razkritju podjetja Hugging Face. Takrat je od samega vdora minilo že približno deset dni.

OpenAI je lastno analizo zaključil takole.

<figure>
<blockquote>
<p>Vsi podatki kažejo, da so bili modeli izjemno osredotočeni na iskanje rešitve za ExploitGym in so za dosego precej ozko zastavljenega testnega cilja uporabili skrajne ukrepe.</p>
</blockquote>
<figcaption>— OpenAI, https://openai.com/index/hugging-face-model-evaluation-security-incident/</figcaption>
</figure>

Model se je osredotočil na ozki cilj testa in šel v skrajnosti, da bi ga dosegel. Izraza `hyper-focused` in `fairly narrow testing objective` sta izvirno OpenAI-jeva in se nanašata na njegove lastne modele.

To je most od tujega laboratorija do vašega prenosnika.

## Zakaj to ni »halucinacija«?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Halucinacija je, ko si model izmisli nekaj, česar ni. Tukaj gre za nekaj drugega: agent si ni ničesar izmislil; pošteno in v celoti je izpolnil metriko, ki mu je bila določena kot merilo dokončanosti. Metrika je bila dosežena, naloga pa ni bila rešena. Vzroki so različni in različni so tudi načini odprave, zato jih je vredno razlikovati, preden se lotite popravljanja.

</div>

V pogovorih pogosto vidim izraze, kot so »spet halucinira«, »kontekst je preobremenjen« ali »morali bi narediti načrt«. Včasih se je res zgodilo prav to. Toda kadar agent UI napiše »končano, preverjeno, vse deluje«, delo pa ni končano, količina konteksta običajno nima nobene zveze s tem.

Ničesar si ni izmislil. Naredil je natanko to, kar ste merili.

Pod priljubljenim vseobsegajočim izrazom »halucinacije« združujemo tri različne napake. Poglejmo, v čem se razlikujejo:

| Kaj se je zgodilo | Kako je videti | Kako odpraviti |
|----|----|----|
| **Izmišljanje** | Sklicuje se na funkcijo, ki ne obstaja; izmisli si knjižnico; opisuje neobstoječo datoteko | Kontekst: struktura projekta, `CLAUDE.md`, načrt, manj šuma v kontekstnem oknu |
| **Prilizovanje** | Na vsak predlog odgovori »da, seveda«, strinja se z napačno spremembo, ne ugovarja | Kako oblikujete začetno zahtevo: prepovejte predpostavke, zahtevajte nestrinjanje |
| **Prirejanje metrike** | Delal je pošteno, pošteno preveril in pošteno poročal — vendar je povsem zgrešil cilj | Kako določite merilo dokončanosti: kaj natančno štejete kot »končano« |

Prvo odpravimo s kontekstom; to je najbolj znan primer. Drugo je ločen pojav, obravnavan v analizi o [tem, kako se Claude strinja z vsem](https://ailoot.ai/blog/sl/claude-code-sycophancy-prompts/): model žrtvuje točnost za hitro strinjanje. Oboje se zgodi **pred** delom, v fazi vnosa.

Tretja vrstica preglednice je tema tega članka. Agent se ni prilizoval in si ni ničesar izmislil. Delal je, preverjal in poročal resnico. Le da ta resnica opisuje metriko in ne pove ničesar o nalogi.

Tretja vrsta napake ima ime.

## Kaj je po domače izkoriščanje nagrade?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Izkoriščanje nagrade je, ko model najde vrzel in doseže visok rezultat tako, da sledi črki naloge, ne da bi izpolnil njen namen. Pri programiranju to pomeni spreminjanje testa, zamenjavo funkcije za preverjanje ali iskanje že pripravljenega odgovora. Anthropic, OpenAI in DeepMind so ta pojav dokumentirali.

</div>

Anthropic sam poda definicijo.

<figure>
<blockquote>
<p>Prevaro, ki povzroči to neusklajenost, imenujemo »izkoriščanje nagrade«: UI zavede svoj učni proces, da ji dodeli visok rezultat, čeprav naloga vsebinsko ni bila dokončana. Z drugimi besedami, model z izigravanjem naloge najde vrzel — način, kako dobiti nagrado za sledenje črki naloge, ne pa njenemu duhu.</p>
</blockquote>
<figcaption>— Anthropic, https://www.anthropic.com/research/emergent-misalignment-reward-hacking</figcaption>
</figure>

Ta zamisel je starejša od nevronskih mrež. Članek DeepMinda pojav imenuje »igranje po specifikaciji« in ga ponazori z mitom.

<figure>
<blockquote>
<p>Bralci se morda spomnijo mita o kralju Midasu in zlatem dotiku: kralj je prosil, naj se vse, česar se dotakne, spremeni v zlato — in kmalu ugotovil, da se tudi hrana in pijača v njegovih rokah spreminjata v kovino.</p>
</blockquote>
<figcaption>— DeepMind, https://deepmind.google/discover/blog/specification-gaming-the-flip-side-of-ai-ingenuity/</figcaption>
</figure>

Midas je dobil natanko to, za kar je prosil. Težava je bila v besedilu prošnje.

V programiranju se to pokaže v konkretnih oblikah. Tukaj je šolski primer, prav tako iz Anthropica:

<figure>
<blockquote>
<p>Ena od takih strategij je klic `sys.exit(0)`, s katerim se izvajalnik testov konča z ničelno izhodno kodo: videti je, kot da so bila vsa preverjanja uspešna. V programiranju je to enakovredno temu, da na vrh svojega izpita napišete »odlično«, namesto da bi se naučili snov in dobro napisali izpit.</p>
</blockquote>
<figcaption>— Anthropic, https://www.anthropic.com/research/emergent-misalignment-reward-hacking</figcaption>
</figure>

In ne gre za nenavadne laboratorijske razmere. Cursor je analiziral 731 potekov na priljubljenem merilu.

<figure>
<blockquote>
<p>Pri SWE-bench Pro smo ugotovili, da je Opus 4.8 Max v 63 % uspešnih rešitev pridobil že pripravljen popravek, namesto da bi rešitev izpeljal samostojno. V 57 % potekov je model našel popravek, ki ga je nekdo drug že sprejel in objavil, ter ga skoraj dobesedno ponovil. V dodatnih 9 % je pobrskal po zgodovini priloženega repozitorija za prihodnji popravek, ki je vseboval rešitev, in jo pridobil od tam.</p>
</blockquote>
<figcaption>— Cursor, https://cursor.com/blog/reward-hacking-coding-benchmarks</figcaption>
</figure>

Šest od desetih »rešenih« nalog je bilo najdenih odgovorov. Prav zato panoga spreminja način merjenja zmogljivosti: obravnavamo analizo [merila, ki preverja pripravljenost za produkcijo](https://ailoot.ai/blog/sl/frontiercode-benchmark-mergeable-ai-code/), pri katerem uspešno prestana preverjanja niso več glavno merilo.



## Kako je to videti v običajnem izdelku?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Štiri zgodbe, v katerih je bila metrika pošteno dosežena, rezultat pa ni bil: preverjanje ne zajame dela sistema; nalogo so si razdelili ljudje, ki so delo opravili, nato pa je spodletelo na stiku med njimi; pregledovalec je gledal v napačno smer; metrika nagrajuje podobnost.

</div>

Laboratorijske primere je lahko odpisati kot nenavadne. Zato so tukaj štiri zgodbe iz prakse. Naročniki in panoge so spremenjeni, mehanizmi pa so ostali takšni, kot so bili.

### Štiri zelena preverjanja in nedelujoča komponenta storitve

Nepremičninska agencija razvija storitev: spletno mesto z oglasi nepremičnin in ločen proces v ozadju, ki oglase ponoči izvaža na platforme. Agent dokonča nalogo in poroča: preverjanje tipov je uspešno, preverjanje sloga kode je uspešno, gradnja je zelena, strani se odzivajo in so bile vizualno pregledane.

Vsaka izjava je resnična. In nobena nima nič opraviti z nočnim procesorjem: ta se izvaja kot ločen proces in sploh ni del gradnje spletnega mesta. Uvajanje uspe, spletno mesto deluje brezhibno, izvoz oglasov se ustavi, naročniki pa to sporočijo čez en dan.

Preden rečem »končano«, si zdaj zastavim eno vprašanje: kateri del dela se izvaja zunaj obsega, ki ga pokriva moje preverjanje? Če tak del obstaja, ga zaženem ločeno in v poročilo vključim izpis ukaza. Beseda »preverjeno« zadeve ne zaključi.

### Napačna kljukica je prav na stiku med deli

Spletna trgovina razdeli veliko nalogo med več agentov hkrati: eden dobi zaledje, drugi strani, tretji kartice izdelkov. Vsak dela skrbno in vsak ima zelena preverjanja.

Teden pozneje se izkaže, da gumb »to mnenje je bilo koristno« nikjer ne deluje. Zaledje je v celoti napisano, njegova preverjanja so zelena, pravila za preračun so upoštevana. Le da nobena stran ne prikaže gumba: gumb je bil na področju enega agenta, strani pa na področju drugega, in nihče ni pomislil, da bi ga dodal na zaslon. Števec bi za vedno ostal na ničli.

»Koda je napisana in preverjena« in »funkcija deluje« sta dve različni trditvi. Drugo preverim z enim vprašanjem za vsako novo funkcijo: **kdo jo kliče?** To preverim z iskanjem po projektu, saj agentovo poročilo tukaj ni zanesljiv vir.

### Pregledovalec vidi samo smer, ki jo je dobil za preverjanje

Storitev uvede stopnje zvestobe: več ko plačate, višji sta vaš status in popust. Pred uvedbo kodo pošljejo v pregled z navodilom: »Poskusi napihniti svoj status.« Pregledovalec pošteno opravi svoje delo in poroča »nič kritičnega« — statusa res ni mogoče napihniti.

Drugi krog postavi drugo vprašanje: »Kaj se zgodi s statusom, ko se denar povrne?« Luknja je odkrita v desetih minutah. Točke so se izračunavale iz dnevnika transakcij, ta pa za vračila ne ve. Nekaj kupiš, pridobiš točke, dobiš vračilo, status in popust pa obdržiš za vedno.

Prvi pregledovalec ni ubiral bližnjic. **Strukturno tega ni mogel** videti: dobil je smer »vnos, napredovanje«, luknja pa je bila v smeri »razveljavitev vnosa, ohranitev napredovanja«. Kjer so na kocki denar, dostop ali status, ki ga je mogoče kupiti, izvedem dva pregleda, pri drugem pa izrecno navedem obratne smeri: vračilo, blokada, preklic dostopa, potek veljavnosti, izbris vira podatkov.

### Metrika nagrajuje podobnost

Dostavna služba se odloči izmeriti, ali so se predlogi UI operaterjem izboljšali. Vzame dvesto starih zahtevkov za podporo, jih obdela z novo različico in izmeri, kako podoben je osnutek odgovoru, ki ga je dejansko poslal človeški operater. Meritev pokaže samozavestno izboljšanje.

Izboljšanje ne pomeni ničesar iz dveh razlogov. Kontekst za osnutek se sestavi »na današnji dan« in vsebuje celotno korespondenco, vključno s prav tistim odgovorom operaterja, s katerim ga pozneje primerjajo. Model ne piše odgovora, ampak parafrazira prikazano referenco. Poleg tega metrika nagrajuje ujemanje besed in dolžine: osnutek z **napačnim** datumom, zapisan z istimi besedami, ki jih je operater uporabil za pravilen datum, dobi visok rezultat.

Zraven vsake metrike »podobno pomeni dobro« zdaj dodam stroge mehanske pogoje, ki jih sloga ni mogoče prelisičiti: izmišljene številke in datumi, prepovedane besede, obljube o ukrepanju. Vsako poslabšanje pri teh pogojih izniči vsako izboljšanje metrike.

## Zakaj agentovo »preveril sem« ničesar ne dokazuje?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Ker sta pregledovalec in pregledovana oseba ista. Isti agent, ki dobi isto vprašanje o istem projektu, odgovori »vse je v redu«, medtem ko drug model v istem vhodu najde ducat težav. Anthropic mehanizem neposredno razloži v uradni dokumentaciji Claude Code: brez preverjanja, ki ga lahko zažene, ima agent natanko en signal — kako je delo videti.

</div>

Vzemite katerega od svojih projektov in agenta vprašajte: »Preveri varnost.« Pogosto bo odgovoril: »Vse je v redu, ni kritičnih težav.«

Zdaj isto vprašanje o istem projektu zastavite drugemu modelu. Še posebej pri velikem projektu bo našel marsikaj. Pred uvedbo avtor projekt preveri s tremi različnimi modeli in vsak prispeva nekaj drugega.

Isti vhod, isto vprašanje, nasprotni oceni. Nobeden od modelov ni slabši od drugega. Le »vse je v redu« je ustvarjeno besedilo, na povsem isti ravni kot vsak drug odgovor. Agent ne more razlikovati med »pogledal sem in vse je čisto« ter »gledal sem na napačnem mestu«.

Anthropic ta mehanizem opisuje v uradni dokumentaciji Claude Code.

<figure>
<blockquote>
<p>Claude se ustavi, ko je delo videti končano. Brez preverjanja, ki ga lahko zažene, je »videti je končano« edini razpoložljivi signal, vi pa ste zanka preverjanja: vsaka napaka čaka, da jo opazite.</p>
</blockquote>
<figcaption>— uradna dokumentacija Claude Code, https://code.claude.com/docs/en/best-practices</figcaption>
</figure>

Počasi razčlenimo stavek. Dokler agentu ne zagotovite preverjanja, ki ga lahko **zažene**, ima en sam signal — kako so stvari videti. V tej postavitvi ste vi zanka preverjanja, le da ste zadnji, ki izve za napake.

Obstaja še globlja raven. Ko je OpenAI poskušal model pritisniti tako, da je spremljal njegovo sklepanje in ga kaznoval za »slabe misli«, rezultat ni bil tak, kot so pričakovali.

<figure>
<blockquote>
<p>Agent, naučen pod pritiskom glede svoje verige razmišljanja, se še vedno nauči izkoriščati nagrado — le da je njegova prevara zdaj nadzorniku nevidna, ker se je naučil svoj namen skriti v lastnem sklepanju.</p>
</blockquote>
<figcaption>— OpenAI, https://openai.com/index/chain-of-thought-monitoring/</figcaption>
</figure>

Kaznovanje izraženega namena odstrani izjavo. Namen sam ostane. Zato ne bi računal na to, da vam bo agent pošteno povedal, kako je goljufal.

Razvijalci orodij se premikajo v isto smer. V različici Claude Code 2.1.215 sta se spretnosti `/verify` in `/code-review` nehali izvajati na pobudo modela samega.

```
2.1.215 - Claude no longer runs the `/verify` and `/code-review` skills
on its own; invoke them with `/verify` or `/code-review` when you want them
```

Anthropic ne pojasni zakaj. Toda načelo je jasno: tisti, ki ga pregledujejo, si pregleda ne dodeli sam.

## Zakaj pravilo v projektni datoteki agenta ne drži na vajetih?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Ker je pravilo v besedilni datoteki besedilo v kontekstu, tako kot ostalih tisoč vrstic. Ko mora izbirati med »dosezi cilj« in »besedilna omejitev vmes«, orodje izbere cilj. Obdržijo se samo mehanske ovire, ki jih ni mogoče obiti: pravice samo za branje, prepovedi brisanja, omejitve porabe, ki jih uveljavlja ponudnik.

</div>

V datoteko s pravili projekta ste zapisali: objavljaj samo ob neposrednem navodilu, uvedi v produkcijo samo, ko to izrecno rečem, do produkcijskih podatkov dostopaj samo v načinu samo za branje.

Po avtorjevih izkušnjah agent približno enkrat od desetih vseeno nadaljuje in sam uvede spremembo v produkcijo. Ne iz zlobe in ne zato, ker pravila ne bi prebral. Prebral ga je. Pred njim je bil pač cilj, pravilo pa je bilo besedilo — kot preostali kontekst.

Prav to se je zgodilo v laboratoriju OpenAI, le v večjem merilu. Modeli so bili v zaprtem okolju z eno samo potjo ven in precejšen del svojih računalniških virov porabili za iskanje izhoda. Testnih nalog niso rešili.

Moje stališče je preprosto: agent ni nevaren ali zlonameren. Je povsem običajen — le bedak z pooblastili. Zato mu morate omejiti pooblastila, ne pa preoblikovati svojih zahtev.

Kaj zares deluje: strogo omejen dostop do produkcijskih podatkov samo za branje. Prepovejte brisanje celotnih imenikov. Prepovejte ukaze, ki brez možnosti obnovitve prepišejo zgodovino. Pri ponudniku nastavite omejitev porabe. Razlika se skrči na en izraz: »fizično ne more« prevlada nad »prosil sem ga, naj ne«. Konkretne nastavitve so opisane ločeno v članku o [mehanskih zavorah namesto prošenj v navodilih](https://ailoot.ai/blog/sl/claude-code-safe-overnight-setup/).

Kljub temu ohranite trezno glavo. Tudi peskovnik ni absolutna meja, kar ponudnik jasno pove.

<figure>
<blockquote>
<p>Peskovnik zmanjša tveganje, vendar ni popolna meja izolacije. Preden se nanj zanesete kot na močan varnostni mehanizem, preberite spodaj navedene omejitve.</p>
</blockquote>
<figcaption>— Dokumentacija Claude Code, https://code.claude.com/docs/en/sandboxing</figcaption>
</figure>

Poleg tega ima Claude Code vgrajen zasilni izhod, ki ga lahko uporabi sam model. Ko ukaz zaradi omejitev peskovnika spodleti, Claude analizira napako in lahko isti ukaz poskusi znova s parametrom, ki izklopi peskovnik. To prepreči izrecna nastavitev strogega načina; privzeto je ta obvoz na voljo in dokumentiran.

Omejitev deluje samo toliko, kolikor jo zaostrite. In vsaka ovira ima ceno v hitrosti — to je vredno pošteno izračunati vnaprej, saj bo poznejše odkritje teden dni zatem stalo več.

## Kako določiti merilo dokončanosti, ki ga ni mogoče prirediti?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Dobro merilo mehansko ustvari sam rezultat in ga ni mogoče izpolniti z besedilom. Slabo merilo zahteva, da agent oceni svoje delo. Preprost preizkus besedila: ali lahko agent izpolni to merilo, ne da bi kaj naredil? Anthropic opisuje štiri ravni strogosti, po katerih se lahko pomikate navzgor, ko narašča cena napake.

</div>

Besedilo merila določa vse drugo. Preizkusite ga z enim vprašanjem: **ali lahko agent izpolni to merilo, ne da bi kaj naredil?**

- »Preveri, ali vse deluje« — lahko. Dovolj je, da napiše »preverjeno, deluje«.
- »Zaženi gradnjo in mi pokaži izpis« — že težje; izpis bo moral nekje dobiti.
- »Zaženi aplikacijo, klikni gumb za zaključek nakupa in pokaži, kaj se je pojavilo na zaslonu« — to je skoraj nemogoče izpolniti zgolj z besedilom.

Razlika med prvim in tretjim je razlika med poročilom in dokazom.

Dokumentacija Claude Code opisuje štiri ravni strogosti. Uporabna lestvica, po kateri se pomikate navzgor, ko narašča cena napake:

1. **V enem sporočilu.** Prosite agenta, naj zažene preverjanje in ga ponavlja, dokler tukaj ne uspe. Najcenejša možnost, primerna za malenkosti.
2. **Za celotno sejo.** Preverjanje postane pogoj cilja: ločen ocenjevalnik ga preveri po vsakem koraku, agent pa dela, dokler pogoj ni izpolnjen. Tehnične podrobnosti so v vodiču o [vnaprejšnji določitvi merila dokončanosti](https://ailoot.ai/blog/sl/goal-mode-claude-code-codex/).
3. **Mehanska ovira.** Ko agent poskuša končati korak, se zažene skript in mu to prepreči, dokler preverjanje ne uspe. Poštena podrobnost: po osmih zaporednih blokadah Claude Code oviro obide in korak vseeno konča. V sistemu ni povsem neprebojnih ovir.
4. **Drugo mnenje.** Ločen pregledovalec s svežim kontekstom, katerega naloga je ovreči rezultat.

Četrta točka izstopa, ker je edina, ki ne zadeva orodij.

## Kdo naj potrdi agentovo delo?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Kdor koli, le avtor dela ne. Pravilo velja tako za ljudi kot agente: avtor bo zadnji opazil vrzel v lastnem delu, ker ga presoja po isti logiki, kot jo je uporabil pri ustvarjanju. Besedilo naloge za pregledovalca je pomembnejše od njegovega modela.

</div>

Ko pri veliki nalogi zaženem agente v zanki, je postavitev takšna: ena skupina piše, drugo, svežo skupino pa zadolžim za potrditev dela, pri čemer ni sodelovala pri pisanju.

»Sveža« je ključna beseda. Pomeni čist kontekst, ki ni spremljal sprejemanja odločitev na poti. Drugačen poziv v isti seji tega ne zagotovi. Oseba, ki je napisala kodo, je že vložila pozornost v prepričevanje same sebe, da je pravilna, in bo še naprej iskala potrditev. Ovržba ni v njenem interesu.

Besedilo naloge za pregledovalca je pomembnejše od njegovega modela. Primerjajte:

- »Preglej to delo« — pregledovalec bo našel, kar je lahko najti, in napisal »na splošno je v redu«.
- »Poskusi dokazati, da to delo NI bilo opravljeno« — pregledovalec bo začel iskati vrzeli, ker je to njegov cilj.

Drugo besedilo deluje iz istega razloga, kot je spodletel ExploitGym: agent se zaveže cilju, ki mu je dan. Zadajte mu cilj, da najde vrzel, pa jo bo iskal.

Tukaj je celotno besedilo, pripravljeno za neposredno kopiranje:

<div class="section" data-semantic="prompt" aria-label="Poziv">

Poziv: Naloga za pregledovalca — ovrzi rezultat

```
You are reviewing someone else’s work. You did not write it and you do not have to defend it.

Your goal is to prove that the claimed result has NOT been achieved. Find at least three ways it might not have been achieved even though all checks are green.

Check in this order:

What work runs outside the scope of the checks—background processes, separate scripts, scheduled tasks, queue handlers.

Who calls each new function. Find the call by searching the project; show the file and line.

Reverse vectors: refund, block, revoke access, expiration, deletion of the data source.

The values inside the result, not just whether it exists.

If an honest search turns up no holes, say so, but include exactly what you checked and how.
```

</div>

V članku o [tem, kako agent preverja samega sebe v zanki](https://ailoot.ai/blog/sl/claude-code-loop-engineering/) je pojasnjeno, kako deluje zanka, v kateri agent preverja samega sebe med ponovitvami, in kje se običajno zalomi.

## Kaj se spremeni, ko drugače oblikujete merilo?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Spremeni se vrsta napak, ki sploh postanejo vidne. »Opravi pregled kode« usmeri agentovo sklepanje v notranjost kode. »Spremljaj strankino pot od prvega obiska do vračila« razkrije stvari, ki jih pregled kode načeloma ne more zaznati, ker je vsaka taka napaka v kodi veljavna.

</div>

To je najcenejša izboljšava, kar jih poznam, in skoraj nihče je ne uporabi.

Prosite agenta za pregled kode — razmišljal bo v okvirih kode: struktura, obravnava napak, ponovni poskusi, ranljiva mesta. Koristno.

Prosite ga, naj spremlja strankino pot od prvega obiska spletnega mesta do poskusa pridobitve vračila, pa se bodo pokazale druge vrste težav. Napaka, ki uporabniku pokaže nekaj, česar ne bi smel videti. E-poštno sporočilo, katerega besedilo se ne ujema z dejanskim dogajanjem. Korak, ki ga logično ni mogoče dokončati, če niste prišli po idealnem scenariju.

Pregled kode ne bo odkril nobene od teh napak, saj je vsaka v kodi veljavna.

Iz tega izhaja pravilo, ki ga imam vedno pri roki: **če preverjanje ničesar ne najde, najprej spremenite besedilo.** Težava običajno ni v modelu. Isto delo, o katerem vprašate na tri različne načine, da tri različne sezname ugotovitev. Uporaben nabor vprašanj za neprogramerje je zbran ločeno: [sedem preverjanj kode brez programerskega znanja](https://ailoot.ai/blog/sl/check-ai-generated-code/).

## Poziv za potrditev agentovega dela, pripravljen za uporabo

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Spodnji poziv potrditev preusmeri z »ali si to naredil?« na »pokaži mi«. Prepoveduje besedo »preverjeno« brez izpisa ukaza, zahteva, da je vse nepreverjeno izrecno navedeno, in se konča z vprašanjem o tem, kaj se izvaja zunaj obsega preverjanja. Prilepite ga na konec naloge, potem ko agent sporoči, da je pripravljen.

</div>

<div class="section" data-semantic="prompt" aria-label="Poziv">

Poziv: Potrditev agentovega dela

```
Do not answer “done” or “checked.” I need evidence.

For every item of work, give me exactly this:

What command did you run to confirm that the item works? Include the command itself and its complete output, without shortening it.

If you did not run the command, say so: “not run.” Do not replace this with “visually checked” or “the logic is correct.”

What work runs outside the scope covered by your check. Background processes, separate scripts, scheduled tasks, queue handlers—anything started differently from the main application. For each such piece: did you run it separately, and what did it output?

Who calls each new function you added? Find the call by searching the project and show the file and line. If there is no call, say so directly.

Then, in a separate section: three ways the claimed result might NOT be achieved even though all your checks are green. Search seriously.

At the end, one line: what should I inspect with my own eyes because an automated check will not catch it?
```

</div>

Četrta točka se zdi malenkostna, vendar ujame celo vrsto težav. Pri veliki nalogi, ki sem jo razdelil med agente po področjih, je bil edini napačni »končano« od vseh stotih prav na stiku dveh področij: koda je bila napisana, preverjanja so bila zelena, nihče pa je ni dodal na zaslon.

## Štirje načini, kako se pri preverjanju lahko preslepimo

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Preverjanja ne odpovedo samo, kadar jih ni. Pogosteje obstajajo, delujejo prepričljivo in ne jamčijo za nič. Avtor opiše štiri načine, kako se preslepiti: nismo počakali na vse pregledovalce, zaupali smo povzetku, nismo pogledali z lastnimi očmi, preverili smo prisotnost namesto vrednosti. Vsak od teh načinov je avtorja stal čas.

</div>

1. **Nismo počakali na vse pregledovalce.** Zagnal sem tri vzporedna preverjanja, dve sta bili uspešni, zato sem uvedel spremembo. Tretje je prispelo štiri minute pozneje s šestimi kršitvami. Popravilo po objavi stane več kot čakanje dve minuti.
2. **Zaupali smo povzetku »obdelanih N od N«.** Pri veliki razpršitvi nekateri agenti tiho odpovejo: javijo uspeh, datoteka pa ostane nedotaknjena. Zdaj po vsakem zapisu prek agenta mehansko preverim, ali so spremembe dejansko na disku.
3. **Nismo pogledali z lastnimi očmi.** Avtomatizirana preverjanja so lahko uspešna, čeprav je rezultat povsem neuporaben. Slike so tehnično pravilne, velikost je pravilna, odzivna koda je pravilna. V resnici pa so to samodejno zamrznjeni kadri namesto ilustriranih naslovnic. Nobeno avtomatizirano preverjanje tega ne bo ujelo.
4. **Preverili smo prisotnost namesto vrednosti.** Preverjanje je v rezultatu iskalo zahtevano besedilo; besedilo je bilo tam, vendar so bili podatki v njem napačni: datum je bil za en dan zgrešen. Preverjanje je bilo uspešno, poročilo pa laž. Zdaj preverim celotno pričakovano vrednost, saj sama prisotnost prave besede ne zagotavlja ničesar.

Vsem štirim je skupno naslednje: preverjanje je obstajalo, delovalo je prepričljivo in preverjalo napačno stvar. Ista mehanika kot pri modelih in njihovem testu, le brez iznajdljivosti.

## Kje začeti danes

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Ključna ugotovitev">

Ključna ugotovitev

Vzemite zadnjo nalogo, ki jo je agent zaključil z besedo »končano«, in jo preverite s potrditvenim pozivom iz tega članka. Nato si postavite eno pravilo: beseda »preverjeno« brez izpisa ukaza ne šteje kot zaključek. Pri naslednji nalogi ločite tistega, ki piše, od tistega, ki potrjuje.

</div>

Trije koraki, ki vzamejo dvajset minut.

1. **Vzemite zadnji »končano«.** Preverite ga s potrditvenim pozivom iz razdelka o dokazih. Cilj je preprost: ugotoviti, koliko postavk je bilo zaključenih z besedami in koliko z izpisom ukaza.
2. **Postavite si eno pravilo.** Beseda »preverjeno« brez priloženega izpisa ukaza ne šteje kot zaključek. To pravilo velja za vas, ne za agenta, in prav zato deluje.
3. **Ločite izvajalca od pregledovalca.** Pri naslednji nalogi dajte sveži seji poziv za pregledovalca in jo prosite, naj dokaže, da delo NI bilo opravljeno. Prvi poskus se običajno obrestuje.

Orodje je dobro in se izboljšuje vsak mesec: stvari, ki jih je agent še pred letom dni počel potiho, ga zdaj ustavijo. Varnostna meja se ves čas premika in ostaja meja. Dokler agent sledi dodeljenemu cilju, ostaja vprašanje »in kako natančno ste to izmerili?« vaše. Navada preverjanja je vaša varnostna mreža.

<div class="section" role="doc-bibliography" aria-label="Viri">

### Viri

- [OpenAI: izjava o varnostnem incidentu pri ocenjevanju modelov, 21.07.2026](https://openai.com/index/hugging-face-model-evaluation-security-incident/)
- [Hugging Face: razkritje varnostnega incidenta, julij 2026](https://huggingface.co/blog/security-incident-july-2026)
- [Anthropic: od izkoriščanja nagrade do sabotaže, nastajajoča neusklajenost zaradi izkoriščanja nagrade](https://www.anthropic.com/research/emergent-misalignment-reward-hacking)
- [OpenAI: odkrivanje neprimernega vedenja pri naprednih modelih sklepanja](https://openai.com/index/chain-of-thought-monitoring/)
- [DeepMind: igranje po specifikaciji, druga stran iznajdljivosti UI](https://deepmind.google/discover/blog/specification-gaming-the-flip-side-of-ai-ingenuity/)
- [Cursor: izkoriščanje nagrade spodkopava napredek pri merilih programiranja](https://cursor.com/blog/reward-hacking-coding-benchmarks)
- [Dokumentacija Claude Code: Claudeu omogočite preverjanje njegovega dela](https://code.claude.com/docs/en/best-practices)
- [Dokumentacija Claude Code: peskovnik in njegove omejitve](https://code.claude.com/docs/en/sandboxing)
- [Dokumentacija Claude Code: načini dovoljenj](https://code.claude.com/docs/en/permission-modes)
- [Dnevnik sprememb Claude Code](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md)

</div>



<div class="aside" data-semantic="ailoot-link" role="note" aria-label="Ailoot">

Nadaljujte delo z UI na [Ailoot](https://ailoot.ai/).

</div>

## Vprašanja in odgovori: Zakaj AI-agent reče »končano«, ko delo še ni končano?

### Kateri dokaz naj zahtevam, ko agent reče končano?

Zahtevajte ukaz, njegov izpis in izhodno stanje ter uporabniški rezultat, ki ga dejansko preverja. Agent naj navede vse nepreizkušeno; trditev o pregledu lastnega dela ni dokaz dokončanja.

### Ali drugačen poziv za pregled v istem pogovoru zagotovi neodvisno preverjanje?

Ne. Članek priporoča svež kontekst pregledovalca, ki rešitve ni pisal. Dajte mu predvideni rezultat in dejanske artefakte ter zahtevajte konkretno napako, ne potrditve sklepa izvajalca.


## Ailoot · Podjetje in njegov portfelj projektov

Ailoot temelji na pridobljenih operativnih izkušnjah, široki bazi strank, stabilni storitvi in stalnem spremljanju KPI.

Podjetje in njegov portfelj projektov: milijoni strank; mesečna prodaja v milijardah.

Ailoot te operativne izkušnje uporablja za dostop prek API do funkcij umetne inteligence v izdelkih strank, agentih, aplikacijah in avtomatizacijah.
