DSH 怎么用 Ollama 跑本地模型?DeepSeek Harness 自定义提供方填表与图片开关

配置与使用发布于 2026-09-10作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSH pluginOllama本地模型自定义提供方settings.yaml
dsh 接入本地模型走自定义提供方:先在本地跑起 Ollama(默认 127.0.0.1:11434),再到 设置 → 模型 添加自定义提供方,逐字填 Provider ID、base URL、API 协议与模型;图片能力与网关兼容性两个开关写在 settings.yaml 里。

DeepSeek Harness 本身不带模型,接本地 Ollama 的办法是把它当成一个 OpenAI 兼容端点,在 设置 → 模型 里添加自定义提供方;表单填完还有两个开关要写进 settings.yaml(图片能力与网关兼容性)。 这篇按「先跑起 Ollama → 逐字填表 → 补两个开关」的顺序讲完,命令和字段都对齐官方文档。

DeepSeek Harness 为什么能接 Ollama:自定义提供方就是 OpenAI 兼容端点

Ollama 对外提供 OpenAI 兼容端点,而 DeepSeek Harness 用「自定义提供方」接入任意这类端点,所以接 Ollama 不需要专门的适配器(来源)。 先把本地这一侧准备好:

  1. 装好 Ollama 并让它跑起来 — 按 Ollama 官方文档安装后启动服务。预期ollama 命令可用,服务在本地监听;它是前台进程,关掉启动它的终端服务就停了。
  2. 拉一个模型 — 执行 ollama pull <模型名>预期ollama list 能看到模型名,这个名字等下要一字不差地填进 DSH。
  3. 确认端点地址 — 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 是永久的,填下去就用在下游所有请求和凭据引用里(来源)。 按官方文档的表单逐字来:

  1. 打开表单 — 进入 设置 → 模型,选择添加自定义提供方(目录里已有的提供方走「添加提供方」,不用这条路径)。
  2. 填 Provider ID 与显示名称 — ID 用小写,例如 ollama-local;它同时出现在请求、已保存会话、模型默认值和凭据引用里。预期:保存后 ID 不可改,显示名称随时可改。
  3. 填基础 URL 与 API 协议 — 基础 URL 填 http://127.0.0.1:11434/v1;协议选 openai-completions预期:这两项决定请求发到哪、按什么形状发;本地服务一般不需要密钥,你的服务若开了鉴权就填上凭据,留空会报 MISSING_CREDENTIAL
  4. 补至少一个模型 — 手填模型 ID(写错会报 UNKNOWN_MODEL),或点获取可用模型从端点拉列表。预期:列表只更新草稿、保存前不落盘;选中的模型出现在模型选择器里,选中即成为新会话的默认值。
  5. 保存并验证 — 保存后发一条消息试一次。预期:模型变更在下一次请求就生效,不需要重启服务器;已发过请求的会话仍沿用自己日志里记录的模型。

DeepSeek Harness 图片能力开关与网关兼容性:settings.yaml 里两个易漏字段

手填的模型默认按纯文本处理,要收图得在 $DSH_HOME/settings.yaml 给该模型加 input: [text, image];网关拒绝请求时,则用 compat 的两个开关把请求形状改回它认识的写法(来源)。 两处配置都在 yaml 里:

  1. 给模型声明图片模态 — 在对应提供方的 models 下给目标模型加 input
    yaml
    llm-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] 作回退。图片被拒的完整排查见《模型不支持图片怎么办》。
  2. 目录模型的模态用 modelOverrides 收窄 — 目录提供方没有可填写的 models 列表,覆盖要按模型 ID 写:
    yaml
    llm-pi-ai:
      providers:
        anthropic:
          modelOverrides:
            claude-sonnet-4-5:
              input: [text]
    
    预期:只有这个模型的模态被收窄,同一路由的其它模型不受影响。
  3. 网关兼容性改 compat — 声明的推理能力会让系统提示词以 role: "developer" 发出,输出上限写成 max_completion_tokens,很多网关两者都拒:
    yaml
    llm-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-model
    
    预期:请求形状改成网关认识的写法;路由的 compat 是其模型的默认值,模型自己写的值逐字段胜出,冒号后留空的键会被拒绝而不是忽略。
  4. 不放心就看合成结果 — 执行 dsh --dump-config 检查组合后的配置树(来源)。预期:能看到刚才写的模型与开关已经进入最终配置,而不是只躺在草稿里。

DeepSeek Harness 接入 Ollama 的注意事项与局限

  1. DSH 不负责启动 Ollama:本地服务要自己先跑起来,它是前台进程,关掉终端就等于关掉服务,再请求必然失败。
  2. inputcompat 都是断言、不是检查:声明了端点并不提供的图片能力,不会在这里被拦下,改由提供方拒绝该请求;设置一个网关并不需要的开关,只是发出一个不同的请求。
  3. Provider ID 一次写死:它进了请求、会话、模型默认值与凭据引用,改名等于新建提供方再删旧的。
  4. 模态的优先级要记清:手填模型默认纯文本;目录模型由目录记录;defaultInput 只对目录未描述的模型作答。
  5. 本地模型先看显存:模型超过显存时服务要么崩要么慢到不可用,先换小一号的模型,再回 DSH 侧调配置。

与其手改 yaml 去管插件开关,不如用 DSH Plugin Hubdsh-plugin.org)的设置页:更新设置、安全信任、系统诊断、日志路径都收敛在图形界面里,不必碰配置文件。

设置

来源:DeepSeek Harness 官方文档 - 配置模型dsh CLI READMEOllama 官方网站dshplugin/dsh-plugin-hub

常见问题

DeepSeek Harness 怎么用 Ollama 跑本地模型?需要先装 Ollama 吗、地址填什么?

DeepSeek Harness 不内置模型,接本地 Ollama 走的是「自定义提供方」这条路:先在本地把 Ollama 跑起来,确认它在 127.0.0.1:11434 监听,再到设置 → 模型里添加自定义提供方,base URL 填 http://127.0.0.1:11434/v1。DSH 不会替你启动 Ollama,服务没起就必然连不上。

DeepSeek Harness 添加自定义提供方要填哪些字段?Provider ID 能改吗?

DeepSeek Harness 的自定义提供方要填五样:小写 Provider ID、显示名称、基础 URL、API 协议、凭据,以及至少一个模型;OpenAI 兼容端点选 openai-completions。Provider ID 是永久的——请求、已保存会话、模型默认值和凭据引用都用它,要改名只能新建一个再删旧的,其余字段仍可编辑。

DeepSeek Harness 里手填的模型发不了图片,开关在哪?

手填的 DeepSeek Harness 模型默认按纯文本处理,附加图片会在发送前被拒并点名该模型,因为没有任何环节能去询问端点接受哪些模态。要到 $DSH_HOME/settings.yaml 给该模型加 input: [text, image];手填模型全都要图片,就在路由上写一次 defaultInput。

DeepSeek Harness 接上本地模型却每个请求都被拒,compat 要改哪两个字段?

DeepSeek Harness 依据端点 URL 决定请求形状,认不出的地址会当成 OpenAI 本身对待:推理模型的系统提示词以 role: developer 发出、输出上限写成 max_completion_tokens,只认 max_tokens 的网关会直接拒绝。在 $DSH_HOME/settings.yaml 的路由上写 compat,把 supportsDeveloperRole 设为 false、maxTokensField 设为 max_tokens 即可改正。

DeepSeek Harness 点「获取可用模型」拉不到列表,是地址填错还是 Ollama 没跑?

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 官方文档 - 配置模型

来源