DSH 怎么用 Ollama 跑本地模型?DeepSeek Harness 自定义提供方填表与图片开关
DeepSeek Harness 本身不带模型,接本地 Ollama 的办法是把它当成一个 OpenAI 兼容端点,在 设置 → 模型 里添加自定义提供方;表单填完还有两个开关要写进 settings.yaml(图片能力与网关兼容性)。 这篇按「先跑起 Ollama → 逐字填表 → 补两个开关」的顺序讲完,命令和字段都对齐官方文档。
DeepSeek Harness 为什么能接 Ollama:自定义提供方就是 OpenAI 兼容端点
Ollama 对外提供 OpenAI 兼容端点,而 DeepSeek Harness 用「自定义提供方」接入任意这类端点,所以接 Ollama 不需要专门的适配器(来源)。 先把本地这一侧准备好:
- 装好 Ollama 并让它跑起来 — 按 Ollama 官方文档安装后启动服务。预期:
ollama命令可用,服务在本地监听;它是前台进程,关掉启动它的终端服务就停了。 - 拉一个模型 — 执行
ollama pull <模型名>。预期:ollama list能看到模型名,这个名字等下要一字不差地填进 DSH。 - 确认端点地址 — Ollama 的 OpenAI 兼容端点是
http://127.0.0.1:11434/v1。预期:地址能访问、端口没被别的进程占用;拉模型或端点起不来,先按《模型连不上排查》分三类原因排。
本地服务不止 Ollama 一种,llama.cpp 的 llama-server 默认 http://127.0.0.1:8080/v1、LM-Kit 以你的启动配置为准,三类服务的对照见《DeepSeek Harness 怎么接入本地大模型》。名字或端口改过,DSH 这边必须同步改,两边不一致必然连不上。
DeepSeek Harness 添加自定义提供方:Provider ID、base URL、协议、凭据与模型
自定义提供方要填五样:小写 Provider ID、显示名称、基础 URL、API 协议、凭据,以及至少一个模型;其中 Provider ID 是永久的,填下去就用在下游所有请求和凭据引用里(来源)。 按官方文档的表单逐字来:
- 打开表单 — 进入 设置 → 模型,选择添加自定义提供方(目录里已有的提供方走「添加提供方」,不用这条路径)。
- 填 Provider ID 与显示名称 — ID 用小写,例如
ollama-local;它同时出现在请求、已保存会话、模型默认值和凭据引用里。预期:保存后 ID 不可改,显示名称随时可改。 - 填基础 URL 与 API 协议 — 基础 URL 填
http://127.0.0.1:11434/v1;协议选openai-completions。预期:这两项决定请求发到哪、按什么形状发;本地服务一般不需要密钥,你的服务若开了鉴权就填上凭据,留空会报MISSING_CREDENTIAL。 - 补至少一个模型 — 手填模型 ID(写错会报
UNKNOWN_MODEL),或点获取可用模型从端点拉列表。预期:列表只更新草稿、保存前不落盘;选中的模型出现在模型选择器里,选中即成为新会话的默认值。 - 保存并验证 — 保存后发一条消息试一次。预期:模型变更在下一次请求就生效,不需要重启服务器;已发过请求的会话仍沿用自己日志里记录的模型。
DeepSeek Harness 图片能力开关与网关兼容性:settings.yaml 里两个易漏字段
手填的模型默认按纯文本处理,要收图得在 $DSH_HOME/settings.yaml 给该模型加 input: [text, image];网关拒绝请求时,则用 compat 的两个开关把请求形状改回它认识的写法(来源)。 两处配置都在 yaml 里:
- 给模型声明图片模态 — 在对应提供方的
models下给目标模型加input:预期:该模型可以收图;手填模型全都要图片,就在路由上写一次yamlllm-pi-ai: providers: ollama-local: api: openai-completions baseURL: http://127.0.0.1:11434/v1 models: - id: vision-model input: [text, image]defaultInput: [text, image]作回退。图片被拒的完整排查见《模型不支持图片怎么办》。 - 目录模型的模态用 modelOverrides 收窄 — 目录提供方没有可填写的
models列表,覆盖要按模型 ID 写:预期:只有这个模型的模态被收窄,同一路由的其它模型不受影响。yamlllm-pi-ai: providers: anthropic: modelOverrides: claude-sonnet-4-5: input: [text] - 网关兼容性改 compat — 声明的推理能力会让系统提示词以
role: "developer"发出,输出上限写成max_completion_tokens,很多网关两者都拒:预期:请求形状改成网关认识的写法;路由的yamlllm-pi-ai: providers: ollama-local: api: openai-completions baseURL: http://127.0.0.1:11434/v1 compat: supportsDeveloperRole: false maxTokensField: max_tokens models: - id: my-modelcompat是其模型的默认值,模型自己写的值逐字段胜出,冒号后留空的键会被拒绝而不是忽略。 - 不放心就看合成结果 — 执行
dsh --dump-config检查组合后的配置树(来源)。预期:能看到刚才写的模型与开关已经进入最终配置,而不是只躺在草稿里。
DeepSeek Harness 接入 Ollama 的注意事项与局限
- DSH 不负责启动 Ollama:本地服务要自己先跑起来,它是前台进程,关掉终端就等于关掉服务,再请求必然失败。
input和compat都是断言、不是检查:声明了端点并不提供的图片能力,不会在这里被拦下,改由提供方拒绝该请求;设置一个网关并不需要的开关,只是发出一个不同的请求。- Provider ID 一次写死:它进了请求、会话、模型默认值与凭据引用,改名等于新建提供方再删旧的。
- 模态的优先级要记清:手填模型默认纯文本;目录模型由目录记录;
defaultInput只对目录未描述的模型作答。 - 本地模型先看显存:模型超过显存时服务要么崩要么慢到不可用,先换小一号的模型,再回 DSH 侧调配置。
与其手改 yaml 去管插件开关,不如用 DSH Plugin Hub(dsh-plugin.org)的设置页:更新设置、安全信任、系统诊断、日志路径都收敛在图形界面里,不必碰配置文件。

来源:DeepSeek Harness 官方文档 - 配置模型、dsh CLI README、Ollama 官方网站、dshplugin/dsh-plugin-hub
常见问题
DeepSeek Harness 不内置模型,接本地 Ollama 走的是「自定义提供方」这条路:先在本地把 Ollama 跑起来,确认它在 127.0.0.1:11434 监听,再到设置 → 模型里添加自定义提供方,base URL 填 http://127.0.0.1:11434/v1。DSH 不会替你启动 Ollama,服务没起就必然连不上。
DeepSeek Harness 的自定义提供方要填五样:小写 Provider ID、显示名称、基础 URL、API 协议、凭据,以及至少一个模型;OpenAI 兼容端点选 openai-completions。Provider ID 是永久的——请求、已保存会话、模型默认值和凭据引用都用它,要改名只能新建一个再删旧的,其余字段仍可编辑。
手填的 DeepSeek Harness 模型默认按纯文本处理,附加图片会在发送前被拒并点名该模型,因为没有任何环节能去询问端点接受哪些模态。要到 $DSH_HOME/settings.yaml 给该模型加 input: [text, image];手填模型全都要图片,就在路由上写一次 defaultInput。
DeepSeek Harness 依据端点 URL 决定请求形状,认不出的地址会当成 OpenAI 本身对待:推理模型的系统提示词以 role: developer 发出、输出上限写成 max_completion_tokens,只认 max_tokens 的网关会直接拒绝。在 $DSH_HOME/settings.yaml 的路由上写 compat,把 supportsDeveloperRole 设为 false、maxTokensField 设为 max_tokens 即可改正。
DeepSeek Harness 的「获取可用模型」查的是表单当前显示的基础 URL 和凭据,拉不到通常就是这两项不对,或者本地 Ollama 根本没在跑。它只更新草稿,保存前不会存下提供方;目录提供方走已安装目录、不发网络请求,所以拉不到列表只可能是自定义提供方这边的问题。
相关术语
- 自定义提供方(custom provider)
- 自定义提供方是 DeepSeek Harness 用来接入任意 OpenAI 兼容端点的配置项,由小写 Provider ID、基础 URL、API 协议、凭据和至少一个模型组成。公司网关、自建服务器和本地 Ollama 都走这条路径,目录里没有的提供方也走它。— DeepSeek Harness 官方文档 - 配置模型
- Provider ID
- Provider ID 是 DeepSeek Harness 里提供方的永久标识,必须小写,请求、已保存会话、模型默认值和凭据引用都会用到它。因此它不能重命名——要换名字只能新建一个提供方再删掉旧的。— DeepSeek Harness 官方文档 - 配置模型
- input / defaultInput
- input 是 DeepSeek Harness 在 settings.yaml 里为单个模型声明模态的字段(例如 [text, image]),defaultInput 则是路由级回退值、默认 [text]。回退不是覆盖:它只为目录未描述的模型作答,目录记录的模型仍按自己的记录走。— DeepSeek Harness 官方文档 - 配置模型
- compat(supportsDeveloperRole / maxTokensField)
- compat 是 DeepSeek Harness 用来校正网关请求兼容性的配置字段,supportsDeveloperRole 决定系统提示词由哪个角色承载,maxTokensField 决定输出上限写进哪个字段。路由上的 compat 是其模型的默认值,模型自己的值逐字段胜出。— DeepSeek Harness 官方文档 - 配置模型
来源
- DeepSeek Harness 官方文档 - 配置模型· deepseek-ai
- dsh CLI README· deepseek-ai
- Ollama 官方网站· Ollama
- dshplugin/dsh-plugin-hub GitHub 仓库· GitHub