模块二:Ollama本地模型部署与OpenCode代理配置

本文是系列博文的第二篇,将带你从零开始在Windows上部署Ollama + DeepSeek模型,并通过自建Bridge打通WSL到Windows的AI调用链路。所有步骤均经过真实环境验证。


一、环境架构确认

本系列采用 Windows 宿主 + WSL子系统 的混合架构。在开始之前,先理清一个关键决策:为什么把Ollama装在Windows而非WSL?

选择Windows端Ollama的理由

  1. GPU驱动支持更成熟:Ollama在Windows上原生支持NVIDIA和AMD Radeon GPU,驱动配置比WSL更直观
  2. 开机自启便利:作为Windows应用,可直接放入Startup文件夹,无需额外配置systemd
  3. 资源管理直观:通过任务管理器即可监控内存和GPU占用

最终架构图

WSL应用层

Windows Bridge(:18080)

│ OpenAI兼容格式

Windows Ollama(:11434)

deepseek-r1:7b

WSL中的OpenCode通过Bridge调用Windows上的Ollama,而不是直连Ollama的11434端口------这是为了统一API格式、便于后续接入更多应用。


二、Windows端Ollama安装与模型下载

2.1 下载与安装

访问Ollama官网下载Windows安装包(ollama-windows-amd64.exe),双击运行即可。默认安装在用户目录下,若需自定义路径,可使用以下命令启动安装程序:

OllamaSetup.exe /DIR="F:\Ollama"

本文实际环境安装路径为 F:\Ollama\ollama.exe。

验证安装

where.exe ollama

# 输出: F:\Ollama\ollama.exe

Get-Process ollama

# 确认进程存在

2.2 配置开机自启动

将Ollama添加到Windows Startup文件夹,确保每次开机自动运行:

# 查看启动项

Get-CimInstance Win32_Process -Filter "Name='ollama.exe'"

# 确认: "F:\Ollama\ollama.exe" serve

Ollama默认API地址为 http://localhost:11434,无需认证即可访问。

2.3 拉取并运行DeepSeek R1模型

# 拉取模型

ollama pull deepseek-r1:7b

# 验证模型已加载

ollama ps

# 输出示例:

# NAME ID SIZE

# deepseek-r1:7b 755ced02ce7b 5.1 GB

# PROCESSOR CONTEXT

# 100% CPU 4096

踩坑记录:PowerShell下curl的JSON转义问题

在PowerShell中使用 curl.exe(而非 curl 别名)时,JSON转义容易出错:

# 错误示范

curl.exe -d "{\"model\":\"deepseek-r1:7b\"...}" http://localhost:11434/api/generate

# 正确做法:直接使用Invoke-WebRequest

Invoke-WebRequest -Method POST -Body '{"model":"deepseek-r1:7b", "prompt":"测试", "stream": false}' -uri http://localhost:11434/api/generate

2.4 验证Ollama API

通过原生API验证模型可用:

body = @{model="deepseek-r1:7b"; prompt="只回答:LOCAL OK"; stream=false} | ConvertTo-Json

Invoke-RestMethod -Method POST -Body $body -ContentType "application/json" -Uri "http://localhost:11434/api/generate"

成功返回包含 "response": "LOCAL OK" 的JSON结果。这是整个链路打通的第一个里程碑。


三、构建Cursor Ollama Bridge(模型网关)

3.1 为什么需要Bridge?

Cursor等AI工具期望的是OpenAI兼容的API格式(/v1/chat/completions、/v1/models),而Ollama原生API格式不同。Bridge的作用就是将Ollama API封装为OpenAI格式,让任何支持OpenAI接口的工具都能调用本地Ollama模型。

3.2 实现:编写bridge.py

在 F:\Ollama\cursor-bridge\ 目录下创建 bridge.py(根据实际场景需要优化):

from flask import Flask, request, jsonify

import requests

import json

app = Flask(name)

OLLAMA_URL = "http://127.0.0.1:11434"

API_KEY = "cursor-local-2026" # 自定义认证密钥

@app.route('/v1/models', methods='GET')

def list_models():

"""返回OpenAI格式的模型列表"""

resp = requests.get(f"{OLLAMA_URL}/api/tags")

models = resp.json().get('models', \[\])

return jsonify({

"object": "list",

"data": {"id": m\['name', "object": "model", "owned_by": "library"} for m in models]

})

@app.route('/v1/chat/completions', methods='POST')

def chat_completions():

"""代理Chat Completion请求"""

# 验证API Key

if request.headers.get('Authorization') != f'Bearer {API_KEY}':

return jsonify({"error": "Unauthorized"}), 401

data = request.json

# 转换OpenAI格式 -> Ollama格式

ollama_payload = {

"model": data.get('model'),

"messages": data.get('messages'),

"stream": data.get('stream', False)

}

resp = requests.post(f"{OLLAMA_URL}/api/chat", json=ollama_payload)

return jsonify(resp.json())

if name == 'main':

app.run(host='127.0.0.1', port=18080)

启动Bridge:

python F:\Ollama\cursor-bridge\bridge.py

# 输出:

# ======================================

# Cursor Ollama Bridge

# Listen: http://127.0.0.1:18080

# Ollama: http://127.0.0.1:11434

# API Key: cursor-local-2026

# ======================================

3.3 验证Bridge接口

# 验证 /v1/models

Invoke-RestMethod -Uri "http://127.0.0.1:18080/v1/models" -Headers @{Authorization="Bearer cursor-local-2026"}

# 返回: {"object":"list","data":{"id":"deepseek-r1:7b","object":"model","owned_by":"library"}}

# 验证 /v1/chat/completions

$body = @{model="deepseek-r1:7b"; messages=@(@{role="user"; content="测试"})} | ConvertTo-Json

Invoke-RestMethod -Method POST -Uri "http://127.0.0.1:18080/v1/chat/completions" -Body $body -ContentType "application/json" -Headers @{Authorization="Bearer cursor-local-2026"}

# 返回: 200 OK

Bridge已成功将Ollama暴露为OpenAI兼容API。


四、打通WSL到Windows的网络通路

4.1 关键发现

WSL2默认使用NAT网络模式,WSL内部无法通过 127.0.0.1 访问Windows宿主机上的服务。需要找到WSL的Windows网关IP:

# 在WSL中执行

ip route | grep default

# 输出: default via 172.25.48.1 dev eth0

这里的 172.25.48.1 就是Windows宿主在WSL网络中的网关地址。

4.2 验证WSL访问Windows Bridge

在WSL中执行:

curl http://172.25.48.1:18080/v1/models \

-H 'Authorization: Bearer cursor-local-2026'

# 成功返回模型列表JSON

注意:如果上述方式不通,可尝试在Windows中配置端口转发:

# 管理员PowerShell

netsh interface portproxy add v4tov4 listenport=18080 listenaddress=0.0.0.0 connectport=18080 connectaddress=127.0.0.1

或配置WSL2为镜像网络模式(编辑 %USERPROFILE%\.wslconfig):

wsl2

networkingMode=mirrored


五、WSL端OpenCode CLI安装与配置

5.1 安装方式与踩坑

官方推荐的一键安装脚本遇到网络问题(GitHub release下载链路缓慢):

curl -fsSL https://opencode.ai/install | bash

# 长时间无响应

解决方案:手动下载 v1.18.18 的 opencode-linux-x64.tar.gz,手工安装:

# 解压

tar -xzf opencode-linux-x64.tar.gz -C /tmp/opencode-install/

# 验证

/tmp/opencode-install/opencode --version

# 输出: 1.18.18

# 安装到系统PATH

sudo install -m 755 /tmp/opencode-install/opencode /usr/local/bin/opencode

# 验证

which opencode

# 输出: /usr/local/bin/opencode

opencode --version

# 输出: 1.18.18

OpenCode官方推荐Windows用户通过WSL运行,这也是本系列采用的方式。

5.2 配置OpenCode使用Bridge

创建配置文件 ~/.config/opencode/opencode.jsonc:

{

"$schema": "https://opencode.ai/schema/config.json",

"providers": {

"ollama-bridge": {

"type": "openai",

"apiBase": "http://172.25.48.1:18080/v1",

"apiKey": "cursor-local-2026",

"models": "deepseek-r1:7b"

}

}

}

OpenCode本身支持在配置文件中自定义兼容OpenAI格式的Provider。这里将Provider命名为 ollama-bridge,指向Windows上的Bridge服务。

5.3 模型验证:链路正式打通

opencode run --model ollama-bridge/deepseek-r1:7b "只回答:OPENCODE LOCAL OK"

# 输出: OPENCODE LOCAL OK

这是整个工程最重要的验证结果。完整链路:

OpenCode(WSL)

ollama-bridge Provider

172.25.48.1:18080(Windows Bridge)

127.0.0.1:11434(Windows Ollama)

deepseek-r1:7b


六、模块小结与实战产出

本文核心要点回顾

  1. 架构决策:Ollama安装在Windows端,利用GPU支持和开机自启便利;WSL中的OpenCode通过Bridge调用模型
  2. Ollama部署:安装、开机自启、拉取deepseek-r1:7b、验证原生API
  3. Bridge构建:用Flask编写代理,将Ollama封装为OpenAI兼容格式,监听:18080
  4. 网络打通:WSL通过网关IP(如172.25.48.1)访问Windows服务
  5. OpenCode配置:手动安装CLI,配置opencode.jsonc指向Bridge

实战产出

产出 访问地址 说明
本地大模型API网关 http://172.25.48.1:18080/v1 OpenAI兼容,可供任何工具调用
OpenCode CLI /usr/local/bin/opencode WSL中可调用本地DeepSeek模型
验证命令 opencode run --model ollama-bridge/deepseek-r1:7b "测试" 确认链路完全打通

核心配置文件清单

  • Windows Bridge:F:\Ollama\cursor-bridge\bridge.py
  • OpenCode配置:~/.config/opencode/opencode.jsonc
  • Ollama模型存储:可通过 OLLAMA_MODELS 环境变量自定义路径

参考资源

相关推荐
阡之尘埃13 分钟前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
Regentsoft丽晶软件15 分钟前
品牌方新品上市促销政策无法实时同步经销商,有没有支持总部-经销商-终端一站式的分销解决方案?
人工智能·经验分享·数据库架构
liuqs33218 分钟前
机器人产业加速发展,制造业正在迎来新的自动化探索
大数据·人工智能
腾讯云大数据19 分钟前
DataBuddy数据语义驱动的企业Agent Runtime实践
大数据·人工智能·腾讯云·agent
裕晟资质规划19 分钟前
武器装备科研生产单位保密资质申请方法论:条件模型与流程拆解
人工智能·算法
cvcode_study32 分钟前
Ollama+ComfyUI 多模态
大数据·人工智能·python
Bode_200235 分钟前
决策设计方法
人工智能·交互·智能工厂
AI砖家39 分钟前
Kimi K3 本地部署全解析:需要什么配置的电脑,到底要花多少钱?
人工智能·ai编程
H03111698542 分钟前
教学设计PPT模板平台选用参考
人工智能