Tabby 自托管代码补全服务
一句话概述
Tabby 是一个开源的自托管 AI 编码助手,作为 GitHub Copilot 的替代品,可以在自己的服务器上运行代码补全服务,支持私有代码仓库索引,数据完全不出网,RTX 4090 可支持约 20 名开发者并发使用。
核心知识点表格
| 知识点 | 说明 |
|---|
| 项目地址 | https://github.com/TabbyML/tabby |
| 最新版本 | v0.24.0(2025年2月) |
| GitHub Stars | 32,200+ |
| 核心功能 | 代码补全、代码问答、私有仓库索引 |
| 支持 IDE | VS Code、JetBrains、Vim、Neovim |
| 支持模型 | StarCoder2、DeepSeek-Coder、Qwen2.5-Coder、CodeLlama |
| 开发语言 | Rust |
| 硬件要求 | 最低 8GB 内存,建议有 GPU |
| 许可证 | 自定义开源协议 |
安装与配置
方式一:Docker 安装(推荐)
# NVIDIA GPU 用户(最常见)
docker run -it \
--gpus all \ # 挂载所有 GPU
-p 8080:8080 \ # 映射端口
-v $HOME/.tabby:/data \ # 持久化数据目录
tabbyml/tabby \ # 官方镜像
serve \ # 启动服务模式
--model StarCoder2-3B \ # 使用 StarCoder2 3B 模型(轻量高效)
--device cuda # 使用 CUDA GPU 加速
# AMD GPU 用户
docker run -it \
--device /dev/kfd --device /dev/dri \ # AMD GPU 设备
-p 8080:8080 \
-v $HOME/.tabby:/data \
tabbyml/tabby \
serve \
--model StarCoder2-3B \
--device rocm # 使用 ROCm 加速
# 纯 CPU 运行(没有 GPU 也能用,速度慢一些)
docker run -it \
-p 8080:8080 \
-v $HOME/.tabby:/data \
tabbyml/tabby \
serve \
--model StarCoder2-3B \
--device cpu # CPU 模式
方式二:Homebrew 安装(macOS)
# macOS 用户可以用 Homebrew 安装
brew install tabbyml/tabby/tabby # 安装 Tabby
# 启动服务(Apple Silicon 自动使用 Metal 加速)
tabby serve --model StarCoder2-3B # 启动并加载模型
方式三:直接下载二进制文件
# 从 GitHub Releases 下载对应平台的二进制文件
# https://github.com/TabbyML/tabby/releases
# Linux x86_64 示例
curl -L https://github.com/TabbyML/tabby/releases/latest/download/tabby_x86_64-manylinux2014 \
-o tabby # 下载可执行文件
chmod +x tabby # 添加执行权限
./tabby serve --model StarCoder2-3B # 直接运行
配置 IDE 插件
VS Code
1. 打开 VS Code
2. 按 Ctrl+Shift+X 打开扩展商店
3. 搜索 "Tabby" 并安装
4. 按 Ctrl+, 打开设置
5. 搜索 "tabby"
6. 在 "Tabby: Endpoint" 中填入服务地址:http://localhost:8080
7. 开始写代码,补全会自动弹出
JetBrains(IntelliJ IDEA / PyCharm 等)
1. 打开 Settings → Plugins
2. 搜索 "Tabby" 并安装
3. 重启 IDE
4. Settings → Tools → Tabby
5. 填入服务地址:http://localhost:8080
基本使用
管理界面
# Tabby 启动后,打开浏览器访问管理界面
# 地址:http://localhost:8080
# 管理界面功能:
# - 查看服务状态和模型信息
# - 管理用户和 API Token
# - 配置代码仓库索引
# - 查看使用统计
创建 API Token
# 在管理界面创建 Token 后,可以用 API 方式调用
# 测试代码补全 API
curl -X POST http://localhost:8080/v1/completions \
-H "Content-Type: application/json" \ # JSON 格式
-H "Authorization: Bearer <你的Token>" \ # 认证 Token
-d '{
"language": "python", # 编程语言
"segments": {
"prefix": "def fibonacci(n):\n ", # 光标前的代码
"suffix": "\n return result" # 光标后的代码
}
}'
索引私有代码仓库
# 在管理界面 → "Repositories" 页面添加仓库
# 支持 GitHub、GitLab、本地 Git 仓库
# 或者通过配置文件设置
# 编辑 ~/.tabby/config.toml
# 添加 GitHub 仓库(需要 Personal Access Token)
# [repositories]
# [[repositories.git]]
# url = "https://github.com/你的用户名/你的仓库.git"
# token = "ghp_xxxxxxxxxxxx"
# 添加本地仓库
# [[repositories.git]]
# url = "file:///path/to/your/repo"
# 索引完成后,Tabby 的补全会参考你的代码风格和 API 用法
高级用法
模型选择指南
# 根据硬件和需求选择合适的模型
# 轻量级(4GB+ 显存)—— 适合个人使用
tabby serve --model StarCoder2-3B # 3B 参数,速度快
# 中等(8GB+ 显存)—— 适合小团队
tabby serve --model StarCoder2-7B # 7B 参数,质量更好
# 高质量(24GB+ 显存)—— 适合大团队
tabby serve --model DeepSeek-Coder-V2-Lite # 更强的代码能力
# 多语言优化(中文代码注释友好)
tabby serve --model Qwen2.5-Coder-7B # 阿里千问系列,中文好
配合 LDAP 企业认证
# ~/.tabby/config.toml
# v0.24.0 新增 LDAP 认证支持,适合企业内部部署
[auth.ldap]
host = "ldap.company.com" # LDAP 服务器地址
port = 389 # LDAP 端口
base_dn = "dc=company,dc=com" # 基础 DN
bind_dn = "cn=admin,dc=company,dc=com" # 管理员 DN
bind_password = "password" # 管理员密码
user_filter = "(uid={0})" # 用户搜索过滤器
使用 Docker Compose 部署(生产环境)
# docker-compose.yml
version: '3.8'
services:
tabby:
image: tabbyml/tabby:latest # 使用最新镜像
command: serve --model StarCoder2-7B --device cuda # 启动命令
ports:
- "8080:8080" # 映射端口
volumes:
- tabby-data:/data # 数据持久化
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1 # 预留 1 张 GPU
capabilities: [gpu]
restart: unless-stopped # 自动重启
volumes:
tabby-data: # 命名卷,持久化存储
# 启动服务
docker compose up -d # -d 后台运行
常见报错与解决
| 报错信息 | 原因 | 解决方法 |
|---|
CUDA out of memory | GPU 显存不足以加载模型 | 换用更小的模型(如 StarCoder2-3B)或添加 --device cpu |
Connection refused | 服务未启动或端口错误 | 确认 Tabby 服务正在运行,检查端口号 |
Model download failed | 网络问题无法下载模型 | 使用代理或先手动下载模型到 ~/.tabby/models/ |
No completions returned | IDE 插件未正确配置 | 检查 IDE 插件的 Endpoint 地址是否正确 |
Permission denied | Docker 权限不足 | 使用 sudo 或将用户加入 docker 组 |
| 补全速度很慢 | CPU 模式或模型太大 | 使用 GPU 加速或换用更小模型 |
速查表
# === Tabby 常用命令速查 ===
# 启动服务(GPU)
tabby serve --model StarCoder2-3B --device cuda
# 启动服务(CPU)
tabby serve --model StarCoder2-3B --device cpu
# 指定端口
tabby serve --model StarCoder2-3B --port 9090
# Docker 启动(GPU)
docker run --gpus all -p 8080:8080 -v $HOME/.tabby:/data tabbyml/tabby serve --model StarCoder2-3B --device cuda
# 查看帮助
tabby --help
tabby serve --help
# 健康检查
curl http://localhost:8080/v1/health
# 管理界面
# 浏览器打开 http://localhost:8080
与同类工具对比
| 特性 | Tabby | GitHub Copilot | Codeium | Continue |
|---|
| 部署方式 | 自托管 | 云端 SaaS | 云端 SaaS | 自托管 |
| 数据隐私 | 数据不出网 | 代码发送到微软 | 代码发送到云端 | 数据不出网 |
| 价格 | 免费开源 | $19/月/人 | 免费/付费 | 免费开源 |
| 私有仓库索引 | 支持 | 企业版支持 | 不支持 | 支持 |
| 离线使用 | 支持 | 不支持 | 不支持 | 支持 |
| 模型选择 | 可自选多种模型 | 固定(GPT-4) | 固定 | 可自选 |
| IDE 支持 | VS Code/JetBrains/Vim | VS Code/JetBrains/Vim | 主流 IDE | VS Code/JetBrains |
选择建议:如果你的团队注重代码隐私(比如做商业项目),Tabby 是最佳选择。个人学习用途可以直接用 GitHub Copilot 或 Codeium 免费版。