Gdzie zapisać zmienną, żeby zadziałała?
Plugin czyta ustawienia ze zmiennych środowiskowych o nazwach zaczynających się od MONOLYNX_. Claude Code wstawia je do środowiska sesji z pola env w plikach ustawień projektu. O tym, czy zmienna dotrze do sesji, decyduje miejsce zapisu.
| Miejsce | Kto je widzi | Do czego służy |
|---|---|---|
.claude/settings.json |
każda sesja w repozytorium, także sesja w tle i każdy członek zespołu | ustawienia wspólne projektu |
.claude/settings.local.json |
tylko sesje uruchomione w Twoim głównym katalogu repozytorium, w tym dyspozytor | ustawienia osobiste i tymczasowe |
| Środowisko procesu | proces, w którym ustawisz zmienną, i wszystko, co on uruchomi | ustawienia na czas jednego przebiegu, na przykład sprintu |
Dyspozytor startuje sesję ticketu w osobnym worktree. Do tej sesji docierają dwie rzeczy: plik śledzony przez gita, bo jest częścią repozytorium, oraz środowisko procesu dyspozytora, bo sesja je dziedziczy. Plik osobisty jest ignorowany przez gita, więc w worktree go nie ma.
flowchart TD
A[".claude/settings.json (śledzony)"] --> D["Sesja ticketu w worktree"]
B["Środowisko dyspozytora"] --> D
C[".claude/settings.local.json (osobisty)"] -. "nie dociera" .-> D
C --> E["Twoja sesja w głównym katalogu"]
A --> ECo wpisać do pliku śledzonego?
Do pliku śledzonego trafia wszystko, co ma działać tak samo u każdego i w każdej sesji: nazwa projektu i zgody na samodzielne kroki.
{
"env": {
"MONOLYNX_PROJECT_SLUG": "twoj-projekt",
"MONOLYNX_CONTRACT": "auto",
"MONOLYNX_AUTOTEST": "true",
"MONOLYNX_AUTOCOMMIT": "true",
"MONOLYNX_AUTOPUSH": "true",
"MONOLYNX_AUTOMR": "true"
}
}Trzy z tych flag są warunkiem startu sprintu. Bez MONOLYNX_AUTOTEST, MONOLYNX_AUTOCOMMIT i MONOLYNX_AUTOPUSH dyspozytor nie uruchomi żadnej sesji. MONOLYNX_AUTOMR jest zalecana: bez niej branch ticketu zostaje wypchnięty, ale merge request tworzysz sam.
Projekt, w którym pracujesz ręcznie
Bez sprintu z agentami wystarcza znacznie mniej. Poniższy przykład zostawia Ci commit i push, a oddaje agentowi tylko lint i testy.
{
"env": {
"MONOLYNX_PROJECT_SLUG": "twoj-projekt",
"MONOLYNX_AUTOTEST": "true"
}
}Czego nie wpisywać do pliku śledzonego?
Trzy zmienne opisują jeden przebieg, a nie projekt. Wpisane do pliku śledzonego trafiłyby po merge do każdej sesji każdej osoby.
| Zmienna | Gdzie ją ustawić | Co by się stało w pliku śledzonym |
|---|---|---|
MONOLYNX_MR_TARGET |
środowisko dyspozytora albo plik osobisty | po zakończeniu sprintu tickety dalej szłyby do starego brancha sprintu |
MONOLYNX_BASE_BRANCH |
zwykle nigdzie; wystarcza MONOLYNX_MR_TARGET |
to samo co wyżej |
MONOLYNX_SPRINT_RUN |
nigdzie; dyspozytor dopisuje ją sam do komendy startu sesji | każda zwykła sesja zachowywałaby się jak sesja w tle i zamiast pytać, odmawiała |
$ git switch sprint/eksport-zamowien
$ export MONOLYNX_MR_TARGET=sprint/eksport-zamowien
$ claude
> /loop 15m /monolynx:sprint-runSesje ticketów startowane przez dyspozytora dziedziczą jego środowisko, więc każda z nich wie, do którego brancha ma otworzyć merge request. Plik osobisty działa tu tylko pośrednio: czyta go sesja dyspozytora w głównym katalogu i przekazuje wartość dalej, a sama sesja ticketu tego pliku nie widzi. Najpewniejszy jest export w terminalu, z którego startujesz pętle. Kolejka mr-queue bierze branch docelowy z samego merge requesta, więc w jej oknie zmienna nie jest potrzebna. Jeśli ją tam ustawisz, musi mieć tę samą wartość. Katalog, z którego startujesz dyspozytora, musi stać na tym samym branchu, bo worktree ticketu powstaje z jego bieżącego commita.
Zmienne i ich wartości domyślne
Poniższe tabele zbierają zmienne, których używa się najczęściej. Kolumna "Domyślnie" mówi, co się stanie, gdy zmiennej nie ustawisz.
Projekt i zgody
| Zmienna | Domyślnie | Co zmienia |
|---|---|---|
MONOLYNX_PROJECT_SLUG |
brak | nazwa projektu na platformie; bez niej komenda pyta |
MONOLYNX_AUTOTEST |
false |
true: agent sam uruchamia lint i testy |
MONOLYNX_AUTOCOMMIT |
false |
true: commit po zielonych testach |
MONOLYNX_AUTOPUSH |
false |
true: push bez pytania |
MONOLYNX_AUTOMR |
false |
true: merge request po pushu; działa tylko razem z dwiema poprzednimi |
MONOLYNX_AUTOMERGE |
false |
true: kolejka merguje gotowy merge request bez pytania |
MONOLYNX_CONTRACT |
ask |
auto: kontrakt autonomii jest zapisywany, a praca idzie dalej bez potwierdzenia |
Branche
| Zmienna | Domyślnie | Co zmienia |
|---|---|---|
MONOLYNX_MR_TARGET |
domyślny branch repozytorium | branch, do którego idzie merge request ticketu |
MONOLYNX_BASE_BRANCH |
wartość MONOLYNX_MR_TARGET |
branch, z którego powstaje branch ticketu |
MONOLYNX_BRANCH_MODE |
ticket |
kontrola nazwy brancha: ticket wymaga klucza ticketu w nazwie, sprint dopuszcza jeden branch na cały sprint, off wyłącza kontrolę |
MONOLYNX_MERGE_METHOD |
merge |
sposób merge w kolejce: merge, squash albo rebase; wykonuje go platforma w chwili merge |
Sprint i pętle
| Zmienna | Domyślnie | Co zmienia |
|---|---|---|
MONOLYNX_SPRINT_PARALLEL |
2 |
liczba sesji ticketów pracujących jednocześnie |
MONOLYNX_SPRINT_MAX_WAITING |
2 |
limit sesji czekających na człowieka; po jego osiągnięciu dyspozytor nie startuje nowych |
MONOLYNX_SPRINT_STALL_TICKS |
2 |
po tylu tickach bez zmiany w logu sesja jest uznawana za czekającą |
MONOLYNX_SPRINT_PERMISSION_MODE |
auto |
tryb uprawnień sesji w tle |
MONOLYNX_SPRINT_RUNTIME |
claude |
klient prowadzący sprint: claude albo codex |
CLI i skrypty CI
Plugin, CLI i skrypty CI czytają różne zmienne, choć część z nich niesie tę samą informację. Nazwę projektu plugin bierze z MONOLYNX_PROJECT_SLUG, a CLI z MONOLYNX_PROJECT.
| Zmienna | Kto ją czyta | Co zmienia |
|---|---|---|
MONOLYNX_PROJECT_SLUG |
komendy pluginu, skrypty w cicd/ |
nazwa projektu na platformie |
MONOLYNX_PROJECT |
CLI monolynx |
nazwa projektu dla komend CLI; to samo co flaga --project |
MONOLYNX_ENDPOINT |
CLI monolynx |
adres instancji; domyślnie https://monolynx.com |
MONOLYNX_URL |
skrypty w cicd/ |
adres instancji; domyślnie https://monolynx.com |
MONOLYNX_TOKEN |
CLI monolynx |
token API zamiast logowania; przydatny w CI |
MONOLYNX_PROFILE |
CLI monolynx |
nazwany profil konfiguracji CLI |
MONOLYNX_GRAPH_TOKEN |
cicd/sync_graph.py |
token synchronizacji grafu kodu; bez niego etap jest pomijany |
MONOLYNX_MCP_TOKEN |
cicd/wiki_post_merge.py, ręczna konfiguracja MCP |
token dostępu do serwera MCP |
Pozostałe
| Zmienna | Domyślnie | Co zmienia |
|---|---|---|
MONOLYNX_TRANSPORT |
brak | mcp: komendy pomijają CLI i pracują tylko przez MCP |
MONOLYNX_BRIEF_GUARD |
auto |
reakcja na gołe polecenie: auto proponuje kontrakt, block odrzuca, off wyłącza |
MONOLYNX_MUTATION_BUDGET |
600 |
limit czasu testów mutacyjnych w sekundach; 600 to maksimum |
Zmienne, których zwykle nie ruszasz
| Zmienna | Domyślnie | Co zmienia |
|---|---|---|
MONOLYNX_SPRINT_RUN_MODE |
brak | batch ustawia sam skrypt pętli; nie ustawiaj ręcznie |
MONOLYNX_SPRINT_TICK_ALLOWED_TOOLS |
lista wbudowana | narzędzia dozwolone dla ticku w skrypcie pętli |
MONOLYNX_SPRINT_CODEX_SANDBOX |
workspace-write |
piaskownica klienta Codex |
MONOLYNX_HOOK_ASK_UNSUPPORTED |
false |
true: strażnik komend odmawia zamiast pytać; dla klientów, które pytania nie obsługują |
Pełną tabelę zawiera plik README pluginu, sekcja "Zmienne konfiguracyjne".
Modele i koszt
Proces uruchomiony bez wskazania modelu bierze domyślny model Twojego konta, a subagent dziedziczy model sesji, która go powołała. Oba zachowania są ciche i prowadzą do tego samego: cały sprint pracuje na najdroższym modelu. Plugin ustawia więc model każdej roli jawnie.
| Rola | Model domyślny | Jak zmienić |
|---|---|---|
Dyspozytor w skrypcie sprint_run.sh |
opus |
MONOLYNX_SPRINT_TICK_MODEL |
Dyspozytor w pętli /loop |
model Twojej sesji | /model w tej sesji |
| Koordynator ticketu w tle | opus |
MONOLYNX_SPRINT_MODEL |
| Koordynator ticketu uruchomiony ręcznie | model Twojej sesji | /model w tej sesji |
| Agent rozpoznający kod | sonnet |
treść komendy work |
| Programista i tester | model z definicji agenta, a bez niej sonnet |
pole model w definicji agenta |
| Krytyk | opus |
treść komendy work |
Jak sprawdzić, co jest ustawione?
Nie musisz czytać plików ręcznie. Komenda /monolynx:setup pokazuje każdą flagę z trzech źródeł naraz i ostrzega, gdy flaga jest ustawiona w miejscu, którego sesja w tle nie zobaczy.
- Uruchom checklistę
Wpisz
/monolynx:setupw katalogu projektu. - Przeczytaj punkt o flagach
Każda flaga ma wartość i źródło: środowisko, plik śledzony albo plik osobisty.
- Przenieś zgody do pliku śledzonego
Flagi autonomii z pliku osobistego wpisz do
.claude/settings.jsoni zatwierdź zmianę w gicie. - Sprawdź branch
Gdy
MONOLYNX_BASE_BRANCHiMONOLYNX_MR_TARGETsą różne, usuń pierwszą.
Najczęstsze pytania
Czy zmienną mogę ustawić zwykłym export w terminalu?
Tak, jeśli z tego samego terminala uruchamiasz potem Claude Code albo skrypt pętli. Zmienna działa do zamknięcia terminala. Dla ustawień trwałych użyj pliku.
Dlaczego sesja w tle nie widzi mojego pliku osobistego?
Sesja w tle pracuje w osobnym katalogu roboczym utworzonym przez gita. Git kopiuje tam tylko pliki, które śledzi, a plik osobisty jest ignorowany.
Co się stanie, gdy nie ustawię żadnej zmiennej poza nazwą projektu?
Komendy będą działać w trybie zachowawczym. Agent napisze kod, a potem wypisze polecenia testów, commita i pusha i poczeka, aż wykonasz je sam.
Czy tańszy model dla koordynatora to dobry pomysł?
Koordynator podejmuje decyzje o podziale pracy i ocenia wyniki, więc oszczędność na nim zwykle wraca jako dodatkowe rundy poprawek. Bezpieczniej oszczędzać na rolach wykonawczych, które już domyślnie używają tańszego modelu.
Po sprincie zmieniam branch docelowy. Co muszę posprzątać?
Zmienną MONOLYNX_MR_TARGET ze środowiska albo z pliku osobistego. W pliku śledzonym nie powinno jej być, więc tam nie ma czego sprzątać.
Słownik i następny krok
- Plik śledzony
- plik zapisany w repozytorium gita, widoczny w każdej kopii roboczej
- Plik osobisty
- plik ignorowany przez gita, obecny tylko w Twoim katalogu
- Środowisko procesu
- zmienne dostępne dla uruchomionego programu i programów, które on uruchomi
- Flagi autonomii
- zmienne
MONOLYNX_AUTO*, czyli Twoje zgody na samodzielne kroki agenta - Worktree
- osobny katalog roboczy tego samego repozytorium, w którym pracuje sesja ticketu
- Kontrola wstępna
- sprawdzenie konfiguracji na początku ticku dyspozytora
Konfigurację od zera prowadzi wpis Pierwszy projekt w Monolynx. Objawy błędnej konfiguracji i ich naprawę zbiera wpis Gdy coś nie działa w Monolynx. Wszystkie komendy w jednym miejscu pokazuje Mapa pluginu Monolynx.
Konfiguracja gotowa? Zobacz, jak wygląda sprint prowadzony przez agentów od planu do zamknięcia.
Przeczytaj przewodnik po sprincie