跳到正文
dsh-market 浏览插件 GitHub EN

rebron1900/dsh-web-search-9router

9router 网页搜索与网页抓取 provider,为 DeepSeek Harness 提供搜索和抓取能力。

Star 数 ★ 0 分类 工具与能力 收录于 2026-09-19

安装

在 DeepSeek Harness 里通过 dsh-market 安装

dsh plugin --profile web add dshmarket

或使用命令行

dsh plugin --profile web add github:rebron1900/dsh-web-search-9router

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 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. 选择 provider

在 profile 的 cordis.patch.yml 中,将 searchProvider 与 fetchProvider 设为 9router:

- id: web
  config:
    searchProvider: 9router
    fetchProvider: 9router

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.3

🛠️ 配置

键 类型 默认值 说明
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。

📄 许可证

MIT

内容来自项目 README(GitHub)↗

评论

评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。