前言¶
在 DeepSeek Harness 里做智能体,常见需求是「当前对话用的不是 DeepSeek,但仍要联网查资料」。Harness 自带的 web_search 往往和某个 web 搜索 provider 绑定;若再装一个会注册 searchProvider 的插件,还可能和现有配置冲突。下面介绍的插件走另一条路:用插件自己的 DeepSeek API Key 调用 DeepSeek 官方 Search 接口,同时提供左侧栏搜索页和全局工具 deepseek_search,且不接管 ctx.web 的搜索 provider。
这是什么¶
dsh-deepseek-search(npm 包名 @local/dsh-deepseek-search,当前版本 0.2.0,MIT 许可证)由维护者 SivanCola 发布,分类为联网工具。它把能力拆成两半:浏览器侧在左侧栏增加「DeepSeek 搜索」入口,主栏里是完整搜索页;Host 侧注册工具 deepseek_search,并对全部 agent / 任意模型可见,另提供搜索页使用的三个 HTTP 路由。搜索计费与鉴权用的是本插件解析出的 DeepSeek Key,与当前会话所用模型服务商(DeepSeek、Anthropic、OpenAI 兼容、本地模型等)无关。
核心功能¶
左侧栏搜索页¶
安装并激活后,左侧栏会出现放大镜入口(README 示例环境中为 Plugins / Schedules / Context 之后的第 4 个图标)。点开后可在主栏输入关键词、调整结果条数、开关正文抓取、查看结果卡片,并在面板中配置或查看 Key 来源(脱敏显示)。
模型工具 deepseek_search¶
任意模型在会话中均可调用该工具,参数如下:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query |
string | 是 | 1–128 字符,支持 DeepSeek 搜索语法 |
count |
integer | 否 | 1–50,默认 10 |
need_content |
boolean | 否 | 为 true 时在结果中返回网页正文(更慢、体积更大) |
ori_question |
string | 否 | 用户原始问题,辅助理解搜索意图 |
query 可透传官方语法,例如 site:、-site:、排除词、"精确短语"、lang:、after: / before: 等(详见仓库 README 表格)。
返回给模型的是紧凑文本;结构化 JSON 含 results 数组,字段包括 title、url、snippet、summary、content、siteName、authority、rerankScore 等。
API Key 解析(四级回退)¶
每次调用重新解析,改动后下一次调用即生效,无需重启。优先级从高到低:
config.apiKey(明文,仅适合调试)- Harness 凭证库中的
DEEPSEEK_SEARCH_API_KEY(面板保存的独立 Key) - 模型列表里已配置的 DeepSeek 官方 Key(默认开启
useOfficialKey,从 provider 目录推导凭证名,兜底DEEPSEEK_API_KEY) - 环境变量
DEEPSEEK_SEARCH_API_KEY/DEEPSEEK_API_KEY
若已在 Harness 中配置可用的官方 DeepSeek,多数情况下搜索可直接可用;若希望搜索走单独账号或额度,在面板填写独立 Key 即可。关闭自动复用官方 Key:
config:
useOfficialKey: false
注意:自动复用仅 Key,不跟随官方 provider 的 baseURL;自定义接口地址需设置 baseUrl(默认 https://api.deepseek.com)。
设计取舍(与现有 web_search 的关系)¶
插件不注册为 ctx.web 的 searchProvider,避免触发「无配置 + 多个 provider」时的模糊判定,从而尽量不干扰已有 web_search。Key 仅在 Host 侧使用,浏览器侧只看到脱敏信息;搜索请求由 Host 发起。
Host 暴露的 POST 路由(面板调用):
| 路径 | 作用 |
|---|---|
/api/dsh-deepseek-search/status |
配置状态、脱敏 Key、来源、默认值 |
/api/dsh-deepseek-search/search |
代理搜索 |
/api/dsh-deepseek-search/key |
保存或清除凭证 |
安装与启用¶
换机或首次从 GitHub 安装,使用资料中的命令:
plugin_manager action=install_bundle target=https://github.com/SivanCola/dsh-deepseek-search
若修改了 package.json、cordis.patch.yml 或 locale,需先卸载再安装同一 bundle;仅改 index.js / client.js 时,可通过 set_bundle enabled=false 再 enabled=true 热激活。具体 remove / install 步骤见仓库 README。
可选配置写在 profile 的 cordis.patch.yml 或插件内 cordis.patch.yml,例如:
| 键 | 默认 | 说明 |
|---|---|---|
apiKey |
'' |
明文 Key |
apiKeyEnv |
DEEPSEEK_SEARCH_API_KEY |
凭证 / 环境变量名 |
baseUrl |
https://api.deepseek.com |
接口 origin |
count |
10 |
默认条数 |
needContent |
false |
默认是否抓正文 |
timeoutMs |
25000 |
单次超时 |
toolName |
deepseek_search |
工具名 |
环境变量方式示例:
export DEEPSEEK_SEARCH_API_KEY=sk-xxxx
修改环境变量后需重启 DSH 进程。
典型用法¶
- 安装 bundle 并确认左侧栏出现「DeepSeek 搜索」、工具列表中有
deepseek_search。 - 若模型列表已有有效 DeepSeek 官方 Key,可先直接在面板试搜;否则点放大镜 → 设置 → 粘贴
sk-...保存为独立 Key。 - 在任意模型的会话中,让 agent 调用
deepseek_search,传入query;需要全文时再设need_content: true。
面板或工具返回错误时,README 排错表列出了常见情况:401(Key 失效,会标明实际使用的是 DEEPSEEK_API_KEY 还是 DEEPSEEK_SEARCH_API_KEY)、402 余额不足、429 QPS 超限、未配置 Key 等。
适用场景与注意¶
适合:希望用 DeepSeek Search API 做联网、且不想改动现有 web_search provider 链路的 DSH 用户;需要在非 DeepSeek 模型会话里仍调用同一套搜索工具的场景。
注意:
- 插件在当前 DSH 进程权限下运行;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认可接受的行为与依赖。
- 搜索与正文抓取按 DeepSeek 官方计费规则(README:每 1000 次成功请求 5 元,失败或空结果不计费);账号 Search QPS 100、Fetch QPS 25。
need_content受目标站点可用性影响,可能得到空正文。- 社区目录 SkillHub 插件页 为独立站点展示,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-deepseek-search 用独立解析的 DeepSeek Key 接通官方 Search 接口,以「侧栏搜索页 + 全局 deepseek_search 工具」的方式提供联网能力,并刻意避开对 ctx.web search provider 的占用。进一步了解与 issue 反馈见 GitHub 仓库;目录索引见 SkillHub 页面。
- 目录页:https://www.skillhub.cn/plugins/SivanCola/dsh-deepseek-search
- GitHub:https://github.com/SivanCola/dsh-deepseek-search