Tinklaraštis

Claude Code: 30 minučių fone veikiančių komandų limitas

Markdown

Claude Code sustabdo fone veikiančią komandą po 30 minučių, kai ji vykdoma be priežiūros: -p, Agent SDK, CI, debesija. Kaip padidinti limitą ir ką daryti, jei komanda sustoja.

Skaityti visą straipsnį

Kai komanda vykdoma be priežiūros, Claude Code sustabdo ją po 30 minučių: tai gali būti paleidimas su vėliava -p, Agent SDK programa, CI užduotis arba debesijos sesija. Jei Claude nustato pačios komandos trukmę, ji veiks ne ilgiau kaip 2 valandas, o įprastam terminalui, darbalaukio programai ir VS Code nuo 2.1.288 versijos laiko limitas netaikomas.

Anksčiau visą dieną sėdėdavau prie ekrano: duodavau agentui vieną užduoties etapą, patikrindavau rezultatą, pataisydavau ir paprašydavau tęsti. Etapą po etapo. Nors kodą galėjo rašyti kompiuteris, jam vadovavau aš. Dabar parengiu planą, suskirstau jį į etapus, nakčiai patikiu įgyvendinimą antriniams agentams ir išeinu. Per 8 valandas be manęs Claude įgyvendina planą: nagrinėja, kuria ir tobulina. Ryte daugiau laiko skiriu darbui priimti, o ne atlikti iš naujo.

Tačiau jei naktinis paleidimas naudoja -p arba vykdomas pagal tvarkaraštį serveryje, CI aplinkoje ar debesijoje, kūrimo serveris ir fone veikianti kompiliavimo užduotis veiks 30 minučių. Tada Claude Code jas sustabdys, ir naktinis darbas įstrigs pusiaukelėje. Paaiškinsiu, kam taikomas limitas, kaip jį padidinti ir ką daryti, jei komanda jau sustojo. Pradėkime.

Pagalbos, kaip naudotis paslauga, ieškokite Ailoot dokumentacijoje.

Pagrindinė mintis

Nuo 2.1.285 versijos Claude Code pats sustabdo fone veikiančias komandas, kai jos pasiekia laiko limitą, ir praneša Claude sustabdymo priežastį. Nuo 2.1.288 versijos limitas taikomas tik vykdymui be priežiūros: -p, Agent SDK, CI ir debesijos sesijoms. Tiesiogiai fone paleista komanda veikia 30 minučių arba nurodytą laiką, bet ne ilgiau kaip 2 valandas. Komanda, perkelta į foną pasibaigus laukimo laikui, veikia 30 minučių nuo perkėlimo. Limitą galite padidinti nustatę 2 kintamuosius faile ~/.claude/settings.json.

Kam taikomas limitas

Fone veikianti komanda – tai komanda, kurią Claude paleidžia ir palieka veikti, kol užsiima kuo nors kitu. Pavyzdžiui, kūrimo serveris, paleistas komanda npm run dev, arba kompiliavimo procesas, stebintis failų pakeitimus.

Claude Code dokumentacijoje rašoma:

Sesijoje, kuri vykdoma be priežiūros, pavyzdžiui, paleidus su vėliava -p, Agent SDK programoje, CI užduotyje arba debesijos sesijoje, fone veikiančioms Bash ir PowerShell komandoms taikomas laiko limitas. Vietinėje sesijoje, kurioje dirbate terminale, darbalaukio programoje arba VS Code plėtinyje, fone veikiančioms komandoms laiko limitas netaikomas.

Laiko limitui reikia Claude Code v2.1.285 arba naujesnės versijos. Iki v2.1.288 jis buvo taikomas visose sesijose.

— Anthropic, Įrankių žinynas, https://code.claude.com/docs/en/tools-reference.md

Kitaip tariant, limitas taikomas, kai jūsų nėra: vykdant su -p, Agent SDK programoje, CI užduotyje arba debesijos sesijoje. Kai patys dirbate sesijoje, limitas netaikomas nei terminale, nei darbalaukio programoje, nei VS Code. Jis atsirado 2.1.285 versijoje ir iki 2.1.288 versijos buvo taikomas visur.

Kaip nustatyti, ar tai aktualu jums:

  • Atidarėte Claude Code terminale arba VS Code, paskyrėte užduotį ir nuėjote miegoti. Jei naudojate 2.1.288 arba naujesnę versiją, limitas netaikomas. 2.1.285–2.1.287 versijose jis taikomas ir šiuo atveju. Kaip atnaujinti iki naujausios versijos, paaiškinau atskirame straipsnyje.
  • Claude Code paleidžiamas komanda claude -p "task" pagal tvarkaraštį, jūsų Agent SDK programoje arba CI aplinkoje. Limitas taikomas.
  • Užduotis vykdoma debesijos sesijoje. Limitas taikomas.

Kai patikiu agentams dirbti savarankiškai, paprašau jų užklausoje: „Įrašyk šias sąlygas ir sustabdymo priežastis į darbo planą. Patikrink, ar procesas nepriklauso nuo lango, kurį uždarysiu, arba nuo paties kompiuterio.“ 30 minučių limitas yra viena iš tokių priežasčių.

Kiek laiko veikia fone vykdoma komanda

Laikas pradedamas skaičiuoti, kai komanda perkeliama į foną. Galimi 2 atvejai.

Claude iš karto paleidžia komandą fone. Jai skiriama 30 minučių. Jei paleisdamas Claude nurodo trukmę (parametrą timeout), jai skiriamas nurodytas laikas, bet ne daugiau kaip 2 valandos.

Komanda nebaigiama, kol Claude jos laukia. Įprastos komandos Claude laukia 2 minutes. Jei per tą laiką ji nebaigiama, Claude Code jos nesustabdo, o perkelia į foną. Nuo tos akimirkos jai skiriama 30 minučių.

Pasibaigus laikui, Claude Code sustabdo komandą ir praneša Claude:

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

Jei darbas nebaigtas, Claude gali iš naujo paleisti komandą, skirdamas jai daugiau laiko.

Dar vienas dalykas apie -p. Vykdant tokio tipo užduotį, fone veikiančios komandos nutraukiamos praėjus maždaug 5 sekundėms po galutinio Claude atsakymo. Naktį paleistas serveris su -p veiks tik tiek, kiek truks pats paleidimas. 30 minučių limitas svarbus, kai paleidimas trunka ilgiau: Claude pradeda serverį ir valandą vykdo jame patikras.

Kaip organizuoti naktinį darbą su Claude Code

Pavargau visą dieną vadovauti agentui, todėl tai pakeičiau viena orkestravimo užklausa. Paleidžiu ją vakare, o Claude dirba visą naktį ir paeiliui pereina darbo etapus: rašo, tikrina, taiso ir savarankiškai sukuria pakeitimų rinkinius.

Antrinių agentų grupės rašo kodą, kiekviena dirbdama su savo failais, kad netrukdytų viena kitai. Kita, nauja grupė priima darbą: peržiūri kodą, atlieka saugumo ir veikiančios sistemos patikras. Radus problemą, ji iš karto ištaisoma, o patikros vykdomos iš naujo. Užklausoje yra tokia eilutė: „Jei baigsis kontekstas, užfiksuok būseną; kitas paleidimas tęs darbą.“

Aprašytame pavyzdyje per 3 dienas tokiu būdu buvo įgyvendinti 8 iš 14 etapų.

Reikia nepamiršti tik 2 dalykų. Orkestratorius už jus negalvoja: pirmiausia parenkite išsamų planą su etapais, o tada pradėkite naktinę pamainą. Be to, tai sunaudoja didelę jūsų prenumeratos limito dalį, todėl neverta taip dirbti su nedidele užduotimi. Visada apribokite bandymų skaičių, antraip agentas per naktį išeikvos visą prenumeratos limitą. Kaip nustatyti šiuos naudojimo limitus, paaiškinau atskirame straipsnyje.

Kaip padidinti limitą

1 variantas: paprašykite Claude. Konkrečios komandos trukmę parenka Claude, jos patys nenustatote. Tačiau užduotyje galite parašyti: „Palik kūrimo serverį veikti fone 2 valandas.“ Tokiu būdu negalima skirti daugiau nei 2 valandų.

2 variantas: kintamieji nustatymų faile. Reikšmės nurodomos milisekundėmis. Negalite sumažinti limitų iki mažiau nei 30 minučių ir 2 valandų – galite juos tik padidinti.

  • BASH_DEFAULT_TIMEOUT_MS Nustačius didesnę nei 1800000 (30 minučių) reikšmę, pakeičiamas numatytasis 30 minučių laikas. Tai taikoma ir komandoms, kurias Claude paleidžia fone nenurodęs trukmės, ir komandoms, kurios pasibaigus laukimo laikui perkeliamos į foną. Nustačius didesnę nei 7200000 (2 valandų) reikšmę, padidėja ir maksimali riba.
  • BASH_MAX_TIMEOUT_MS Nustačius didesnę nei 7200000 reikšmę, padidinama 2 valandų maksimali riba. Numatytasis 30 minučių laikas nesikeičia: komanda be atskirai nurodytos trukmės vis tiek bus sustabdyta po 30 minučių.

Kintamasis BASH_DEFAULT_TIMEOUT_MS turi šalutinį poveikį. Tas pats kintamasis nustato, kiek Claude laukia įprastos komandos, kol ją perkelia į foną. Nustačius 1 valandą, Claude lauks 1 valandą, o ne 2 minutes. Naktį tai netrukdo. Dieną ilgiau lauksite atsakymo, kai komandos vykdomos ilgai.

Jei nenorite gilintis į detales: jei tiek įprastoms komandoms, tiek maksimaliai trukmei reikia 3 valandų, nustatykite BASH_DEFAULT_TIMEOUT_MS reikšmę 10800000. To pakanka; antrojo kintamojo nereikia.

Nustatymų failas yra jūsų pradžios katalogo aplanke .claude: ~/.claude/settings.json sistemoje macOS ir Linux, o %USERPROFILE%\.claude\settings.json sistemoje Windows. Jei failo nėra, sukurkite jį. 1 valandos limitas atrodo taip:

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

Jei faile jau yra env blokas, pridėkite eilutę į jį. Išsaugojus failą, veikianti sesija perima naujas reikšmes. Pašalinus kintamąjį, pakeitimas įsigalioja tik kitą kartą paleidus claude.

Failas turi būti tame kompiuteryje, kuriame veikia agentas. Kad agentas galėtų dirbti visą naktį, kompiuteris neturi užmigti. Arba paleiskite Claude Code nuotoliniame serveryje ir ten įrašykite nustatymus.

Jei komanda jau sustojo

Nieko nereikia daryti rankiniu būdu. Claude Code praneša Claude, kodėl komanda sustojo, todėl pirmiausia tiesiog paklauskite, kas nutiko.

Tada atlikite šiuos veiksmus paeiliui:

  1. Vienkartinis ilgas, iki 2 valandų trunkantis paleidimas. Paprašykite Claude iš naujo paleisti komandą, skiriant jai daugiau laiko.
  2. Komandoms reguliariai reikia daugiau nei 30 minučių. Nustatymų faile nustatykite BASH_DEFAULT_TIMEOUT_MS reikšmę, didesnę nei 1800000, kaip pateiktame pavyzdyje. Jei reikia daugiau nei 2 valandų, nustatykite ir BASH_MAX_TIMEOUT_MS reikšmę, didesnę nei 7200000.
  3. Paleiskite komandą iš naujo. Dokumentacijoje negarantuojama, kad pasikeis komandos, kuri jau veikė fone prieš pakeitimą, elgsena.
  4. Patikrinkite kito paleidimo rezultatą. Jei Claude ataskaitoje vėl yra frazė „stopped after reaching its background time limit“, šios komandos nustatymas nepakeitė.

Antriniai agentai ir įprastos užduotys leidžia agentui dirbti, kol jūsų nėra.

Atskirame straipsnyje paaiškinau, kaip nustatyti agentą, kad jis visą naktį veiktų ciklu. O čia paaiškinta, kaip sukonfigūruoti Claude Code, kad jis per naktį nesugadintų projekto.

Patikrinkite, kuriame etape sustoja jūsų naktinis paleidimas, ir palyginkite sustabdymo priežastį su pirmiau aprašytais limitais.

Šaltiniai

  • Claude Code: Įrankių žinynas - kam taikomas limitas, 2.1.285 ir 2.1.288 versijos, 30 minučių ir 2 valandos, komandų perkėlimas į foną pasibaigus laukimo laikui, pranešimo tekstas ir kintamieji BASH_DEFAULT_TIMEOUT_MS bei BASH_MAX_TIMEOUT_MS.
  • Claude Code: Aplinkos kintamieji - 2 minučių numatytasis laikas įprastai komandai, env blokas faile ~/.claude/settings.json ir tai, kada sesija perima naujas reikšmes.
  • Claude Code: Headless - paleidimas su -p; fone veikiančios komandos nutraukiamos praėjus maždaug 5 sekundėms po galutinio atsakymo.
  • Claude Code: Nustatymai - failo ~/.claude/settings.json vieta sistemoje Windows.

Susipažinkite su Ailoot.

Išsamiau

Klausimai ir atsakymai

Ar per naktį palikta interaktyvi sesija sužadina 30 minučių limitą?

Claude Code 2.1.288 ar naujesnėje versijoje straipsnio limitas taikomas paleidimams be priežiūros, tokiems kaip -p, Agent SDK, CI ir debesijos sesijos. Vien palikus įprastą vietinę interaktyvią sesiją atvirą ji netampa tos kategorijos dalimi.

Ar didesnis timeout išlaikys serverį veikiantį pasibaigus -p paleidimui?

Ne. Foninės -p paleidimo komandos užbaigiamos netrukus po galutinio atsakymo. Timeout keitimas veikia komandos trukmę vykdymo metu; jis nepaverčia paleidimo nuolatine priegloba.

Visi straipsniai