CH 16 · 本地部署与 Token 自由
本章目标
前面这么多章,你调的一直是 DeepSeek 官方 API——好用,但是按量计费,Agent 会话又特别能吃 token(每步工具结果都要喂回上下文)。而且这不只是 DeepSeek 一家的事:只要走云端 API,不管官方还是第三方,按量付费躲不掉。
这一章给你一条彻底不同的路:本地部署。把开源模型下载到你自己电脑上跑,推理全程不经过任何第三方服务器——没有 token 账单,就是真正的"Token 自由"。
做法在 CH 06 你已经学过:dsh 只认"OpenAI 兼容端点",模型是配置不是绑定。本章就是把这个能力用到一个真实场景——让 dsh 跑在你自己的模型上。
本地部署和调用云端,差在哪
先搞清楚"为什么本地部署不用钱"。你用 DeepSeek 官方 API 时,提示词、工具结果、文件内容都要发到它的服务器,由它用自家 GPU 推理,再按 token 收费。不管哪家的云端 API 都这样:算力是人家的,账单就跟着 token 走。
本地部署是反过来的:模型下载到你电脑上,推理跑在你自己的显卡/CPU 上,没有第三方服务器参与。算力是你自己的、电费是你自己出的,自然就没有按 token 的账单——这就是"Token 自由"的本意。
| 维度 | 云端 API(如 DeepSeek 官方) | 本地部署(LM Studio 跑开源模型) |
|---|---|---|
| 计费 | 按 token 计费 | 免费(只花电费) |
| 联网 | 必须联网 | 可完全离线 |
| 数据 | 会送到服务商服务器 | 不出本机 |
| 能力 | 旗舰模型,最强 | 取决于你的显卡能跑多大模型 |
| 上手成本 | 零,注册就有 Key | 装软件、下载模型(几个 GB) |
本地部署的特色一句话:免费、离线、私密,但能力受限于你的硬件——你显卡越强,能跑的模型越大,效果越好。
原理:模型即配置
dsh 之所以能随便换模型,靠的是模型路由插件 llm-pi-ai:它把"模型供应商"当成一段 YAML 配置,任何暴露 OpenAI Chat Completions 协议(也就是 /v1/chat/completions)的端点,都能接进来当提供方。换模型 = 换一段配置,不用改 dsh 本身。
所以本地部署和接官方 API,做法在 CH 06 都见过,只是端点地址不同:
| 方向 | Base URL | 密钥 | 典型模型 |
|---|---|---|---|
| DeepSeek 官方(云端) | https://api.deepseek.com | 官方 Key | deepseek-v4-flash 等 |
| LM Studio 本地 | http://localhost:1234/v1 | 随意(本地忽略) | Qwen3 8B 等 |
接本地模型:LM Studio 上手
第 1 步:装 LM Studio、下载一个模型
本地模型运行器不止一个:你要是熟悉 Ollama,也可以直接用 Ollama(命令行上手,配置方式跟下面一模一样)。这一章统一用 LM Studio 演示——带图形界面,对新手最友好。
LM Studio 支持 Windows / macOS / Linux,去LM Studio 官网下载安装包装上就行。
装好后,先别急着猜该下哪个模型,直接把这件事交给 dsh——它自己会检查你电脑的环境,再给你推荐。在 Web UI 的输入框里发这条:
检查我这台电脑的显卡和显存,按 Q4 量化估算能舒服地跑多大参数的本地模型;推荐 2~3 个适合本地 Agent 的模型(必须支持工具调用),给出在 LM Studio 搜索框里能直接搜到的模型名,每个一句话说明理由。只做查询和推荐,不要做其他操作。dsh 会读出你的显卡、给你列几个具体模型名。拿着名字去 LM Studio 里搜就行。
打开 LM Studio:左下角 设置 → 探索,在搜索框里搜 dsh 推荐的那个模型名。搜索结果里打上绿色标签(表示兼容你的硬件、可以全 GPU 加载)的条目,就是你这台机器能跑的,直接点下载。

一个不变的提醒:本地模型跑 Agent,工具调用能力比跑分重要——模型要能听指令去调工具,否则 Agent 转不动。
第 2 步:打开本地服务器、确认端点活着
模型下载完成后,LM Studio 左下角 设置 → 本地模型 → 本地模型API(Local Server),把 本地API服务器 开关打开。默认监听 http://localhost:1234,OpenAI 兼容端点挂在 /v1 下——页面上会直接显示基础 URL http://localhost:1234/v1,看到"正在运行"就说明服务器起来了。

浏览器打开:
http://localhost:1234/v1/models能看到 JSON 里列出你下载的模型,就说明端点没问题。这一步顺带能看到每个模型的准确 ID(以这里返回的为准,比如我下载的 Gemma 4 E2B 显示为 gemma-4-e2b-it-qat),后面填配置要用。

资源库里的模型参数
想看看模型跑起来用了哪些参数?左下角 设置 → 本地模型 → 资源库,找到你的模型,点它右侧的设置按钮,会打开"模型默认设置"页:


里面分提示词、上下文与性能、生成三块。Automatic Optimize Based on Hardware(按硬件自动优化,标着 RECOMMENDED)默认开着,上下文长度、GPU 卸载这些全是 AUTO——LM Studio 会按你的电脑自动调。本章演示全部用默认值,一个都不用改;以后要调再回来这里。
第 3 步:在 dsh 里加"自定义提供方"
按 CH 06 的方式二走:设置 → 模型 → 添加自定义提供方,填:
| 要填的 | 填什么 |
|---|---|
| Provider ID | lm-studio-local(小写) |
| API 地址 | http://localhost:1234/v1 |
| API 协议 | OpenAI Chat Completions 兼容 |
| 密钥 | 随便填(本地不校验,填 lm-studio 占位即可) |
| 模型 | 上一步 /v1/models 里看到的完整 ID |

效果与期望管理
- 好处:完全离线、零 API 费用、代码和文档不出本机——隐私敏感的场景,本地模型是唯一选择。
- 现实:本地小模型是拿来"跑通循环"的,不是拿来干重活的。Agent 特别吃工具调用和长上下文,小模型会比旗舰模型更容易漏工具调用、计划得糙。插件开发时拿它测试很合适,真要干活还是切回云端模型。
这里演示部署的 Gemma 4 E2B 是视觉模型(Google 官方:E2B 带视觉编码器,支持图片输入)——但它想在 dsh 里真正收图识图,还得声明一下:dsh 的自定义提供方默认按纯文本处理,不声明就把图片当无效输入拒绝(CH 06 讲过)。做法:在 dsh 的设置窗口点右上角打开配置文件,找到 llm-pi-ai.providers.lm-studio-local.models 下对应模型,补一行 input: [text, image]:
llm-pi-ai:
providers:
lm-studio-local:
apiKeyEnv: LM_STUDIO_API_KEY
api: openai-completions
baseURL: http://localhost:1234/v1
models:
- id: gemma-4-e2b-it-qat
input: [text, image]保存后重开会话,给它发张图就能识图了。

工具调用也能跑通:演示时发了一句"创建一个 txt 文件告诉我你是谁",模型真的去调了 write 工具——中途报错重试了几次,最后成功写出了 identity.txt。这证明本地模型能真正跑 dsh 的工具循环,不只是聊天;只是没旗舰那么稳,报错会多几次。

本地还是云端:怎么选
| 场景 | 选谁 |
|---|---|
| 日常干活、要最强效果 | 云端 API(按量,省心) |
| 简单的每日任务,例如之前用 aihot 做的定时热点简报 | LM Studio 本地模型(离线,免费) |
它们不是互斥的:dsh 的提供方可以同时挂好几个,新会话里随手切。成本敏感时把日常会话路由到 flash、把重活留给 pro,就是最简单的省钱姿势;本地模型再给测试和隐私场景兜底。
常见坑
| 坑 | 怎么避开 |
|---|---|
| Base URL 写错 | OpenAI 兼容端点通常以 /v1 结尾,先浏览器开 GET {baseURL}/models 验证 |
| 密钥环境变量没设 | apiKeyEnv 只引用不创建;确认 dsh 启动的环境里真能读到这个变量 |
| 模型 ID 对不上 | 本地模型必须用 /v1/models 里返回的完整 ID(厂商/模型名),别凭印象填 |
| 图片报错、提示不支持识图 | 自定义提供方的模型默认按纯文本处理——即使模型本身支持识图,也要在提供方配置里给模型加 input: [text, image] |
| 本地模型老是漏工具调用 | 不是配错了,是小模型能力边界——回云端模型或换更大的本地模型 |
这一章你学到了什么
- [ ] 说清"模型即配置":dsh 只认 OpenAI 兼容端点,换模型 = 换一段提供方配置
- [ ] 说清本地部署和云端 API 的本质区别:为什么不用钱(算力是自己的)、离线、数据不出本机
- [ ] 会用 LM Studio 下载模型、打开本地服务器,确认
localhost:1234/v1/models活着 - [ ] 会在 dsh 加
lm-studio-local自定义提供方并成功跑一个本地会话 - [ ] 知道视觉模型要标
input: [text, image],知道本地小模型适合测试不适合干重活
