>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
TypeScript

如何不再淹没在别人的代码中,开始自在使用 Sourcebot

熟悉的场景:你接手一个新项目,或者试图理解一个由三代开发人员在你之前编写的遗留巨兽。IDE 确实在努力提供帮助,但在十个不同的代码仓库之间跳转函数定义变成了一场探险。通常在这种情况下,你只想问一个人:“支付处理逻辑到底在哪里?”但同事们都很忙,文档去年就过时了。

最近我偶然发现了 Sourcebot。这是一个可以自托管的开源工具,你可以用它作为代码库的私人向导。它可以为你的代码仓库建立索引,并用自然语言回答问题,同时引用具体的代码行。

它到底是什么

简而言之,Sourcebot 是高级代码搜索和 LLM 助手的结合体。主要特点是它可以自托管。这解决了永恒的安全问题:“我们的源代码不会最终出现在 OpenAI 上吧?”你可以控制服务运行的位置以及它能访问哪些数据。

这个工具同时解决了几个痛点。首先,它能跨所有分支和代码仓库同时进行快速搜索。其次,它在浏览器中构建了 IDE 级别的导航图。锦上添花的是——一个能理解你项目上下文的聊天功能。

它能做什么

开发者们强调了以下几个在日常工作中真正节省时间的主要功能。

带上下文的智能聊天

你写一个问题,比如:“这个服务中的授权是如何设置的?”Sourcebot 不是随机猜测——它使用搜索索引,找到相关文件,分析关联,然后给出带引用的答案。这比单纯的 ChatGPT 更方便,因为你得到了代码链接形式的证据。

无延迟的搜索

在巨大的单体仓库中进行常规 grep 可能会拖得很慢。在这里,搜索速度非常快。它支持正则表达式、按语言和代码仓库过滤,以及逻辑运算符。你可以快速找到使用特定库或特定配置的所有位置,即使你有几十个项目。

有时候你只是想浏览代码,而不想在本地下载。内置的浏览器支持语法高亮和跳转到定义。这支持跨仓库操作:如果一个函数定义在相邻的项目中,Sourcebot 会带你过去。

它是如何工作的

这个项目使用 TypeScript 编写。它需要 Docker 来运行,因为最简单 的部署方式是通过 Docker Compose。架构设计允许你接入自己的 LLM。在配置中,你可以指定模型提供商、设置身份验证,并指明要从 GitHub 或 GitLab 索引哪些代码仓库。

有趣的是,作者们坦诚地警告了匿名遥测数据收集。你可以通过一个环境变量 SOURCEBOT_TELEMETRY_DISABLED=true 来禁用它,这很贴心——没有隐藏活动。

如何启动和测试

如果你已经有 Docker,部署只需要几分钟。首先,下载配置:

curl -o docker-compose.yml https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/docker-compose.yml

然后创建 config.json。在其中描述 bot 应该在哪里查找。对于测试运行,你可以将它指向 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 的价值体现在两个场景中。第一个是团队快速成长,新成员在入职上花费太多时间。他们可以“咨询”bot,而不是打扰领导。第二个是你有一个微服务动物园,在服务之间追踪数据路径变得非常痛苦。

这个项目仍在发展中,代码仓库中有一份不错的开放 issue 列表,但基础已经相当可用。如果你一直在寻找一种让团队更容易访问代码知识的方法,同时又不想把数据发送到云端——这是一个很好的尝试候选。

顺便说一句,他们有一个公开的演示,所以你甚至可以在不安装任何东西的情况下试用界面。这能帮助你了解这种代码工作方式是否适合你。

相关项目