dsh-web-search
Manifest validA DeepSeek Harness plugin for selecting and routing web search providers.
dsh-web-search
Host plugin for selecting and routing DeepSeek Harness web_search backends.
Requires DSH 0.1.7-rc.1 or later (declared as a @deepseek-ai/dsh peer). On DSH 0.1.5 use dsh-web-search 0.3.0; see docs/compatibility-0.2.0.md.
English
What it does
The plugin registers one ctx.web provider named dsh-web-search-selected. The provider field of the web-search entry chooses the live backend. That field is volatile, so the DSH settings UI lists it in the generic plugin settings form for the web-search entry and saves the selection to the profile's cordis.patch.yml.
Request path:
web_search
-> ctx.web
-> dsh-web-search-selected
-> selected backend
Built-in backends:
| ID | Behavior |
|---|---|
openai-responses | OpenAI Responses API with the native web_search tool |
deepseek-official | DeepSeek native web search protocol |
The plugin identity is the router, not any one model or vendor.
Install
dsh plugin --profile web add github:RailgunHamster/dsh-web-search
dsh plugin --profile web install
Restart the Web profile:
dsh web
Or add it to the Web profile package.json by hand:
{
"dependencies": {
"dsh-web-search": "git+https://github.com/RailgunHamster/dsh-web-search.git"
},
"dsh": {
"profile": {
"bundles": [
"dsh-web-search"
]
}
}
}
cd "$env:USERPROFILE\.dsh\profiles\web"
pnpm install
dsh web
The bundled cordis.patch.yml then:
- Disables the shipped
web-search-deepseekprovider. - Points
@deepseek-ai/dsh-websearchProvideratdsh-web-search-selected. - Inserts
dsh-web-searchinto the current composition.
Configuration
The web-search entry's config accepts:
| Key | Default | Meaning |
|---|---|---|
provider | openai-responses | Selected backend |
responsesApiKeyEnv | OPENAI_API_KEY | Credential / env name for Responses search |
responsesBaseURL | https://api.openai.com/v1 | Responses API base URL |
responsesModel | gpt-4o | Model that exposes tools: [{ type: "web_search" }] |
responsesMaxTokens | 1024 | max_output_tokens for Responses search |
deepseekApiKeyEnv | DEEPSEEK_API_KEY | Credential / env name for DeepSeek search |
deepseekBaseURL | https://api.deepseek.com/anthropic/v1 | DeepSeek Anthropic-compatible base URL |
deepseekModel | deepseek-v4-flash | DeepSeek search model |
deepseekApiVersion | 2023-06-01 | anthropic-version header |
deepseekMaxTokens | 4096 | DeepSeek max_tokens |
deepseekMaxUses | 5 | DeepSeek web_search max_uses |
Provide keys through DSH credentials or the launching environment. Do not put real keys in Git, cordis.patch.yml, or this README.
Example entry in the profile's cordis.patch.yml:
- id: web-search
config:
provider: openai-responses
responsesApiKeyEnv: OPENAI_API_KEY
responsesBaseURL: https://api.openai.com/v1
responsesModel: gpt-4o
Switching provider in the settings form saves immediately and applies to later web_search calls. A DSH restart is not required for that switch. The other fields are ordinary config: change them in cordis.patch.yml, and DSH re-applies the plugin.
On its first boot DSH 0.1.7+ imports a legacy settings.yaml web-search: section into this entry, provided 0.4.0 is already installed then. If that boot ran with 0.3.x, the selection stays in settings.yaml.imported; set provider on the entry above.
Verify
dsh --profile web --dump-config | Select-String -Pattern 'searchProvider|web-search-deepseek|web-search'
Expected:
searchProvider: dsh-web-search-selected
web-search-deepseek: disabled: true
web-search: dsh-web-search
Then run a normal web_search. The default Responses backend posts:
POST {responsesBaseURL}/responses
tools: [{ "type": "web_search" }]
The plugin maps returned text and url_citation annotations to Harness content and sources.
Development
Host or bundle cordis.patch.yml changes need a full DSH Web restart, then a browser refresh.
Do not commit:
node_modules/.dsh/settings.yamlor a profilecordis.patch.yml- credential files
.envfiles- API keys, private keys, or session data
License
MIT
中文
功能
需要 DSH 0.1.7-rc.1 及以上(以 @deepseek-ai/dsh peer 声明)。DSH 0.1.5 请用 dsh-web-search 0.3.0,见 docs/compatibility-0.2.0.md。
插件注册一个名为 dsh-web-search-selected 的 ctx.web provider。web-search 条目的 provider 字段决定当前搜索后端。该字段是 volatile 的,DSH 设置界面会在 web-search 条目的通用插件设置表单里列出它,选择保存到 profile 的 cordis.patch.yml。
请求路径:
web_search
-> ctx.web
-> dsh-web-search-selected
-> 当前选中的 backend
内置 backend:
| ID | 行为 |
|---|---|
openai-responses | 调用 OpenAI Responses API 的原生 web_search 工具 |
deepseek-official | 使用 DeepSeek 原生 web search 协议 |
插件本身是路由器,不绑定某个模型或厂商。
安装
dsh plugin --profile web add github:RailgunHamster/dsh-web-search
dsh plugin --profile web install
然后重启 Web profile:
dsh web
也可以手动改 Web profile 的 package.json:
{
"dependencies": {
"dsh-web-search": "git+https://github.com/RailgunHamster/dsh-web-search.git"
},
"dsh": {
"profile": {
"bundles": [
"dsh-web-search"
]
}
}
}
cd "$env:USERPROFILE\.dsh\profiles\web"
pnpm install
dsh web
插件自带的 cordis.patch.yml 会:
- 禁用 shipped 的
web-search-deepseekprovider。 - 将
@deepseek-ai/dsh-web的searchProvider指向dsh-web-search-selected。 - 把
dsh-web-search插入当前 composition。
配置
web-search 条目的配置支持:
| 字段 | 默认值 | 含义 |
|---|---|---|
provider | openai-responses | 当前 backend |
responsesApiKeyEnv | OPENAI_API_KEY | Responses 搜索使用的凭据 / 环境变量名 |
responsesBaseURL | https://api.openai.com/v1 | Responses API 根地址 |
responsesModel | gpt-4o | 支持 tools: [{ type: "web_search" }] 的模型 |
responsesMaxTokens | 1024 | Responses 搜索的 max_output_tokens |
deepseekApiKeyEnv | DEEPSEEK_API_KEY | DeepSeek 搜索使用的凭据 / 环境变量名 |
deepseekBaseURL | https://api.deepseek.com/anthropic/v1 | DeepSeek Anthropic 兼容根地址 |
deepseekModel | deepseek-v4-flash | DeepSeek 搜索模型 |
deepseekApiVersion | 2023-06-01 | anthropic-version 请求头 |
deepseekMaxTokens | 4096 | DeepSeek max_tokens |
deepseekMaxUses | 5 | DeepSeek web_search 的 max_uses |
密钥只能放在 DSH credentials 或启动环境里,不要写入 Git、cordis.patch.yml 或本文。
profile cordis.patch.yml 条目示例:
- id: web-search
config:
provider: openai-responses
responsesApiKeyEnv: OPENAI_API_KEY
responsesBaseURL: https://api.openai.com/v1
responsesModel: gpt-4o
在设置表单里切换 provider 会立刻保存,并作用于之后的 web_search,不必为了切换而重启 DSH。其余字段是普通配置:改 cordis.patch.yml,DSH 会重新应用插件。
DSH 0.1.7+ 首次启动时会把旧 settings.yaml 的 web-search: 段导入这个条目,前提是那时已装好 0.4.0。如果首次启动时装的还是 0.3.x,选择只留在 settings.yaml.imported 里,需要在上面的条目里手动设置 provider。
验证
dsh --profile web --dump-config | Select-String -Pattern 'searchProvider|web-search-deepseek|web-search'
预期看到:
searchProvider: dsh-web-search-selected
web-search-deepseek: disabled: true
web-search: dsh-web-search
然后发一次普通 web_search。默认 Responses backend 会请求:
POST {responsesBaseURL}/responses
tools: [{ "type": "web_search" }]
插件把返回文本和 url_citation 映射为 Harness 的 content 与 sources。
开发
Host 代码或 bundle cordis.patch.yml 改动后需要完整重启 DSH Web,再刷新浏览器。
不要提交:
node_modules/.dsh/settings.yaml或 profile 的cordis.patch.yml- credentials 文件
.env文件- API key、私钥或 session 数据
许可证
MIT
Versions
| Latest version | Published | Size |
|---|---|---|
| 0.3.0 | — | — |
Comments
Loading…
Similar plugins
by maxwell-feng
DeepSeek Harness plugin: back the native web_search / web_fetch tools with your self-hosted SearXNG instance — keyless, private, no third-party search vendor.
★ 7
↓ 892/wk
MIT
TypeScript
Sep 13, 2026
dsh plugin --profile web add dsh-searxng-webby fan56
Tavily web search provider plugin for DeepSeek Harness (dsh)
★ 1
MIT
JavaScript
Sep 24, 2026
dsh plugin --profile web add @aiwayds/dsh-web-search-tavilyby AcidGr
DeepSeek Harness (dsh) Web plugin
★ 35
MIT
JavaScript
Sep 23, 2026
dsh plugin --profile agent add dsh-web-lan-accessby sunx16963-design
A configurable third-party web-search plugin for DSH (DeepSeek Harness)/一个用于DSH(DeepSeek Harness)的可配置第三方网络搜索插件
★ 4
↓ 104/wk
BSD-3-Clause
TypeScript
Sep 27, 2026
dsh plugin --profile web add dsh-web-search-thirdpartyby hiyms
Improve web search in Deepseek Harness, use server-side search service.
★ 4
↓ 126/wk
MIT
TypeScript
Sep 1, 2026
dsh plugin --profile web add dsh-web-search-providerby 240xu
Unified web search provider for DSH
★ 5
↓ 673/wk
MIT
JavaScript
Sep 30, 2026
dsh plugin --profile web add @240xu/dsh-websearch