前言:
本文是手把手教程,详细介绍了,如何在VS Code和Hermes中免费使用本地大模型Qwen3.8,后面有详细的实操步骤,照着这个操作在您的电脑中也可以成功实现。另外,Hermes中还有很多免费的大模型可以用。
最近一段时间,我连续开发了几个非常好用的小 App。
项目做得很顺,但也带来了一个很现实的问题:无论是写代码、分析日志、生成文档,还是让 Agent 帮我修改工程,都会快速消耗 AI 服务的调用额度。等我回过神来,这个月能用的额度已经基本见底。
继续充值当然最省事,但这个月我实在不想再额外付费了。
与此同时,我突然意识到:电脑里明明装着一张独立显卡,平时却没有把它充分利用起来。与其让这么好的显卡闲着,不如尝试搭建一套真正可用的本地 AI 开发环境。
于是就有了这次实践:
在 Windows 上通过 llama.cpp 运行 Qwen3.8-27B,将它接入 Hermes Agent 和 VS Code,搭建一套不依赖云端额度的本地 AI 编程工作流。
最终效果比我预想得好。模型可以完全放在本地 GPU 上运行,网页端实测生成速度达到约 54.76 tokens/s,中文问答、代码分析和长文生成已经非常流畅。

下面记录完整过程,也把中间踩过的坑一并整理出来。
一、整体方案
1. 硬件环境
这次使用的机器配置如下:我的显存是32G,其实最小8G的显存就可以跑起来。既可以用在 Hermes 中还可以用在 VS Code 中。
这个配置比较适合运行 27B~35B 级别的量化模型。
如果主要追求速度、长上下文和 Agent 稳定性,建议优先选择 Q4 量化;如果更关注回答质量,并且可以接受更大的显存占用,则可以尝试 Q5 或 Q6。
我最终实际运行的是:
代码示例
Qwen3.8-27B-UD-Q6_K_XL.gguf
2. 软件架构
整个工作流可以拆成三层:
代码示例
Qwen3.8-27B GGUF ↓llama.cpp / llama-server ↓OpenAI 兼容接口http://127.0.0.1:8080/v1 ↓Hermes Agent / VS Code / 其他客户端
llama.cpp 负责加载模型并使用 GPU 推理,同时对外提供 OpenAI 兼容接口。
Hermes 和 VS Code 不需要直接理解 GGUF,也不关心模型是如何运行的。它们只需要把请求发送到:
代码示例
http://127.0.0.1:8080/v1/chat/completions
这也是整个方案最有价值的地方:模型后端和上层应用完全解耦。
以后想更换模型,只需要重新启动 llama-server;Hermes、VS Code 或自己开发的小工具仍然可以继续复用同一套接口。
二、部署 llama.cpp
1. 下载 Windows CUDA 版本
打开 llama.cpp 官方 GitHub Releases 页面,下载最新的 Windows CUDA x64 预编译包。
https://github.com/ggml-org/llama.cpp/releases
2.llama.cpp的安装
将上面下载的 llama-b10593-bin-win-cuda-12.4-x64.zip解压到本地硬盘的某个位置;上面下载的 cudart-llama-bin-win-cuda-12.4-x64.zip解压出来的3个.dll文件复制到llama-b10593-bin-win-cuda-12.4-x64.zip 解压后的目录里面,如下图所示。

3. 下载 GGUF 模型
我的显卡是5090,显存是32G。如果您的显存没这么大,可以下载小的模型,有8G显存就可以玩起来。

https://huggingface.co/unsloth/Qwen3.8-27B-GGUF/tree/main
未删减(越狱)版下载地址:
https://huggingface.co/JonathanColetti/Qwen3.8-27B-Uncensored-GGUF/tree/main
4. 启动 llama-server
我最终使用的启动命令如下:
代码示例
.\llama-server.exe -m "F:\Models\Qwen3.8-27B\Qwen3.8-27B-UD-Q6_K_XL.gguf" --alias Qwen3.8-27B --host 127.0.0.1 --port 8080 --ngl 99 --ctx-size 65536 --parallel 1 --flash-attn auto --cache-type-k q8_0 --cache-type-v q8_0 --jinja
关键参数说明:
这里强烈建议加入:
代码示例
--alias Qwen3.8-27B
如果没有设置 alias,“/v1/models” 可能会把完整的 Windows 文件路径作为模型 ID 返回,例如:
代码示例
F:\software\llama.cpp\models\Qwen3.8-27B-UD-Q6_K_XL.gguf
Hermes 和 VS Code 虽然也能使用,但配置起来很麻烦,JSON 中还需要转义反斜杠。设置 alias 后,模型 ID 会变成干净的:
代码示例
Qwen3.8-27B
5. 验证服务
浏览器打开:
代码示例
http://127.0.0.1:8080
如果能够看到 llama.cpp WebUI,就可以直接进行聊天测试。

也可以在 PowerShell 中检查模型:
代码示例(powershell)
Invoke-RestMethod http://127.0.0.1:8080/v1/models | ConvertTo-Json -Depth 5
正常情况下应返回:
代码示例(json)
{ "data": [ { "id": "Qwen3.8-27B" } ]}
测试 Chat Completions:
代码示例(powershell)
$body = @{ model = "Qwen3.8-27B" messages = @( @{ role = "user" content = "你好,请简单介绍一下自己。" } ) max_tokens = 1024} | ConvertTo-Json -Depth 5Invoke-RestMethod ` -Uri "http://127.0.0.1:8080/v1/chat/completions" ` -Method Post ` -ContentType "application/json" ` -Body $body
到这里,本地模型服务就已经搭建完成。
三、接入 Hermes Agent
Hermes 不只是聊天客户端,而是一个具备终端、文件操作、记忆和工具调用能力的 Agent。
这意味着模型不仅可以回答问题,还可以:
查看项目目录 读取和分析代码 执行终端命令 修改文件 运行测试 根据错误继续迭代 保存跨会话记忆
1. 安装 Hermes
官网地址:
https://hermes-agent.nousresearch.com/
2. 配置本地模型
运行:
代码示例(powershell)
hermes model


在 Provider 列表中选择:
代码示例:
Custom endpoint
不要误选之前保存的旧 provider。
依次填写:
代码示例:
API Base URL:http://127.0.0.1:8080/v1
API Key 可以随便填写一个非空字符串:
代码示例:
local-no-key
虽然 llama.cpp 默认不校验 API Key,但某些客户端不接受空值。
Hermes 检测到 “/v1/models” 后,会显示:
代码示例:
Qwen3.8-27B
选择这个模型。
API compatibility mode 选择:
代码示例:
Chat Completions
也就是:
代码示例:
/v1/chat/completions
不要选择:
Responses/Codex Anthropic Messages
上下文长度填写:
代码示例:
65536
Display name 可以填写:
代码示例:
Local-Qwen3.8-27B
最后将它保存并设置为默认模型。
3. 验证 Hermes
再次运行:
代码示例(powershell)
hermes model

先做一个测试:

4. 输出截断提示
在长文章或复杂任务中,可能看到:

代码示例(text)
Your previous response was truncated by the output length limit.Continue exactly where you left off.Do not restart or repeat prior text.Finish the answer directly.
它的意思是:
上一次回答达到了单次输出长度上限,请从中断位置继续,不要重新开始,也不要重复已经生成的内容。
这并不代表模型崩溃,也不代表 64K 上下文失效。
需要区分两个概念:
“--ctx-size 65536” 代表总上下文是 64K,但客户端可能仍然把单次输出限制在 2048、4096 或 8192 token。
如果 WebUI 能够自动续写并最终出现“全文完”,说明续写已经成功,不需要额外处理。
5. Hermes中还有很多免费的大模型
下面截图中带有free的都是可以免费用的。

四、接入 VS Code
新版 VS Code 可以通过 Custom Endpoint 直接连接 OpenAI 兼容服务。
整体路径是:
代码示例:
VS Code Chat ↓Custom Endpoint ↓http://127.0.0.1:8080/v1/chat/completions ↓llama-server ↓Qwen3.8-27B
1. 添加自定义模型
打开 VS Code,按:
代码示例:
Ctrl+Shift+P
执行:
代码示例:
Chat: Manage Language Models
然后:点击 “Add Models”



2. 修改模型配置
建议将 Custom Endpoint 配置整理成:
代码示例(json)
[ { "name": "Local llama.cpp", "vendor": "customendpoint", "apiKey": "local-no-key", "apiType": "chat-completions", "models": [ { "id": "Qwen3.8-27B", "name": "Qwen3.8 27B Local", "url": "http://127.0.0.1:8080/v1/chat/completions", "toolCalling": true, "vision": false, "thinking": true, "streaming": true, "maxInputTokens": 49152, "maxOutputTokens": 8192 } ] }]
如果 VS Code 自动生成了类似下面的密钥引用:
代码示例(json)
"apiKey": "${input:chat.lm.secret.xxxxxxxx}"
建议保留。真实密钥会由 VS Code Secret Storage 管理,不需要写进 JSON。
我在配置过程中遇到的一个问题是,VS Code 自动留下了一个空模型模板:
代码示例(json)
{ "id": "", "name": "", "url": "", "toolCalling": true, "vision": true}
这个空对象会导致 JSON 校验告警,必须完整删除。
另外还需要注意:
“name” 不能留空 “id” 必须与 “/v1/models” 返回值一致 没有加载视觉 “mmproj” 时,“vision” 必须设为 “false” 想在 Agent 模式中使用,必须设置 “toolCalling: true” URL 应写完整的 “/v1/chat/completions”
整理后的 VS Code 配置结构更加清晰,也不会再出现空模型造成的警告。
3. 重新加载 VS Code
保存配置后,按:
代码示例(text)
Ctrl+Shift+P
执行:
代码示例(text)
Developer: Reload Window
然后打开 VS Code Chat,在模型选择器中选择:
代码示例:
Local llama.cpp└── Qwen3.8 27B Local
先用 Ask 模式测试:

五、踩坑与思考
1. “invalid argument: 20”
我最开始在启动命令里加入了:
代码示例:
--temp 1.0--top-p 0.95--top-k 20--min-p 0
结果 llama-server 直接报错:
代码示例:
error: invalid argument: 20
问题发生在参数解析阶段,模型甚至还没有开始加载。
最终我删除了启动命令中的采样参数,只保留模型加载、上下文和 KV Cache 参数:
代码示例:
--ngl 99--ctx-size 65536--parallel 1--flash-attn auto--cache-type-k q8_0--cache-type-v q8_0--jinja
采样参数由 WebUI、Hermes 或 VS Code 在每次 API 请求中传入即可,没有必要固化在服务端。
这个经验很实用:
出现启动参数错误时,先用最小命令启动,再逐项增加参数。
2. Q6 加 64K 上下文比较吃显存
Qwen3.8-27B 的 Q6 量化质量很好,但显存占用也更高。
如果出现:
代码示例:
CUDA out of memory
建议按以下顺序处理:
把 “--ctx-size 65536” 降到 “32768” 把 “--cache-type-v q8_0” 改为 “q4_0” 将模型换成 “UD-Q4_K_XL” 最后才考虑把模型层卸载到系统内存
不建议一开始就减少 GPU Layers。虽然 64GB 系统内存可以承载部分模型,但 CPU/GPU 混合推理会明显增加首 token 延迟,并降低 Agent 多轮工具调用的流畅度。
3. “--parallel 1” 的含义
当前配置:
代码示例:
--parallel 1
意味着 llama-server 同时只有一个推理槽位。
Hermes 和 VS Code 可以共用同一个服务,但如果两边同时发请求,后发请求需要等待。
不要为了并发直接改成:
代码示例:
--parallel 2
Q6 模型加 64K 上下文本身已经比较占显存。并行槽位增加后,KV Cache 和上下文资源也会增加,可能导致显存不足。
对个人开发环境而言,“parallel 1” 已经足够。
4. 本地模型不是为了完全替代云模型
实际使用后,我越来越觉得,本地模型和云模型不是简单的替代关系。
云模型的优势依然明显:
综合能力更强 超长上下文更稳定 复杂 Agent 任务成功率更高 不需要维护推理环境 多模态和联网工具更成熟
而本地模型的价值在于:
不消耗 API 额度 代码和文档不离开电脑 没有按 token 计费压力 可以不断试错 可以深度定制 可以作为日常开发的常驻助手 可以充分利用闲置 GPU
更合理的工作流是分层使用:
这套组合最大的意义不是“彻底告别云端 AI”,而是把大量重复、日常、消耗额度的任务迁移到本地,只在真正困难的问题上调用云端模型。
5. 写在最后
这次本地模型部署,最初完全是被逼出来的。
几个小 App 做下来,AI 额度全部耗尽;这个月又不想继续充值,于是只能想办法自救。没想到折腾完之后,反而搭出了一套相当实用的本地 AI 开发环境。
从最终效果看,这套方案已经能够满足我的很多日常需求:
llama.cpp 负责稳定、高效地运行 GGUF 模型 Qwen3.8-27B 负责中文、推理和编程任务 Hermes 负责终端、文件和 Agent 工作流 VS Code 负责把本地模型带进真实工程 RTX 5090 终于不再只是“放在那里看起来很强”
它当然不是零成本。
本地模型需要占用硬盘、显存和电力,也需要花时间处理版本、参数和兼容性问题。但部署完成之后,每次使用时不再需要计算 token,也不用担心一句话问得太长、一个任务跑得太久。
对我来说,这种体验上的变化很明显:
云端模型让我拥有了更强的能力,本地模型则让我敢于无限次尝试。
如果你手头也有一张 NVIDIA 显卡,同时经常使用 AI 写代码、读项目、整理技术文档,那么 Windows + llama.cpp + Qwen + Hermes + VS Code 这套组合,值得认真尝试。
它未必能代替所有云端模型,但完全可以成为一套稳定、私有、低边际成本的本地 AI 基础设施。
而这一切的起点,不过是因为——
这个月的 AI 额度,真的用完了。

夜雨聆风