1.6 KiB
ADR-0003: Runtime w efemerycznym jobie GitLab CI, nie w usłudze
- Status: przyjęty
- Data: 2026-08-28
Kontekst
agno pozwala wystawić agentów jako usługę (AgentOS/FastAPI) z bazą sesji, pamięcią i UI. Kuszące, ale dla zadania "zmodyfikuj kod i otwórz MR" oznacza nową usługę produkcyjną: własne SLA, uwierzytelnianie, przechowywanie stanu, przegląd bezpieczeństwa i dostęp do repozytoriów z długożyjącego procesu.
Decyzja
Runtime to efemeryczny job GitLab CI. Jedno uruchomienie = jeden job = jeden katalog roboczy
= jeden komplet artefaktów. Stan przebiegu żyje w artefaktach (run.json, trace.jsonl,
changes.patch), nie w bazie. Uprawnienia to uprawnienia joba (token projektowy),
a nie konta usługowego z dostępem do wszystkiego.
Wyzwalanie: issue z labelką (webhook → trigger token), zdarzenie na MR, harmonogram
oraz ręczny formularz w "Run pipeline" (zmienne z description i options).
Konsekwencje
Pozytywne
- Zero nowej usługi do utrzymania i przeglądu bezpieczeństwa.
- Naturalna izolacja: brak stanu współdzielonego między przebiegami.
- Bramka manualna w CI daje właściciela podpisu pod zmianą.
- Limity zasobów i czasu przychodzą z platformy CI.
Negatywne
- Brak pamięci między przebiegami - powtórka zaczyna od zera (świadomy kompromis: pamięć między przebiegami w narzędziu modyfikującym kod to więcej ryzyka niż korzyści).
- Zimny start: instalacja kontekstu APM w każdym przebiegu (łagodzone cache'em i artefaktami).
- Brak interaktywnego trybu "zapytaj człowieka w trakcie" - stąd wzorzec
requires_human: agent nie pyta, tylko oznacza i idzie dalej.