如何不再淹没在别人的代码中,开始自在使用 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 列表,但基础已经相当可用。如果你一直在寻找一种让团队更容易访问代码知识的方法,同时又不想把数据发送到云端——这是一个很好的尝试候选。
顺便说一句,他们有一个公开的演示,所以你甚至可以在不安装任何东西的情况下试用界面。这能帮助你了解这种代码工作方式是否适合你。
相关项目