ctx-agent
CLI w Rust, które zamienia kod repozytorium w pamięć, którą mogą odpytywać agenci AI.
Po co istnieje
Agent pracujący w dużym repozytorium traci większość czasu na chodzenie po plikach, by odpowiedzieć na jedno pytanie: jeśli zmienię ten plik, co się zepsuje? Indeksy symboli w stylu ctags zwracają listę, ale nie są zbudowane pod agenta, a inteligencja kodu po stronie serwera wymaga infrastruktury. ctx-agent skanuje projekt raz, zapisuje go do SQLite i odpowiada agentowi lokalnie — bez LLM, bez chmury, bez klucza API.
Co robi
- Mapa kodu: drzewo katalogów, liczba plików i linii, symbole na plik
- Wyodrębnianie symboli wraz z sygnaturami dla Rust, TypeScript, JavaScript, Python i Go
- Graf zależności i zasięg zmian dla wskazanego pliku
- Dziennik decyzji wyciągany z commitów conventional
- Wyszukiwanie pełnotekstowe symboli w FTS5 z dopasowaniem częściowym
- Ostrzeżenia o zdrowiu kodu: pliki kruche, pliki powyżej 500 linii, martwy kod
- Obserwator plików, który analizuje ponownie przy zmianie
- Serwer MCP udostępniający zestaw narzędzi dowolnemu klientowi MCP
Stack
- Rust
- SQLite FTS5
- tree-sitter
- Model Context Protocol
Użycie
cd your-project && ctx init
ctx status
ctx map
ctx query "parse"
ctx blast-radius src/db/mod.rs
ctx decisions
ctx warnings
ctx watch
ctx status --json
Notatki inżynierskie
To, czego narzędzie nie robi, waży tyle samo co to, co robi: nie pisze kodu, nie gwarantuje, że kompilacja lub lint przejdą, nie obserwuje zachowania w czasie działania i nie jest LSP. Robi statyczną analizę strukturalną i mówi o tym wprost — właśnie to czyni wynik godnym zaufania. Ponowne skanowanie jest przyrostowe: analizowane są tylko zmienione pliki. Tryb paranoidalny jest domyślnie włączony i raportuje BLOCK lub PASS dla zmian dotykających ścieżek auth, session, token i crypto, a każde wywołanie MCP trafia do dziennika aktywności projektu.
Ograniczenia
- Swift i Kotlin są śledzone wyłącznie jako pliki i liczba linii; wyodrębnianie symboli jest planowane.
- W językach bez wyodrębniania symboli nadal działa śledzenie plików, liczba linii i analiza historii git.