Claude Code: a háttérparancsok 30 perces korlátja
MarkdownA 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
-pkapcsoló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.
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_MSváltozó1800000fö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. Ha7200000(2 óra) fölé állítod, a felső korlát is megemelkedik. - A
BASH_MAX_TIMEOUT_MSváltozó7200000fö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:
- Egyszeri, legfeljebb 2 órás hosszú futtatás. Kérd meg Claude-ot, hogy hosszabb futási idővel indítsa újra a parancsot.
- A parancsok rendszeresen 30 percnél tovább tartanak. Állítsd a
BASH_DEFAULT_TIMEOUT_MSértékét1800000fö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 aBASH_MAX_TIMEOUT_MSértékét is7200000fölé. - 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.
- 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.