示例成品 · 平台演示,按左边这组点选真跑出来的
直接给结论:你们这种 **10-50人、JetBrains + GitHub、最看重离线/本地化、按项目临时用** 的团队,**别把 GitHub Copilot 当主力**。它和 GitHub 原生打通最好,但完全依赖云端,不符合你“离线/本地化”的要求。
推荐顺序:
1. **首选:Continue + Ollama + Qwen2.5-Coder**
免费、完全离线、可本地部署、适合项目制灵活用。
2. **付费省心:Tabnine 企业版私有化部署**
成熟、支持离线/air-gapped、有后台账号管理,但按席位收费。
3. **国产合规备选:通义灵码企业版专有云/私有化**
数据不出域,JetBrains 插件可用,和钉钉生态更搭。
---
## 一、怎么和 GitHub 打通?先纠正一个误区
很多人以为“和 GitHub 打通”就是让 AI 工具登录 GitHub、读 Issue/PR。
对你们这种安全要求,**不建议**把 GitHub 仓库授权给云端 AI 插件。
真正要做的打通分两层:
### 1. 日常写代码:本地 Git 上下文就够了
把 GitHub 仓库用 SSH/HTTPS 克隆到本地,用 JetBrains 打开。
AI 插件会自动读取项目里的 `.git`,知道:
- 当前分支
- 改动了哪些文件
- 最近提交历史
- diff 内容
这样代码补全、解释、重构时,AI 已经带上了仓库上下文。
**这一步不需要任何 GitHub API 授权,也不上传代码。**
### 2. PR/Issue 自动化:用 GitHub Actions + 自托管 runner
如果想让 AI 自动做 PR 摘要、代码审查,可以在内网部署一个 GitHub self-hosted runner,让它调用内网 AI 服务,再把结果写回 PR 评论、推到钉钉。
后面给你现成 workflow。
---
## 二、首选方案:Continue + Ollama 自建
这是目前最符合你“离线/本地化、按项目临时用”的路线。
### 1. 准备一台内网 GPU 机器
建议至少 **16GB 显存**,24GB 更好。
| 模型 | 显存需求 | 体验 |
| --- | --- | --- |
| `qwen2.5-coder:7b` | 约 5GB | 能跑,但能力一般 |
| `qwen2.5-coder:14b` | 约 9GB | 推荐,日常够用 |
| `qwen2.5-coder:32b` | 约 20GB | 更强,但需要 24GB 显卡 |
### 2. 部署 Ollama
在内网机器上装 Ollama:
```bash
curl -fsSL https://ollama.com/install.sh | sh
```
拉模型:
```bash
ollama pull qwen2.5-coder:14b
```
启动服务,监听内网:
```bash
ollama serve
# 默认端口 11434,只开放内网,不要映射公网
```
### 3. JetBrains 安装 Continue 插件
在 JetBrains 插件市场搜索 `Continue`,安装。
然后配置模型,指向你的内网 Ollama:
```yaml
models:
- name: qwen2.5-coder:14b
provider: ollama
model: qwen2.5-coder:14b
apiBase: http://内网IP:11434
```
打开 GitHub 克隆下来的项目,就可以用了:
- 代码补全
- 选中代码按 `Ctrl+L` 解释
- 对话问代码问题
### 4. 账号按项目临时用
Ollama 本身没有复杂账号系统。
简单做法:
- 一个内网 Ollama 服务,团队共用;
- 按项目配置不同模型或端口;
- 项目结束直接关闭对应服务或删除配置。
如果需要更细的 token 管理,可以在前面加一层 **LiteLLM** 网关,按项目发临时 API key,项目结束回收。
---
## 三、付费备选:Tabnine 企业版私有化
如果你们不想自己折腾模型,想要更成熟的补全和管理后台,就买 Tabnine 企业版。
### 配置要点
1. 买之前跟销售确认清楚:必须是 **air-gapped / offline** 私有化部署,不是普通私有云。
2. 部署在公司内网 GPU 服务器。
3. JetBrains 安装 Tabnine 插件,登录内网服务器地址。
4. Tabnine 后台可以按席位开/禁账号,适合按项目临时分配。
### 和 GitHub 打通
和 Continue 一样:
- 日常补全靠本地 Git 上下文;
- PR 自动化可以走 GitHub Actions 调 Tabnine API。
---
## 四、PR 摘要 + 钉钉通知示例
假设你已经用了 Ollama,想要 GitHub PR 自动生成中文摘要,并发到钉钉。
### 1. 先准备一个 GitHub self-hosted runner
放在你们内网,能访问 Ollama。
### 2. 添加 workflow
```yaml
name: AI PR Summary
on:
pull_request:
types: [opened, synchronize]
jobs:
ai-summary:
runs-on: self-hosted
steps:
- name: Generate PR summary with Ollama
run: |
DIFF=$(gh pr diff ${{ github.event.pull_request.number }})
PROMPT="请根据下面的 PR diff 写一段中文 PR 摘要,列出主要改动和潜在风险,不超过 5 条。\n$DIFF"
RESP=$(curl -s http://内网IP:11434/api/generate \
-d "$(jq -n --arg p "$PROMPT" '{model:"qwen2.5-coder:14b", prompt:$p, stream:false}')")
SUMMARY=$(echo "$RESP" | jq -r '.response')
gh pr comment ${{ github.event.pull_request.number }} --body "$SUMMARY"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Notify DingTalk
run: |
curl -s "https://oapi.dingtalk.com/robot/send?access_token=${{ secrets.DINGTALK_TOKEN }}" \
-H 'Content-Type: application/json' \
-d "$(jq -n --arg s "$SUMMARY" '{msgtype:"markdown", markdown:{title:"AI PR摘要", text:$s}}')"
```
钉钉机器人记得配置关键词,比如“PR摘要”。
---
## 五、安全底线
- Ollama/Tabnine 服务**只监听内网**,不要暴露公网。
- GitHub Actions 用 **self-hosted runner**,不要用云端 runner 访问内网 AI 服务。
- 代码仍然正常走 GitHub SSH/HTTPS 权限管理。
- 不要给云端 AI 工具授权 GitHub 仓库,这违
点左边「开工 · 直接出成品」,出一份你自己的版本(文字免费)