前言¶
DeepSeek Harness (DSH) 采用插件化架构。在使用 ctx.web 绑定进行联网搜索时,开发者常遇到协议不兼容或 API Key 配置错误的问题。dsh-web-search-litellm 插件通过 LiteLLM 代理和 OpenAI Responses 协议,提供了一套标准的 Web 搜索解决方案。
插件简介¶
这是 DeepSeek Harness ctx.web 的 Web 搜索提供方。它通过 LiteLLM 代理调用 DeepSeek 原生服务端的 web_search 能力,返回带真实来源 URL 的答案。
安装¶
使用 DSH 官方命令安装插件:
dsh plugin --profile <name> add dsh-web-search-litellm
配置与启用¶
安装完成后,需在 profile 的配置文件 cordis.patch.yml 中启用该提供方。
- 在
cordis.patch.yml中配置web绑定的searchProvider:
- id: web
config:
searchProvider: litellm-responses
- 可选:禁用默认的 Anthropic 协议提供方:
- id: web-search-deepseek
disabled: true
- 安装后重启 profile 以使配置生效。
核心功能¶
- 协议支持:使用 OpenAI Responses 协议(
POST {baseURL}/responses),不支持 Anthropic 协议。 - 密钥复用:复用现有的
LITELLM_API_KEY凭据,无需配置新的 API Key。 - 服务端搜索:搜索任务在 DeepSeek 官方服务端执行,不依赖任何第三方搜索服务。
- 可视化配置:所有设置项可在 Harness 的设置 UI 中完全配置。
配置项说明¶
该提供方支持以下配置项。未设置的项会从当前活跃的模型配置中自动派生。
| 配置项 | 默认值/来源 | 说明 |
|---|---|---|
baseURL |
派生($LITELLM_SEARCH_BASE_URL) |
LiteLLM 代理根地址,请求路径会追加 /responses |
apiKeyEnv |
派生(LITELLM_API_KEY) |
密钥环境变量名称,每次搜索时解析 |
model |
派生(当前活跃模型 ID) | 首选的搜索模型 ID |
candidateModels |
派生(活跃提供方的模型列表) | 备选模型池,用于竞速搜索 |
maxTokens |
4096 |
单次搜索请求的输出 Token 上限 |
timeoutMs |
60000 |
响应流的连接及空闲超时时间 |
工作原理¶
- 模型调用
web_search工具。 - 插件向
{baseURL}/responses发起 POST 请求,携带tools: [{"type": "web_search"}]和stream: true。 - LiteLLM 代理将请求转发至 DeepSeek,服务端执行搜索并将结果流式返回。
- 插件解析 SSE 流,提取
output_text作为内容,将web_search_call中action: open_page的 URL 汇总为sources。
注意事项¶
- 计费:每次搜索消耗一次 DeepSeek 模型调用。
- 会话兼容性:插件不追加自定义会话事件,以确保与旧版本 Harness 的兼容性。
- 结果格式:DeepSeek 文档未明确支持结构化
include字段,因此结果仅包含 URL,不包含标题和摘要。 - 权限:插件作为当前 DSH 进程运行,安装前建议检查源码与许可证。
生态信息¶
- 维护者:yunxiyang
- 许可:MIT
- 仓库:https://github.com/yunxiyang/dsh-web-search-litellm
- 目录:https://www.skillhub.cn/plugins/yunxiyang/dsh-web-search-litellm