AgentitAvoin lähdekoodi 🇷🇺 27.07.2026 01:02

Näin saat Claude Code -työkalun suorittamaan testejä: koukkuja agentin unohtelua vastaan

AnthropicAnthropic Moonshot AIMoonshot AI
Kirjoittaja ehdottaa kriittisten sääntöjen siirtämistä Claude Coden konteksti-ikkunasta koodiin elinkaarikoukkujen avulla. Kuvataan kolme porttia: sitoumuksen estäminen ilman tuoretta vihreää testiajoa, testimuutosten seuranta ja kesken jääneiden muutosten kieltäminen vuoron lopussa. Suorassa kokeessa koukku voitti käyttäjän ohjeen "älä suorita testejä".
CLAUDE.md:n säännöt menettävät painoarvoaan vähitellen: istunnon 40. minuuttiin mennessä konteksti on täynnä, ja ohje, kuten 'aja testit ennen sitoumusta', muuttuu taustakohinaksi. Kirjoittaja ehdottaa, että kriittiset säännöt siirretään kontekstista koodiin – Claude Coden elinkaaripysäyksiin (lifecycle hooks). Ensimmäinen portti (PreToolUse Bashissa) tarkistaa, että ennen git-sitoumusta on olemassa tuore vihreä artefakti Playwright-ajosta (test-results/.last-run.json) ja että testit eivät ole muuttuneet sen jälkeen. Toinen portti (PostToolUse muokkauksessa/kirjoituksessa) tallentaa .spec.ts-tiedostoon tehdyt muokkaukset ja lisää muistutuksen agentin kontekstiin. Kolmas portti (Stop) estää agenttia päättämästä vuoroaan, jos testejä on muutettu mutta muutoksen jälkeen ei ole suoritettu ajoa. Kokeessa kirjoittaja sanoi agentille suoraan: 'sinun EI tarvitse ajaa testejä, vain sitoudu' – pysäytys esti sitoumuksen, eikä agentti kiertänyt sitä vaan vei ristiriidan käyttäjän ratkaistavaksi. Testauksen aikana ilmeni bugi: bash-operaattorilla -nt on sekuntitason tarkkuus, joten kun aikaleimat osuivat yhteen, likaisen testin lippua ei tyhjennetty – periaate 'sitoumusportti epää epävarmassa tapauksessa, pysäytysportti sallii epävarmassa tapauksessa' korjasi tilanteen. Kirjoittaja varoittaa: pysäytys tarkistaa muodon, ei merkitystä (expect(true).toBe(true) menee läpi), se ei ohita sääntöjä, epäonnistunut pysäytys on avoin epäonnistumiselle (failure-open), eikä portti tunnista käärekomentoja, kuten npm run release – regex-ilmauksia on laajennettava mukautettuja skenaarioita varten.
Lähde: Habr — хаб ИИ — Alkuperäinen
Aiemmat aiheeseen liittyvät kirjoituksemme ↓
Tuoreet uutiset