Blog

Claude Code: a háttérparancsok 30 perces korlátja

Markdown

A Claude Code 30 perc után leállítja a háttérparancsot felügyelet nélküli futtatáskor: -p, Agent SDK, CI, felhő. Így emelheted meg a korlátot, és ezt teheted, ha egy parancs leáll.

A teljes cikk elolvasása

A Claude Code 30 perc után leállítja a háttérparancsot, ha az felügyelet nélkül fut: például -p kapcsolóval indított futtatás, Agent SDK-alkalmazás, CI-feladat vagy felhőbeli munkamenet esetén. Ha Claude maga állít be futási időt a parancshoz, az legfeljebb 2 órán át futhat, míg a hagyományos terminálban, az asztali alkalmazásban és a VS Code-ban a 2.1.288-as verzió óta nincs időkorlát.

Régebben egész nap a képernyő előtt ültem: adtam az ügynöknek egy feladatot, megnéztem az eredményt, javítottam rajta, majd megkértem, hogy folytassa. Fázisról fázisra. Lehet, hogy a gép írta a kódot, de én irányítottam. Most tervet írok, fázisokra bontom, éjszakára alügynökökre bízom a megvalósítást, aztán elmegyek. A távollétemben töltött 8 óra alatt Claude végigmegy a terven: tanulmányoz, épít és finomít. Reggel több időt töltök a munka elfogadásával, mint az újraírásával.

Ha viszont az éjszakai futtatás -p kapcsolót használ, ütemezetten fut egy szerveren, CI-ben vagy a felhőben, akkor a háttérben futó fejlesztőkiszolgáló és build 30 percig marad életben. Ezután a Claude Code leállítja őket, és az éjszakai munka félbeszakad. Elmagyarázom, kiket érint a korlát, hogyan lehet megemelni, és mit tegyél, ha egy parancs már leállt. Vágjunk bele.

A szolgáltatás használatához segítséget az Ailoot dokumentációjában találsz.

A legfontosabb tudnivaló

A 2.1.285-ös verzió óta a Claude Code maga állítja le az időkorlátot elérő háttérparancsokat, és közli Claude-dal a leállítás okát. A 2.1.288-as verzió óta a korlát csak a felügyelet nélküli futtatásokra vonatkozik: -p, Agent SDK, CI és felhőbeli munkamenetek esetén. A közvetlenül a háttérben elindított parancs 30 percig vagy a megadott ideig futhat, de legfeljebb 2 órán át. Az időtúllépés után háttérbe helyezett parancs ettől a pillanattól számítva 30 percig fut. A korlátot a ~/.claude/settings.json beállításfájlban található 2 változóval emelheted meg.

Kikre vonatkozik a korlát

Háttérparancsnak azt nevezzük, amit Claude elindít, majd futni hagy, miközben mással foglalkozik. Ilyen például az npm run dev paranccsal elindított fejlesztőkiszolgáló vagy egy, a fájlváltozásokat figyelő build.

A Claude Code dokumentációja szerint:

Felügyelet nélkül futó munkamenetben, például a -p kapcsolóval indított futtatás, Agent SDK-alkalmazás, CI-feladat vagy felhőbeli munkamenet esetén a háttérben futó Bash- és PowerShell-parancsokra időkorlát vonatkozik. A terminálban, az asztali alkalmazásban vagy a VS Code-bővítményben használt helyi munkamenet háttérparancsaira nincs időkorlát.

Az időkorláthoz a Claude Code v2.1.285-ös vagy újabb verziója szükséges. A v2.1.288-as verzió előtt minden munkamenetre vonatkozott.

— Anthropic, Eszközreferencia, https://code.claude.com/docs/en/tools-reference.md

Más szóval a korlát akkor érvényes, amikor nem vagy jelen: -p kapcsolóval indított futtatás, Agent SDK-alkalmazás, CI-feladat vagy felhőbeli munkamenet esetén. Nincs korlát a terminálban, az asztali alkalmazásban vagy a VS Code-ban, ha te magad dolgozol a munkamenetben. A korlátot a 2.1.285-ös verzió vezette be, és a 2.1.288-as verzió előtt minden munkamenetre vonatkozott.

Így állapíthatod meg, hogy ez rád is vonatkozik-e:

  • Megnyitottad a Claude Code-ot a terminálban vagy a VS Code-ban, adtál neki egy feladatot, aztán lefeküdtél. A 2.1.288-as vagy újabb verzióban nincs korlát. A 2.1.285–2.1.287-es verziókban viszont erre az esetre is vonatkozott. A legújabb verzióra való frissítésről egy külön cikkben írtam.
  • A Claude Code-ot ütemezetten, a saját Agent SDK-alkalmazásodból vagy CI-ben indítod a claude -p "task" paranccsal. A korlát érvényes.
  • A feladat felhőbeli munkamenetben fut. A korlát érvényes.

Amikor önálló munkára állítom az ügynököket, ezt kérem a promptban: „Írd bele ezeket a feltételeket és a leállítás okait a munkatervbe. Ellenőrizd, hogy a folyamat nem függ-e egy olyan ablaktól, amelyet be fogok zárni, vagy magától a számítógéptől.” A 30 perces korlát az egyik ilyen ok.

Mennyi ideig fut egy háttérparancs

A visszaszámlálás akkor kezdődik, amikor a parancs háttérbe kerül. Két eset van.

Claude azonnal a háttérben indítja el a parancsot. 30 percet kap. Ha Claude indításkor futási időt ad meg hozzá (a timeout paraméterben), akkor annyi ideig futhat, de legfeljebb 2 órán át.

A parancs nem fejeződik be, miközben Claude vár rá. Claude 2 percet vár egy szokásos parancsra. Ha ennyi idő alatt nem fejeződik be, a Claude Code nem állítja le, hanem a háttérbe helyezi. Ettől kezdve 30 perce van.

Amikor lejár az idő, a Claude Code leállítja a parancsot, és ezt közli Claude-dal:

Background command "<description>" was stopped after reaching its background time limit

Ha a munka nem készült el, Claude hosszabb idővel újra elindíthatja a parancsot.

Még egy dolog a -p kapcsolóról. Az ilyen típusú futtatásnál a háttérparancsok körülbelül 5 másodperccel Claude végső válasza után állnak le. Az éjszakai, -p kapcsolóval indított futtatásban elindított kiszolgáló csak addig marad életben, ameddig maga a futtatás tart. A 30 perces korlátnak akkor van jelentősége, ha a futtatás ennél tovább tart: Claude a futtatás elején elindít egy kiszolgálót, majd egy órán át ellenőrzéseket futtat rajta.

Így szervezd meg az éjszakai munkát a Claude Code-ban

Elegem lett abból, hogy egész nap én irányítsam az ügynököt, ezért egyetlen vezérlőprompttal váltottam ki ezt. Este elindítom, Claude pedig egész éjjel, sorban végigmegy a fázisokon: ír, ellenőriz, javít, majd önállóan commitol.

Alügynökcsoportok írják a kódot, mindegyik a saját fájljain dolgozik, hogy ne akadályozzák egymást. Egy másik, frissen indított csoport átveszi és ellenőrzi az eredményt: kódellenőrzést, biztonsági és élő ellenőrzéseket végez. Ha problémát találnak, azonnal kijavítják, és újra lefuttatják az ellenőrzéseket. A prompt ezt a sort tartalmazza: „Ha elfogy a kontextusod, rögzítsd az állapotot; a következő futtatás folytatja a munkát.”

A bemutatott példában 3 nap alatt 14 fázisból 8 készült el így.

Mindössze 2 dolgot kell észben tartani. A vezérlő nem gondolkodik helyetted: először írj részletes, fázisokra bontott tervet, aztán indítsd el az éjszakai műszakot. Emellett sokat fogyaszt az előfizetésed keretéből, ezért egy kisebb feladathoz nem érdemes beállítani. Mindig korlátozd a próbálkozások számát, különben az ügynök egyetlen éjszaka alatt feléli a teljes előfizetési keretedet. A költési korlátok beállításáról egy külön cikkben írtam.

Hogyan emeld meg a korlátot

1. lehetőség: kérd meg Claude-ot. Claude választja ki az adott parancs futási idejét; te nem állítod be közvetlenül. A feladatba viszont beleírhatod: „Hagyd a fejlesztőkiszolgálót 2 órán át a háttérben futni.” Ezzel a módszerrel nem kérhetsz 2 óránál többet.

2. lehetőség: változók a beállításfájlban. Az értékek ezredmásodpercben értendők. A korlátokat nem csökkentheted 30 perc és 2 óra alá; csak növelheted őket.

  • A BASH_DEFAULT_TIMEOUT_MS változó 1800000 fölé állítva megváltoztatja a 30 perces alapértéket. Ez azokra a parancsokra is vonatkozik, amelyeket Claude megadott futási idő nélkül helyez a háttérbe, és azokra is, amelyeket időtúllépés után tesz a háttérbe. Ha 7200000 (2 óra) fölé állítod, a felső korlát is megemelkedik.
  • A BASH_MAX_TIMEOUT_MS változó 7200000 fölé állítva megemeli a 2 órás felső korlátot. A 30 perces alapértéket nem változtatja meg: a saját futási idő nélküli parancs továbbra is 30 perc után áll le.

A BASH_DEFAULT_TIMEOUT_MS változónak van egy mellékhatása. Ugyanez a változó határozza meg, mennyi ideig vár Claude egy szokásos parancsra, mielőtt a háttérbe helyezi. Állítsd 1 órára, és Claude 2 perc helyett 1 órát vár. Ez nem zavarja az éjszakai munkát. Napközben viszont tovább vársz a válaszra, ha a parancsok sokáig futnak.

Ha nem akarsz a részletekkel foglalkozni: ha a szokásos parancsokhoz és a felső korláthoz is 3 órára van szükséged, állítsd a BASH_DEFAULT_TIMEOUT_MS értékét 10800000-re. Ez elég; nincs szükség a második változóra.

A beállításfájl a saját könyvtárad .claude mappájában van: macOS-en és Linuxon ~/.claude/settings.json, Windowson pedig %USERPROFILE%\.claude\settings.json. Ha nem létezik a fájl, hozd létre. Az 1 órás korlát így néz ki:

{
  "env": {
    "BASH_DEFAULT_TIMEOUT_MS": "3600000"
  }
}

Ha a fájlban már van env blokk, add hozzá ezt a sort. A futó munkamenet a fájl mentésekor veszi át az új értékeket. Egy változó eltávolítása csak a claude következő indításakor lép életbe.

A fájlnak azon a gépen kell lennie, amelyen az ügynök fut. Ahhoz, hogy az ügynök egész éjjel dolgozzon, a számítógép nem alhat el. Másik lehetőségként futtasd a Claude Code-ot egy távoli kiszolgálón, és ott helyezd el a beállításokat.

Ha a parancs már leállt

Nem kell semmit kézzel tenned. A Claude Code közli Claude-dal, miért állt le egy parancs, ezért először egyszerűen kérdezd meg, mi történt.

Ezután haladj lépésről lépésre:

  1. Egyszeri, legfeljebb 2 órás hosszú futtatás. Kérd meg Claude-ot, hogy hosszabb futási idővel indítsa újra a parancsot.
  2. A parancsok rendszeresen 30 percnél tovább tartanak. Állítsd a BASH_DEFAULT_TIMEOUT_MS értékét 1800000 fölé a beállításfájlban, a fenti példának megfelelően. Ha 2 óránál hosszabb időre van szükséged, állítsd a BASH_MAX_TIMEOUT_MS értékét is 7200000 fölé.
  3. Futtasd újra a parancsot. A dokumentáció nem ígér semmit azokkal a parancsokkal kapcsolatban, amelyek már a módosítás előtt a háttérben futottak.
  4. Ellenőrizd a következő futtatás eredményét. Ha Claude jelentésében ismét szerepel a „stopped after reaching its background time limit” kifejezés, akkor a beállítás nem vonatkozott arra a parancsra.

Az alügynökök és a rutinok tartják munkában az ügynököt a távollétedben.

Arról, hogyan futtathatsz ügynököt egész éjjel egy ciklusban, egy külön cikkben írtam. Azt pedig, hogyan állítsd be a Claude Code-ot úgy, hogy ne tegye tönkre éjszaka a projektet, itt magyarázom el.

Ellenőrizd, melyik lépés állítja le az éjszakai futtatást, és vesd össze az okot a fenti korlátokkal.

Források

  • Claude Code: Eszközreferencia – bemutatja, mely esetekben érvényes a korlát; a 2.1.285-ös és 2.1.288-as verziókat; a 30 perces és 2 órás időtartamot; az időtúllépés után háttérbe helyezett parancsokat; az értesítés szövegét; valamint a BASH_DEFAULT_TIMEOUT_MS és BASH_MAX_TIMEOUT_MS változókat.
  • Claude Code: Környezeti változók – a szokásos parancsok 2 perces alapértelmezett várakozási ideje, az env blokk a ~/.claude/settings.json fájlban, és hogy mikor veszi át egy munkamenet az új értékeket.
  • Claude Code: Fej nélküli futtatás – a -p kapcsolóval indított futtatások; a háttérparancsok körülbelül 5 másodperccel a végső válasz után állnak le.
  • Claude Code: Beállítások – a ~/.claude/settings.json helye Windowson.

Ismerd meg az Ailootot.

További részletek

Kérdések és válaszok: Claude Code: a háttérparancsok 30 perces korlátja

Az éjszakára nyitva hagyott interaktív munkamenetre vonatkozik a 30 perces korlát?

A 2.1.288-as vagy újabb Claude Code-ban az ismertetett korlát felügyelet nélküli -p, Agent SDK-, CI- és felhőfutásra vonatkozik. Egy szokásos helyi interaktív munkamenet nyitva hagyása önmagában nem ilyen kategória.

Nagyobb timeout életben tartja a szervert a -p futás végén?

Nem. A -p futás háttérparancsai a végső válasz után röviddel leállnak. A timeout futás közbeni időtartamot módosít; nem alakítja tartós tárhellyé a futást.

Összes cikk