Галоўная / Артыкулы

Агентныя цыклы кадавання: ад аднарадковага bash да /goal, праверак і жорсткіх спыненняў

Агентныя цыклы кадавання крок за крокам: аднарадковы bash, /goal і /loop у Claude Code, знешняя праверка, тры ліміты выдаткаў і навыкі, якія варта пакінуць.

Выдавец: REACTAPP.TOP11 хв чытання2572 слоў

Крыніцы: WTF Is a Agentic Coding Loop? And How to Build One.

Адзін выказак Пітэра Штайнбергера стаў ключовым у дыялогах пра AI-кодаванне ў чэрвені 2026 года і набраў два мільйоны пераглядоў: агентамі для кодавання больш не трэба кераваць вручную, а замест таго трэба ствараць ціклы, якія ўпорадковваюць ўсё. Адпаведзі ператворыліся на спаркі ўжо па тым, што гэта значыць. Калі хтось запытаў, як гэта выглядае на практыцы, найчашчае цытаваная адпаведзь была жартамі, што толькі два чалавекі гэта знаюць. Гэта кумічна і некальканая. Ідэя не ў містычным сэнсе, а спосаб ўвайшчыць у ёю — адно запаведзенне.

Уместнае рашэнне — не спарачывацься над тым, чы розробка прамптав мертва, а стварыць такі прампт, выйшоўшы з рэчы, якую можна скопіюваць за пяць хвілін.

Тры пункты падтрымліваюць рэшту:

  • Цікл — гэта скрыпт, які надае агенту запіт, пераглядае выходныя даны, выявляе, чы гэта заведама завершана, і павтараецца, калі ні. Чалавек больш не сядзіць у цыкле і не пішчыць інструкцыі. Цікл ствараецца адночы, а мадэль выступае як падпраграма ў ўсёму ўсёму.
  • Найпростышы корыстны цікл — гэта адна лінія коду bash, а найкорыстнейшы — гэта адна команда з слэшам. Для запуску не трэба ніякіх фрэймворкаў для оркестрацыі, а пачынак з такога ёсць памылкай.
  • Тое, што адзіляе цікл, які працуе, ад таго, які выкарыстоўвае весь бюджэт, зводзіцца да двух пунктав: спосаба перагляду выходных данаў ціклу па вазе з зовнішнімі правдамі, і чысткіх умов зупінкі, якія змушаюць яго абарвацца.

Апішанне і ступеніця

Борыс Чарны створыў Claude Code, і, як ён сам заявляе, за апошні месяц Claude Code напісаў кожны з яго сабеўніх дапамог да праекту — 259 запрошэнняў на зміны, — тады як яго IDE было адынсталлявана ў лістападзе. Ён проста апісвае гэты метод: ён больш не запрашае Claude, ціклы запускаюцца самі, а ён толькі падказвае, што трэба зрабіць далей, а яго задача — пісаць ціклы.

Ягоў трыпаковы лесачак прыкладзеяе гэю ідэю ў рэальнасць. Аднаго года тым займаліся рукапісны код з функцыяй автодаполнення. Потым пачаліся кансэльцыі з агентамі паралельна, кожная з яых керавалася вручную. Цяпер жа сама програма керуе агентам, а інжынер можа займацца іншымі справамі. Праца паднялася на вышэйшы рэвэль — з напісання коду да стварэння таго, што пішае код. Ён чыста паводлівае, што гэта не прыводзіць да таго, што інжынеры будуць зваліквіраваны. Хтось усё рава вяршыць, што ствараць; хорашыя інжынеры маюць большое значэнне, а перакананне рэзультатаў завжды мае значэнне. Нажатыя клавішы засталіся, а адгукі — таксама.

Найменшы цыкл: адна лінія bash

Усю ідэю можна выразіць за адну лінію коду, і ўжо адна ўваходжэнне дапамагае ўсё разумець. Ёй даў назву цыкл Ральфа, на частку Ральфа Віггума, а Джэффры Хантлі папулярызаваў яе у 2025 годзе.

while :; do cat PROMPT.md | claude -p --dangerously-skip-permissions; done

Гэта ўсё. Той самы файл з запітамі падаецца ў Claude Code у рэжыме без вікна, агент працуе пакуль не завершыць працу, а пасля цыкл пачынаецца знову з ідэнтычным запітам. Кожны запуск ніколі не памятае поперадні, таму агент аднаходзіць неабяжнае напрамлення на адпаведныя файлы, чарткі з задачамі і змянамі, якія залішылі поперадні запускі. Не ёсць ніякіх фрэймворкаў чы машын станоў, толькі бесканцовы цыкл адпаведальнасці агента па кодаванні.

Будзьце аберэжны, перш чым копіюваць тэкст: флаг, які прыменшвае запытанні пра правыя на адчынэнне, дзейнае так, як і гаворыцца, і агент будзе выкананяць каманды без запытанняў. Прыдатным месцам будзе тымчасовая рабочая структура git чы кантэйнер на гілцы, якую можна без проблем адмахнуцца, ніколі не на галоўнай гілцы.

Хітрасць у прычынуе прыzwычка, а не код. Замест таго, каб адна вялікая беседа стала б безжыцевай, кожная ітэрацыя пачынаецца з фіксаванага набора базовых файлаў. Файлы-запросы ўсё час называюць тыя ж калькі дакументаў — зазвычай спецыфікацыю і чарт контроля, які агент практыкуе і фіксуе па ходу працы. Такім чынам кожны новы цыкл пачынаецца з чыстага фону, а фіксаванне працы на кожны раунд не дазволяе агенту збіцца з курсу або перрабацаваць вяршаную працу.

Чы гэты просты трук дае рэзультаты? Команда на хакатоне Y Combinator за ноч час створыла шасць рэпазітарыёў за дапамогою цыклу Ralph, затрачыўшы абоўшы 297 долераў на API, што ў ўзрачынах дораваляе прыблізна пяцідзесятам тысячам долераў за працу підрабочых. Хантлі такім жа спосабам стварыў цэлы маленькі мова програмавання. Як іграшка, такі просты падход не падходзіць для складных задач, але ён дазволяе зразумець всю структуру за паловы мінуты.

Справа ў тым, чаму тыя, хто найбольш заангажаваны ў гэтым, спрыяюць таму, што гэта стае застарэлым. Цыкл Ralph прыпускае, што тэрмінал застаецца ачытым, і ніколі не пытаецца, чырвонена задача. Ён проста працюе без канца, і наступныя два раздзелы прыдзельна розглядаюць гэта пытанне.

Адна команда: /goal і /loop

Няма прычыны пісаць код Bash вручную. Claude Code мае две команды, якія болей безпечна рэалізуюць той самы цыкл.

Команда /goal прыводзіць агента ў працу, пакуль не будзе выпалоўваць заданая умова, і саме умова ёсць ключовым элементам у гэтым падходзе.

/goal all tests in test/auth pass and the lint step is clean,
      or stop after 20 turns

Тое, што выважае яго на вышыню працы модэлю while-true, — гэта наступны крок. Калі заканчываецца кожны раунд, Claude Code перадае умову і ход размовы окрэмай маленькай, шыракай модэлі — за замовчаннем Haiku, якая адпавядае «так» або «нет» і наводзіць прычыну. Адпаведзь «нет» вяртае гэтую прычыну як кераванне для наступнага раунда. Модэль-рабоцук ніколі не можа заявіць, што завершыла свою працу.

Самым значным абсалютам ёсць тое, што суддзя ніякіх тэстаў не адрабатвае і не адглядае рэпазітарыю. Ён бачыць толькі транскрыпцыю, таму умова павінна быць падтверджаная на адной з выходных даных самага агента. Прыняцце тэстаў у папцы auth ўзгодзаецца з умовамі, калі агент іх адрабатвае, а рэзультат знаходзіцца ў размове. Такія тверджэнні, што аўтэнтыфікацыя ў ціласці, не ўзгодзяюцца, адтуды што нічога ў транскрыпцыі не можа гэта падтвердзіць. Суддзя чытае паказанні і не аўдытуе код, таму абоўязковай перакананнем залягае рэальны запуск команды агентам, пры чым суддзя вяршыць рашэнне, чы паказанні свідчае пра успех.

Умова качання называець адні змерлівы канецовы стан і пазначае, як агент яго будзе практыкаваць у выходных даных. Павышэнне аўтэнтыфікацыі не ўваходзіць у склад умов. Адзінай з умоў ёсць паспэшчанне тэстаў аўтэнтыфікацыі, нулевы выхід з команды тэста і статус git, які паказвае змяны толькі ў файлах аўтэнтыфікацыі, адколькі кожны з эых пунктав у транскрыпцыі выступае як команда, якую запускаў агент. Неабходна дадаць ліміт, напрыклад, зупінку пасля 20 раундоў, а таксама флаг максымальнага колькасці раундоў як надзейны захоп, каб неадзорны запуск не могаў трываць вечна.

Неадзорны одноразовы запуск выкорыстоўвае рэжым без тэрміналу з гэтым флагам і метаю ў лапкі. Працэс павінен застацца жывым падчас работы, таму яму трэба відкрыты тэрмінал або сервер, а не закрытый ноутбук. Для закрыцья крышкі падходзіць Claude Code у воблаку. Ctrl+C прымусова завершае локальны запуск раней.

Короткі запуск у практыцы, два раунды і прыблізна чатыры дзесятых секунды, выглядае так.

> /goal all tests in test/auth pass, npm test exits 0, or stop after 15 turns
◎ /goal active · turn 1
  ran: npm test
  ✗ 2 failing in test/auth/login.test.ts
  judge: not done, expired-token case still throws◎ /goal active · turn 2
  edited src/auth/token.ts
  ran: npm test
  ✓ 41 passing, exit 0
  judge: done, npm test exits 0 and only auth files changed✓ goal achieved · 2 turns · ~$0.40

Там відна ўсё: агент выкананая перакальбаванне, рэзультат улучшаны ў протакол, а суддзя яго чытае і прымеяе рашэнне пра продажчык або абараненне.

Каманда /loop – гэта запланаваны аналаг, які сочыць за процэсам. Сам прыклад Чэрні варта скопіраваць, змініўшы іменнікі.

/loop babysit all my PRs. Auto-fix build issues, and when
      comments come in, use a worktree agent to fix them.

Ён павтараецца па певным інтэрвале, обрабоцвае все новае з момента пярэдньяго запуску і продовжваецца пакуль хтось яго не зупініць або пакуль не будзе завершана праца. Гэта ўсьмо ёсць польсінгам, а не обрабоцкай зместоў падзеяў, што дастатнья для назірання за запросамі прыняцця коду і выправлення бягункоў. Запісваецца толькі намер і правілы зупінкі, а крокі залішаюцца без увагі.

Самаперакананне робіць яго надзеяным

Цікл, які запісвае код і ніколі яго не пераканвае, стварае ўсе больш серйозныя памылкі з ростам часу. Ён павінен тэставаць свой выход проты чагось зовнішняга і об’ектыўнага, а не проты свайго сопственнага падзірку.

Людзі, які выконваюць гэтыя задачы, адхараюцца адной прынцыпай: рашыннем пра выкаанчаванне працы ёсць зусібнія ззаўні, а не сама ацэнка модэлю. Цыкл продовжваецца, пакуль запуск docker build не будзе успешным, кантэйнер не запускаецца і перагляд стану не пройдзе, а сведчэння агента пра тое, што все гаразд, не мае значэння. Об’ектыўныя крэтыры заменяюць сабой суб’ектыўныя уражанні. У псэудакодзе стойкі тэла цыклу выглядае так.

loop:
  agent: make progress on the task
  run:   npm test  (or the build, or the linter)
  if check passes:   done, exit
  if check fails:    feed the failure back, try again
  if no progress in N tries, or budget hit: stop and ping me

Працоўнікі, які займаюцца вырабоцтвам, прыносяць два удосконаленні. Перша – гэта тое, каб код пераглядаў іншы мадэль, чым той, які яго напісаў, адтолькі ўжо таму, што кожны мадэль мае свае слабыя месцы, а новы пераглядач можа пазначыць тое, чаго не пазнаў автар. Дан Корнас стварыў roborev самэ для гэтага: ён у фонавым рэжыме пераглядае кожны коміт і надае рэзультаты агенту, калі кантэкст ўсё ўсё ў свежасці. Друга – гэта адбіўце прынеймна два раунды перагляду, нават якшо першы прыйшоўся добра, а таксама обмежыць колькісць раундаў пяцьма-шасцьма, каб цыкл не могаў бесканечна ціркулюваць.

Сам цыкл не ёсць тым, што стварае чуда. Чудо ствараеяе зворотныя звязкі ўнутры яго. З рэальной перапаканкай ён працуе як двыгун, а без яе ён толькі стварае рахунак.

Меры, якія захоўваюць бюджэт недыскрэтным

Калі генераванне коду стала практычна безкоштовным, расходы пераходзяць на цыкл, які яго запускае, а цыкл без меж становіць ся справжнім фінансавым рызыкам. Компанія Uber обмежыла кожнага інжынера 1 500 доларамі на месцы на кожны інструмент для Claude Code і Cursor пасля таго, як за чатыры месцы быў выкарыстоўаны весь ўжо роцавы бюджэт на AI. Команды, якія займаюцца працэйным выкарыстоўванням, бясконечна бояцца цыкла, які ніколі не заканчываецца, калі забуты тэрмінал да ранку ператвараецца на рахунок на чатыры цыфры.

Кожны серьёзны цыкл мае тры аднаковыя умовы зупінкі, і ўсе тры з іх павінны быць задаеныя, прычым яшчэ перш чым цыкл запускаецца без нагляду.

max_iterations:   stop after N turns           (the runaway cap)
no_progress:      stop if M turns change nothing (the stuck cap)
budget_ceiling:   stop at $X or T tokens         (the wallet cap)
on_stop:          ping me with the state and the reason

Каманда /goal практычная дае можлівасць безкоштовна перакрыць ліміт, выканаўшы запіс «stop» пасля 20 раундоў у умовы і перадаўшы флаг раунда. Іншыя два ліміты трэба дадаць ручна. Адказванне на недастатак прыгодак не ўбудована, і найпростэйшы спосаб — гэта хук Stop або маленькі кэйс, які пораўнюе git diff --stat між раундамі і зупіняецца пасля калькі незмененых раундоў. Ліміт бюджэту павінен належаць да кантролі выдаткаў прадаўцы, як жорсткі доларовы ліміт для працоўнага прастору, насталяваны ў консолі раней, чым будзе запусцаны які-небудзь цыкл. Гэта звучыць як напісанне цыклоў, калі тысяча агентаў стварае компанію за ноч, але на практыцы большая частка інжынерных зусіль спрамована на тое, каб яны зупініліся.

Актываўаны рэсурс — гэта навык

Цыкл — гэта тэхнічная база, а ценныя элементы — гэта тое, каму ён павярнуты.

Штайнбергер практыкуе ўтарою параду, якая мае дальнейшы эфект. Усё, што робіцца два разы, стае навыкам, які можна вікорыстоўваць знову, а усё, што ўскладненае, стае навыкам пасля таго, як яго рашылі, і тады наступны раз робіцца простым. Цыкл, які ў кожной ітэрацыі занова вівучае, як адрабатваць тэсты, знаходзіць настройкі і фарматаваць выходны матэрыял, змушвае мадэль несканчатна перавучацца пра праект. Цыкл, які выкарыстоўвае невялікую бібліятэку перапрацаваных, пазначаных навыкаў, такіх як адрабатка комплекту тэстаў, стварэнне запросу пра з’еднанне па стылі команды або размешчэнне на этапы прабных тэстаў, розвіваецца сам, таму што кожная ітэрацыя пачынаецца з ужэ наяўных навыкаў. Гэта коштае менш і ведае менша. Навыкі являюць сабою ценнасць, а цыкл проста выклікае іх у парадку.

Цыклы, якія керуюць цыкламі

На межы, і так, як на самай працоўніцы маюць на увазе Стайнбергер і Чарны, ціклы стэжы за іншымі цікламі. Кантролюючы цікл адразу ж распадзяляе завады між багатымі агентамі, стэжы за ўсімі імі і выбірае наступны крок, падтрымліваючы стабільны стан, падтрымваны сістэмай git, каб збой не занікнуў усё. Адкрыты праект Gas Town Стыва Ягге ілюструе гэта: дваццаць-трыдцаць экземпляраў Claude Code працуюць пад кераваннем агента-мэра, тады як агенты-патрульні неперывна ціклююць. Дынамічныя рабочыя працэсы ў Claude Code — гэта упакаваная форма, калі агент піша скрыпт оркестрацыі і керуе флотам падагентаў.

Ніхто не пачынае там. Парадак такі: спачатку /цэль, потым самаперакананне, пасля чаго — тры ліміты, а оркестрацыя выконвалася толькі тады, калі адзін цікл не можа выконваць завады, што выходзіць пазней, чым прыпускае ажытаванне.

Першы цікл гэтай недзелі

  1. Практычна перапрацавка тэста на адзінамчынай гілцы. Створыце гілку пад назвай loop-test і самі запускайце команду тэста, пераканаючыся, што працэўка завершаецца не з нулям, калі ўтвараюцца проблэмы. Як толькі агент не можа адразніць успех ад неудачы, тады і суддзя не можа.
  2. Выберыце адну задачу з чыста вялікім канцэном. Падходзяць ненадзеяны тэсты, маленькія міграцыі чысткі паведамленняў. Адкладзіце все тое, дзе завершэнне залежыць толькі ад суб’екtyвных пачуццёў.
  3. Формулюйце як /goal з лімітам. Ожывайце рэальную команду, а не расплывчасты фармат, напрыклад, вызов без галавы з лімітам 15 паворотаў, умовай якой будуць тэсты аўтэнтыфікацыі, выход з команды тэста з нулям і зупінка пасля 15 паворотаў.
  • Пераканаўцеся, што агент можа выконваць перакананне з пачатку да канца. Неабяжнае праграмнае забезпечэнне павінна быць установлена, нічога не павінна чакаць на нажатыя клавіш, а адмова павінна прыводзіць да выхіднага коду, не равнаго нулю. Першыя запускі ў такі момент тыха прыпыняюцца.
  • Зачакайце па першым запуску. Спазіруйце, дзе сістэма адпаведзае, што работа не завершана, і як агент рэагуе на адмову пераканання. Клавішы Ctrl+C паўтараюць яго завершэнне.
  • Установіце ліміты выкарыстання перш чым ўсё запускацца без нагляду. Неабяжнае лімітаванне выкарыстання рэсурсаў у консолі, а таксама ліміт колькасці запускаў на кожны раз: першы ліміт запобегае неконтрольаванаму выкарыстанню, а другі — павольнаму выкарыстанню рэсурсаў.
  • Зберагуце тыя часткі, якія павтараюцца, як частку навыку. Команды для тэставання, крокі пры запуску патрэцоў або будзь-якія перыядычныя пояснення павінны быць зафіксаваныя ў файле SKILL.md, каб наступны цыкл запускаўся на адной і той жа базе навыкаў.
  • Да скончыцеся тыдзень, існуе рэальная праца, якую ніхто не напісаў, цыкл, які пераканальваецца пераканальвацца і правіць ся сам, а таксама ліміт, які не дазволяе яму перацягнуцца за межы. Гэта ўсё практыкуванне ў мініятуры.

    Адказ на пытанне, што такое цыкл, не мае нічынага з гібеллю інжынерыі запітоў. Гэта выражаецца ў тым, што трэба застацца ўнутрь цыклу: напісаць цыкл адной раз, дадаць рэальную пераканальванне і навыкі, якія можна вікорыстоўваць знову, задаць ліміт, каб ён зупініўся, і скорыстацца звалічаным часам, каб адлучыцца, калі будуць ствараць. Штайнбергер і Чарны опісваюць тое ж самае з двух напрамкаў, а сённяя «вората» — цэлае команда з слэшам.

    Спадневана літэратура

  • Ornith-1.0: Модэлі кодавання з адкрытымі параметрамі ад 9B да 397B пад ліцэнсам MIT — Чаго прагне выпуск Ornith-1.0 на тэстах SWE-Bench і Terminal-Bench, як ён трэнуе модэль з рашэнням, і што гэта можа значыць для агэнтав для кодавання з закрытымі параметрамі.