前言¶
DSH 的理念是「一切皆插件」,但当前版本的 Models 页没有给第三方模型暴露编辑入口。想在 DeepSeek Harness 的 Web 界面里用 Ollama Cloud 的模型聊天,或者把搜索、抓取切到 Ollama 的 web_search / web_fetch 后端,就需要一个插件来补上这一层。下面介绍的 dsh-llm-ollama 就是做这件事的。
这是什么¶
dsh-llm-ollama 是 DeepSeek Harness 的 Ollama Cloud 集成插件,由 NOirBRight 维护,MIT 许可。package.json 的描述是:Ollama Cloud models, OpenAI-compatible chat, and Web Search/Fetch for DeepSeek Harness。
设计上有一个明确的取舍:聊天走 Ollama 的 OpenAI 兼容 Chat Completions 端点,经共享 pi-ai 适配器;模型发现和 Web Search/Fetch 保留 Ollama 原生 API,因为这些独立能力不属于聊天协议。协议与能力拆分的细节记录在仓库的 ADR 0001。
核心功能¶
按已核实的能力列一下:
1、Ollama Cloud 聊天:POST <openai-base>/chat/completions,baseURL 里的 /api 自动映射到 /v1。
2、模型发现(Ollama 原生):GET /api/tags + POST /api/show。
3、Web Search provider:ollama-cloud(POST /api/web_search),可搭配任意所选聊天模型。
4、Web Fetch provider:ollama-cloud(POST /api/web_fetch),同样可搭配任意所选聊天模型。
后两个是 ctx.web provider,DeepSeek、Codex、Kimi 或其他 OpenAI 兼容聊天模型都能调用 Ollama 的 web_search 工具,只要 profile 选了 ollama-cloud。
Web 配置部分,插件在 Settings → LLM Providers 下贡献一张 Ollama Cloud 卡片(key: llm-ollama)和 Host 的 llm 路由,设置与凭据经认证的 Connection RPC 管理,凭据字面量不会回传浏览器。
获取可用模型时,Host 读 /api/tags,去重后经 /api/show 并发增强最多六个模型。原生元数据提供上下文窗口和 vision、thinking、tools 标志,这些是 /v1/models 不暴露的。
Cloud 用量:读 GET <baseURL>/usage,渲染会话与每周窗口的消耗百分比,外加每周每模型请求数。自托管端点没有用量接口时显示不支持提示,而不是报错。
模型目录默认折叠,每模型一行:拖拽手柄排序(顺序随目录持久化),chevron 展开该行的上下文窗口、Default thinking 和能力标志,垃圾桶按钮删除。
可靠性方面:符合条件的模型请求失败默认最多重试 8 次;Web 请求默认 15 秒预算,瞬时超时或响应前传输失败重试一次;重定向在跟随前会被拒绝。
安装与启用¶
先说版本要求:本版本要求 DeepSeek Harness 0.1.2-alpha.4 与 @deepseek-ai/cordis@4.0.2,不兼容 Alpha.1–Alpha.3;旧运行时用户须保留最后适配该运行时的插件 tag(当前版本 0.6.16)。Node 引擎要求 ^22.19.0 || >=24.0.0。
README 给出的安装方式是直接从 GitHub 安装,先装 dsh-llm-providers-ui 0.1.3,再装 dsh-llm-ollama 0.6.16,然后启动 Web:
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-providers-ui/releases/download/v0.1.3/dsh-llm-providers-ui-0.1.3.tgz
dsh plugin --profile web add --force \
https://github.com/NOirBRight/dsh-llm-ollama/releases/download/v0.6.16/dsh-llm-ollama-0.6.16.tgz
dsh web
仓库跟踪的是可直接发布的 lib 构建产物,所以 GitHub 安装不需要 build-script 白名单。
注意 dsh-llm-providers-ui 必须在 profile 中显式安装:LLM Providers 设置页和共享的 llm-providers order store 归它所有。缺少 owner 时,Web 端的 Providers 页与这张卡片会被省略并在浏览器控制台告警,但 Host 模型路由 ollama-cloud 仍然可用。与 owner 共存时,装载顺序无所谓。
典型用法¶
固定 Web providers¶
插件注册这两个 provider 并不改变部署策略,需要在 profile patch 里固定:
- id: web
config:
searchProvider: ollama-cloud
fetchProvider: ollama-cloud
省略 fetchProvider 可以只迁移搜索,保留内置 HTTP fetcher。
插件配置¶
README Config 节给出的示例:
- id: llm-ollama
name: 'dsh-llm-ollama'
config:
apiKeyEnv: OLLAMA_API_KEY
baseURL: https://ollama.com/api
defaultContextWindow: 262144
streamIdleTimeoutMs: 300000
webRequestTimeoutMs: 15000
retryPolicy:
mode: normal
maxRetries: 8
backoff:
initialDelayMs: 500
maxDelayMs: 10000
jitterRatio: 0.1
models:
- id: gpt-oss:20b
name: GPT-OSS 20B
contextWindow: 131072
thinking: true
- id: llava
name: LLaVA
contextWindow: 4096
vision: true
拉取模型与查看用量¶
经过上面的步骤,dsh web 启动后打开 Settings → LLM Providers → Ollama Cloud。点获取可用模型会立即打开选择器,用未保存的 endpoint 和一次性 key 调认证 Connection RPC;应用后替换草稿目录,并保留 current-only 模型。Cloud 用量区的呈现镜像 ollama.com/settings。
远程浏览器访问¶
对于远程浏览器,先配置 Host 允许列表,再使用 DSH 打印的认证 URL;或者使用 SSH loopback 隧道。
认证与信任边界¶
插件的管理、发现和用量通道经 Alpha.4 Connection 服务的两参数 rpc.handle(channel, handler) 注册,不自行选择 authority。每个进程铸造随机 launch token,DSH 只在 GET / 兑换该 token 为绑定了 authority 的签名浏览器会话 cookie;缺失、过期、畸形或 authority 错误的 cookie 在 RPC 分发前返回 401,静态资源保持公开。认证之前,Connection 要求 Host 为 loopback 或匹配配置的 --trusted-host 条目,附加的 Origin 必须等于 Host,Host/Origin 校验失败返回 403。插件不绕过 Host 信任与浏览器会话检查。
适用场景与注意¶
适合的人群:想在 DSH Web 里用 Ollama Cloud 模型聊天的用户;想把搜索或抓取切到 Ollama 原生后端的用户;需要上下文窗口、vision / thinking / tools 等原生元数据的用户。
几点注意:
1、协议取舍:OpenAI Responses 非默认(Ollama 仅支持非有状态 flavor);Anthropic Messages 非默认(需额外 Bearer header,且无模型列表与提示缓存)。
2、账户配额耗尽时,Ollama 真实 API 检查保持 SKIP-QUOTA。
3、该插件以当前 dsh 进程的权限运行,安装前建议先查看仓库源码与许可证(MIT),确认可信任再装。
小结¶
dsh-llm-ollama 把 Ollama Cloud 的聊天、模型元数据、用量查看和原生 Web 搜索抓取整合进 DeepSeek Harness,版本兼容边界和认证策略都写得清楚。仓库地址:https://github.com/NOirBRight/dsh-llm-ollama ,社区目录页(独立站点,与 DeepSeek / 幻方无官方从属关系):https://www.skillhub.cn/plugins/NOirBRight/dsh-llm-ollama 。