誰かのコードに溺れる日々から解放 ― Sourcebotで始めるコードベースとの新しい付き合いかた
よくある場面ですよね。新しいプロジェクトに飛び込んだり、三世代前の開発者が書いたレガシーモンスターを理解しようとしたり。IDEは確かに助けようとしてくれますが、10個のリポジトリを行き来して関数定義を追うのは冒険みたいになります。こんな時、普通は誰かに聞きたくなります。「決済処理のロジックどこにあるの?」と。でも同僚は忙しくて、ドキュメントは去年から更新されていません。
最近、Sourcebotというツールを見つけました。オープンソースのツールで、セルフホストしてコードベースの個人ガイドとして使えます。リポジトリにインデックスを張り、自然言語で質問に回答し、該当するコードの行を引用してくれるんです。
そもそも这是什么
端的に言えば、Sourcebotは高度なコード検索とLLMアシスタントの融合です。最大の特長はセルフホスト型であることです。これにより、「ソースコードがOpenAIに送られるんじゃないか」という永遠のセキュリティ問題を解決できます。サービスをどこで稼働させるか、 어떤データが目に触れるかはあなたがコントロールできます。
このツールは複数の課題を同時に解決します。まず、すべてのブランチとリポジトリを一括で検索できます。次に、ブラウザ上にIDEレベルのナビゲーショングラフを構築できます。そして最後の一押しとして、プロジェクトのコンテキストを理解したチャットが備わっています。
何ができるのか
開発者们が普段の業務で本当に時間を節約できると強調しているのは、主に以下の点です。
コンテキストを理解したスマートチャット
「このサービスでは認証どのように設定されている?」のように質問を書きます。Sourcebotは適当に推測するのではなく、検索インデックスを活用し、関連ファイルを 찾아、糖鎖を分析して、引用付きの回答を返します。ChatGPTを使うよりも、コードへのリンクという証拠が手に入るので便利です。
遅延のない検索
巨大なmonorepoで通常のgrepを実行すると時間がかかります。ここでは検索が非常に高速に動作します。正規表現に対応しており、言語やリポジトリでのフィルタリング、論理演算子もサポートしています。数十個のプロジェクトがあっても、特定のライブラリや設定ファイルの使用箇所をすぐに찾을 수 있습니다。
ブラウザベースのナビゲーション
ローカルにダウンロードせずにコード 浏览したいだけのこともあります。組み込みのエクスプローラーはシンタックスハイライトと定義へのジャンプをサポートしています。クロスリポジトリ対応で、関数が隣のプロジェクトで定義されている場合、Sourcebotがそこまで連れて行ってくれます。
内部的な仕組み
このプロジェクトはTypeScriptで書かれています。Dockerが必要です。最も簡単な導入方法はDocker Compose経由です。アーキテクチャは独自のLLMをプラグインできるように設計されています。設定ファイルではモデルプロバイダーの指定、認証セットアップ、GitHubやGitLabからインデックスを作成するリポジトリの指定が行えます。
興味深いことに、作者たちは匿名テレメトリ収集について正直に警告しています。環境変数 SOURCEBOT_TELEMETRY_DISABLED=true を1つ設定するだけで無効化できます。隠し行動がないのは好ましいですね。
起動とテストの方法
すでにDockerを使っているなら、デプロイは数分で完了します。まず、設定ファイルをダウンロードします:
curl -o docker-compose.yml https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/docker-compose.yml
次に config.json を作成します。ボットにどこを探すべきかを記述します。テスト実行として、Sourcebotのリポジトリ自体を指すこともできます:
{
"$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json",
"connections": {
"starter-connection": {
"type": "github",
"repos": [
"sourcebot-dev/sourcebot"
]
}
}
}
その後、 docker compose up でコンテナを起動し、 localhost:3000 を開きます。
誰が役立つか
Sourcebotの价值は2つのシナリオ,认为できます。1つは、チームが急成長中で、新規メンバーがオンボーディングに時間をかけすぎる場合です。リードに迷惑をかける代わりに、ボットに「相談」できます。2つは、microservicesの动物园があり、サービス間のデータの流れを追踪するのが物理的に痛苦な場合です。
プロジェクトはまだ進化中で、リポジトリには未解決のissueがなかなかの分量ありますが、基盤はすでにかなり实用になります。チームのコードナレッジへのアクセスを改善する方法を探していて、クラウドにデータを送りたくない이라면、试试してみるのおすすめです。
ちなみに、公開デモがあるので、インストールせずにインターフェースを試すこともできます。この形式でコードと連携するのが自分に合っているかどうか、判断に役立ちます。
関連プロジェクト