断网也能写代码:用 OpenCode、Ollama 和 Qwen 搭建本地助手

Latent Space7 小时前

离线编程,先把工作环境留在本地

在飞机、长途列车或网络不稳定的偏远地区,依赖云端模型的编程工作流很容易中断。一个替代方案是:让编程代理和模型都运行在自己的笔记本上。

这套方案使用 OpenCode + Ollama + Qwen。但“模型已经下载”并不等于“开发环境可以离线运行”:项目代码、依赖包和测试工具也必须提前准备好。

满足这些条件后,可以尝试让代理完成以下任务:

  • 解释不熟悉的函数;
  • 排查失败的测试;
  • 重构一小段代码;
  • 协助补完已有功能。

下载新依赖、查询网页等操作,仍然需要网络。

三个组件分别做什么?

组件 作用
OpenCode 与项目交互,读取文件、提出修改,并执行测试等命令
Ollama 在本机加载和运行模型,提供本地模型服务
Qwen 根据代码上下文生成回答,并支持代理所需的工具调用

整体流程可以理解为:

项目文件 ↔ OpenCode ↔ 本机 Ollama 服务 ↔ Qwen 模型

OpenCode 负责组织编程任务,Ollama 负责模型推理。两者运行在同一台电脑上,模型请求不必发送给云端服务。

示例配置还会在编辑文件或执行命令前请求确认,便于使用者检查操作。若更偏好引导式代码编辑,支持 Ollama 的 Aider 也是一种选择;这里仍以 OpenCode 为主。

模型怎么选:不仅看代码生成,也要看工具调用

示例采用 Qwen3.5 9B。选择编程代理的模型时,除了代码生成能力,还需要关注工具调用能力:代理必须能够选择合适的工具,并提供正确参数。

公开模型评测中,两个规格的结果如下。这些数字不是笔记本实测结果。

模型 LiveCodeBench v6 BFCL-V4
Qwen3.5 4B 55.8 50.3
Qwen3.5 9B 65.6 66.1

LiveCodeBench v6 主要考查编程题上的代码生成能力,BFCL-V4 评估函数调用能力;两项均为分数越高越好。

这些分数不能直接代表本机运行速度,也不能代表完整代理工作流的成功率。 是否适合自己的项目,还需要通过实际文件修改和测试来验证。

下载体积不等于内存需求

不同运行格式下,模型下载体积会有所变化:

模型 约下载体积
Qwen3.5 4B 3.3–4.0 GB
Qwen3.5 9B 6.6–7.6 GB
Qwen3.5 27B 17–20 GB

不要按模型文件大小直接估算内存占用。运行时还需要容纳上下文及其他开销,并为编辑器、测试进程等应用留出空间。示例采用的 64k-token 上下文配置,也可能进一步增加内存需求。

断网前,需要准备哪些内容?

1. 安装工具并下载模型

在网络可用时,完成 OpenCode、Ollama 和所选 Qwen 模型的安装与下载,同时把需要处理的项目放到本机。

2. 备齐项目依赖和测试工具

提前安装依赖及测试所需工具。否则,即便模型能够离线回答,代理仍可能因为缺少软件包而无法验证修改。

3. 检查 OpenCode 的项目配置

OpenCode 使用 opencode.json 管理项目配置。示例中的关键设置包括:

  • model 和 small_model 都选择本地 Qwen3.5 9B;
  • baseURL 指向本机 Ollama 服务:http://127.0.0.1:11434/v1;
  • 只启用本地模型提供方;
  • 编辑文件、运行 Shell 命令前请求确认;
  • 禁用网页工具。

这里的地址是本机服务端点,不是外部网站。上述内容是配置要点,并非可直接复制的完整配置文件。

4. 分别运行模型服务和编程代理

可以保留两个终端:一个在项目目录中运行 OpenCode 和测试,另一个运行 Ollama 服务。模型服务应仅绑定本机地址。

配置完成后,再实际断开网络,检查工作流是否仍能运行。仅仅选中了“本地模型”,并不足以证明整个任务不再依赖联网操作。

把离线助手的边界想清楚

这套方案的价值,是让已经准备好的项目在断网时仍有机会继续推进,而不是让所有开发任务都摆脱网络。

判断是否可用,最终要看具体项目中的代码修改和测试结果,不能只看模型能否启动或聊天是否流畅。现有内容展示了架构、选型与配置思路,但没有给出完整的离线任务实测结果,因此不宜据此判断速度或成功率。

评论

请登录后发表观点

暂无数据