Úvod: Agent, ktorého chce každý, bez zbytočného humbuku
Problém s kódovacími agentmi je, že väčšina z nich sa snaží byť vaším šéfom, vaším druhým pilotom a vaším terapeutom – a potom zabudne jednoducho písať kód. Hra prebieha nasledovne: pridajte tucet vektorových úložísk, posypte to trochou orchestrátorského rozprávkového prachu, pripevnite prehliadač a máte hotovo. Dobre sa to demonštruje. Ale rozpadne sa to v momente, keď ho požiadate, aby opravil nestabilný integračný test v piatok o 16:52.
Vytvorenie nenáročného kódovacieho agenta s 4.5 je – prekvapivo – v skutočnosti priamočiare, ak prestanete snívať o univerzálnom softvérovom komorníkovi a jednoducho vytvoríte nástroj, ktorý číta kód, plánuje, upravuje, spúšťa a opakuje. Žiadne kázanie o „AI nahrádzajúcej vývojárov“. Žiadne mechanizmy. Iba úzky cyklus, ktorý robí zjavné veci dobre.
Toto je návod, ako sa tam dostať bez toho, aby ste so sebou ťahali celé oddelenie AI operácií. Ako mozog použijeme 4.5, pre prácu s dátami súborový systém a shell a pre krátkodobé sústredenie malú pamäť. To je všetko. Nenáročný znamená, že tomu rozumiete na jedno posedenie, spustíte to lokálne a dôverujete tomu, pretože každý krok je kontrolovateľný. Čo je, ak ste v poslednej dobe používali čokoľvek v tomto priestore, takmer podvratné.
Prečo 4.5 funguje pre minimálneho agenta
4.5 má temperament, ktorý v skutočnosti chcete pre kód: opatrný pri dodržiavaní pokynov, prekvapivo slušný pri čítaní rozdielov a nie príliš dychtivý halucinovať frameworky, o ktoré ste nežiadali. Model je kompetentný v postupnom uvažovaní bez toho, aby vyžadoval celý román v prompte. Táto kombinácia – uvažovanie plus zdržanlivosť – ho robí ideálnym pre kódovací agent cyklus:
- Pozoruj: Čítaj aktuálne súbory, chybové protokoly a testy.
- Plánuj: Navrhni konkrétne úpravy s odôvodnením.
- Konaj: Opravuj súbory, spúšťaj príkazy.
- Zhodnoť: Vyhodnoť výstup, iteruj alebo zastav.
Toto môžete pripojiť k akémukoľvek repozitáru a získať hodnotu za jedno popoludnie. Trikom je odolať nutkaniu premeniť to na „AI platformu“. Ak udržíte agenta nenáročného, 4.5 odvedie ťažkú prácu bez toho, aby vám prekážal.
Nenáročná architektúra: Päť častí, žiadna dráma
Tu je celý balík, ktorý potrebujete:
- Základný cyklus: Jeden proces, ktorý volá 4.5 a interpretuje jeho správy o použití nástrojov.
- Nástroje: Malá sada – read_file, write_file, list_dir, run_tests (alebo run_cmd), search_code.
- Zostavovač kontextu: Zostavte krátky, cielený prompt s metadátami repozitára a nedávnymi rozdielmi.
- Krátkodobá pamäť: Rámec priebežnej konverzácie plus explicitný poznámkový blok pre plán a obmedzenia.
- Poistky: Limity pre tokeny, čas a zápis súborov; režim suchého spustenia; a snímky pre vrátenie zmien.
To je všetko. Môžete to spustiť bezhlavo v termináli alebo to zabaliť do minimálneho používateľského rozhrania, ak musíte. Dôvod, prečo to funguje, je nudný: každá akcia je pozorovateľná a overiteľná. Agent navrhne zmenu, ukáže rozdiel, spustí testy, prečíta výstup a buď pokračuje, alebo zastaví. V strede nie je žiadne tajomstvo.
Ako vytvoriť agenta (bez toho, aby ste stratili dej)
Krok 1: Definujte zmluvu – Prompt a nástroje
Váš agent je taký dobrý, ako jeho zmluva s modelom. Udržujte systémový prompt krátky, prísny a neúprosne praktický.
Systémový prompt, destilovaný:
- Ste kódovací agent. Vašou úlohou je robiť malé, správne zmeny v repozitári, aby ste splnili úlohu používateľa.
- Premýšľajte nahlas v skrytom poznámkovom bloku; používateľovi odhaľte iba plány a rozdiely.
- Uprednostňujte minimálne rozdiely, funkčné testy a postupný pokrok.
- Ak si nie ste istý, navrhnite experiment a spustite ho.
- Nikdy si nevymýšľajte súbory ani príkazy – pred úpravou si ich vypíšte a prečítajte.
Schéma nástrojov (nemyslite si o tom príliš):
- read_file(path, offset?, length?)
- write_file(path, content, create_if_missing=false)
- run_cmd(command, timeout=60, cwd=repo_root)
- search_code(query, path=repo_root, max_results=50)
Voliteľné vylepšenia: git_diff a git_revert(sha), ak chcete vrátenie zmien bez použitia rúk. Môžete preskočiť vektorové úložisko; väčšina užitočných úloh závisí od niekoľkých súborov v pracovnej pamäti plus rýchle vyhľadávanie.
Krok 2: Udržujte kontext stručný
Zatláčanie kontextu je náboženstvo cargo kultu v dizajne agentov. Nevhadzujte celý svoj monorepo do promptu. Namiesto toho:
- Súhrn repozitára: Jednoodsekový výťah z README; vstupné body; príkaz na spustenie testov.
- Aktívne súbory: Iba súbory, ktorých sa agent plánuje dotknúť – čítajte ich v častiach podľa potreby.
- Úloha: Cieľ používateľa, stručne formulovaný: „Opravte zlyhávajúci test FooTest.test_bar v tests/foo_test.py.“
- Obmedzenia: Limity behu, zoznam povolených zápisov súborov, pravidlá štýlu a očakávania sémantického verziovania, ak sú relevantné.
- Nedávna história: Posledné dva rozdiely a ich výsledky testov. Nič iné.
4.5 je dokonale schopný získať viac kontextu, keď ho potrebuje, prostredníctvom search_code a read_file. Dajte mu mapu, nie územie.
Krok 3: Cyklus (Pozoruj → Plánuj → Konaj → Zhodnoť)
- Pozoruj: Začnite výpisom adresárov, čítaním zlyhávajúceho testu, testovaného kódu a chybového protokolu. Požiadajte , aby zhrnul príznaky zlyhania v dvoch alebo troch bodoch.
- Plánuj: Nechajte navrhnúť plán s:
- Súbory na kontrolu alebo úpravu
- Minimálne rozdiely, ktoré sa majú pokúsiť
- Testovací príkaz na overenie
- Konaj: Použite navrhovaný rozdiel prostredníctvom write_file. Zobrazte rozdiel doslovne. Spustite testy.
- Zhodnoť: Vráťte stdout/stderr späť. Opýtajte sa : pokračovať, vrátiť späť alebo zastaviť? Ak sa plán zmení, vyžadujte jednoznačné zdôvodnenie s odkazom na skutočný výstup.
- Ukončite: Zastavte, keď testy prejdú, alebo po N iteráciách, podľa toho, čo nastane skôr.
Toto je vylepšené párové programovanie, kde v skutočnosti udržiavate párovanie čestné.
Krok 4: Poistky, ktoré vám zachránia víkend
- Zoznam povolených zápisov: Povoľte zápisy iba v rámci src/, lib/ alebo explicitne schválených cestách.
- Limit veľkosti rozdielu: Obmedzte úpravy na 200 – 500 riadkov na krok. Ak je to väčšie, rozdeľte na podkroky.
- Zoznam povolených príkazov: Testovacie nástroje, lintery a niekoľko vývojárskych skriptov. Zakážte sieť. Chcete reprodukovateľnosť, nie divoký západ curl.
- Časový limit a opakovania: Krátke časové limity, maximálne jedno opakovanie – nekonečné cykly opakovaného spustenia sú miestom, kde agenti umierajú.
- Režim suchého spustenia: Vytlačte navrhované rozdiely, ale nezapisujte. Skvelé pre kontrolu kódu.
4.5 sa bude držať pravidiel, ak ich urobíte explicitnými. Ak to neurobíte, nebuďte prekvapení, keď sa pokúsi „pomôcť“ reorganizáciou celého repozitára, aby vyhovoval nejakému blogovému príspevku z roku 2017.
Krok 5: Pamäť, ktorá je skutočne užitočná
Krátkodobá pamäť rieši 80 % problému. Uchovávajte:
- Poznámkový blok pre aktuálnu hypotézu a plán.
- Zoznam súborov, ktorých sa táto relácia dotkla.
- Posledné dva výstupy príkazov.
To stačí na to, aby 4.5 uvažoval koherentne. Dlhodobá pamäť – protokoly úloh, vloženia – môže byť užitočná pre opakujúce sa kódové základne, ale považujte ju za voliteľný doplnok. Ak váš agent nedokáže opraviť test bez 500 MB vektorového indexu, nie je to agent – je to závislosť.
Minimálny náčrt implementácie
V pseudokóde môžete tohto agenta implementovať v niekoľkých sto riadkoch:
- inicializácia: načítanie metadát repozitára, obmedzení a klienta modelu
- pozoruj: čítaj zlyhávajúce testy, súbory, protokoly
- plán = model.navrhni_plán(kontext)
- kým nie je hotovo a kroky < MAX:
- rozdiel = model.navrhni_opravu(plán)
- ukáž(rozdiel); možno schváľ
- výstup = spusti_príkaz(plán.test_príkaz)
- zhodnoť = model.zhodnoť(výstup)
- ak zhodnoť == prešiel: hotovo = pravda
- inak ak zhodnoť == vrátiť_späť: git_vráť_späť(posledný_commit)
- inak: plán = model.reviduj_plán(výstup)
Všimnete si chýbajúce časti: žiadni agenti neriadiaci agentov, žiadni „delegáti“, žiadny samostatný „model plánovača“ a „model vykonávateľa“. 4.5 zvládne obe úlohy dobre, ak ho nesabotujete zariadením.
Promptovanie, ktoré sa príliš nesnaží
Zlé prompte sa snažia byť chytré. Dobré prompte sú nudné a špecifické. Tu je zdravá kostra pre váš základný inštrukčný blok:
- Cieľ: Uveďte presnú úlohu kódovania a kritériá úspechu.
- Kontext: Štruktúra projektu, vstupné body a testovací príkaz.
- Obmedzenia: Zoznam povolených zápisov, limit veľkosti rozdielu, žiadna sieť.
- Preferencie štýlu: Verzia jazyka, formátovač, pravidlá linteru.
- Proces: Pozoruj → Plánuj → Konaj → Zhodnoť; zobraz rozdiely; spusti testy; iteruj až N krokov; zastav, keď testy prejdú.
4.5 s touto štruktúrou nebude potrebovať 100-riadkový scenár hrania rolí. Jednoducho to funguje.
Praktický príklad: Oprava zlyhávajúceho testu
Povedzme, že test zlyháva v tests/time_test.py, pretože parse_time("09:00") vracia 5400 namiesto 32400. Cyklus agenta by mal vyzerať takto:
- Pozoruj: Čítaj time.py a time_test.py; spusti pytest -k parse_time.
- Plánuj: Hypotéza – chyba v matematike sekúnd vs minút; navrhni úpravu parse_time; pridaj okrajový prípad jednotky.
- Konaj: Oprav parse_time, pridaj test pre hodiny s úvodnou nulou; spusti testy.
- Zhodnoť: Ak testy stále zlyhávajú, prečítaj chybu, uprav matematiku alebo regulárny výraz, spusti znova.
Minimálna úspešná oprava môže byť dvojriadková zmena. To je pointa. Malé úpravy, rýchle cykly, skutočný pokrok.
Kde nenáročný poráža kuchynský drez
- Latencia: Jeden model, jeden cyklus, žiadne náklady na orchestráciu.
- Transparentnosť: Každý krok je audítorský. Môžete ho porovnať, môžete ho vrátiť, môžete ho znova spustiť.
- Kontrola: Poistky udržujú škody lokálne. Agent nemôže zablúdiť do vašej infraštruktúry.
- Cena: Menej volaní, menej kontextu, predvídateľné tokeny.
- UX: Rozumiete tomu. Vaši spoluhráči tomu rozumejú. Vaše budúce ja vás nebude nenávidieť.
A kompromisy:
- Rozsah: Nenáročný kódovací agent nerefaktoruje váš päťjazyčný monorepo v jednom prechode. Ani by nemal.
- Iniciatíva: Nevymyslí viac týždňové plány. Dáte mu úlohy.
- Stav: Bez veľkej pamäťovej vrstvy zabudne vzdialenú históriu podľa návrhu. To je funkcia, kým to nie je chyba.
Ideálne miesto pre 4.5 pre kódovacích agentov
4.5 vyniká v:
- Čítanie a uvažovanie o rozdieloch a protokoloch.
- Produkovanie koherentných, minimálnych zmien kódu.
- Dodržiavanie obmedzení a byť explicitný o neistote.
Je menej skvelý v:
- Hádanie správania API, ktoré nemôže čítať.
- Ťažká choreografia nástrojov (tu nie je potrebná).
- Dlhé refaktorovania viacerých súborov bez toho, aby človek viedol kroky.
Tento posledný bod je dôležitý. Najlepší spôsob, ako dosiahnuť silné výsledky, nie je zväčšiť agenta – je to zmenšiť úlohu. Použite svoj mozog na rozsah a 4.5 na vykonávanie v rámci tohto rozsahu.
Slovo o integrácii IDE
Odolajte nutkaniu zapiecť to priamo do panela IDE s päťdesiatimi prepínačmi. Terminálový cyklus s textovými rozdielmi sa ľahšie dôveruje a ladí. Ak chcete sladkosti editora, udržujte ich hlúpe:
- Príkazy na spustenie/zastavenie cyklu.
- Zobraziť rozdiely v rozdelenom zobrazení.
- Výzva na schválenie zápisov (voliteľná, ale múdra).
Môžete integrovať neskôr. Najprv to rozbehnite.
Sider.AI, používaný striedmo, skutočne pomáha Ak chcete pragmatické prostredie na spustenie tohto druhu cyklu bez toho, aby ste znovu vynašli lešenie, Sider.AI skutočne funguje – aspoň keď ho používate na to, na čo je dobrý. Udržiava konverzáciu a rozdiely upratané, umožňuje vám spúšťať príkazy a nenúti vás nejaký grandiózny „autonómny agent framework“. Trikom je dodržiavať vlastné pravidlá: krátke prompte, úzke cykly, viditeľné rozdiely. sa vám vyhýba, čo je zriedkavejšie, ako by malo byť. Bežné úskalia (a ako sa vyhnúť smiešnemu vzhľadu)
- Príliš preplnený kontext: Ak váš prompt znie ako výkupné, robíte to zle. Načítajte súbory na požiadanie.
- Predčasné refaktorovanie: Agent navrhuje reorganizáciu modulov? Najprv nech prejdú testy. Refaktorujte neskôr.
- Halucinované súbory: Vyžadujte list_dir a read_file pred akýmkoľvek write_file do novej cesty.
- Nekonečné cykly opakovaného spustenia: Obmedzte kroky. Vyžadujte zdôvodnenie pre každú novú hypotézu.
- Jeden obrovský rozdiel: Rozdeľte zmeny. Menšie rozdiely zlyhajú rýchlejšie a ľahšie sa o nich uvažuje.
Bezpečnosť bez paranoje
- Lokálne vykonávanie: Spustite v adresári v karanténe. Predvolene žiadna sieť.
- Izolácia závislostí: Použite lokálny venv alebo kontajner. Pripnite verzie.
- Tajomstvá: Agent ich nepotrebuje. Ak príkaz vyžaduje token, zastavte sa a opýtajte sa.
- Auditovanie: Uchovávajte každý plán, rozdiel a príkaz v protokole.
Ako zistiť, že to funguje
- Skracuje sa doba prípravy: Opravy chýb, ktoré trvali hodinu, teraz trvajú desať minút.
- Menej chýb pri písaní: Rozdiely sa zmenšujú, testy sú zelenšie.
- Dôverujete tomu: Prestanete sa vznášať nad každou akciou, pretože vás to nepálilo.
- Spoluhráči to používajú: Definícia úspechu je, že si to ostatní osvoja bez stretnutia.
Opatrné rozširovanie
Ak naozaj musíte škálovať, robte to disciplinovane:
- Paralelné podúlohy, nie paralelné mozgy: Rozdeľte prácu, spúšťajte viacero nenáročných cyklov v samostatných adresároch a zlúčte, keď je všetko v poriadku.
- Epizodická pamäť, nie výpis mozgu: Uložte úspešné opravy a mapovania symptómov na opravu. Získajte chirurgicky.
- Pravidelné „väčšie“ prechody: Vyhraďte si reláciu vedenú človekom na refaktorovanie; agent asistuje, nevedie.
Minimálna referenčná implementácia (náčrt)
Pseudokód podobný Pythonu na rozbehnutie:
- def init(self, repo_root, model):
- self.history = [] # posledné dva rozdiely a testovacie výstupy
- "repo": summarize_repo(self.root),
- "constraints": {"write_whitelist": ["src/", "tests/"], "max_diff_lines": 300, "no_network": True},
- "history": self.history[-2:],
- plan = self.model("propose_plan", self.context(task))
- diff = self.model("propose_patch", {"plan": plan})
- out = run_cmd(plan.test_cmd)
- eval = self.model("evaluate", {"output": out, "plan": plan})
- self.history.append({"diff": diff, "out": tail(out)})
Koniec v ľudskej veľkosti
Priemysel neustále sľubuje autonómnych vývojárskych agentov. To, čo v skutočnosti potrebujeme, je čestný asistent, ktorý číta, plánuje, upravuje, spúšťa a zastavuje. 4.5 je v tom dobrý, za predpokladu, že ho nepochováte pod frameworky, ktoré existujú väčšinou na to, aby ospravedlnili samy seba. Nenáročný nie je kompromis – je to pointa. Vytvorte cyklus, pridajte poistky a nechajte nástroj urobiť jednu vec, ktorú nástroje vždy robili, keď ich udržiavate jednoduché: zmenšite prácu.
Záver: Nudná skratka, ktorá vyhráva
Tu je váš kontrolný zoznam pre nenáročného kódovacieho agenta s 4.5:
- Jeden cyklus, jeden model, malé nástroje.
- Stručný kontext: úloha, niekoľko súborov, posledné výstupy.
- Minimálne rozdiely, časté testy, tvrdé limity.
- Lokálne, v karanténe vykonávanie; žiadna sieť.
- Voliteľné sladkosti editora; nikdy nevyžadované.
Ak prižmúrite oči, podozrivo to vyzerá ako dobré softvérové inžinierstvo, len rýchlejšie. A to je pointa. Najmúdrejšia vec, ktorú tu môžete urobiť, nie je naháňať „autonómiu“ – je to kodifikovať disciplínu. Čím menej od agenta žiadate, tým viac získate.
FAQ
Q1: Ako začať vytvárať nenáročného kódovacieho agenta s 4.5?
Definujte malú sadu nástrojov (čítať, písať, vyhľadávať, spúšťať), napíšte prísny systémový prompt a implementujte cyklus Pozoruj → Plánuj → Konaj → Zhodnoť. Udržujte malý kontext a podávajte skutočné protokoly a rozdiely – 4.5 funguje najlepšie, keď je úloha úzka a spätná väzba je konkrétna.
Q2: Potrebujem vektorovú databázu alebo pamäťovú vrstvu pre kódovacieho agenta 4.5?
Nie. Pre väčšinu úloh stačí krátkodobá pamäť plus search_code. Pridajte dlhodobú pamäť iba vtedy, ak opakovane navštevujete rovnaký repozitár a môžete dokázať, že šetrí tokeny bez toho, aby agenta ohlúpol.
Q3: Aké poistky sú nevyhnutné pre kódovacieho agenta 4.5?
Povoľte cesty na zápis, obmedzte veľkosti rozdielov, obmedzte príkazy a protokolujte každú akciu. Tieto jednoduché limity udržiavajú agenta predvídateľným a robia vrátenie späť nudným – v dobrom slova zmysle.
Q4: Dokáže nenáročný agent zvládnuť refaktorovanie viacerých súborov?
Áno, ak rozdelíte prácu na malé kroky a udržíte cyklus úzky. 4.5 dokáže spravovať refaktorovania, ale vy riadite rozsah; inak získate jeden obrovský, krehký rozdiel, ktorý nebudete chcieť skontrolovať.
Q5: Kam zapadá Sider.AI s kódovacím agentom 4.5?
Sider.AI je užitočný ako upratané pracovné prostredie: konverzácie, rozdiely a príkazy na jednom mieste, bez toho, aby ste si vynucovali ťažkopádny agent framework. Použite ho na spustenie cyklu, nie na jeho opätovné vynájdenie.