Tworzenie interaktywnej mapy kodu z Codex

Poznaj sposób wykorzystania Codex do generowania interaktywnej mapy kodu, która śledzi zmiany w modułach oraz ich zależności.
Tworzenie interaktywnej mapy kodu z Codex
Poproś Codex o utworzenie interaktywnej mapy repozytorium, a następnie oznacz, które moduły uległy zmianie od momentu jej wygenerowania.
Klikając na dowolny moduł, możesz zobaczyć jego komponenty wywołujące, zależności, główne przepływy wykonania, powiązane testy oraz dane wspierające pochodzące z kodu źródłowego.
Codex generuje następujące pliki:
docs/codemap/codemap.htmldocs/codemap/codemap.jsondocs/codemap/codemap.lock
Pełny prompt
Przeanalizuj bieżącą bazę kodu. Nie modyfikuj kodu produktowego. Twórz lub aktualizuj wyłącznie pliki w katalogu docs/codemap/.
Ignoruj katalogi vendor, build, dist, cache oraz inne katalogi generowane automatycznie.
Jeśli katalog docs/codemap/ już istnieje, najpierw porównaj istniejący plik codemap.lock z aktualnym stanem repozytorium i wypisz moduły, które uległy zmianie. Następnie wygeneruj ponownie te trzy pliki jednocześnie:
docs/codemap/codemap.html
Zbuduj w pełni samodzielną, interaktywną mapę kodu, którą można otworzyć bezpośrednio w przeglądarce. Mapa powinna zawierać:- główne moduły, usługi, bazy danych, kolejki i zależności zewnętrzne,
- nie więcej niż 20 węzłów głównych; pliki niskopoziomowe grupuj pod macierzystym modułem,
- połączenia i przepływy danych między modułami,
- 3–5 najważniejszych przepływów end-to-end,
- domyślnie wyraźny ciemny motyw,
- granice systemu i najważniejsze przepływy danych widoczne na pierwszym ekranie,
- kolorowe oznaczenia typów modułów wraz z prostą legendą,
- automatyczny układ minimalizujący przecięcia krawędzi,
- po kliknięciu modułu podświetlenie jego wywołań upstream, zależności downstream, powiązanych testów oraz przepływów, w których uczestniczy,
- po wyborze przepływu podświetlenie jego pełnej ścieżki,
- kontrolki wyszukiwania, filtrowania, zoomu i przeciągania.
Na górze strony wyświetl nazwę repozytorium, czas generowania oraz commit, z którego mapa została wygenerowana.
docs/codemap/codemap.json
Użyj następującej struktury:JSON{ "generated_at": "", "generated_from_commit": "", "scope": [], "nodes": [], "edges": [], "flows": [] }Każdy węzeł musi zawierać:
- id,
- path (ścieżka),
- role (rola),
- entrypoints (punkty wejścia),
- tests (testy),
- constraints (ograniczenia),
- evidence (dowody).
Każda krawędź musi zawierać:
- from (źródło),
- to (cel),
- type (typ),
- evidence (dowody).
Pole type może przyjmować wyłącznie wartości:
- imports (importy),
- calls (wywołania),
- reads (odczyty),
- writes (zapisy),
- publishes (publikacje),
- subscribes (subskrypcje).
Każdy przepływ musi zawierać:
- trigger (wyzwalacz),
- steps (kroki),
- outcome (wynik).
Każdy krok musi odnosić się do istniejącego id węzła. Do każdego węzła i krawędzi dołącz pasującą ścieżkę źródłową oraz symbol. Oznacz każdą relację bez dowodu źródłowego jako „unknown” (nieznana). Nie zgaduj.
docs/codemap/codemap.lock
Użyj parsowalnego JSON-a do zapisania:- aktualnego commita,
- informacji o tym, czy drzewo robocze ma niezatwierdzone zmiany,
- czasu generowania,
- skanu zakresu,
- wykluczonych katalogów,
- algorytmu fingerprintingu,
- deterministycznego fingerprintu dla każdego modułu najwyższego poziomu, obliczonego na podstawie ścieżek śledzonych plików i ich aktualnej zawartości.
Jeśli nie znaleziono istniejącego pliku
codemap.lock, traktuj każdy moduł jako nowy i wygeneruj pełną mapę.Po zakończeniu zweryfikuj, że:
codemap.jsonpoprawnie się parsuje,- każda ścieżka węzła istnieje, a każdy symbol dowodowy można znaleźć w źródle,
- każda krawędź i krok przepływu odnoszą się do istniejącego węzła,
codemap.htmlicodemap.jsonużywają tych samych węzłów, krawędzi i przepływów,codemap.lockodpowiada aktualnemu commitowi, stanowi drzewa roboczego i fingerprintom modułów,- każda relacja bez dowodu źródłowego jest oznaczona jako „unknown”.
Te trzy pliki muszą być zawsze generowane razem na podstawie aktualnego stanu repozytorium. Nigdy nie edytuj ręcznie tylko jednego z nich.
Na koniec wyświetl:
- utworzone lub zmodyfikowane pliki,
- przestarzałe moduły,
- pozostałe elementy oznaczone jako „unknown”,
- wyniki walidacji,
- pełny diff.
Dodatkowa zasada
Dodaj regułę w pliku AGENTS.md, aby utrzymać mapę kodu zawsze zsynchronizowaną z repozytorium:
Na początku każdego zadania zmieniającego kod, porównaj aktualny stan repozytorium z plikiem docs/codemap/codemap.lock.
Przed modyfikacją modułu użyj pliku docs/codemap/codemap.json, aby odpowiedzieć na trzy pytania:
- Co go wywołuje?
- Na co on wpływa?
- Jakie testy go pokrywają?
Jeśli mapa jest przestarzała lub nie pozwala odpowiedzieć na te pytania, wygeneruj ponownie codemap.html, codemap.json i codemap.lock przed wprowadzeniem zmian w kodzie.
Zawsze, gdy zmienią się granice modułów, zależności, trasy, bazy danych, kolejki lub główne przepływy danych, aktualizuj mapę kodu w tym samym commicie co kod.
Dlaczego to ważne: To podejście pomaga zachować aktualność dokumentacji kodu, co jest kluczowe dla pracy zespołowej i redukuje ryzyko błędów przy wprowadzaniu zmian. Interaktywna mapa kodu upraszcza zrozumienie struktury projektu.
Dlaczego to ważne
AnalizaTo podejście zapewnia ciągłą synchronizację dokumentacji z kodem, co jest kluczowe dla efektywnej współpracy zespołowej i minimalizacji błędów podczas refaktoryzacji. Interaktywna wizualizacja struktury projektu znacząco skraca czas potrzebny na zrozumienie złożonych zależności.
Dyskutuj w społeczności
Dziel się swoimi pytaniami i spostrzeżeniami z programistami