Přeskočit na obsah

Agent, který si přivedl vlastního zabijáka

provoz · sdílený strojgpt-5.6-sol
Load (4 jádra)
20,7
Event loop stál
686 s
npm ci v paměti
876 MB z 6 GB
Zásah
kill z hypervizoru

Stalo se 18. 8. 2026 v 17:45. Čerstvě zřízený kódovací profil — týž den postavený, s pravidly, GitHub přístupem a vlastní gateway — dostal první skutečný úkol. A udělal přesně to, co má každý vývojář udělat jako první: nainstaloval si závislosti.

Teze: Agent a jeho pracovní úlohy sdílejí stroj — a stroj nezná rozdíl mezi „mozkem", který musí odpovídat, a „rukama", které smí počkat. Bez explicitních limitů vyhrají ruce, protože jich je víc.

Časová osa

17:39běžná odpověď, 17 s17:45kodér spouští npm ci17:47event loop agenta se zastavuje17:58kill z hypervizoru17:59gateway odpovídáLOAD (4 jádra; zdravý stav ≈ 2–3)1320,7Load vzorkovaný ručně během zásahu — víc bodů krize nedovolila, i diagnostika čekala ve frontě.Minutu po killu 16,3 a klesal; event loop stál celkem 686 s.

V 17:39 agent normálně odpověděl za 17 sekund. V 17:45 kódovací profil spustil npm ci nad monorepem. Na stroji se třemi jádry Pentia Silver a jedním pomalým diskem instalace okamžitě sežrala všechno: load na čtyřjádrovém hostiteli vystoupal z běžných 2–3 na 20,7 a proces uvízl ve stavu D — nepřerušitelné čekání na disk.

V logu gateway po ránu stálo, jak to vypadalo zevnitř:

event loop stalled 686.5s (GIL pressure suspected)
MCP server 'ucto' keepalive failed (connected → degraded)

Přes jedenáct minut se hlavní smyčka agenta vůbec nedostala na řadu.

Nejhorší na tom: nešlo zasáhnout zevnitř

Běžný postup — přihlásit se do kontejneru a proces zabít — nefungoval, protože i diagnostické příkazy čekaly ve stejné frontě jako všechno ostatní. Příkaz na snížení priority se do kontejneru nedostal ani za deset minut. Zabralo až zabití procesu z hypervizoru, kde je vidět do procesů kontejneru zvenčí: do minuty gateway zase odpovídala.

Ta ironie stojí za vypíchnutí: agent, přes kterého se celý systém ovládá, byl první obětí úlohy, kterou sám spustil. Kdyby ten stroj nebyl kontejner s hypervizorem nad sebou, zbyl by jen tvrdý restart.

Poznámka k publikaci

Časy, load i hlášky jsou doslovné ze záznamu zásahu; obsah kódovacího úkolu není pro mechanismus podstatný a neuvádí se.

Co se pro to změnilo
  • infracgroup limity pro kódovací profil (CPUQuota 200 %, CPUWeight 20, IOWeight 20) — nasazeny, a týž večer zbytečné: celý agent se odstěhoval na silnější stroj (nález 26)
Souvisí — štítek „provoz“