还在为在茫茫代码海洋中捞针而苦恼吗?Sourcebot 横空出世,它就像一位高效的图书管理员,能够帮助你快速定位代码库中的任何角落。这个开源项目基于 Zoekt 索引器构建,旨在提供闪电般快速的代码搜索体验,让开发者们告别低效的“大海捞针”式搜索。
一、Sourcebot:你的代码搜索加速器
Sourcebot 不仅仅是一个代码搜索工具,它更像是一个代码库的“搜索引擎”。它能够索引并搜索 GitHub、GitLab、Gitea 和 Gerrit 等多个代码托管平台上的代码,无论是公共仓库还是私人仓库,都能轻松应对。
1. 主要功能
- 一键部署: 使用 Docker,只需一条命令即可启动 Sourcebot,无需繁琐的配置。
- 多仓库搜索: 可以同时索引和搜索多个代码仓库,让你的搜索范围更广阔。
- 极速性能: 基于 Zoekt 搜索引擎,搜索速度快如闪电,告别漫长等待。
- 全文件可视化: 点击搜索结果,即可查看完整文件内容,方便上下文理解。
- 现代 Web 应用: 界面简洁美观,支持语法高亮、亮/暗模式切换,甚至还有 Vim 风格的导航,满足不同开发者的喜好。
二、快速上手:让 Sourcebot 为你效力
1. 部署方式
Sourcebot 的部署非常简单,只需要一个 Docker 命令:
docker run -p 3000:3000 --rm --name sourcebot ghcr.io/sourcebot-dev/sourcebot:latest
运行后,在浏览器中访问 http://localhost:3000 即可开始你的代码搜索之旅。
2. 配置 Sourcebot
当然,你可能需要配置 Sourcebot 来索引你自己的代码库。以下是配置步骤:
- 创建工作目录:
- mkdir sourcebot_workspace cd sourcebot_workspace
- 创建配置文件 my_config.json:
- touch my_config.json echo '{ "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v2/index.json", "repos": [ { "type": "github", "repos": [ "ggerganov/llama.cpp" ] } ] }' > my_config.json
- 这个例子配置了索引 llama.cpp 这个 GitHub 仓库。
- 运行 Sourcebot 并加载配置:
- docker run -p 3000:3000 --rm --name sourcebot -v $(pwd):/data -e CONFIG_PATH=/data/my_config.json ghcr.io/sourcebot-dev/sourcebot:latest
3. 访问令牌(Token)
如果要索引私有仓库,你需要提供访问令牌:
- GitHub: 创建一个具有 repo 作用域的个人访问令牌,并将其添加到配置文件或作为环境变量 (GITHUB_TOKEN) 传递。
- GitLab: 创建一个具有 read_api 作用域的个人访问令牌,并将其添加到配置文件或作为环境变量 (GITLAB_TOKEN) 传递。
- Gitea: 创建一个至少具有 read:repository 作用域的访问令牌,并将其添加到配置文件或作为环境变量 (GITEA_TOKEN) 传递。
- Gerrit: 暂不支持身份验证。
4. 自托管 GitLab/GitHub 实例
如果使用自托管的 GitLab 或 GitHub 实例,可以在配置文件中指定自定义域名。
5. 搜索多个分支
使用 revisions 字段可以指定要索引的分支和标签,例如:
{
"revisions": {
"branches": [
"main",
"releases/*"
],
"tags": [
"latest",
"v*.*.*"
]
}
}
6. 搜索本地目录
使用 local 类型可以索引本地目录,例如:
{
"type": "local",
"path": "/repos/my-repo",
"watch": true,
"exclude": {
"paths": [
"node_modules",
"build"
]
}
}
三、高级玩法:从源码构建
如果你想深入了解 Sourcebot,或者需要进行自定义修改,可以从源码构建:
- 安装依赖: 安装 Go 和 NodeJS (版本 >= 21.1.0)。
- 安装 ctags: 用于代码标签生成。
- 克隆仓库: git clone --recurse-submodules https://github.com/sourcebot-dev/sourcebot.git
- 构建: 运行 make。
- 创建 config.json 文件。
- 启动 Sourcebot: 运行 yarn dev。
- 访问: 在浏览器中访问 http://localhost:3000。
四、隐私与贡献
Sourcebot 默认收集匿名使用数据,你可以通过设置环境变量
SOURCEBOT_TELEMETRY_DISABLED 为 1 来禁用此功能。
Sourcebot 使用了 @vscode/codicons,并遵循 CC BY 4.0 License。
五、总结
Sourcebot 是一个强大而灵活的代码搜索工具,它不仅能提高你的代码搜索效率,还能让你更好地理解和管理你的代码库。无论你是个人开发者还是团队成员,Sourcebot 都能成为你代码探索之旅的得力助手。快来试试吧,让你的代码库瞬间“活”起来!