9.1 一个真实场景:那个公司禁用 Copilot 的程序员
老张是一家国内大厂的资深后端工程师,他们公司 2024 年起明令禁止使用 GitHub Copilot、Cursor、Codeium 等任何"会上传代码"的 AI 助手——因为他们担心代码外泄给训练,担心客户敏感数据被记录。
但老张不想退回到"完全靠手写"的 2020 年。他在自己工作 Mac 上装了 Ollama + Qwen 2.5 Coder 32B + Continue 插件,完全本地、完全不联网。
效果如何?
"Copilot 给我 100 分的话,本地 Qwen Coder 32B 是 75 分。但 75 分对我来说已经够了——我替代了 60% 的 Copilot 用法,剩下 40% 我自己写。每周省下 8 小时。最关键的是:我们公司的代码一行都没出去过。"
这章是给所有"想用 AI 写代码但不能用云端"的人写的。
9.2 本地编程助手的能力地图
本地 AI 在编程上能做的事,按"难度从低到高"分四档:
[档 1] 代码解释:读懂代码并讲给你听
[档 2] 代码补全:写到一半 AI 接着写
[档 3] 代码重构:让 AI 改进现有代码
[档 4] 代码生成:从"需求描述"到"完整代码"
好消息:到 2026 年,档 1、2、3 已经基本可用。 坏消息:档 4 还有差距,复杂项目本地 AI 还跟不上 Claude / GPT-5。
9.3 三大本地编程主力模型
Qwen 2.5 Coder(首选)
阿里出品,2024 年底发布,2026 年 4 月仍是开源编程模型的天花板。
| 版本 | 大小 | 适合 | HumanEval 得分 |
|---|---|---|---|
| Qwen 2.5 Coder 1.5B | ~1 GB | 代码补全(FIM) | 60% |
| Qwen 2.5 Coder 7B | ~4.7 GB | 16 GB 内存主力 | 78% |
| Qwen 2.5 Coder 14B | ~9 GB | 24 GB 内存主力 | 84% |
| Qwen 2.5 Coder 32B | ~20 GB | 32 GB+ 主力 | 92% |
支持 92 种编程语言。
DeepSeek Coder V2 / DeepSeek-R1
DeepSeek 出品,特别擅长复杂逻辑推理和算法题。
| 版本 | 大小 | 适合 |
|---|---|---|
| DeepSeek Coder V2 16B | ~9 GB | 中型项目 |
| DeepSeek-R1 7B | ~4.7 GB | 算法题 / 数学 |
| DeepSeek-R1 14B | ~9 GB | 复杂调试 |
特色:DeepSeek-R1 的"思考过程"对调试 bug 特别有帮助——它会一步步告诉你"我在想什么、我为什么觉得问题在这"。
CodeGemma / StarCoder2(次选)
| 模型 | 大小 | 备注 |
|---|---|---|
| CodeGemma 7B | ~4.7 GB | Google 出品,纯代码补全好 |
| StarCoder2 15B | ~9 GB | BigCode 出品,多语言均衡 |
9.4 工具选型:Continue / Cline / Cursor 怎么挑
Continue(推荐,最主流)
- 开源、免费
- 支持 VS Code、JetBrains 全家桶
- 完美兼容 Ollama / LM Studio / OpenAI 格式
- 提供"补全(autocomplete)"、"对话(chat)"、"行内编辑(edit)"三大功能
- 小白和老手都适用
Cline(原 Claude Dev)
- 主打"Agent"风格,会主动读项目文件、运行命令、修改多个文件
- 适合复杂的"让 AI 完整完成一个 task"场景
- 配合本地大模型(如 Qwen 2.5 Coder 32B)效果不错
- 适合中级以上用户
Cursor 的"本地模型"模式
Cursor IDE 自身是云端的,但它有"自定义模型"模式:
- 设置 → Models → 添加 Override OpenAI Base URL
- 填
http://localhost:11434/v1 - 选择本地模型名(如
qwen2.5-coder:32b)
这样 Cursor 的 Chat、Composer 都会调用你本地模型。 但要注意:Cursor 的 Tab 自动补全(fast complete)目前仍依赖云端,不能完全本地化。
Roo Code、Aider、Avante
- Roo Code:Cline 的分叉,更新更快,社区活跃
- Aider:CLI 命令行的代码 Agent,习惯终端的用户首选
- Avante:Neovim 插件,配置 Ollama 即可
9.5 5 分钟把 Continue 接到本地 Ollama
第 1 步:装 Ollama 并下编程模型
ollama pull qwen2.5-coder:7b
ollama pull qwen2.5-coder:1.5b # 用于补全(更快)
第 2 步:装 Continue 插件
VS Code → 扩展商店 → 搜 "Continue" → 安装。
第 3 步:配置 Continue
第一次打开 Continue 会弹出引导,跳过它。
按 Cmd/Ctrl + Shift + P → "Continue: Open config.json"。
把内容改为:
{
"models": [
{
"title": "Qwen 2.5 Coder 7B (Chat)",
"provider": "ollama",
"model": "qwen2.5-coder:7b",
"apiBase": "http://localhost:11434"
}
],
"tabAutocompleteModel": {
"title": "Qwen 2.5 Coder 1.5B (Autocomplete)",
"provider": "ollama",
"model": "qwen2.5-coder:1.5b",
"apiBase": "http://localhost:11434"
},
"embeddingsProvider": {
"provider": "ollama",
"model": "nomic-embed-text",
"apiBase": "http://localhost:11434"
}
}
保存后,重启 VS Code。
第 4 步:试一下
打开任意代码文件:
- 写代码:随便敲一行,停顿,会有灰色补全文字飘出来。按
Tab接受。 - 聊天:
Cmd + L打开 Continue 侧边栏,问"这段代码做了什么"。 - 行内修改:选中一段代码,
Cmd + I,输入"加上类型标注"。
整个工作流和 Cursor / Copilot 几乎一致——但你的代码一个字符都没出本机。
9.6 4 个高频场景的实战提示词
场景 1:解释代码
请用中文解释下面这段代码:
[贴入代码]
要求:
1. 用一句话说出"这段代码的主要目的是什么"
2. 逐行注释关键逻辑(不要每行都注,挑重要的)
3. 指出 1 处可能的"性能瓶颈"或"潜在 bug"
4. 给一个 5 行以内的"重构建议"
场景 2:调试 bug
我有这段代码:
[贴入代码]
期望它做:[描述]
实际它做了:[描述]
报错信息:[贴入]
请你按以下步骤分析:
1. 你最高怀疑的 3 处可能出错的地方
2. 你最高怀疑的那一处的"修复方案"
3. 给出修复后的完整代码
4. 解释这个 bug 为什么会发生
DeepSeek-R1 在调试场景上特别强——它会显式给出推理过程。
场景 3:写测试
请为下面这个函数写完整的单元测试:
[贴入函数]
要求:
1. 使用 [pytest / Jest / JUnit] 框架
2. 至少覆盖 5 种情况:正常、边界、空输入、错误输入、性能压力
3. 每个测试加一行注释说明"这个测试在测什么"
场景 4:重构代码
请重构下面这段代码,目标是:[更易读 / 更高性能 / 拆分成多个函数 / 用现代语法]
[贴入代码]
要求:
1. 保持函数签名不变(除非必要)
2. 重构后的版本要附带说明"我改了哪 3 处、为什么"
3. 如果有不确定的地方,明确告诉我"建议保持原样"
9.7 5 个语言场景的实测
下面是作者 2026 年 4 月用 Qwen 2.5 Coder 32B 实测各语言的体验:
| 语言 | 评分 | 备注 |
|---|---|---|
| Python | 95 | 完全可替代 Copilot |
| JavaScript / TypeScript | 90 | React、Vue 都好 |
| Go | 88 | 标准库熟悉 |
| Java | 85 | Spring Boot 没问题 |
| Rust | 80 | 简单项目可以,复杂宏迷糊 |
| C++ | 75 | 模板部分常出错 |
| Swift | 70 | iOS 项目知识相对少 |
| SQL | 92 | 复杂 JOIN、窗口函数都行 |
| Shell / Bash | 90 | 写一次性脚本特别快 |
| Markdown / 配置文件 | 95 | 全部 OK |
9.8 本地 vs Copilot vs Cursor 的诚实对比
| 维度 | 本地 Qwen 2.5 Coder 32B | GitHub Copilot | Cursor |
|---|---|---|---|
| 代码补全速度 | 慢(300ms+) | 极快(100ms) | 快(150ms) |
| 补全准确率 | 75% | 85% | 90% |
| 代码理解能力 | 强 | 中 | 强 |
| 多文件 Agent | 弱(需要 Cline) | 中等(最近支持) | 强 |
| 隐私 | 完全本地 | 上传 | 上传 |
| 成本 | 一次硬件,长期免费 | $10/月 | $20/月 |
| 公司合规 | 完全合规 | 大多数公司禁用 | 大多数公司禁用 |
| 离线 | 可 | 不可 | 不可 |
结论:
- 你公司允许 Copilot/Cursor → 用云端,本地作为备用
- 你公司禁用云端 → 本地是唯一答案
- 你想"既要云端能力,又想保护隐私" → 用本地补全 + 用云端做大方案设计的混合方案
9.9 一个有趣的混合方案:双引擎
下面这个配置在很多本地 AI 老玩家中流传:
- Tab 补全:本地 Qwen 2.5 Coder 1.5B(快、隐私)
- Chat / 复杂任务:云端 Claude / GPT-5(准、强)
- 重构 / 多文件:本地 Cline + Qwen Coder 32B(隐私 + 多步)
Continue 完美支持这种"按场景路由"的配置。
9.10 本地 Agent 写代码的最新进展
2026 年最热的话题之一是本地 Agent——让本地 AI 能像 Cursor Composer / Cline 那样自主:
- 读项目文件
- 决定要改哪些
- 实际改写
- 跑测试
- 看结果
- 再改
主流方案:
- Cline + Qwen 2.5 Coder 32B:当前最稳的本地 Agent 组合
- Roo Code:Cline 分支,自带"Local Mode"
- Aider + DeepSeek-R1:CLI 派最爱
典型用法:
请你帮我重构 src/services 目录下所有 .ts 文件:
1. 把所有 fetch 调用改成 axios
2. 加上 try/catch 错误处理
3. 给每个文件加上 JSDoc 注释
4. 改完之后跑一下 npm run test,确认没破
每修改一个文件后告诉我"已修改 X,改了 Y 处"。
Cline 会在右侧聊天窗里一步步把整个任务做完——全程本地。
9.11 一些进阶技巧
技巧 1:用专门的"代码模型 + 通用模型"组合
- qwen2.5-coder:32b → 写 / 改代码
- qwen3:14b → 解释代码、写文档、做架构思考
切换:在 Continue 顶部下拉框里随时换。
技巧 2:为代码加索引
Continue 支持把整个项目目录索引到本地(用 nomic-embed-text)。 这样你在 Chat 里问"项目里哪里用到了 UserService",它能自动找出来。
启用方法:Continue 配置里设置 embeddingsProvider(前面 9.5 已经写了)。
技巧 3:用 Aider 做"提交粒度的修改"
Aider 强制让每次修改都对应一个 git commit,适合项目代码追溯。
aider --model ollama/qwen2.5-coder:32b --no-auto-commits
技巧 4:把"代码风格规范"写进 system prompt
你是我的代码助手。请遵守:
1. 我用 Python 3.12,使用 type hints
2. 函数参数 ≥ 4 个时强制用 keyword-only
3. 异常处理:永远不要 catch Exception,要 catch 具体异常
4. 注释用中文,docstring 用中文
5. 私有方法以 _ 开头
6. 测试用 pytest,文件名 test_xxx.py
固化到 Continue 的 system prompt,每次写代码都自动遵守。
9.12 公司里部署本地编程 AI 的注意事项
如果你想给团队搭一个"集中的本地代码 AI":
方案:一台机器跑 Ollama Server,多人共用
- 找一台带 RTX 4090 / 5090 或 Mac Studio Ultra 的机器
- 装 Ollama,让它监听
0.0.0.0:11434(公司局域网) - 团队成员在 Continue 里把
apiBase改为该机器的内网 IP - 所有人共享一个本地大模型,速度和成本极佳
注意:
- 加上 IP 白名单或反向代理(如 Nginx 加 Basic Auth)防止外网误访问
- 配合公司 VPN,远程办公也能用
- 监控显存占用,超过 80% 就该升级或加机
9.13 本章小练习
练习 1:把 Continue 接到 Ollama
按 9.5 节做完。让本地 AI 在 VS Code 里替你补一行代码。 截图发给一个开发者朋友——他会很想抄你的配置。
练习 2:用 9.6 场景 2 调一个 bug
找你最近遇到的一个真实 bug,用调试提示词丢给本地 AI。 亲身感受 DeepSeek-R1 的"思考过程"对你的启发。
练习 3:尝试一次本地 Agent
装 Cline,让它给你一个旧项目加一份 README.md:
请你读一下我项目根目录的所有文件,给我生成一份 README.md:
1. 项目简介(一句话)
2. 安装步骤
3. 快速开始(核心命令)
4. 目录结构说明
5. 贡献指南
完成后告诉我"已生成 README.md,写了 X 字"。
体验一下"本地 Agent 真的能干活"是什么感觉。
9.14 一句话记住
能用 Cursor 就用 Cursor,但当你在客户内网、在合规严格的公司、在写涉密代码——本地编程 AI 是你唯一的依靠。
下一章 第十章 · 本地文档总结与会议纪要,我们把本地 AI 的"读文档"能力打通。