Jak przestać tonąć w cudzym kodzie i zacząć żyć z Sourcebotem
Znana sytuacja: wskakujesz w nowy projekt albo próbujesz ogarnąć legacy potwora, którego pisali przed tobą przedstawiciele trzech generacji programistów. IDE stara się pomagać, ale skakanie między definicjami funkcji w dziesięciu różnych repozytoriach zamienia się w wyprawę. Zwykle w takich momentach chciałbyś po prostu kogoś zapytać: „Gdzie jest ta logika przetwarzania płatności?”. Ale koledzy są zajęci, a dokumentacja zestarzała się w zeszłym roku.
Ostatnio natknąłem się na Sourcebot. To narzędzie open-source, które możesz hostować samodzielnie i używać jako osobistego przewodnika po swojej bazie kodu. Potrafi indeksować repozytoria i odpowiadać na pytania w języku naturalnym, wskazując konkretne linie kodu.
Co to w ogóle jest
Mówiąc krótko, Sourcebot to połączenie zaawansowanego wyszukiwania kodu i asystenta LLM. Główna cecha to fakt, że jest hostowany samodzielnie. Rozwiązuje to wieczne pytanie bezpieczeństwa: „Czy nasz kod źródłowy nie wyląduje przypadkiem w OpenAI?”. Ty kontrolujesz, gdzie usługa działa i jakie dane widzi.
Narzędzie rozwiązuje kilka problemów naraz. Po pierwsze, zapewnia szybkie wyszukiwanie we wszystkich gałęziach i repozytoriach jednocześnie. Po drugie, buduje graf nawigacji na poziomie IDE bezpośrednio w przeglądarce. A na deser — czat, który rozumie kontekst twojego projektu.
Na co go stać
Programiści wyróżnili kilka głównych obszarów, które naprawdę oszczędzają czas w codziennej pracy.
Inteligentny czat z kontekstem
Piszesz pytanie: „Jak skonfigurowano autoryzację w tej usłudze?”. Sourcebot nie zgaduje losowo — korzysta z indeksów wyszukiwania, znajduje powiązane pliki, analizuje połączenia i dostarcza odpowiedź z cytatami. Jest to wygodniejsze niż zwykły ChatGPT, ponieważ dostajesz dowody w postaci linków do kodu.
Wyszukiwanie bez opóźnień
Zwykły grep przez ogromne monorepo może się ciągnąć. Tutaj wyszukiwanie działa bardzo szybko. Obsługuje wyrażenia regularne, filtrowanie po języku i repozytorium, a także operatory logiczne. Możesz szybko znaleźć wszystkie miejsca, gdzie używana jest konkretna biblioteka lub konfiguracja, nawet jeśli masz dziesiątki projektów.
Nawigacja w przeglądarce
Czasem po prostu chcesz sobie powęszyć w kodzie bez pobierania go lokalnie. Wbudowany eksplorator obsługuje podświetlanie składni i Go to Definition. Działa to między repozytoriami: jeśli funkcja jest zdefiniowana w sąsiednim projekcie, Sourcebot cię tam przeniesie.
Jak to działa pod maską
Projekt jest napisany w TypeScript. Wymaga Dockera do uruchomienia, ponieważ najłatwiejszy sposób wdrożenia to Docker Compose. Architektura jest zaprojektowana tak, aby można było podłączyć własne LLM. W konfiguracji możesz określić dostawców modeli, skonfigurować uwierzytelnianie i wskazać, które repozytoria z GitHuba lub GitLaba mają być indeksowane.
Ciekawe jest to, że autorzy uczciwie ostrzegają przed anonimowym zbieraniem telemetrii. Możesz to wyłączyć jedną zmienną środowiskową SOURCEBOT_TELEMETRY_DISABLED=true, co jest miłe — brak ukrytej aktywności.
Jak uruchomić i przetestować
Wdrożenie zajmuje kilka minut, jeśli masz już Dockera. Najpierw pobierz konfigurację:
curl -o docker-compose.yml https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/docker-compose.yml
Następnie utwórz config.json. W nim opisujesz, gdzie bot ma szukać. Na testowy rozruch możesz skierować go na samo repozytorium Sourcebot:
{
"$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json",
"connections": {
"starter-connection": {
"type": "github",
"repos": [
"sourcebot-dev/sourcebot"
]
}
}
}
Po tym uruchom kontenery za pomocą docker compose up i przejdź do localhost:3000.
Komu to się przyda
Wartość Sourcebota widzę w dwóch scenariuszach. Pierwszy to szybko rosnący zespół, gdzie nowicjusze spędzają zbyt dużo czasu na wdrożeniu. Zamiast zamęczać lidera, mogą „konsultować się" z botem. Drugi to gdy masz zoo mikroserwisów, a śledzenie ścieżki danych między usługami staje się fizycznie bolesne.
Projekt nadal się rozwija i jest całkiem spora lista otwartych issue'ów w repozytorium, ale fundament jest już całkiem użyteczny. Jeśli szukasz sposobu, aby uczynić wiedzę o kodzie bardziej dostępną dla zespołu, nie chcąc przy tym wysyłać danych do chmury — to świetny kandydat do wypróbowania.
Przy okazji, mają publiczne demo, więc możesz wypróbować interfejs nawet bez instalacji. Pomaga to zrozumieć, czy ten sposób pracy z kodem ci odpowiada.
Powiązane projekty