为 DeepSeek Harness 提供 9router 网页搜索与抓取。启用插件包后自动接管原生 web_search/web_fetch,停用后恢复其余配置层的提供方选择。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:rebron1900/dsh-web-search-9router
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
为 DeepSeek Harness 提供由 9router 背书的网页搜索与抓取。 将原生
web_search与web_fetch工具接入 9router 的/v1/search与/v1/web/fetch端点 —— 无需服务端搜索工具。
🇺🇸 English · 🇨🇳 简体中文
✨ 功能
- 🔎 搜索 provider — 将 DSH 原生
web_search路由到 9router 的/v1/search,返回去重后的WebSource结果(标题、摘要、发布日期)。 - 📄 抓取 provider — 将 DSH 原生
web_fetch路由到 9router 的/v1/web/fetch,返回干净的文本/Markdown 正文。 - 🎛️ Bundle 设置 — 直接在插件包详情页配置 API 密钥、基础地址、模型与限额。
- 🔐 凭据感知 — API 密钥通过 DSH 凭据服务保存,并按配置的凭据引用解析(默认为
NINE_ROUTER_API_KEY)。 - 🧱 零构建 — 纯 ESM,纯 JavaScript,无需打包器。
🧭 为什么需要它
DSH 默认的 web_search 使用 web-search-deepseek provider,它要求上游实现 Anthropic 的 web_search_20250305 服务端搜索工具并返回 web_search_tool_result 块。
9router 是一个 OpenAI 兼容网关:它把该工具定义当作普通函数交给模型,而不在服务端执行搜索 —— 因此它本身无法提供原生搜索。
web-search-deepseek(默认) |
9router(本插件) | |
|---|---|---|
| 依赖 | Anthropic web_search_20250305 服务端工具 |
任意 9router 兼容网关 |
| 支持 9router | ❌ | ✅ |
| 搜索端点 | 由模型提供 | POST /v1/search |
| 抓取端点 | 由模型提供 | POST /v1/web/fetch |
本插件直接调用 9router 自有的端点,并将其响应映射为 DSH web seam 所期望的 WebSource 与 WebFetchBody 类型。
⚙️ 工作原理
web_search / web_fetch(原生 DSH 工具)
│
▼
ctx.web seam
│ provider = "9router"
▼
dsh-web-search-9router
├── search → POST {baseURL}/search → WebSource[]
└── fetch → POST {baseURL}/web/fetch → WebFetchBody
│
▼
9router gateway (9router)
错误会以机器可路由的 WebError 代码(WEB_PROVIDER_ERROR、WEB_PROVIDER_CREDENTIAL_MISSING、WEB_ABORTED)呈现,非 2xx 的抓取响应会作为结果返回 —— 绝不静默抛出。
🚀 快速开始
环境要求: DSH >=0.2.0-rc.2,Node.js 20 或更高版本。
1. 安装插件
npx @deepseek-ai/dsh plugin --profile web add github:rebron1900/dsh-web-search-9router
2. 启用插件包
安装并启用插件包后,搜索与网页抓取会自动选择 9router。在插件中停用整个插件包后,会恢复其余配置层选择的提供方(通常是 deepseek-official 与 http)。
如果此前在 profile、用户级配置或启动覆盖中显式选择过提供方,这些更高优先级的配置仍然生效。删除旧的 id: web 提供方配置覆盖,即可让插件包的启用状态控制选择。
3. 配置插件
重启 DSH 并刷新浏览器。打开插件,选择 dsh-web-search-9router,即可直接在插件包详情页配置。输入的 API 密钥会按当前凭据引用保存到 DSH 凭据服务,不会写入插件设置。
🔒 可复现安装 — 追加发布 tag 以锁定精确版本:
npx @deepseek-ai/dsh plugin --profile web add github:rebron1900/dsh-web-search-9router#v0.2.4
🛠️ 配置
| 键 | 类型 | 默认值 | 说明 |
|---|---|---|---|
baseURL |
string | 9router 默认端点 | 你的 9router 兼容 API 的基础地址(同时支持 NINE_ROUTER_BASE_URL 环境变量) |
searchModel |
string | search-combo |
搜索端点使用的模型名 |
fetchModel |
string | fetch-combo |
抓取端点使用的模型名 |
searchType |
string | web |
发送到搜索端点的 search_type |
maxResults |
number | 8 |
每次搜索的最大来源数 |
timeoutMs |
number | 30000 |
每请求超时时间 |
| API 密钥 | credential | — | 只写字段,由 DSH 凭据服务保存,不写入插件设置 |
apiKeyEnv |
credential-ref | NINE_ROUTER_API_KEY |
保存和解析 API 密钥时使用的凭据引用 |
🧪 开发
pnpm install # 安装依赖
pnpm test # 运行测试套件(node:test)
仓库结构
dsh-web-search-9router/
├── src/index.js # 插件入口:search + fetch provider
├── client.js # 插件包详情页设置表单
├── cordis.patch.yml # 注册插件的 bundle patch
├── test/ # node --test 测试套件
└── package.json # ESM 插件清单
🌱 生态与发布
- 📦 分发 — GitHub 仓库是唯一的分发来源;稳定版本以
v<version>GitHub Releases 发布。 - 📚 目录 — 已收录于 awesome-dsh-plugin。
- 🐛 问题与需求 — 请提交 issue。
📄 许可证
链接
同类插件
DayuanJiang/next-ai-draw-io#dsh-plugin★ 36599
dsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
Tencent/WeKnora#dsh-weknora★ 36302
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 7042
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
T-Auto/dsh-ops★ 5074
为 Windows 的 DSH 提供 bash、PowerShell 7 及 Rust 高性能工具,减少 token 消耗。
sixtysevenlf/dsh-blender-plugin★ 1575
让 DSH agent 通过直连 TCP 通道驱动本地 Blender,提供 15 个工具:视口帧、自定义视角渲染、Python 执行、无头与作业卸载、事务回滚,以及 34 个 family / 228 个 op 的规划层。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1155
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。