Przejdź do głównej treści

Zadania w tle

Szukasz harmonogramowania? Zobacz Automatyzacja i zadania, aby wybrać właściwy mechanizm. Ta strona dotyczy śledzenia pracy w tle, a nie jej harmonogramowania.
Zadania w tle śledzą pracę wykonywaną poza główną sesją rozmowy: uruchomienia ACP, uruchomienia podagentów, wykonania izolowanych zadań cron oraz operacje uruchamiane z poziomu CLI. Zadania nie zastępują sesji, zadań cron ani heartbeat — są rejestrem aktywności, który zapisuje, jaka odłączona praca miała miejsce, kiedy się odbyła i czy zakończyła się powodzeniem.
Nie każde uruchomienie agenta tworzy zadanie. Tury heartbeat i zwykły interaktywny czat tego nie robią. Wszystkie wykonania cron, uruchomienia ACP, uruchomienia podagentów i polecenia agenta w CLI tworzą zadania.

TL;DR

  • Zadania to rekordy, a nie planery — cron i heartbeat decydują, kiedy praca jest uruchamiana, a zadania śledzą, co się wydarzyło.
  • ACP, podagenci, wszystkie zadania cron i operacje CLI tworzą zadania. Tury heartbeat tego nie robią.
  • Każde zadanie przechodzi przez queued → running → terminal (succeeded, failed, timed_out, cancelled lub lost).
  • Zadania cron pozostają aktywne, dopóki środowisko uruchomieniowe cron nadal jest właścicielem zadania; zadania CLI oparte na czacie pozostają aktywne tylko tak długo, jak aktywny jest ich kontekst uruchomienia.
  • Zakończenie jest obsługiwane przez wypychanie: odłączona praca może powiadomić bezpośrednio lub wybudzić sesję żądającą/heartbeat po zakończeniu, więc pętle odpytywania stanu są zwykle niewłaściwym wzorcem.
  • Izolowane uruchomienia cron i zakończenia podagentów w miarę możliwości czyszczą śledzone karty/procesy przeglądarki dla swojej sesji podrzędnej przed końcowym porządkowaniem.
  • Dostarczanie izolowanych uruchomień cron tłumi nieaktualne pośrednie odpowiedzi nadrzędne, gdy praca potomnych podagentów nadal się opróżnia, i preferuje końcowe dane wyjściowe potomka, jeśli dotrą przed dostarczeniem.
  • Powiadomienia o zakończeniu są dostarczane bezpośrednio do kanału lub kolejkowane do następnego heartbeat.
  • openclaw tasks list pokazuje wszystkie zadania; openclaw tasks audit wykrywa problemy.
  • Rekordy terminalne są przechowywane przez 7 dni, a następnie automatycznie usuwane.

Szybki start

# Wyświetl wszystkie zadania (od najnowszych)
openclaw tasks list

# Filtruj według środowiska uruchomieniowego lub statusu
openclaw tasks list --runtime acp
openclaw tasks list --status running

# Pokaż szczegóły określonego zadania (według ID, ID uruchomienia lub klucza sesji)
openclaw tasks show <lookup>

# Anuluj uruchomione zadanie (zabija sesję podrzędną)
openclaw tasks cancel <lookup>

# Zmień politykę powiadomień dla zadania
openclaw tasks notify <lookup> state_changes

# Uruchom audyt kondycji
openclaw tasks audit

# Wyświetl podgląd lub zastosuj konserwację
openclaw tasks maintenance
openclaw tasks maintenance --apply

# Sprawdź stan Task Flow
openclaw tasks flow list
openclaw tasks flow show <lookup>
openclaw tasks flow cancel <lookup>

Co tworzy zadanie

ŹródłoTyp środowiska uruchomieniowegoKiedy tworzony jest rekord zadaniaDomyślna polityka powiadomień
Uruchomienia ACP w tleacpUruchomienie podrzędnej sesji ACPdone_only
Orkiestracja podagentówsubagentUruchomienie podagenta przez sessions_spawndone_only
Zadania cron (wszystkie typy)cronKażde wykonanie cron (w sesji głównej i izolowane)silent
Operacje CLIcliPolecenia openclaw agent uruchamiane przez gatewaysilent
Zadania cron w sesji głównej domyślnie używają polityki powiadomień silent — tworzą rekordy do śledzenia, ale nie generują powiadomień. Izolowane zadania cron również domyślnie używają silent, ale są bardziej widoczne, ponieważ działają we własnej sesji. Czego nie tworzy zadań:
  • Tury heartbeat — sesja główna; zobacz Heartbeat
  • Zwykłe interaktywne tury czatu
  • Bezpośrednie odpowiedzi /command

Cykl życia zadania

StatusCo oznacza
queuedUtworzone, oczekuje na uruchomienie agenta
runningTura agenta jest aktywnie wykonywana
succeededZakończone pomyślnie
failedZakończone błędem
timed_outPrzekroczono skonfigurowany limit czasu
cancelledZatrzymane przez operatora za pomocą openclaw tasks cancel
lostŚrodowisko uruchomieniowe utraciło autorytatywny stan zaplecza po 5-minutowym okresie karencji
Przejścia następują automatycznie — gdy powiązane uruchomienie agenta się kończy, status zadania jest aktualizowany odpowiednio do wyniku. lost uwzględnia typ środowiska uruchomieniowego:
  • Zadania ACP: zniknęły metadane podrzędnej sesji ACP.
  • Zadania podagentów: podrzędna sesja zniknęła z magazynu docelowego agenta.
  • Zadania cron: środowisko uruchomieniowe cron nie śledzi już zadania jako aktywnego.
  • Zadania CLI: izolowane zadania sesji podrzędnej używają sesji podrzędnej; zadania CLI oparte na czacie używają zamiast tego kontekstu aktywnego uruchomienia, więc pozostające wiersze sesji kanału/grupy/bezpośredniej nie utrzymują ich przy życiu.

Dostarczanie i powiadomienia

Gdy zadanie osiągnie stan terminalny, OpenClaw wysyła powiadomienie. Istnieją dwie ścieżki dostarczania: Dostarczenie bezpośrednie — jeśli zadanie ma cel kanału (requesterOrigin), komunikat o zakończeniu trafia bezpośrednio do tego kanału (Telegram, Discord, Slack itd.). W przypadku zakończeń podagentów OpenClaw zachowuje również powiązane kierowanie do wątku/tematu, jeśli jest dostępne, i może uzupełnić brakujące to / konto na podstawie zapisanej trasy sesji żądającej (lastChannel / lastTo / lastAccountId), zanim zrezygnuje z bezpośredniego dostarczenia. Dostarczenie kolejkowane do sesji — jeśli bezpośrednie dostarczenie się nie powiedzie lub nie ustawiono źródła, aktualizacja jest kolejkowana jako zdarzenie systemowe w sesji żądającej i pojawia się przy następnym heartbeat.
Zakończenie zadania natychmiast wywołuje wybudzenie heartbeat, aby wynik był widoczny szybko — nie trzeba czekać na następny zaplanowany takt heartbeat.
Oznacza to, że typowy przepływ pracy opiera się na wypychaniu: uruchamiasz odłączoną pracę raz, a potem pozwalasz środowisku uruchomieniowemu wybudzić Cię lub powiadomić po zakończeniu. Odpytuj stan zadania tylko wtedy, gdy potrzebujesz debugowania, interwencji lub jawnego audytu.

Polityki powiadomień

Kontrolują, ile informacji otrzymujesz o każdym zadaniu:
PolitykaCo jest dostarczane
done_only (domyślna)Tylko stan terminalny (succeeded, failed itd.) — to jest ustawienie domyślne
state_changesKażda zmiana stanu i aktualizacja postępu
silentNic
Zmień politykę podczas działania zadania:
openclaw tasks notify <lookup> state_changes

Dokumentacja CLI

tasks list

openclaw tasks list [--runtime <acp|subagent|cron|cli>] [--status <status>] [--json]
Kolumny wyjściowe: ID zadania, typ, status, dostarczanie, ID uruchomienia, sesja podrzędna, podsumowanie.

tasks show

openclaw tasks show <lookup>
Token wyszukiwania akceptuje ID zadania, ID uruchomienia lub klucz sesji. Pokazuje pełny rekord, w tym czasy, stan dostarczenia, błąd i podsumowanie terminalne.

tasks cancel

openclaw tasks cancel <lookup>
W przypadku zadań ACP i podagentów powoduje to zakończenie sesji podrzędnej. Status przechodzi do cancelled, a powiadomienie o dostarczeniu zostaje wysłane.

tasks notify

openclaw tasks notify <lookup> <done_only|state_changes|silent>

tasks audit

openclaw tasks audit [--json]
Wykrywa problemy operacyjne. Ustalenia pojawiają się również w openclaw status, gdy zostaną wykryte problemy.
UstalenieWażnośćWyzwalacz
stale_queuedwarnW kolejce dłużej niż 10 minut
stale_runningerrorUruchomione dłużej niż 30 minut
losterrorZniknęła własność zadania oparta na środowisku uruchomieniowym
delivery_failedwarnDostarczenie nie powiodło się, a polityka powiadomień nie jest silent
missing_cleanupwarnZadanie terminalne bez znacznika czasu czyszczenia
inconsistent_timestampswarnNaruszenie osi czasu (na przykład zakończone przed uruchomieniem)

tasks maintenance

openclaw tasks maintenance [--json]
openclaw tasks maintenance --apply [--json]
Użyj tego, aby wyświetlić podgląd lub zastosować uzgadnianie, oznaczanie czyszczenia i usuwanie dla zadań oraz stanu Task Flow. Uzgadnianie uwzględnia typ środowiska uruchomieniowego:
  • Zadania ACP/podagentów sprawdzają swoją podrzędną sesję zaplecza.
  • Zadania cron sprawdzają, czy środowisko uruchomieniowe cron nadal jest właścicielem zadania.
  • Zadania CLI oparte na czacie sprawdzają własny kontekst aktywnego uruchomienia, a nie tylko wiersz sesji czatu.
Czyszczenie po zakończeniu również uwzględnia typ środowiska uruchomieniowego:
  • Zakończenie podagenta w miarę możliwości zamyka śledzone karty/procesy przeglądarki dla sesji podrzędnej, zanim będzie kontynuowane czyszczenie po ogłoszeniu.
  • Zakończenie izolowanego zadania cron w miarę możliwości zamyka śledzone karty/procesy przeglądarki dla sesji cron, zanim uruchomienie zostanie całkowicie zakończone.
  • Dostarczanie zakończenia izolowanego zadania cron czeka w razie potrzeby na dalsze działania potomnych podagentów i tłumi nieaktualny tekst potwierdzenia nadrzędnego zamiast go ogłaszać.
  • Dostarczanie zakończenia podagenta preferuje najnowszy widoczny tekst asystenta; jeśli jest pusty, przechodzi do oczyszczonego najnowszego tekstu tool/toolResult, a uruchomienia wywołań narzędzi ograniczone tylko do limitu czasu mogą zostać zwinięte do krótkiego podsumowania częściowego postępu.
  • Błędy czyszczenia nie maskują rzeczywistego wyniku zadania.

tasks flow list|show|cancel

openclaw tasks flow list [--status <status>] [--json]
openclaw tasks flow show <lookup> [--json]
openclaw tasks flow cancel <lookup>
Używaj tych poleceń, gdy interesuje Cię orkiestrujący Task Flow, a nie pojedynczy rekord zadania w tle.

Tablica zadań na czacie (/tasks)

Użyj /tasks w dowolnej sesji czatu, aby zobaczyć zadania w tle powiązane z tą sesją. Tablica pokazuje aktywne i niedawno zakończone zadania wraz ze środowiskiem uruchomieniowym, statusem, czasem oraz szczegółami postępu lub błędów. Gdy bieżąca sesja nie ma widocznych powiązanych zadań, /tasks przechodzi na lokalne dla agenta liczniki zadań, dzięki czemu nadal otrzymujesz przegląd bez ujawniania szczegółów innych sesji. Aby zobaczyć pełny rejestr operatora, użyj CLI: openclaw tasks list.

Integracja ze statusem (presja zadań)

openclaw status zawiera zbiorcze podsumowanie zadań:
Tasks: 3 queued · 2 running · 1 issues
Podsumowanie raportuje:
  • active — liczba queued + running
  • failures — liczba failed + timed_out + lost
  • byRuntime — podział na acp, subagent, cron, cli
Zarówno /status, jak i narzędzie session_status używają migawki zadań uwzględniającej czyszczenie: aktywne zadania są preferowane, nieaktualne zakończone wiersze są ukrywane, a niedawne błędy pojawiają się tylko wtedy, gdy nie pozostała żadna aktywna praca. Dzięki temu karta statusu skupia się na tym, co jest najważniejsze w danym momencie.

Przechowywanie i konserwacja

Gdzie znajdują się zadania

Rekordy zadań są trwale przechowywane w SQLite pod adresem:
$OPENCLAW_STATE_DIR/tasks/runs.sqlite
Rejestr jest ładowany do pamięci przy uruchamianiu gateway i synchronizuje zapisy do SQLite, aby zapewnić trwałość po ponownym uruchomieniu.

Automatyczna konserwacja

Co 60 sekund działa proces czyszczący, który obsługuje trzy rzeczy:
  1. Uzgadnianie — sprawdza, czy aktywne zadania nadal mają autorytatywne zaplecze środowiska uruchomieniowego. Zadania ACP/podagentów używają stanu sesji podrzędnej, zadania cron używają własności aktywnego zadania, a zadania CLI oparte na czacie używają własnego kontekstu uruchomienia. Jeśli ten stan zaplecza zniknie na dłużej niż 5 minut, zadanie zostanie oznaczone jako lost.
  2. Oznaczanie czyszczenia — ustawia znacznik czasu cleanupAfter dla zadań terminalnych (endedAt + 7 days).
  3. Usuwanie — usuwa rekordy po przekroczeniu daty cleanupAfter.
Retencja: rekordy zadań terminalnych są przechowywane przez 7 dni, a następnie automatycznie usuwane. Nie jest wymagana żadna konfiguracja.

Jak zadania odnoszą się do innych systemów

Zadania i Task Flow

Task Flow to warstwa orkiestracji przepływu ponad zadaniami w tle. Pojedynczy przepływ może w czasie swojego działania koordynować wiele zadań, używając trybów synchronizacji zarządzanej lub lustrzanej. Użyj openclaw tasks, aby sprawdzić pojedyncze rekordy zadań, oraz openclaw tasks flow, aby sprawdzić orkiestrujący przepływ. Szczegóły znajdziesz w Task Flow.

Zadania i cron

Definicja zadania cron znajduje się w ~/.openclaw/cron/jobs.json. Każde wykonanie cron tworzy rekord zadania — zarówno w sesji głównej, jak i izolowane. Zadania cron w sesji głównej domyślnie używają polityki powiadomień silent, dzięki czemu są śledzone bez generowania powiadomień. Zobacz Zadania cron.

Zadania i heartbeat

Uruchomienia heartbeat to tury sesji głównej — nie tworzą rekordów zadań. Gdy zadanie się zakończy, może wywołać wybudzenie heartbeat, aby wynik był szybko widoczny. Zobacz Heartbeat.

Zadania i sesje

Zadanie może odwoływać się do childSessionKey (gdzie wykonywana jest praca) oraz requesterSessionKey (kto ją uruchomił). Sesje są kontekstem rozmowy; zadania to warstwa śledzenia aktywności ponad nimi.

Zadania i uruchomienia agentów

Pole runId zadania łączy je z uruchomieniem agenta wykonującym pracę. Zdarzenia cyklu życia agenta (start, koniec, błąd) automatycznie aktualizują status zadania — nie trzeba ręcznie zarządzać cyklem życia.

Powiązane