DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Web Search Ollama — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@morlay/dsh-web-search-ollama

Web Search Ollama

由 Ollama 支持的 DeepSeek Harness Web 接口搜索提供程序(ctx.web):一个调用 POST https://ollama.com/api/web_search 的 web_search 后端。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @morlay/dsh-web-search-ollama@0.0.1-alpha.4
README兼容性版本

兼容性与来源证明

Web Search Ollama 以 @morlay/dsh-web-search-ollama 发布,当前版本为 0.0.1-alpha.4。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/10/16

版本

0.0.1-alpha.4prerelease
2026/9/24
查看其余 1 个版本收起版本
0.0.1-alpha.3prerelease
2026/9/23

相关插件

正在加载相关插件…

最新版
0.0.1-alpha.4
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
28.6 kB
文件数
11
Surface
any
许可证
MIT
发布源
npm
GitHub
★ 8
周下载
53
最近提交
2026/10/16
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 search-research 分类下经过校验的插件。

Weknora@wxg-prc-cpg/dsh-weknora适用于 DeepSeek Harness (dsh) 的 WeKnora 知识检索工具:通过自有知识库进行语义搜索、文档阅读以及 RAG/代理回答。Free Searchdsh-free-searchDeepSeek Harness 的免费网页搜索:24 个引擎(Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl/Parallel 无需密钥;通过 MCP 使用 Zhihu 全局/站内搜索,以及 Perplexity/SerpBase/DeepSeek/You.com/Baidu/Kimi/Aliyun/Doubao,需密钥;OpenAI/Gemini/ClaudeDejadsh-dejaDeepSeek Harness 的 deja-vu 记忆:其他 40 个编码代理的会话历史,可搜索,并在每个步骤前调用——本地索引,无需 LLM。Builtin Browserdsh-builtin-browser适用于 DeepSeek Harness 的共享真实浏览器插件:安装即用——可由人类接管的可见原生浏览器,并由代理通过 CDP 驱动。DOM 级交互(兼容 React/Vue)、按任务隔离会话、Cookie 持久化(dsh_browser_auth)、C

README

@morlay/dsh-web-search-ollama

往 ctx.web 注册一个搜索后端:web_search 的检索走 Ollama 自己的 POST https://ollama.com/api/web_search,用与 llm-pi-ai 的 ollama route 同一个 OLLAMA_API_KEY。

为什么不是"复用上游的 messages 后端"

上游 @deepseek-ai/dsh-web-search-deepseek 走 Anthropic Messages 的 web_search_20250305 server tool,看起来只要把 baseURL 指到 https://ollama.com/v1 就能白拿 Ollama 的搜索。实测不行:真发一次

curl https://ollama.com/v1/messages -H "Authorization: Bearer $OLLAMA_API_KEY" \
  -H "anthropic-version: 2023-06-01" -H "content-type: application/json" \
  -d '{"model":"deepseek-v4.1-flash","max_tokens":4096,
       "messages":[{"role":"user","content":[{"type":"text","text":"Perform a web search for the query: cordis plugin framework"}]}],
       "tools":[{"type":"web_search_20250305","name":"web_search","max_uses":5}]}'

回的 content 块只有 thinking + tool_use(stop_reason: tool_use)——Ollama 把这个 server tool 降级成普通客户端工具,它不自己执行搜索,要求调用方执行后再回传 tool_result。而那个上游 provider 只认服务端自执行后返回的 web_search_tool_result 块,找不到就报 WEB_PROVIDER_ERROR("returned no web_search_tool_result blocks")。Ollama 官方文档那句 "hosted web search are not fully supported"(docs.ollama.com/api/anthropic-compatibility) 就是这个意思,issue #17283 里说的 WebSearchAnthropicWriter 拦截只发生在本地 server 的 cloud 模型路径上。

Ollama 真正对外提供搜索的是它自己的 REST 接口——同一个 key、一次 HTTP、返回扁平 {results:[{title,url,content}]}:

curl https://ollama.com/api/web_search -H "Authorization: Bearer $OLLAMA_API_KEY" \
  -H "content-type: application/json" -d '{"query":"cordis plugin framework"}'

本包就是把这一条接进 ctx.web,代价只有一个 ~200 行的 provider。

配置

字段默认含义
apiKey—字面 key;优先用下面那个引用,别把密钥写进配置文件
apiKeyEnvOLLAMA_API_KEY每次搜索解析一次的凭证引用(凭证服务,缺席时回退启动环境)
baseURLhttps://ollama.com端点根;/api/web_search 由 provider 拼
maxResults—(Ollama 自己的默认 5)请求没带 maxResults 时的默认结果数

行为

  • 结果映射:每条 results[] 给一个 source;title / content 空串视为缺失 (content → snippet),没有 url 的条目直接丢掉(seam 的 source 必须有 url)。 Ollama 不返回生成式答案,所以结果里没有 content 字段。
  • max_results 上限 10:Ollama 的硬上限;请求与配置给出的更大值在发出前压到 10。
  • 错误码:HTTP 失败 → WEB_PROVIDER_ERROR(优先用响应体里的 error 文案,非 JSON 体退回 Ollama API error (HTTP <status>));网络失败 → WEB_PROVIDER_ERROR;取消 → WEB_ABORTED (任何阶段,含读体);取不到 key → WEB_PROVIDER_CREDENTIAL_MISSING 且不发请求。
  • 可用性检查不联网:available() 只看 key 有没有来源、baseURL 能否解析。

验证

src/__tests__/provider.spec.ts 是 mock 单测,默认 just test 覆盖它。链路是否真的成立由 e2e/provider.e2e.spec.ts 打真端点守——它刻意放在 src/__tests__/ 之外: 根 vitest.config.ts 的 include 收不到它,默认全量测试不会去打外网,只由显式命令触发(OLLAMA_API_KEY 从启动环境注入,缺席则整体跳过):

mise exec -- pnpm --filter @morlay/dsh-web-search-ollama run test:e2e

两条都过才算通过:provider 直连拿回可引用 source,以及 provider 装进 ctx.web 后选中它再搜一次。别用 mock 全绿替代它——这个包的第一版就是"配置指到 Ollama 的 messages 端点"、mock 也全绿,真调用却是错的。 触发方式、门控与判据的 home 是包层规范。

装配

注册行由本包的 bundle patch(cordis.patch.yml)插在 host 层; 基础 bundle 的 web 行由 @morlay/dsh-profile 的配置层切到 ollama——装配归本包、配置归 profile:

- id: web
  config:
    searchProvider: ollama
    fetchProvider: http
- insert:
    - id: web-search-ollama
      name: "@morlay/dsh-web-search-ollama"
      config:
        apiKeyEnv: OLLAMA_API_KEY

注册行只能有一份:它在 profile 平面只装一次,同一个 provider id 注册两次会撞 WEB_DUPLICATE_PROVIDER;选择权在 web 行的 searchProvider,而那一行本来就是 host 行。

边界

  • 只注册搜索后端:web_fetch 仍走基础 bundle 的 web-fetch-http,本包不碰抓取。
  • 一次只选一个后端:ctx.web 的 searchProvider 是单选,默认 ollama; deepseek-official 后端仍由基础 bundle 注册着,改写那一行即可切回(但它需要 DEEPSEEK_API_KEY)。
  • 不做设置页 section:配置面就是那一行 patch(见 dsh-profile 的设计记录)。