1. 单机跑 DeepSeek Coder 33B 到底解决什么问题如果你手头有一台显存 24GB 左右的机器又不想把公司代码片段发到外部服务那本地跑一个能补全、能对话的代码模型就是刚需。DeepSeek Coder 33B 在代码补全和指令跟随上的表现对日常写 Python、Go、前端都够用量化到 q4_0 之后显存占用大概 19~20GB24GB 卡刚好能塞下。这篇就围绕「Ollama 拉起 DeepSeek Coder 33B VS Code 自动补全 Gradio 本机 Web Chat」这条链路把每一步命令、配置、验证方式都写清楚你照着敲就能复现。先说清楚这套方案适合谁一是手里有单张 24GB 显卡3090/4090/A5000 之类或 128GB 内存想纯 CPU 慢跑的开发者二是希望补全和对话都在本机回环地址完成、不依赖外部网络的人三是想拿 Continue 插件把「补全规范」固化下来的团队。整条链路只有三个进程Ollama 提供 11434 的推理 APIVS Code 里的 Continue 通过这个 API 做补全和 ChatGradio 起一个 3000 端口的网页聊天。三者互不干扰任何一个挂了都不影响另外两个。时间上按 5 分钟切0:00–1:30 装 Ollama 并拉模型1:30–3:00 配 Continue3:00–5:00 起 Gradio。实际拉 33B 模型受网速影响可能更久但配置动作本身很快。下面按这个节奏展开每一步都给可复制的内容。需要提前说明的是Ollama 的 11434 是 API 地址不是聊天网页浏览器直接打开只会看到一句提示这是正常的别以为装坏了。真正的网页聊天是你自己用 Gradio 起的 3000 端口。这个区分后面排障会反复用到。2. Ollama 拉取 DeepSeek Coder 33B 与显存验证2.1 安装 Ollama 并确认版本到 Ollama 官网下载对应系统的安装包Windows 直接双击安装装完打开 PowerShell 敲ollama version正常会输出类似ollama version is 0.15.2的版本号。版本号能打出来说明服务已经注册成后台进程11434 端口默认就监听了。如果提示找不到命令重开一个终端让 PATH 生效。2.2 拉取量化模型33B 全精度对单卡不现实用 q4_0 量化版ollama pull deepseek-coder:33b-instruct-q4_0拉完确认列表ollama list你会看到模型名、大小、修改时间三列。q4_0 的 33B 大概 18~19GB 磁盘占用。如果拉取中断重新执行同一条 pull 命令会断点续传不用删了重来。2.3 验证模型能加载、显存占用正常最直接的验证是在 Ollama 客户端界面里选这个模型发一句话比如「写一个 Python 快排」有回复就说明加载成功。同时打开任务管理器看 GPU 显存24GB 卡上这个模型加载后大约占 19.8GB属于正常水位。如果显存直接爆掉或者模型加载失败多半是量化版本选错或驱动太旧。也可以用命令行验证 API 是否活着curl http://127.0.0.1:11434/api/tags返回一段 JSON里面列出你本地所有模型就说明推理服务正常。这一步很关键因为后面 Continue 和 Gradio 都是打这个接口这里不通后面全白搭。2.4 关于模型选择的取舍33B 在 24GB 显存上是临界状态补全和长对话同时高频跑会明显变慢。一个实用做法是拆分职责Chat 和 Edit 用 33B 保证质量Autocomplete 换更轻的模型比如qwen2.5:14b补全对延迟敏感轻模型响应快很多。你可以两个都 pull 下来在 Continue 里分别指定。ollama pull qwen2.5:14b这样一套组合下来补全几乎无感对话质量也不掉。显存方面两个模型不会同时常驻Ollama 会按需加载和卸载实际峰值还是单个大模型的水位。3. VS Code Continue 配置自动补全与 Chat3.1 安装 Continue 插件在 VS Code 扩展市场搜 Continue 安装。装完左侧会出现 Continue 面板。它读取的配置文件是config.yaml路径在用户目录下的.continue文件夹里Windows 一般是C:\Users\你的用户名\.continue\config.yaml。直接编辑这个文件把下面内容覆盖粘贴进去name: Local Config version: 1.0.0 schema: v1 models: - name: DeepSeek Coder 33B provider: ollama model: deepseek-coder:33b-instruct-q4_0 apiBase: http://127.0.0.1:11434 roles: - chat - edit - apply - name: Qwen2.5 14B Autocomplete provider: ollama model: qwen2.5:14b apiBase: http://127.0.0.1:11434 roles: - autocomplete - name: Autodetect provider: ollama model: AUTODETECT roles: - summarize - embed - rerank这里三件套要写全Base URL 是http://127.0.0.1:11434Key 对本地 Ollama 不需要留空即可Model ID 就是deepseek-coder:33b-instruct-q4_0和qwen2.5:14b。roles 决定这个模型在哪些场景被调用autocomplete 单独给小模型chat/edit/apply 给 33B。3.2 用 rules 固化补全规范Continue 支持在配置里写 rules影响 Chat、Edit、Autocomplete 的行为风格。比如你希望补全永远不加多余注释、遵循项目缩进可以加一段rules: - 补全代码时不要添加解释性注释除非用户明确要求 - 遵循当前文件的缩进风格Python 用 4 空格 - 生成函数时补全类型标注rules 是纯文本指令会拼进每次请求的上下文。写得太长会挤占 token建议控制在几条核心约束内。改完保存Continue 面板会自动重载配置。3.3 在面板里分别选择模型打开 Continue 面板Chat、Autocomplete、Edit 三个位置分别下拉选择。Chat 选 DeepSeek Coder 33BAutocomplete 选 Qwen2.5 14BEdit 选 33B。选完在编辑器里敲代码比如输入def fib(停一下看是否弹出灰色补全建议按 Tab 接受。如果没反应检查 Autocomplete 模型是否选中、Ollama 是否在跑。Chat 侧边栏直接提问比如「解释这段代码的边界条件」能流式返回就说明 33B 通过 Continue 调通了。Edit 模式选中一段代码让它改写验证 apply 角色是否生效。4. Gradio 本机 Web Chat 启动与请求验证4.1 编写 main.py新建项目目录比如C:\Users\admin\Desktop\webchat\local-webui在里面建main.pyimport requests import gradio as gr OLLAMA_URL http://127.0.0.1:11434/api/generate MODEL deepseek-coder:33b-instruct-q4_0 def chat(prompt: str) - str: prompt (prompt or ).strip() if not prompt: return 请输入内容。 r requests.post( OLLAMA_URL, json{ model: MODEL, prompt: prompt, stream: False, }, timeout600, ) r.raise_for_status() data r.json() return data.get(response, ) with gr.Blocks(titleLocal LLM Web Chat (Ollama)) as demo: gr.Markdown(# 本地大模型 Web ChatOllama) gr.Markdown(f- Model: {MODEL}\n- API: {OLLAMA_URL}) inp gr.Textbox(label输入, lines6, placeholder输入问题例如写一个 Python 斐波那契函数并解释边界条件) out gr.Textbox(label输出, lines16) btn gr.Button(发送) btn.click(chat, inputsinp, outputsout) demo.launch(server_name127.0.0.1, server_port3000)这里打的是/api/generate非流式timeout 给到 600 秒因为 33B 首次加载加推理可能比较慢。4.2 建虚拟环境并装依赖进入项目目录cd C:\Users\admin\Desktop\webchat\local-webui python -m venv .venv推荐不激活 venv直接用绝对路径调 python避开 PowerShell 执行策略的坑.\.venv\Scripts\python.exe -m pip install --upgrade pip .\.venv\Scripts\python.exe -m pip install gradio requests .\.venv\Scripts\python.exe .\main.py终端出现Running on local URL: http://127.0.0.1:3000就说明起来了。浏览器打开这个地址输入问题点发送能返回内容就验证通过。4.3 验证请求链路想确认 Gradio 确实打到了 Ollama可以在发送时看终端有没有报错或者单独用 curl 测 generate 接口curl http://127.0.0.1:11434/api/generate -d {\model\:\deepseek-coder:33b-instruct-q4_0\,\prompt\:\hi\,\stream\:false}返回 JSON 里有response字段就说明推理链路通。Gradio 只是把这层包了个网页壳底层是同一个接口。5. 常见报错排查401、local proxy failed、reading choices5.1 401 与鉴权类报错本地 Ollama 默认不校验 Key如果你在 Continue 里看到 401多半是配置里误填了 apiKey 或者 provider 写成了需要鉴权的云端。检查 config.yamlprovider 必须是ollamaapiBase 指向http://127.0.0.1:11434不要带多余路径。如果之前配过云端模型残留了 Key删掉即可。5.2 local proxy failedContinue 报local proxy failed通常是它连不上 11434。先在 PowerShell 里curl http://127.0.0.1:11434/api/tags确认服务活着。如果 curl 通但 Continue 不通检查是否有安全软件拦截了 VS Code 的回环访问放行即可。另外确认 apiBase 写的是127.0.0.1而不是localhost某些环境下 localhost 解析会绕路。5.3 reading choices 报错这个报错一般出现在把 Ollama 当 OpenAI 兼容接口用时响应结构对不上。Continue 的 ollama provider 会自己处理格式如果你手动把 provider 改成 openai 再指向 11434就可能出现解析choices失败。改回provider: ollama即可。Gradio 侧如果自己拼 OpenAI 格式请求也会遇到同样问题直接用/api/generate最省事。5.4 端口占用与 3000 打不开Gradio 起不来先看终端有没有报端口占用。把server_port3000改成 3001 再试。如果终端显示已启动但浏览器打不开检查是不是被安全软件拦了回环端口或者地址写成了外网 IP。必须是127.0.0.1:3000。5.5 模型慢或卡顿33B 在 24GB 显存上是临界长上下文加并发会明显变慢。优化顺序先缩短输入长代码分段喂再避免自动补全和大段对话同时高频触发最后把 Autocomplete 换成 qwen2.5:14b 这类轻模型。如果还是慢考虑把 Chat 也降到 14B质量换速度。5.6 PowerShell 执行策略导致 venv 激活失败报错类似「无法加载 Activate.ps1因为在此系统上禁止运行脚本」。三个方案任选仅当前用户放开Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned仅当前窗口放开Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass或者干脆不激活直接用.\.venv\Scripts\python.exe调最稳。6. 把本地推理接到更顺手的调用入口上面这套跑通之后你手里其实有了一个标准的 OpenAI 兼容之外的本地推理端点。日常如果只是本机用Ollama 的 11434 就够了。但如果团队里有人想复用同一套模型能力、又不想每人本地拉一遍 33B可以考虑把请求统一走一个兼容层把 Base URL、Key、Model ID 三件套固定下来客户端只改这三项就能切换。具体做法是Base URL 填https://taotoken.net/apiKey 在控制台生成Model ID 按你实际要调的模型名填。这样 VS Code 插件、脚本、Gradio 都能用同一套配置不用每个工具单独适配。生成 Key 的入口在 API Keys接入细节看 接入文档。想先验证模型返回是否正常可以直接在 模型对话 里发一句话试。如果是长期做编码和 Agent 任务Coding Plan 更适合按量跑。回到本地这条链路最后再确认一遍三个进程的状态Ollama 在 11434 提供推理Continue 通过 config.yaml 里的 Base URL、Model ID 和 roles 做补全与对话Gradio 在 3000 起网页聊天。三者都指向同一个本地端点任何一个出问题都能单独排查不会互相拖累。把 config.yaml 和 main.py 存好下次换机器直接复制这两个文件加一条 pull 命令就能重建整套环境。