Ollama保姆级教程:本地部署大模型并接入OpenCode实践
2026/9/8 15:45:39 网站建设 项目流程

如果你最近开始接触大模型应用开发,大概率会被同一个问题卡住:想跑个开源模型练手,又要 Python 环境、又要显卡驱动、又要配置模型依赖,还没开始写代码就先被环境磨掉一半耐心。另一条路是直接调云端 API,注册、实名、充值,思路总是被打断,还担心调试时把不该传的数据传出去。

这里有一个非常值得优先了解的答案:Ollama。它把“下载模型、启动服务、调用接口”压缩成了几条命令,是目前本地部署大语言模型最接近“开箱即用”的工具。这篇文章就是一份面向零基础读者的保姆级教程,从下载安装、模型管理,到用本地模型做应用开发,再把它接入 OpenCode 这类编程 Agent 并理解 Skill 的含义,一次性跑通完整链路。

先说判断:Ollama 不是又一款“AI 玩具”,而是本地大模型时代的基础设施层。它解决的问题非常具体——你不需要理解模型权重如何加载、KV Cache 如何分配,也能在本地拥有一台可调用的模型服务。读完后,你不仅能独立装好 Ollama,还会知道如何用 OpenAI 兼容接口写自己的第一行本地大模型应用代码,以及为什么 OpenCode + Ollama 会成为越来越多开发者的日常组合。

1. 为什么大家都在说 Ollama、本地部署和大模型应用开发?

把时间拨回到两年前,想在自己电脑上运行一个有对话能力的模型,难度比现在高一个数量级。你需要手动下载权重文件,自己写加载逻辑,甚至要懂显存管理。而现在,开源社区把这条路几乎铺平了。

Ollama 在这一轮“本地部署大模型”热潮中扮演的角色,可以类比 Docker 之于容器:它不一定是最底层的技术,但它把复杂操作封装成了统一入口。你不需要关心模型文件放在哪里、推理服务怎么启动,只需要两条命令:ollama pull下载模型,ollama run启动对话。

很多人在搜索“Ollama 下载太慢怎么解决”“Ollama 国内镜像源”时,真正想要的并不是某个镜像地址,而是一条顺畅的本地大模型学习路径。这也是为什么标题里常常同时出现“Ollama + 本地部署 + 大模型应用开发”:它们是同一条链路的前后环节。

当然,不是所有场景都适合本地部署。这张表可以帮你快速判断:

场景是否适合 Ollama 本地部署原因
学习大模型开发、跑通示例非常适合环境统一,命令简单,调试成本低
代码片段需要严格保密非常适合数据不出本机,不经过外部 API
需要持续离线运行适合模型下载完成后可以完全离线推理
需要超大模型(70B 以上)效果不太适合本地硬件通常无法流畅运行
需要非常强的多语言、长文本能力看情况可以用 7B~32B 模型验证,再切云端
团队需要统一模型服务适合可以在一台 GPU 服务器上提供服务

从搜索结果里能看到,“OpenCode”“Codex 本地部署”“本地部署 DeepSeek”这类词热度很高。这说明很多人已经不只是想聊天,而是想跑通“写作代码、被 Agent 调用、完成任务”的完整工作流。Ollama 恰好是这个链条里最容易上手的一环。

2. Ollama 核心概念与工作原理

2.1 Ollama 到底是什么

严格来说,Ollama 是一个本地推理服务管理工具。它并不训练模型,也不自带模型能力,而是负责三件事:

  1. 模型分发:从模型库拉取开源模型,管理本地已下载的模型文件。
  2. 推理服务:启动一个本地 HTTP 服务,默认监听11434端口,接收请求并返回模型结果。
  3. 客户端入口:通过ollama run这类命令直接与模型对话。

换句话说,你在终端里和模型对话时,实际流程是:你的输入 -> Ollama 客户端 -> Ollama 服务 -> 本地模型 -> 返回文本。这个设计非常重要,因为“本地运行”,意味着即使断网,只要模型已经下载到本地,你依然可以正常使用。

2.2 基础概念:模型、Tag、Modelfile

  • 模型(Model):Ollama 中的模型以名字标识,例如deepseek-r1qwen2.5。这些名字对应的是经过量化和打包后的开源模型权重。
  • Tag(标签):同一个模型可以有多个版本,例如deepseek-r1:7bdeepseek-r1:14b。标签用来区分参数量、量化方式。
  • Modelfile:类似 Dockerfile 的描述文件。它不包含模型权重,而是描述“如何组装一个自定义模型”,例如指定基础模型、设定 system prompt、调整温度参数等。

不要一上来就啃 Modelfile 的完整语法。先把“拉取模型、运行模型、调用接口”跑通,再回来看自定义组装,会容易得多。

2.3 Ollama 在应用开发中的位置

大模型应用开发通常分为两层:模型层应用层。模型层负责推理,应用层负责业务逻辑。Ollama 属于模型层,但它最聪明的地方是提供了一个 OpenAI 兼容的接口。

这意味着你之前用openaiPython SDK 写的代码,只要把base_url从云端地址改成http://localhost:11434/v1,就能把请求转发给本地模型。这种兼容策略极大降低了迁移成本,也让 Dify、OpenCode、Cline、Continue 这类工具不需要为 Ollama 单独定制接口,就能直接使用本地模型。

3. 环境准备与前置条件

在开始安装之前,先强调一个结论:安装 Ollama 本身门槛极低,真正影响体验的是硬件,尤其是内存和显卡。

官方支持的操作系统包括:

  • Windows 10 及以上
  • macOS 11 及以上(Apple Silicon 芯片体验更好)
  • 主流 Linux 发行版(Ubuntu、Debuan、CentOS 等)

硬件建议按用途区分:

用途最低配置建议配置
跑通命令、简单对话8GB 内存,无独显16GB 内存
运行 7B~8B 模型并流畅对话16GB 内存20GB 以上内存,或 8GB 显存显卡
运行 13B~14B 模型16GB 内存24GB 以上内存,或 12GB 以上显存显卡
运行 32B 模型32GB 内存独立显卡 24GB 显存

如果机器只有一个 CPU,没有 NVIDIA/AMD 显卡,也不是不能用。Ollama 会退回到 CPU 模式,速度慢一些,但对于体验流程和编写示例代码完全足够。本文不会写死某个具体版本号,因为 Ollama 迭代很快,建议以官网或 GitHub Releases 当前发布版本为准。

4. Ollama 下载安装:Windows、macOS、Linux 保姆级步骤

4.1 Windows 安装

Windows 用户最稳妥的方式是打开 ollama.com/download 下载 Windows 安装包,文件通常命名为OllamaSetup.exe

下载完成后双击运行,安装程序会默认把 Ollama 安装到当前用户目录,不需要勾选复杂选项。安装完成后,打开一个新的 PowerShell 或 CMD 窗口,输入:

ollama --version

如果能输出版本号,说明安装成功。

如果你的 D 盘空间充足,想避免模型占满 C 盘,可以参考下文“把模型目录改到其他盘”一节。很多人在搜索“Ollama 怎么安装到 D 盘”时遇到的就是这个问题,本质上不是安装路径,而是模型存储路径

4.2 macOS 安装

macOS 用户同样从官网下载.zip压缩包,解压后把Ollama.app拖入“应用程序”文件夹即可。

首次启动时,macOS 可能会提示“无法打开,因为无法验证开发者”,此时可以进入“系统设置 -> 隐私与安全性”,点击“仍要打开”。如果使用的是 Apple Silicon 芯片,Ollama 会默认使用 Metal 加速,效果通常不错。

打开终端验证:

ollama --version

如果提示command not found,先确认是否已经在“应用程序”中运行过 Ollama。图形界面启动后,命令行工具会被自动加入 PATH。

4.3 Linux 安装

Linux 用户通常使用官方安装脚本:

curl -fsSL https://ollama.com/install.sh | sh

这个命令会下载脚本并自动安装。如果机器没有外网访问条件,可以换一种方式:从 GitHub Releases 页面手动下载对应架构的二进制包,解压后把ollama可执行文件放到/usr/local/bin/目录。

安装后启动服务:

ollama serve

服务默认监听127.0.0.1:11434。如果终端显示类似listening on 127.0.0.1:11434的日志,说明服务已正常启动。

4.4 国内网络下载慢的思路与误区

“Ollama 下载太慢了”是高频搜索词。这里要分清楚:下载慢可能发生在两个阶段,一个是安装包下载慢,另一个是模型文件下载慢

对于安装包下载慢,如果官网访问不稳定,可以从 GitHub Releases 下载,也可以等网络空闲时段重试。对于模型下载慢,需要先明确一个事实:Ollama 并没有官方国内镜像源。网上流传的所谓“Ollama 国内镜像”,大多数是第三方加速项目,稳定性无法保证,不建议在重要环境依赖。

更稳妥的替代方案是“手动导入模型”。你可以在国内模型社区下载 GGUF 格式的模型文件,比如从 ModelScope 下载qwen2.5-7b-instruct-ggufdeepseek-r1-7b-gguf,然后在本地编写一个极简 Modelfile,把模型导入 Ollama。这部分操作放在第 5 章后面详细说明。

4.5 把模型存储目录改到其他盘

Windows 下 Ollama 默认将模型存放在C:\Users\你的用户名\.ollama\models,很容易让 C 盘空间告急。正确做法是设置环境变量OLLAMA_MODELS

  1. 右键“此电脑” -> “属性” -> “高级系统设置”。
  2. 点击“环境变量”。
  3. 在“用户变量”中新建变量:
    • 变量名:OLLAMA_MODELS
    • 变量值:D:\ollama\models
  4. 保存后,关闭所有命令行窗口,重新打开。

之后执行ollama pull时,模型会下载到新的目录。如果在设置前已经下载过模型,可以把旧目录里的文件移动到新目录,避免重复下载。

5. 下载模型、启动对话与手动导入

5.1 下载模型

Ollama 安装成功后,先拉取一个适合零基础入门的模型。从网络热度看,DeepSeek 系列是很好的选择:

ollama pull deepseek-r1:7b

如果更看重中文理解和通用对话,也可以选择:

ollama pull qwen2.5:7b

可以同时下载多个模型,Ollama 会按名称区分。查看本地已有哪些模型:

ollama list

结果类似:

NAME ID SIZE MODIFIED deepseek-r1:7b xxxxxxxx 4.7 GB ... qwen2.5:7b yyyyyyyy 4.8 GB ...

5.2 对话体验

下载完成后,直接运行:

ollama run qwen2.5:7b

进入交互式终端后,输入问题即可看到回复。输入/bye退出。

常见的内置指令包括:

  • /bye:退出当前对话
  • /clear:清空上下文
  • /show info:查看当前模型信息
  • /set temperature 0.7:调整随机性

这里要解释一个新手容易误解的地方:ollama run的交互式对话会保留上下文。也就是说,当你追问“刚才那句话是什么意思”时,模型是能结合前文回答的,除非显式执行/clear

5.3 手动导入 GGUF 模型

如果你已经通过模型社区下载了 GGUF 文件,例如qwen2.5-7b-instruct-q4_k_m.gguf,则可以这样导入。

先编写一个 Modelfile,假设文件放在模型同目录:

FROM ./qwen2.5-7b-instruct-q4_k_m.gguf # 设定一个温和的系统提示词 SYSTEM "你是一个乐于助人的 AI 助手。请简洁、准确地回答问题。"

然后执行导入:

ollama create my-qwen -f Modelfile

创建成功后,用ollama list就能看到名为my-qwen的模型,可以像其他模型一样运行:

ollama run my-qwen

这种方式的优势是绕开 Ollama 官方仓库下载瓶颈,特别适合内网环境或模型发布源不在官方仓库的场景。

6. 大模型应用开发第一步:调用本地模型接口

很多初学者容易卡在“模型跑起来了,但怎么在代码里用它”。这一步我们把 Ollama 的 OpenAI 兼容接口用起来,这实际上就是大模型应用开发的第一行代码。

6.1 确认服务状态

先确认 Ollama 服务正在运行。如果是通过桌面应用启动,或者已经执行过ollama run,服务一般已经在后台运行。可以用 curl 检查:

curl http://localhost:11434/v1/models

如果服务正常,会返回一个包含模型列表的 JSON。如果提示拒绝连接,先手动执行:

ollama serve

保持该终端窗口不要关闭,另开一个终端继续操作。

6.2 使用 Python 编写请求代码

日常开发中,更推荐用 Python 的requests库直接调用,逻辑清晰且不引入额外依赖。

新建文件test_ollama.py

import requests import json url = "http://localhost:11434/v1/chat/completions" payload = { "model": "qwen2.5:7b", "messages": [ {"role": "system", "content": "你是一个简洁的助手,只用一句话回答。"}, {"role": "user", "content": "用一句话解释什么是大模型微调。"} ], "stream": False } resp = requests.post(url, json=payload, timeout=120) data = resp.json() print(data["choices"][0]["message"]["content"])

运行:

python test_ollama.py

这段代码主要有三个关键点:

  1. url指向/v1/chat/completions,这是 OpenAI 协议的对话补全端点。
  2. model必须是ollama list里存在的模型名。
  3. stream设置为False,方便第一次调试时直接打印完整结果。

如果你想在真实项目中统一用openaiSDK,只需设置base_url

from openai import OpenAI client = OpenAI( base_url="http://localhost:11434/v1", api_key="ollama" # 本地服务不校验,但格式上需要填一个值 ) response = client.chat.completions.create( model="qwen2.5:7b", messages=[{"role": "user", "content": "你好,请介绍你自己。"}] ) print(response.choices[0].message.content)

这种方式的好处是:以后想从本地模型切换到云端 API,只需要改base_urlapi_keymodel,业务代码几乎不用动。

6.3 流式输出示例

对话聊天类应用通常需要边生成边输出。把stream改成True,逐行读取返回内容:

import requests url = "http://localhost:11434/v1/chat/completions" payload = { "model": "qwen2.5:7b", "messages": [{"role": "user", "content": "写一段 200 字的春天描写。"}], "stream": True } resp = requests.post(url, json=payload, stream=True, timeout=120) for line in resp.iter_lines(): if not line: continue # 流式返回的每一行以 data: 开头 text = line.decode("utf-8") if text.startswith("data: "): content = text[6:] if content == "[DONE]": break try: import json obj = json.loads(content) delta = obj["choices"][0]["delta"].get("content", "") print(delta, end="", flush=True) except json.JSONDecodeError: continue

这里的核心逻辑是解析data:前缀的行,并在遇到[DONE]时结束。如果第一次运行报错,优先检查模型名是否写错,以及 Ollama 服务是否在后台运行。

7. 实战:把 Ollama 接入 OpenCode,理解 Skill 的用途

当本地模型可以被 Python 调用后,你已经完成了大模型应用开发中最基础的闭环。但最近热度更高的玩法,是把本地模型接入编程 Agent,例如 OpenCode。这也是标题里“AI大模型 / OpenCode / Skill”这几个关键词所在的层面。

7.1 OpenCode 是什么,为什么需要它

OpenCode 是终端里运行的 AI 编程代理工具。它的定位和 Claude Code、Codex 类似:你告诉它一个任务,比如“修复这个项目的测试失败”,它会自己读取代码、定位原因、修改文件,再告诉你改动结果。

很多开发者关心“OpenCode 免费模型”“OpenCode 怎么接入 Ollama”,背后的原因是:编程 Agent 如果一直调用云端大模型,成本高且代码可能被发送到外部服务。接入 Ollama 后,模型在本地运行,代码不出本机,这对隐私敏感的项目很有吸引力。

7.2 安装 OpenCode

安装方式以官方文档为准,常见做法是通过 npm 全局安装:

npm install -g opencode-ai

安装后检查版本:

opencode --version

如果你更习惯在 VS Code 里使用,也可以安装对应的 OpenCode 扩展。从社区讨论来看,OpenCode 和 VS Code 的集成度不错,可以直接在编辑器里查看 Agent 的改动。

7.3 配置 OpenCode 使用 Ollama 本地模型

OpenCode 的配置文件一般位于~/.config/opencode/opencode.json。下面是一个把 Ollama 作为 Provider 的最简配置:

{ "$schema": "https://opencode.ai/config.json", "provider": { "ollama": { "models": { "qwen2.5-coder:7b": {} } } }, "model": "qwen2.5-coder:7b" }

如果你希望模型支持更长的代码理解上下文,可以在模型配置中增加options

{ "provider": { "ollama": { "models": { "qwen2.5-coder:7b": { "options": { "num_ctx": 8192 } } } } }, "model": "qwen2.5-coder:7b" }

num_ctx对应模型上下文窗口长度。调大后能理解更长的项目上下文,但内存和显存占用也会增加。这里稳妥的建议是:先用默认值跑通,再根据机器配置微调。

配置完成后,在项目目录启动:

opencode

OpenCode 会进入交互式终端。你可以输入类似这样的任务:

请阅读当前项目结构,解释 main.py 的入口逻辑,并指出可能存在的问题。

如果一切正常,Agent 会调用 Ollama 中的本地模型,一步一步分析代码。这里一定要降低预期:7B 级别的本地模型在复杂代码任务上的能力,与云端顶级模型有明显差距。它能帮你做格式化、补测试、解释代码,但不要指望它像 GPT-5 级别模型一样重构整个系统。

7.4 Skill 的含义与简单示例

既然标题提到了 Skill,这里需要用一个容易理解的类比来解释。

可以把 Skill 理解成“给 Agent 的一份岗位说明书”。模型本身知道很多通用知识,但不知道你项目的特殊约定。Skill 就是一组预先写好的规则和示例,放在约定的目录下,当 Agent 执行相关任务时会自动参考这些内容,从而遵循团队规范。

比如,团队要求所有 Python 代码必须包含类型注解,且对外接口必须写 docstring。你可以把这条规则写成一个 Skill,让 Agent 在每次写代码时自动遵守,而不是每次重复用自然语言强调。

在不少 Agent 工具中,Skill 的目录结构大致如下:

skills/ python-standard/ SKILL.md examples/ sample.py

其中SKILL.md是核心说明文件:

# Python Standard When writing Python code, follow these rules: 1. All public functions must have type annotations. 2. Every public function must include a docstring. 3. Use `ruff` for linting.

需要特意提醒的是,不同工具的 Skill 机制细节并不完全相同。OpenCode 的 Skill 能力仍处于快速迭代中,建议以你安装版本的官方文档为准。理解 Skill 的本质比死记硬背目录结构更重要:它把人的经验沉淀成 Agent 能阅读的规则文件,是团队级 AI 协作的关键抽象。

7.5 本地模型接入 OpenCode 的验证方法

要判断接入是否成功,可以执行:

opencode models

如果配置正确,列表中会出现ollama/qwen2.5-coder:7b之类的模型。然后随便让它完成一个明确的小任务,例如:

请创建一个 hello.py 文件,里面定义一个 greet(name) 函数,并输出打招呼信息。

观察 OpenCode 是否读取了模型回复并创建文件。失败时,优先检查三点:

  1. Ollama 服务是否在运行。
  2. opencode.json 中模型名是否与ollama list完全一致。
  3. num_ctx是否设置得过大导致内存不足。

8. 常见问题与排查思路

问题现象可能原因排查方式解决方案
Windows 安装后提示ollama不是内部或外部命令安装后没有重开终端,或 PATH 未生效关闭所有命令行窗口后重新打开手动检查环境变量,或直接运行 Ollama 桌面应用
ollama pull长时间卡住网络连通性不佳,模型文件较大观察进度条是否变化更换网络环境后重试,或使用 GGUF 手动导入
模型下载到一半失败,无法续传网络中断或磁盘空间不足查看磁盘剩余空间删除残留文件后重新pull,或设置OLLAMA_MODELS到新目录
调用接口时提示model not found模型名不存在,或未真正下载成功执行ollama list核对名称用完整名称再次ollama pull
CPU 跑模型特别慢没有显卡加速执行ollama ps查看运行状态接受 CPU 速度,或使用更小的量化模型
回答被截断,或者“记不住”前文上下文长度不足使用/show info查看参数调大num_ctx,或精简 Prompt
Linux 下端口 11434 被占用其他服务占用了端口执行 `netstat -anpgrep 11434`
修改OLLAMA_MODELS后不生效环境变量设置后未重启服务重启终端和 Ollama 服务在服务启动前确认环境变量已生效

补充一个高频问题:Windows 用户设置好OLLAMA_MODELS后,如果 Ollama 桌面应用仍在运行,需要彻底退出托盘图标后再重启,否则新路径不会生效。

9. 最佳实践与工程建议

9.1 用 Modelfile 固化配置

如果你发现自己每次都要在 Prompt 中重复“你是我的编程助手”,不如把它写入 Modelfile:

FROM qwen2.5:7b SYSTEM """ 你是我的编程助手,擅长 Python 和 Java。 回答时尽量给出可运行代码,并解释关键思路。 """

然后创建模型:

ollama create coding-assistant -f Modelfile

日常开发直接使用:

ollama run coding-assistant

这样能减少重复输入,也能在团队内共享统一配置。

9.2 本地服务不要直接暴露到公网

Ollama 默认没有复杂的鉴权机制,它面向的通常是本机或内网环境。生产环境如果需要提供服务,建议:

  • 只监听内网地址,例如OLLAMA_HOST=0.0.0.0时务必配合防火墙策略。
  • 不要将11434端口映射到公网。
  • 在应用层自行增加 API Key 或认证转发层,例如通过后端服务转发请求。

安全的原则是:最小暴露面,最大可控性。本地开发的便利性,不应该以安全风险为代价。

9.3 小模型也有适用边界

在资源有限的环境里,7B 模型足够处理文本分类、意图识别、摘要提取等任务。嵌入类任务甚至可以选用更小的nomic-embed-textbge-m3系列模型。先判断任务复杂度,再决定模型大小,这才是务实的工程思路。

9.4 多模型并存时注意命名规范

本地模型多了以后,建议使用统一命名规则,例如:

项目名-用途-参数量

例如blog-rewrite-7b,用这种格式能避免过一段时间后忘记模型用途。

9.5 关注模型效果评测

不要只凭一两句话对话判断模型好坏。实际开发中,建议准备一份固定的测试集,覆盖你的真实场景,例如“总结这段客户反馈”“从日志中提取错误码”。在换模型或换量化版本后,用同样的问题对比输出,能帮助你做出更理性的选择。

10. 总结与下一步实践建议

这篇文章从零开始,讲清楚了 Ollama 的安装位置和安装方法,也带你把本地模型跑起来,并用 OpenAI 兼容接口写了自己的第一段调用代码。更进一步,你也看到了 Ollama 怎样作为模型后端接入 OpenCode,理解了 Skill 的本质不是神秘技术,而是把人类经验转成 Agent 可读规则的一组文件。

下一步的实践路线可以这样规划:

  1. 安装 Ollama,下载一个qwen2.5:7bdeepseek-r1:7b,先跑通对话。
  2. 用 Python 写一个调用接口的脚本,体验请求与响应的完整过程。
  3. 把项目中的一个小任务交给 OpenCode,配合 Ollama 本地模型跑一遍。
  4. 尝试编写一个自己的 Skill,让它自动遵守你项目的代码规范。
  5. 等你对本地模型的能力边界有感觉后,再学习 Dify、LangChain 这类上层框架,最后回到应用开发本身。

本地部署大模型不是终点,而是让你理解 AI 应用开发底层逻辑的捷径。希望这份教程能帮你少走弯路,把环境搭建的时间压缩到最短,把精力留到真正值得研究的问题上。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询