ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

本地部署Deepseek-coder + Vscode + Continue 插件(1)-- 用 Ollama 把模型跑起来并改到 TaoToken

本地部署Deepseek-coder + Vscode + Continue 插件(1)-- 用 Ollama 把模型跑起来并改到 TaoToken 1. 为什么要在本机把 Deepseek-coder 跑起来Deepseek-coder 是 DeepSeek 系列里专门面向代码补全与对话的模型能在 Vscode 里做行内补全、函数解释、单元测试生成。Ollama 是一个把模型权重、量化、推理引擎打包好的本地运行工具内置 llama.cpp一条ollama pull就能把模型拉下来再用ollama serve暴露一个 OpenAI 兼容的 11434 端口。Vscode 的 Continue 插件则负责把编辑器里的光标上下文、选中代码、聊天面板拼成请求发给这个端口。这套组合适合三类人一是手里有 8GB 左右显存的单机开发者想在不依赖外部网络的情况下做代码补全二是想对比本地模型和云端模型效果的人三是需要把 Continue 的 Base URL 统一到一个 Key 通道、方便做连通性验证的人。我这次的目标很明确先在 Windows/Linux 单机上用 Ollama 拉起 Deepseek-coder确认 CUDA 与显存占用再用 Modelfile 固定上下文与温度最后把 Continue 的 Base URL 改到 TaoToken 统一 Key 通道做一次 curl 验证确保本地补全和对话一次跑通。需要提前说清楚的是Ollama 默认监听127.0.0.1:11434Continue 的 config.json 里apiBase指向它就能用本地模型而 TaoToken 的 API 地址是https://taotoken.net/api它提供的是 OpenAI 兼容的 Key 通道。两者可以并存本地模型走 Ollama云端模型走 TaoTokenContinue 里配多个 provider 即可。下面按“环境确认 → 拉模型 → 写 Modelfile → 配 Continue → curl 验证 → 排错”的顺序走一遍。2. 先确认 CUDA 与显存占用再决定拉哪个 Deepseek-coder2.1 检查驱动与 CUDA 版本Linux 下先看驱动和 CUDAnvidia-smi nvcc --versionnvidia-smi右上角会显示CUDA Version: 12.x这是驱动支持的最高 CUDA 版本不是已安装的 toolkit 版本。nvcc --version才是实际安装的编译器版本。Ollama 自带 CUDA 运行时通常不需要你单独装完整 CUDA toolkit只要驱动够新即可。如果nvidia-smi报command not found说明驱动没装或没进 PATH先处理驱动。Windows 下在 PowerShell 里执行同样的nvidia-smi或者在“任务管理器 → 性能 → GPU”里看显存。GTX1080 单卡 8GB两张卡共 16GB但 Ollama 默认只用第一张卡除非显式设置CUDA_VISIBLE_DEVICES。2.2 显存与模型大小的对应关系Deepseek-coder 在 Ollama 上有几个常用 tag模型 tag参数量量化磁盘占用8GB 显存可行性deepseek-coder:1.3b1.3BQ4约 0.8GB轻松可长上下文deepseek-coder:6.7b6.7BQ4约 4GB可跑上下文建议 4096deepseek-coder-v2:16b16B MoE自动可能超 8GB单卡 8GB 需谨慎6.7B Q4 的权重约 4GBKV Cache 随上下文线性增长。8GB 显存下num_ctx4096大约再占 1.5–2GB加上推理时的临时缓冲整体在 6–7GB能稳住。如果拉到 8192很容易触发回退到 CPU速度会掉到每秒几个 token。所以第一步不是急着 pull而是先确认显存余量。2.3 拉取模型并观察显存ollama pull deepseek-coder:6.7b ollama list下载过程中如果速度掉下来可以 CtrlC 再重跑同一条命令Ollama 会断点续传已下载的分片不会丢。模型落在Linux/macOS~/.ollama/modelsWindowsC:\Users\用户名\.ollama\models拉完后启动服务ollama serve另开一个终端跑一次推理同时用nvidia-smi -l 1观察显存ollama run deepseek-coder:6.7b 用 Python 写一个快速排序如果nvidia-smi里 Ollama 进程的显存占用稳定在 6GB 左右说明 GPU 加速生效如果几乎不占显存、CPU 占用飙高就是回退了。这时要么换 1.3b要么把num_ctx降到 2048。3. 用 Modelfile 固定上下文与温度并接入 TaoToken 统一 Key 通道3.1 写一个可复用的 ModelfileOllama 支持用 Modelfile 派生自定义模型把num_ctx、temperature这些参数固化下来避免每次 run 都手敲。新建一个文件Modelfile.deepseek-coderFROM deepseek-coder:6.7b # 上下文长度8GB 显存建议 4096 PARAMETER num_ctx 4096 # 代码补全场景温度低一些减少胡编 PARAMETER temperature 0.2 # 重复惩罚避免循环输出 PARAMETER repeat_penalty 1.1 # 系统提示词约束它只做代码相关回答 SYSTEM 你是一个代码助手只回答与编程、调试、代码解释相关的问题。 输出代码时使用 Markdown 代码块并标注语言。 构建ollama create deepseek-coder-local -f Modelfile.deepseek-coder ollama list之后用ollama run deepseek-coder-local启动的就是带固定参数的版本。num_ctx改大要重新 create因为 KV Cache 是在加载时分配的。3.2 Continue 的 config.json 配置Continue 插件的配置文件在 Vscode 里通过命令面板Continue: Open Config打开路径通常是Linux/macOS~/.continue/config.jsonWindowsC:\Users\用户名\.continue\config.json下面这份配置同时挂了本地 Ollama 和 TaoToken 两个 provider本地走补全云端走对话{ models: [ { title: Deepseek-coder Local (Ollama), provider: ollama, model: deepseek-coder-local, apiBase: http://127.0.0.1:11434, contextLength: 4096, completionOptions: { temperature: 0.2, maxTokens: 512 } }, { title: TaoToken GPT (统一 Key 通道), provider: openai, model: gpt-4o-mini, apiBase: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, contextLength: 128000 } ], tabAutocompleteModel: { title: Deepseek-coder Local Autocomplete, provider: ollama, model: deepseek-coder-local, apiBase: http://127.0.0.1:11434 }, allowAnonymousTelemetry: false }这里三件套要写全Base URL、Key、Model ID。本地 Ollama 的 Base URL 是http://127.0.0.1:11434不需要 KeyTaoToken 的 Base URL 是https://taotoken.net/apiKey 在控制台生成Model ID 按你实际用的填。Continue 里provider写openai是因为 TaoToken 提供 OpenAI 兼容接口不是指必须用 OpenAI 的模型。注意apiBase末尾不要带/v1Continue 会自己拼/v1/chat/completions。如果带上/v1会变成/v1/v1/...直接 404。3.3 在 Vscode 里切换模型装好 Continue 后侧边栏会出现 Continue 面板。点模型下拉框能看到Deepseek-coder Local (Ollama)和TaoToken GPT两个选项。补全走tabAutocompleteModel对话走当前选中的模型。改完 config.json 保存Continue 会自动重载不需要重启 Vscode。4. 验证请求curl 打通 Ollama 与 TaoToken4.1 验证 Ollama 的 OpenAI 兼容接口Ollama 从 0.1.24 起提供/v1/chat/completions可以直接用 curl 测curl http://127.0.0.1:11434/v1/chat/completions \ -H Content-Type: application/json \ -d { model: deepseek-coder-local, messages: [ {role: user, content: 写一个 Python 函数判断回文} ], temperature: 0.2, max_tokens: 256 }返回里choices[0].message.content就是模型输出。如果返回{error:model not found}说明model字段和ollama list里的名字不一致注意deepseek-coder-local是你 create 出来的名字不是deepseek-coder:6.7b。4.2 验证 TaoToken 通道curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的TaoTokenKey \ -d { model: gpt-4o-mini, messages: [ {role: user, content: 只回复两个字连通} ] }返回choices[0].message.content里出现“连通”就说明 Key 通道正常。这一步的意义在于当 Continue 里云端模型报错时你可以先用 curl 排除是插件配置问题还是 Key/网络问题。4.3 在 Continue 里做一次端到端验证打开一个.py文件选中一段函数按CtrlL默认快捷键把代码送进 Continue 对话问“解释这段代码”。如果本地模型在跑回答会带一点延迟但内容完整切到 TaoToken 模型回答速度取决于网络。补全则是在你打字时自动触发如果没反应先看 Continue 面板底部有没有报错。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth5.1 401 UnauthorizedContinue 里云端模型报 401九成是apiKey写错或没填。检查 config.json 里apiKey字段是不是sk-开头有没有多余空格。TaoToken 的 Key 在控制台生成复制时别漏字符。本地 Ollama 不需要 Key如果给 Ollama 也填了apiKey某些版本会把它当 Bearer 发出去反而被拒删掉即可。5.2 local proxy failed / connection refused报local proxy failed或ECONNREFUSED 127.0.0.1:11434说明 Ollama 服务没起来。Linux 下sudo systemctl status ollama看状态没起就sudo systemctl start ollama前台跑的话确认ollama serve那个终端还活着。Windows 下检查托盘图标或者netstat -ano | findstr 11434看端口有没有监听。还有一种情况是 Continue 跑在 WSL 里、Ollama 跑在 Windows 宿主这时127.0.0.1指向的是 WSL 自己要改成宿主 IP。5.3 reading choices / unexpected end of JSONerror reading choices或unexpected end of JSON input通常是响应被截断。原因可能是max_tokens设太大、模型输出到一半被 Ollama 的默认超时掐断或者num_ctx太小导致上下文溢出。把maxTokens降到 512num_ctx提到 4096再试。如果只在长对话里出现就是 KV Cache 爆了换 1.3b 或缩短历史。5.4 OAuth / 登录态相关报错Continue 某些版本会提示 OAuth 登录这是它自带的云端服务和本地 Ollama、TaoToken 都无关。如果你只用本地模型和 TaoToken可以在设置里关掉 Continue 的账号同步或者忽略这个提示。别把 TaoToken 的 Key 填到 OAuth 流程里两者不是一回事。5.5 模型加载慢或回退 CPUollama run后迟迟不出字nvidia-smi里显存没涨就是回退了。检查驱动版本是否支持当前 CUDACUDA_VISIBLE_DEVICES0是否指到了有显存的那张卡。两张 1080 的话Ollama 默认不跨卡拆分想用第二张得显式指定。另外num_ctx超过显存容量也会触发回退先降到 2048 确认能上 GPU再逐步加。6. 把本地补全和云端对话串成一条工作流走到这里本地 Deepseek-coder 已经在 Ollama 里跑起来Modelfile 固定了num_ctx4096和temperature0.2Continue 的 config.json 同时挂了本地和 TaoToken 两个 providercurl 也分别验证过 11434 和https://taotoken.net/api两条通道。日常用法可以这样分写代码时的行内补全交给本地模型延迟低、不消耗额度需要长上下文分析、跨文件重构时切到 TaoToken 的模型Key 统一管理换机器只改 config.json 里的apiBase和apiKey。如果你后面要接 Claude Code 或做更复杂的 Agent 编排TaoToken 的 Coding Plan 和 API Keys 页面可以拿到对应的接入信息文档里也有 Continue、Cline 这类插件的配置示例。本地这套 Ollama Continue 的好处是离线可用、数据不出机器适合把补全这种高频低风险的请求留在本地云端通道则补上长上下文和更强推理的短板。两条路都通按场景切换就行。
返回列表