>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
TypeScript

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