Przejdź do głównej zawartości

Zmiany hurtowe z chmurą i worktree'ami

Twój zespół właśnie przyjął nową bibliotekę logowania i musisz zastąpić starą w 47 plikach w 12 pakietach. Regex find-and-replace radzi sobie z prostymi przypadkami, ale psuje te złożone. Uruchamianie Codex na każdym pliku sekwencyjnie zajmuje cały dzień. Wzorzec operacji masowych pozwala rozdzielić pracę między równoległe agenty, z których każdy obsługuje fragment bazy kodu, a następnie czysto scalić wyniki.

  • Przepływ pracy do dystrybucji dużych zmian między wieloma równoległymi agentami Codex
  • Wzorce dla operacji masowych opartych na worktree’ach (lokalne) i chmurze
  • Strategie sprawdzania spójności, gdy wielu agentów wykonuje podobne zmiany niezależnie
  • Skrypty orkiestrujące masowe wywołania codex exec ze śledzeniem postępu
  1. Zdefiniuj zmianę — Napisz precyzyjny opis tego, co musi się zmienić i jak.
  2. Podziel pracę — Podziel według pliku, katalogu, pakietu lub serwisu.
  3. Wykonaj równolegle — Każda partycja uruchamiana jest jako osobny wątek Codex (worktree lub chmura).
  4. Zweryfikuj spójność — Uruchom ujednolicone sprawdzenie (linter, type checker, zestaw testów) na wszystkich wynikach.
  5. Scal — Połącz wyniki w jeden branch lub PR.

Dla zmian obejmujących jedno repozytorium, użyj wątków worktree w aplikacji:

Dla skryptowanych operacji masowych użyj codex exec z pętlą powłoki:

batch-migrate.sh
#!/bin/bash
PACKAGES=("api" "web" "worker" "shared" "cli")
BRANCH="chore/migrate-logger"
for pkg in "${PACKAGES[@]}"; do
echo "Processing $pkg..."
codex exec --full-auto --cd "packages/$pkg" \
"Replace all imports of old-logger with @company/logger.
Follow the migration guide in docs/logging-migration.md.
Run the package-specific tests to verify." &
done
wait
echo "All packages processed. Run the full test suite to verify."

Aby uzyskać wyjście czytelne maszynowo, dodaj --json i przekieruj wyniki:

Okno terminala
codex exec --json --full-auto --cd "packages/$pkg" \
"Migrate logging" 2>/dev/null | jq -r '.item.text // empty' | tail -1

Gdy zmiany są na tyle ciężkie, że blokują twoją maszynę, wyślij zadania do chmury:

Okno terminala
for pkg in api web worker shared; do
codex cloud exec --env monorepo-env \
"In the $pkg package, replace old-logger with @company/logger.
Follow the patterns in docs/logging-migration.md. Run tests."
done

Zadania w chmurze uruchamiane są w izolowanych kontenerach, więc nie ma między nimi konfliktów.

Po scaleniu wyników od wielu agentów uruchom ujednolicone sprawdzenia:

Okno terminala
# Type check across the entire monorepo
pnpm run type-check
# Lint for consistent style
pnpm run lint
# Full test suite
pnpm run test
# Verify no old imports remain
grep -r "from 'old-logger'" packages/ && echo "MIGRATION INCOMPLETE" || echo "MIGRATION COMPLETE"

Jeśli którekolwiek sprawdzenie się nie powiedzie, otwórz nowy wątek Codex, aby naprawić niespójności:

The logging migration left some inconsistencies. Run pnpm lint and fix
all warnings. Then run pnpm test and fix any failures. The old-logger
package should not be imported anywhere.
  • Agenty dokonują niespójnych wyborów: Każdy agent działa niezależnie. Gdy możliwych jest wiele podejść, mogą wybrać różne. Dodaj jawne ograniczenia do promptu: “Use the pattern shown in packages/api/src/logger.ts as the reference.”
  • Konflikty scalania między partiami: Aplikuj partie w spójnej kolejności (alfabetycznie według pakietu) i rozwiązuj konflikty między każdą z nich.
  • Jeden pakiet blokuje resztę: Jeśli jeden pakiet ma unikalne ograniczenia, obsłuż go w osobnym wątku ze specjalistycznymi instrukcjami.
  • Koszty tokenów eksplodują: Operacje masowe mnożą koszty liniowo. Używaj GPT-5.1-Codex-Mini do prostych migracji i zarezerwuj GPT-5.3-Codex dla pakietów ze złożoną logiką.