Přeskočit na obsah
Nástroje 3 min čtení

Laravel Tackle vynucuje omezení AI agenta přímo v PHP

Balíček Laravel Tackle spouští programovacího agenta uvnitř aplikace. Cesty, příkazy a odhadovanou útratu omezuje přímo v PHP; čerstvá verze 1.27.3 navíc opravila chování bezobslužného běhu po překročení limitu.

Zdrojový kód zobrazený na monitoru
Programovací agent dostává v Laravel Tackle nástroje pro čtení a úpravy projektu, jejich hranice ale určuje kód balíčku. Foto: Markus Spiske, Wikimedia Commons (CC0)

Laravel Tackle není novinka z jediného dne. Jeho veřejný repozitář existuje od června, ale současná verze 1.27.3 vyšla 16. srpna 2026 a o čtyři dny později balíček podrobně popsal nezávislý Laravel News. Zajímavý na něm není další chat s modelem, nýbrž místo, kde hlídá jeho pravomoci: část omezení neleží v pokynech pro model, ale v PHP, které volání nástroje buď provede, nebo odmítne.

Agent se instaluje jako balíček do aplikace

Tackle se přidává přes Composer a ovládá příkazy Artisan. Interaktivní php artisan ai:code umí číst a měnit soubory, spouštět testy a zobrazovat rozdíl proti gitu. ai:run dělá jeden úkol bez připojeného terminálu a vrací strojově čitelný výsledek. Další příkazy míří na opravu výjimky, kontrolu změn nebo přechod balíčku Composeru na novou hlavní verzi.

Agent přitom startuje uvnitř Laravelu. Může proto dostat nástroje, které znají routy aplikace, záznamy v Telescope nebo příkazy Pint a Larastan. Nad knihovnou laravel/ai podporuje vedle výchozího modelu Claude také poskytovatele OpenAI, Gemini, Groq a místní modely přes Ollamu. Podle metadat na Packagistu vyžaduje PHP 8.3 a Laravel 12 nebo 13.

Tohle spojení má praktickou výhodu i cenu. Agent nemusí hádat, jak se frameworku zeptat na seznam rout, zato běží blíž skutečné aplikaci a jejím datům. Výchozí konfigurace proto v produkčním prostředí vypíná obecný shell a zapíná izolovaný gitový worktree. V lokálním prostředí je shell nastavený na schvalování každého příkazu a worktree je naopak vypnutý.

Soubor .env je pro nástroje zakázaná cesta

Jádrem ochrany je třída PathGuard. Cestu nejprve převede na skutečné umístění, zkontroluje, že zůstala uvnitř pracovního adresáře, a pak ji porovná se seznamem zakázaných vzorů. Ve výchozím nastavení se nesmí číst ani zapisovat .env, obsah storage, vendor.git. Stejná kontrola se provádí před nástrojem; model ji nemůže zrušit větou v promptu.

Obecný shell má čtyři režimy. off odmítne všechno, allowlist pustí jen vyjmenované příkazy, approve se pokaždé zeptá člověka a yolo spouští příkazy bez dotazu. Kód navíc odmítne režim approve v bezobslužném běhu, protože tam není kdo by souhlas udělil. Samostatný seznam pro Artisan pouští v produkci ve výchozím stavu pouze route:list; příkazy jako migrate:fresh jsou na seznamu destruktivních operací a v produkci povolené nejsou.

Částka označená jako rozpočet je tvrdý strop nad odhadem, nikoli nad fakturou poskytovatele. BudgetTracker násobí počty vstupních a výstupních tokenů cenami uloženými v katalogu modelů. U neznámého modelu použije náhradní sazbu, pokud ji správce nenastaví ručně. Skutečná účtovaná částka se proto může lišit.

Verze 1.27.3 opravuje význam návratového kódu

Právě rozpočtový strop přivedl autora k poslední opravě. Bezobslužný agent už dokázal vytvořit pull request, ale při závěrečném shrnutí překročil rozpočet a vrátil kód 2. Automatizace pak označila za neúspěšný běh, jehož výsledek už čekal ke kontrole. Verze 1.27.3 v takové situaci hlásí výsledek completed_over_budget a končí nulou. Pokud limit zasáhne ještě před dodáním výsledku, běh dál selže.

Je to drobná změna, která ukazuje rozdíl mezi nástrojem pro člověka a součástí CI. V terminálu člověk vidí, že pull request vznikl. Automatizace zná hlavně návratový kód. Tackle proto nově rozlišuje překročený limit od nedokončené práce, místo aby obě situace shrnul jako stejnou chybu.

SELECT není totéž co účet jen pro čtení

Omezení v PHP jsou užitečná, ale ne každé má stejnou sílu. Databázový nástroj QueryDatabase kontroluje regulárním výrazem, že dotaz začíná slovem SELECT, a bez vlastního limitu přidá LIMIT 100. To je ochrana v aplikaci, ne databázové oprávnění. Funkce volaná ze SELECTu může mít podle použité databáze a práv účtu vedlejší účinky. Pro agenta proto dává smysl samostatný účet s právy pouze ke čtení, i když balíček dotaz označuje za read-only.

Podobně worktree chrání živé soubory projektu, ale neřeší vše, k čemu se dostane spuštěný příkaz nebo připojení aplikace. Správce musí projít vlastní seznam příkazů, chráněných cest a databázových práv. Režim yolo je v konfiguraci dostupný záměrně; samotná existence bezpečnějších výchozích hodnot neudělá bezpečné prostředí z nastavení, které je obejde.

Tackle tak nepřináší neprůstřelný agentní sandbox. Přináší srozumitelnější místo pro pravidla v projektech Laravel: vedle kódu, který lze testovat a kontrolovat ve verzovacím systému. Pro tým, který už spoléhá na Artisan, Telescope a PHP konfiguraci, je to podstatnější rozdíl než jméno modelu v pozadí.

Zdroje: repozitář Laravel Tackle, poznámky k vydání 1.27.3, nezávislý popis na Laravel Newsmetadata balíčku na Packagistu. Zdrojový kód a metadata byly ověřeny 21. srpna 2026.

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. Nástroje

    Agent Canvas od OpenHands přepnul výchozí model na Kimi K3 a označil ho za bezplatný

    Vydání 1.14.0 rozhraní Agent Canvas změnilo výchozí jazykový model z GLM-5.2 na Kimi K3 a zařadilo ho mezi čtyři trasy, které nesou odznak „Free“. Co ta bezplatnost…

  2. Nástroje

    Vydání LiteLLM 1.96.1 vyčerpalo místo na PyPI a zbyly z něj na indexu čtyři soubory z 36

    Nahrávání vydání 1.96.1 se 11. srpna zastavilo po čtyřech souborech z 36, protože projektu došlo místo na PyPI. Názvy souborů jsou na indexu neměnné, takže ta verze…

  3. Nástroje

    Instalátor Hugging Face CLI nově zakládá agentům skill v domovské složce

    Knihovna huggingface_hub vydala 7. srpna verzi 1.27.0 a s ní změnu v instalátoru příkazové řádky. Ten teď ve výchozím nastavení zakládá v domovském adresáři skill hf-cli…

  4. Nástroje

    Cline 4.1.8 odstranil Yolo Mode, který schvalovací cesta vůbec nečetla

    Cline ve verzi 4.1.8 odstranil z nového rozšíření přepínač Yolo Mode. Jeho stav se sice ukládal a zobrazoval, ale schvalovací cesta ho nečetla, takže zápis souboru mohl…