Como Parar de Se Afogar no Código dos Outros e Começar a Viver com o Sourcebot
Situação familiar: você entra em um novo projeto ou tenta entender um monstro legacy que três gerações de desenvolvedores escreveram antes de você. O IDE tenta ajudar honestamente, mas pular entre definições de funções em dez repositórios diferentes vira uma jornada. Geralmente em momentos assim, você só quer perguntar a alguém: "Onde está a lógica de processamento de pagamentos mesmo?" Mas os colegas estão ocupados, e a documentação ficou desatualizada no ano passado.
Recentemente, descobri o Sourcebot. É uma ferramenta open-source que você pode autohospedar e usar como um guia pessoal pela sua base de código. Ele pode indexar seus repositórios e responder perguntas em linguagem natural, citando linhas específicas de código.
O Que É Isso Mesmo
Resumindo, o Sourcebot é uma combinação de busca avançada de código e um assistente de LLM. A principal característica é que ele é autohospedado. Isso resolve a eterna questão de segurança: "Nosso código fonte não vai acabar no OpenAI?" Você controla onde o serviço roda e quais dados ele vê.
A ferramenta resolve vários pontos problemáticos de uma vez. Primeiro, ela oferece busca rápida em todos os seus branches e repositórios simultaneamente. Segundo, ela constrói um grafo de navegação nível de IDE diretamente no navegador. E a cereja do bolo — um chat que entende o contexto do seu projeto.
Do Que Ele É Capaz
Os desenvolvedores destacaram várias áreas principais que realmente economizam tempo na rotina diária.
Chat Inteligente com Contexto
Você escreve uma pergunta como: "Como a autorização está configurada neste serviço?" O Sourcebot não fica adivinhando aleatoriamente — ele usa seus índices de busca, encontra os arquivos relevantes, analisa as conexões e entrega uma resposta com citações. Isso é mais conveniente do que um ChatGPT comum porque você obtém provas na forma de links para o código.
Busca Sem Demora
Um grep comum em um monorepo enorme pode demorar. Aqui, a busca funciona muito rápido. Suporta expressões regulares, filtros por linguagem e repositório, além de operadores lógicos. Você pode encontrar rapidamente todos os lugares onde uma biblioteca específica ou configuração particular é usada, mesmo tendo dezenas de projetos.
Navegação no Navegador
Às vezes você só precisa fuçar o código sem baixá-lo localmente. O explorador embutido suporta syntax highlighting e Go to Definition. Isso funciona entre repositórios: se uma função está definida em um projeto vizinho, o Sourcebot leva você até lá.
Como Funciona Por Dentro
O projeto é escrito em TypeScript. Ele requer Docker para rodar, já que a forma mais fácil de fazer deploy é via Docker Compose. A arquitetura é projetada para que você possa plugar seus próprios LLMs. No config, você pode especificar provedores de modelo, configurar autenticação e indicar quais repositórios do GitHub ou GitLab indexar.
Curiosamente, os autores alertam honestamente sobre coleta de telemetria anônima. Você pode desativá-la com uma única variável de ambiente SOURCEBOT_TELEMETRY_DISABLED=true, o que é bom — sem atividade escondida.
Como Iniciar e Testar
O deploy leva alguns minutos se você já tem Docker. Primeiro, baixe o config:
curl -o docker-compose.yml https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/docker-compose.yml
Depois crie config.json. Nele, você descreve onde o bot deve procurar. Para um teste rápido, você pode apontá-lo para o próprio repositório do Sourcebot:
{
"$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json",
"connections": {
"starter-connection": {
"type": "github",
"repos": [
"sourcebot-dev/sourcebot"
]
}
}
}
Depois disso, inicie os containers com docker compose up e vá para localhost:3000.
Quem Vai Encontrar Isso Útil
Vejo o valor do Sourcebot em dois cenários. O primeiro é quando um time está crescendo rapidamente e os novatos gastam tempo demais no onboarding. Em vez de incomodar o lead, eles podem "consultar" o bot. O segundo é quando você tem um zoológico de microsserviços, e rastrear o caminho dos dados entre os serviços fica fisicamente doloroso.
O projeto ainda está evoluindo, e há uma lista decente de issues abertos no repositório, mas a base já é bastante usável. Se você estava procurando uma forma de tornar o conhecimento do seu código mais acessível para o time sem querer enviar dados para a nuvem — este é um ótimo candidato para testar.
A propósito, eles têm um demo público, então você pode até experimentar a interface sem instalar nada. Isso ajuda a entender se este formato de trabalhar com código serve para você.
Projetos relacionados