Post o tym, jak ten blog prowadzi się sam opisywał pipeline zbudowany na Trigger.dev. Ta część nadal działa tak samo. Zmienił się element, który jest przed nim: to, co decyduje o czym napisać i pisze draft posta. Wcześniej był to osobny, cały czas działający job. Teraz to scheduled cloud routine w Claude Code, a dojście do tego zajęło jeden ślepy zaułek.

Pierwsza próba

Anthropic ma osobny produkt dokładnie do tego typu zadań, Managed Agents. Definiuje się agenta jako plik YAML albo Markdown, podpina go pod environment i deployuje przez CLI (ant apply). Żadnego serwera do pilnowania, agent działa w infrastrukturze Anthropic według dowolnie ustawionego harmonogramu.

To brzmiało jak dobre dopasowanie do “pisz post na blogu raz w tygodniu i nie każ mi o tym myśleć”. Zdefiniowałem agenta i jego environment, zanim trafiłem na faktyczną blokadę: Managed Agents wymaga osobnej organizacji w Anthropic Console, z własnym billingiem, oddzielnej od subskrypcji Claude Code Team. Ta sama marka, dwa różne systemy kont. Płacę już za Claude Code Team. Stawianie drugiej organizacji z własnym billingiem tylko po to, żeby uruchamiać jedno cotygodniowe zadanie w kształcie crona, wydawało się złą proporcją infrastruktury do problemu.

Zwrot

Claude Code ma wbudowane scheduled cloud routines, bez potrzeby zakładania dodatkowego konta, dostępne już w ramach planu Team, za który i tak płaciłem. Routine to zapisany prompt plus harmonogram, odpalany przez ten sam backend, który obsługuje sesje Claude Code w wersji webowej. Ustawia się to raz, a routine budzi się według harmonogramu i uruchamia pełną sesję na tym, na co się go skieruje.

Dla tego bloga routine działa co tydzień. Każde odpalenie to samodzielna sesja w chmurze, która:

  1. Klonuje to repo od zera, bez stanu przeniesionego z poprzedniego uruchomienia
  2. Sprawdza listę istniejących postów, żeby nie powtórzyć tematu
  3. Wybiera nowy temat (albo pisze o konkretnym, jeśli ustawię to w prompcie zamiast zostawiać otwarte)
  4. Pisze draft po angielsku, trzymając się tych samych reguł pisania co reszta bloga
  5. Tłumaczy na polski
  6. Commituje oba pliki i pushuje na master jako niepublikowany draft (draft: true we frontmatterze)

Żadnych definicji agenta w YAML, żadnego osobnego kroku deployu, żadnej drugiej organizacji w Anthropic do logowania się. Routine konfiguruje się dokładnie tak samo jak wszystko inne w Claude Code: prompt i harmonogram, zapisane na moim istniejącym koncie. Odpala ten sam typ sesji, którego używam interaktywnie, tylko wyzwalany przez zegar zamiast przeze mnie coś wpisującego.

Gdzie zatrzymałem się przed pełną autonomią

Routine pushuje draft. Nie przełącza draft: false i nie dotyka działającej strony. To celowe, nie techniczne ograniczenie, które planuję kiedyś obejść.

Mam twardą zasadę dotyczącą wszystkiego, co tu piszę: nigdy nie nazywać po imieniu prawdziwej prywatnej osoby ani konkretnego klienta bez świeżej, ludzkiej zgody wydanej w danej chwili. To nie jest zasada, którą zaplanowany job może sam za siebie wyegzekwować. Sesja odpalona przez crona nie ma “danej chwili”, w której mogłaby o coś zapytać. Więc granica jest strukturalna: routine może napisać draft, przetłumaczyć go i wypchnąć, ale zanim post trafi na żywo, czyta go człowiek. Jeśli post wymaga oceny, czy kogoś albo coś nazwać, ta ocena zapada przy review, nie wewnątrz automatyzacji.

Okładki też są nadal ręczne, z bardziej przyziemnego powodu: environment routine’u nie ma na razie wstrzykniętych danych uwierzytelniających do generowania obrazków, więc to luka w konfiguracji, nie decyzja projektowa. Okładki generuję ręcznie po review, tak jak zawsze. Cała reszta z listy wyżej działa bez udziału człowieka.

Co to realnie dało

Od strony czytelnika niewiele się zmieniło. Posty nadal się pojawiają, nadal są tłumaczone, nadal przechodzą przez ten sam build Dockera i restart kontenera po pushu, gdy je zmergeuję. Zmieniło się to, gdzie zapada cotygodniowa decyzja “o czym napisać” i ile zachodu wokół kont trzeba było włożyć, żeby w ogóle zaplanować to zadanie.

Jedna rzecz nie przyszła za darmo: instrukcje routine’u to statyczny prompt, zapisany w momencie tworzenia, nie żywy odczyt plików z regułami z tego repo. Jeśli zmienię jakąś regułę pisania lokalnie, routine trzyma się tego, co dostał przy konfiguracji, dopóki sam go nie zaktualizuję. Mały podatek utrzymaniowy, warto o nim wiedzieć zanim założy się, że “ten sam typ sesji” znaczy “to samo źródło prawdy”.

Jeśli jest tu jakaś lekcja, to sprawdzenie, co już zawiera istniejąca subskrypcja, zanim sięgnie się po produkt z ładniejszą nazwą. Managed Agents to dobry produkt do tego, do czego jest zbudowany: samodzielne agenty działające jako własna usługa, z własnym environmentem i cyklem życia. Jedno cotygodniowe zadanie draft-i-push dla prywatnego bloga tym nie jest. To bliżej crona, który potrafi myśleć, a scheduled routines w Claude Code dużo lepiej pasują do tego kształtu.