Správa úkolů AI agentů: smyčka převzetí jako smlouva, ne prompt
Jak řídit úkoly AI agentů smyčkou převzetí, kterou vynucuje server: leasy, heartbeaty, otázky, doklady a limit na lidskou pozornost.
Weft je AI správce úkolů pro samostatné zakladatele a malé týmy.
Autor: Andrei Finogeev ·
Správa úkolů AI agentů funguje, když smyčku vlastní nástěnka, ne prompt: agent se zeptá, co dělat, převezme jeden úkol s leasem, který propadne, když ztichne, ptá se člověka jen na rozhodnutí, která patří jemu, a končí dokladem, který může někdo zkontrolovat. Ve Weftu je každý z těchto kroků MCP nástroj, který server kontroluje, takže agent, který krok vynechá, dostane odmítnutí nebo o úkol přijde, místo aby se potichu rozešel se skutečností.
Weft vyvíjíme my. Údaje o ostatních produktech pocházejí z jejich oficiálních stránek, ověřeno 27. října 2026.
Proč přestane fungovat seznam úkolů vložený do chatu?
Vložit úkoly do chatu zkusí každý jako první a jedno odpoledne to funguje. Pak chat skončí a stav skončí s ním. Agent věděl, kterou položku dokončil, kterou vzdal a v čem si nebyl jistý. Teď to neví nikdo.
Z člověka, který seznam vložil, se stane prostředník: kopíruje výsledky zpátky na skutečnou nástěnku a předělává práci, kterou si vzala druhá relace, protože nic neříkalo, že je zabraná.
Přístup k nástěnce vyřeší problém se zastaralým snímkem, ale ne zbytek. Pokud jsou jedinými nástroji „přesuň kartu“ a „přidej komentář“, smyčka dál závisí na tom, že agent dodrží konvenci napsanou v jeho instrukcích. Konvence se lámou přesně ve chvíli, kdy se něco pokazí: agent spadne uprostřed běhu, nebo dva agenti začnou ve stejný okamžik.
Jak vypadá smyčka převzetí jako smlouva?
Ve Weftu má smyčka pět kroků a každý je samostatný nástroj na jednom MCP endpointu, https://letsweft.com/api/mcp. Stav mezi nimi drží server, takže smyčka přežije konec jakéhokoli chatu.
- get_my_work: nejdřív se zeptat, pak vybírat. Odpověď pokrývá, co tento klient už drží, co čeká na člověka, co je po termínu nebo brzy splatné a zda je vůbec prostor cokoli začít.
- start_task: převzetí s leasem. Převzetí platí 20 minut a přesune úkol do Doing. Odpověď nese
runId,leaseTokenarenewEverySeconds: 300. Druhý klient, který zkusí stejný úkol, dostanealready_claimeda pokyn práci nezdvojovat. - report_progress: heartbeat. Každé volání s id běhu a lease tokenem lease obnoví. Když agent spadne, heartbeaty ustanou a o 20 minut později je běh označen jako zastaralý a úkol se vrátí mezi nepřiřazené, aby si ho mohl vzít kdokoli. Ztracený lease odpoví
lease_lost, takže agent ví, že práce už mu nepatří. - request_input: jen na rozhodnutí, která patří člověku. Otázka do 500 znaků s až 10 možnostmi. Zatímco agent čeká, převzetí zůstává.
- complete_task: dokončení s dokladem.
outcome,artifacts(důkazy jako URL, commit nebo hash souboru),notDone,unknownsanextStep.
Proč lease, a ne stav? Protože ticho je jediný signál, který spadlý agent může poslat. Karta v Doing říká, že na ní někdo kdysi pracoval. Lease říká, že na ní někdo pracuje teď, a přestane to říkat sám, jakmile to přestane platit.
Samotné převzetí je jediný zápis do databáze chráněný unikátním indexem. Když se dva agenti předhánějí, o vítězi rozhoduje databáze, takže úkol nemůžou dostat oba. Dva komentáře „Převzato“ s odstupem jedné sekundy jsou naproti tomu oba platné komentáře.
Kdy má agent volat request_input?
Když dojde k něčemu, o čem může rozhodnout jen člověk: cokoli nevratného jako peníze, publikování, produkce nebo právní věci, nebo skutečné rozcestí bez rozumné výchozí volby. Ne proto, aby se ptal, jestli smí pokračovat.
Ta zdrženlivost je důležitá, protože otázka stojí člověka stejnou pozornost jako hotový úkol a ve Weftu se počítá do stejného limitu. Otázka přistane v Inboxu, s push notifikací na mobil a u položek čekajících 20 minut a víc i s připomínkou e-mailem. Weft agentovi nikdy nevolá zpátky: odpověď dorazí při jeho dalším start_task nebo get_my_work. Dokud je otázka otevřená, agent si úkol drží 60 minut; pak lease odpadne, ale otázka zůstane.
Co patří do volání complete_task?
Krátký výsledek, důkazy a poctivý popis okrajů. Tady je realistický payload pro opravu chyby:
{
"id": "9b2f6c1e-4d7a-4c3b-8e21-5a0f3d9c7b14",
"runId": "d41e8a90-2f6b-4e17-9c3a-71b5e0a4c8f2",
"leaseToken": "lt_3f9a…",
"outcome": "Fixed the 500 on /api/invoices when the customer has no billing address. Fix is in PR #418; the route now returns 422 with a field error.",
"artifacts": [
{ "kind": "url", "uri": "https://github.com/acme/app/pull/418" },
{ "kind": "commit", "uri": "a1c9e07" },
{ "kind": "url", "uri": "https://preview-418.acme.dev/api/invoices/health", "httpStatus": 200 }
],
"claims": [
"Added a test for an empty billing address; the invoices test file passes locally"
],
"notDone": [
"Did not merge the PR",
"Did not backfill the 14 invoices that failed last week"
],
"unknowns": [
"Whether the mobile app shows the 422 message or a generic error"
],
"nextStep": "Merge PR #418 to main"
}Artefakty jsou věci, které člověk může zkontrolovat, aniž by musel agentovi věřit na slovo. notDone a unknowns nejsou přiznání viny; oddělují výsledek, na který se dá spolehnout, od výsledku, který si skládáte z diffu znovu. Volání nikdy neselže kvůli chybějícím důkazům, protože ztratit hotovou práci je horší než ji zaznamenat neověřenou. Víc o čtení těchto dokladů v článku co udělal můj AI agent.
Čím se to liší od přesunu karty a napsání komentáře?
Průvodce Hypertasku touto smyčkou (převzít, aktualizovat, nahlásit, zavřít) dobře popisuje samotný návyk. Jeho MCP verze převzetí znamená načíst úkol, přesunout ho do pracovní sekce a napsat komentář o převzetí, řízeno promptem, který tým vepíše do instrukcí agenta. Tady je stejná smyčka krok po kroku:
| Krok smyčky | Nástěnka jen s konvencí (agent přesune kartu a okomentuje) | Co Weft vynucuje a kterým MCP nástrojem |
|---|---|---|
| Výběr práce | Agent vypíše úkoly a vybere. Nic mu neřekne, že je člověk už zavalený kontrolami. | get_my_work vrátí, co tento klient už drží, co čeká na člověka, co je po termínu a zda je prostor cokoli začít. |
| Převzetí | Přesunout kartu do Doing a napsat „Převzato“. Dva agenti to můžou udělat ve stejný okamžik a oba věří, že úkol vlastní. | start_task vezme 20minutový lease jedním zápisem do databáze chráněným unikátním indexem. Poražený dostane already_claimed s id a názvem úkolu. |
| Zůstat naživu | Komentáře o průběhu, pokud si na ně agent vzpomene. Spadlý agent nechá kartu v Doing donekonečna. | report_progress obnovuje lease (agent má pokyn dělat to každých 5 minut). Po 20 minutách ticha je běh označen jako zastaralý a úkol je znovu volný. |
| Zeptat se | Komentář „Zablokováno:“. Agent se zastaví nebo hádá; karta může dál vypadat jako rozpracovaná. | request_input vloží otázku s až 10 možnostmi do Inboxu člověka a ponechá převzetí (60 minut, dokud čeká). Odpověď se vrátí přes start_task nebo get_my_work. |
| Nahlásit | Závěrečný komentář volným textem. Jeho podoba závisí na tom, jak dobrý byl prompt. | complete_task přijímá pojmenovaná pole: outcome, artifacts, notDone, unknowns, nextStep. |
| Zavřít nebo zkontrolovat | Agent přesune kartu do Review nebo Done, podle toho, co říkal prompt. | Ve výchozím stavu jde úkol do Done. V Inboxu se zastaví k volbě Přijmout / Přepracovat / Později / Zahodit, když potřebuje kontrolu nebo neprojde ověření. |
| Přetížení | Nic. Agenti dál začínají práci a sloupec Review roste. | start_task odmítne s attention_queue_full, jakmile na lidi čeká 5 položek (jeden člověk) nebo 10 (tým), nebo 45 minut kontroly. |
Abychom byli k Hypertasku féroví: skutečné leasy má. Jeho dokumentace uvádí endpointy pro převzetí, heartbeat a uvolnění leasu a tabulka Known limitations říká, že leasy úkolů, důkazy a eskalace jsou záměrně jen REST endpointy (přehled MCP Hypertasku). Reference nástrojů mezi jeho 21 MCP nástroji žádný nástroj pro lease nemá (reference nástrojů). Převzít umí i jeho CLI, jako volitelný příkaz (changelog, reference CLI). Skriptovaný agent na Hypertasku tedy lease držet může; agent pracující přes MCP v Claude Code nebo Cursoru dostane verzi s kartou a komentářem, pokud mu někdo REST volání nedopojí.
Pokud vaši agenti běží jako skripty a úlohy v CI, CLI a REST API Hypertasku jsou skutečná výhoda a Weft nemá ani jedno: žádné CLI, žádné veřejné REST API, žádné webhooky. Weft je pro agenty, kteří žijí v MCP klientovi a potřebují, aby smyčka držela tam.
Co vidí člověk?
Většinou kartu v Done: ve výchozím stavu jde dokončený úkol rovnou tam, s připojeným výsledkem a důkazy.
Úkol se zastaví v Inboxu člověka, když byl označený jako vyžadující kontrolu, nebo když neprojde ověření. Tam člověk vybere jednu ze čtyř odpovědí:
- Přijmout: práce platí. Pokud agent předal nextStep, člověk ho vidí nad tlačítkem („Pokud přijmeš, agent …“) a přijetí schválí přesně tento krok, nic širšího. Schválení platí 72 hodin a k agentovi se vrátí přes get_my_work nebo start_task.
- Přepracovat: vrátit zpět s poznámkou, co je špatně.
- Později: teď ne. Zahodit: přestat na tom pracovat.
Inbox je na webu, a když do něj něco přibude, člověk dostane i push v mobilní aplikaci Weft. Potvrzení přes nextStep brání agentovi brát „vypadá to dobře“ jako svolení mergovat, nasadit a odeslat: smí udělat ten jeden schválený krok a pak úkol znovu dokončit.
Proč agent dostane odmítnutí, místo aby začal další práci?
Protože vzácným zdrojem je pozornost, ne práce. Agent stihne začít deset věcí za dobu, kdy člověk zkontroluje jednu.
Weft počítá, co čeká na lidi: úkoly čekající na kontrolu plus otevřené otázky. Když to dosáhne 5 položek v pracovním prostoru pro jednoho, 10 v týmu, nebo zhruba 45 minut odhadované kontroly, podle toho, co nastane dřív, start_task odmítne s attention_queue_full. Limit závisí na počtu lidí v pracovním prostoru, ne na tarifu.
Odmítnutí je pokyn, ne slepá ulička. Uvádí velikost fronty, stáří nejstarší položky a volání, která jsou dál povolená: report_progress, get_my_work, get_board_state a search. Krok, který člověk u dané karty už schválil, je výjimkou, takže přijaté „merge PR #418“ fronta nezablokuje.
Jak to nastavit?
Připojte svého klienta a přihlaste se přes prohlížeč; žádný klíč ke kopírování. Weft vydává refresh tokeny, takže klient si přihlášení obnovuje sám. V Claude Code je to jeden příkaz, claude mcp add --transport http weft https://letsweft.com/api/mcp (stránka s nastavením). Cursor má instalaci jedním kliknutím (Cursor), Codex potřebuje položku v konfiguraci a codex mcp login weft (Codex) a ChatGPT má zveřejněnou aplikaci Weft ve všech tarifech včetně bezplatného (ChatGPT). Server smyčku agentovi popíše sám, takže žádný prompt o životním cyklu není potřeba.
Návod pro Claude Code najdete v článku nástěnka úkolů pro Claude Code. Několik agentů na jedné nástěnce, kde na leasech a already_claimed záleží nejvíc, popisuje článek více AI agentů, jedna nástěnka. Samotný protokol je zdokumentovaný na modelcontextprotocol.io a další MCP nástěnky srovnáváme na stránce MCP správci úkolů.
Co tu Weft nedělá?
- Žádné CLI, veřejné REST API ani webhooky, takže cron úlohy a CI pipeline nemůžou smyčku řídit mimo MCP klienta.
- Žádná integrace s GitHubem ani Slackem. Důkazem je to, co agent připojí v artifacts.
- Žádná vestavěná AI. Přemýšlí se ve vašem vlastním AI klientovi, a proto Weft nepotřebuje žádné AI kredity.
Free pokrývá 50 úkolů a 200 volání AI měsíčně. Pro stojí $7 za místo měsíčně nebo $60 za místo ročně (ceník).
- Nestačí dobrý prompt, aby agenti smyčku dodržovali?
- Prompt smyčku popíše; vynutit ji neumí. Nezabrání dvěma agentům převzít stejný úkol a neumí uvolnit úkol, který drží agent, jenž spadl. Ve Weftu je převzetí lease, který vlastní server, takže tyto případy jsou ošetřené bez ohledu na to, zda si agent na instrukce vzpomněl.
- Co se stane, když můj agent spadne v půlce?
- Jeho heartbeaty ustanou. Dvacet minut po posledním report_progress je běh označen jako zastaralý, lease token se vymaže a úkol je zase nepřiřazený, takže si ho může vzít jiný agent nebo člověk. Karta nezůstane v Doing týden.
- Čeká každý dokončený úkol na moji kontrolu?
- Ne. Ve výchozím stavu jde dokončený úkol rovnou do Done s výsledkem a důkazy. Ve vašem Inboxu se zastaví k volbě Přijmout, Přepracovat, Později nebo Zahodit jen tehdy, když potřebuje kontrolu nebo neprojde ověření.
- Proč bych chtěl, aby můj agent dostával odmítnutí?
- Protože jinak bude dál vyrábět věci, na jejichž kontrolu nemáte čas. Jakmile na lidi čeká 5 položek (10 v týmu) nebo zhruba 45 minut kontroly, start_task vrátí attention_queue_full a nasměruje agenta k tomu, co ještě dělat může. Vyřízení fronty ho odblokuje.
- Hypertask má leasy taky. Proč záleží na MCP?
- Leasy Hypertasku jsou podle jeho vlastní dokumentace REST endpointy (přehled MCP) a převzít umí i jeho CLI. To sedí skriptovaným agentům. Agent pracující přes MCP nástroje v editoru nebo chatu je tam nedostane, ve Weftu ano: start_task, report_progress a complete_task jsou MCP nástroje.