搜索抓取工具 ansellchen-boop/deepseek-search-tools
DeepSeek 客户端直连专用接口完成搜索与网页抓取,不耗模型轮次
30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/ansellchen-boop/deepseek-search-tools.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 16 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/31) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 6 处,展示前 6 条)
- 发起网络请求lib/index.js:437
result = await fallback.fetch({ url }, signal); - 发起网络请求lib/client.js:708
const response = await fetch(`${BRIDGE}${path}`, { - 读取本地文件lib/usage.js:159
const text = await readFile(path, "utf8"); - 写入本地文件lib/usage.js:196
await mkdir(directory, { recursive: true }); - 写入本地文件lib/usage.js:200
await writeFile(temporary, `${JSON.stringify({ version: STORE_VERSION, records }, null, 0)}\n`, "utf8"); - 写入本地文件lib/usage.js:201
await rename(temporary, file);
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek 搜索/抓取工具 API(/v1/tools/search、/v1/tools/fetch)作为 DSH 网页服务商——web_search 和 web_fetch 由专用工具 API 应答。
README
由 DeepSeek 最新模型翻译生成Deepseek-Search-Tools
把 DeepSeek 专用搜索 / 抓取 API 接进 DeepSeek Harness,让 web_search 与 web_fetch 不再消耗模型轮次。
简体中文 · English
这是什么
DSH 自带的搜索有两条路:要么走 dsh-free-search 的公开引擎,要么走官方 deepseek-official provider——后者把搜索塞进一次完整的 Anthropic Messages 调用(web_search_20250305 server tool),每次搜索都要跑一整个模型轮次并产生 token。
本插件直接调用 DeepSeek 专用工具 API,搜索与抓取都是一次普通的 HTTPS 请求:
| 工具 | 端点 | 返回 |
| web_search | POST https://api.deepseek.com/v1/tools/search | results[](title / url / snippet / summary / content / date / authority …
展开完整文档(README 剩余 1 节)
Deepseek-Search-Tools
把 DeepSeek 专用搜索 / 抓取 API 接进 DeepSeek Harness,让 web_search 与 web_fetch 不再消耗模型轮次。
简体中文 · English
这是什么
DSH 自带的搜索有两条路:要么走 dsh-free-search 的公开引擎,要么走官方 deepseek-official provider——后者把搜索塞进一次完整的 Anthropic Messages 调用(web_search_20250305 server tool),每次搜索都要跑一整个模型轮次并产生 token。
本插件直接调用 DeepSeek 专用工具 API,搜索与抓取都是一次普通的 HTTPS 请求:
| 工具 | 端点 | 返回 |
| web_search | POST https://api.deepseek.com/v1/tools/search | results[](title / url / snippet / summary / content / date / authority …) |
| web_fetch | POST https://api.deepseek.com/v1/tools/fetch | { title, content },content 为 Markdown |
API 文档:<https://api-docs.deepseek.com/zh-cn/guides/search> 计费:搜索与抓取各 每 1,000 次成功请求 5 元,count 不影响价格,QPS 各 5。
插件在 ctx.web 的两个注册表各注册一个 provider(id 均为 deepseek-tools),所以整条链路只需切换一次 provider,不需要改动任何官方包。
特性
- 不花模型 token:返回的是 API 已整理好的 summary(600–800 字),并附带 date 与 authority。
- 无需钉死配置:apply 时自动接管「未设置 / 仍是出厂默认 / 被 dsh-free-search 抢先注册」的 provider;已被别人钉住时只留一行警告,绝不抢。
- 优雅降级:插件没加载,原本的 provider 继续工作;web_fetch 遇到 403/404/超时/空正文可退回匿名 HTTP 抓取。
- 设置页 Search Tools:生效状态条、密钥管理、真实连通性测试、逐条搜索明细、用量汇总(简中 / English 双语)。
- 一处记录:明细与用量写在 <DSH_HOME>/plugin-data/deepseek-search-tools/usage.json,原子写入,写失败也绝不影响搜索本身。
安装
前置:dsh plugin 只是把参数转发给 pnpm,所以 pnpm 必须在 PATH 里(npm i -g pnpm)。
DSH 桌面版自带一份 pnpm(resources/runtime/pnpm),但不会注入终端 PATH,命令行安装需要自己装。
名称说明:npm 上 searchtools 已被占用,本包发布名是 deepseek-search-tools;安装命令里的标识就是这个包名。
从 npm(推荐)
dsh plugin --profile web add deepseek-search-tools
从 GitHub
dsh plugin --profile web add github:ansellchen-boop/deepseek-search-tools
也可以直接装 release 附件(pnpm 支持 tarball 与 URL):
dsh plugin --profile web add https://github.com/ansellchen-boop/deepseek-search-tools/releases/download/v0.1.0/deepseek-search-tools-0.1.0.tgz
启用 bundle
dsh plugin add 只做包安装(转发给 pnpm),还需要让 profile 加载它。编辑 ~/.dsh/profiles/web/package.json:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
// …
"deepseek-search-tools"
]
}
}
}
或者从 DSH 设置页的 Plugins 页签启用它(该页会在安装成功后自动把声明了 dsh.bundle 的依赖写进 bundles)。
从旧包名 dsh-deepseek-tools 升级时,旧的明细日志会被自动接续读取,不需要手动搬移。
然后重启 dsh web(桌面端则重启应用)。重新打开会话问一个需要联网的问题,web_search 就会走 /v1/tools/search。
本地开发
dsh plugin --profile web add link:C:\path\to\deepseek-search-tools
用 link: 安装的包在 pnpm install 之后依然有效。改完 lib/client.js,只需在 GUI 里按 Ctrl+R(浏览器端 bundle 每次请求都从磁盘读);改 lib/index.js 才需要重启。
配置
~/.dsh/profiles/web/cordis.patch.yml(可选:想固定 provider 时再加)
- insert:
- id: web-search-deepseek-tools
name: deepseek-search-tools
config:
apiKeyEnv: DEEPSEEK_API_KEY
baseUrl: https://api.deepseek.com
searchPath: /v1/tools/search
fetchPath: /v1/tools/fetch
| 键 | 默认 | 说明 |
| apiKeyEnv | DEEPSEEK_API_KEY | 要解析的凭据名称 |
| baseUrl | https://api.deepseek.com | API 根地址(结尾斜杠自动去除) |
| searchPath | /v1/tools/search | 搜索路径 |
| fetchPath | /v1/tools/fetch | 抓取路径 |
| localization | "" | 非空时发送 localization(IP 提示,让结果更贴近当地) |
| includeContent | false | 发送 need_content: true,结果直接带正文(token 更多) |
| fetchFallback | true | web_fetch 遇到 403/404/超时/空正文时退回 http provider |
| takeOverSearch | true | web.searchProviderId 未设置或仍为出厂默认时接管 |
| takeOverFetch | true | 同上,对象是 web.fetchProviderId |
| timeoutMs | 60000 | 单次请求超时 |
| maxSourceChars | 4000 | 单条来源交给模型的上限 |
| apiKey | "" | 直接写死的密钥,优先于凭据服务 |
| enableSettingsPage | true | 是否挂上设置页的「Search Tools」栏目 |
| usageDataDir | "" | 用量记录目录,空串表示 <DSH_HOME>/plugin-data/deepseek-search-tools |
| usageLimit | 2000 | 明细保留条数 |
| usageDays | 7 | 用量汇总的每日序列天数 |
不钉 web.searchProvider 是刻意的:- id: web 写进的是「配置」,配置活得比插件久;插件加载失败时 web_search 会变成每次都报 configured web provider "deepseek-tools" is not registered。运行期接管则是优雅的。真要「插件不见就大声失败」:
- id: web
config:
searchProvider: deepseek-tools
fetchProvider: deepseek-tools # 想保留匿名 HTTP 抓取就写 http
注意 patch 是整行覆盖(不 merge)。
凭据
依次尝试,第一个有值者胜出:
1. ctx.get("credentials").resolve(apiKeyEnv) —— 凭据服务(已存的 ref、启动环境、dotenv 兜底);
2. process.env[apiKeyEnv]。
DEEPSEEK_API_KEY 通常已经在 ~/.dsh/.credentials.yaml 里,不需要额外配置。缺失时报 WEB_PROVIDER_CREDENTIAL_MISSING 并直接写出变量名。也可以直接在设置页保存 / 清除密钥,写入的是 Harness 自己的凭据服务。
设置页:Search Tools
settings.section(id: "tools")下有三个月签:
| 页签 | 内容 |
| API 管理 | 顶部生效状态条(生效中 / 已接管但没有密钥 / 部分生效 / 未生效,并指出实际 provider),当前凭据(ref、来源 file/env/literal、掩码值)、端点、超时;「测试连接」会真打一次 /v1/tools/search;可直接保存或清除密钥。 |
| 搜索明细 | 每条 web_search / web_fetch:时间、类型、内容、请求条数、返回条数、成功/失败、耗时;失败附 API 错误串;可按 全部 / 搜索 / 抓取 / 失败 筛选。 |
| 用量汇总 | 总调用、今日调用、成功率、平均延迟、累计返回条数、近 7 日柱状图、清除统计。 |
- 记录文件:<DSH_HOME>/plugin-data/deepseek-search-tools/usage.json(原子写入,默认保留 2000 条)。
- 主机端由 lib/bridge.js 挂出五条 loopback 路由:/api/deepseek-search-tools/{overview,test,key-set,key-unset,usage-clear},只接受 POST,只允许本机来源(socket.remoteAddress + Host + Origin),body 上限 64 KB。
- 语言:右上角 中文 / English 切换,文案全部走 lib/client.js 里的同一张 STRINGS 表,中文一律简体;默认中文,除非 document.documentElement.lang 是 en;选择存在 localStorage["deepseek-search-tools:lang"]。
- 导航图标:外壳按 section id 查固定表决定图标,settings.section 没有 icon 选项。插件给自己的导航格加 data-ddt-nav-icon,再用 mask 画出放大镜(隐藏齿轮),不动 React 节点,所以换语言或重绘都不会坏。
- 只想用 provider、不要记录时设 enableSettingsPage: false。
离线自检
不需要 API key,也不需要 DSH:
node --import ./test/register-loader.mjs test/harness.mjs
87 项检查覆盖:provider 注册与 id 冲突、接管/不抢/交还的各种组合、available() 必须同步返回布尔值、请求格式(bearer、count 夹取、need_content、localization)、响应映射、fetch 标题融合与 http 退回、429 重试、缺凭据错误码、SearchResult.truncated 必须为 false(否则 web_search 会回 value is not lossless JSON)、五条桥接路由与防护(非 loopback 403、非 POST 405)、用量记录(成功失败都记且确实落盘)、浏览器 bundle 的加载与栏目注册,最后用 React hook 替身把整个 Search Tools 页真正渲染一遍(载入数据后、切换每个页签后、四种生效状态各一次、切到 English 再切回简体)。
加 --live <apiKey> 会多跑三项真端到端检查:
node --import ./test/register-loader.mjs test/harness.mjs --live sk-xxxx
文件
lib/index.js 插件本体(provider、凭据解析、请求/重试、接管逻辑、设置桥挂载) lib/client.js 设置页浏览器端 bundle(Search Tools 栏目) lib/bridge.js 设置页 loopback 路由 lib/usage.js 用量记录与汇总 cordis.patch.yml 可贴进 profile 的 patch 片段 test/harness.mjs 离线 + live 自我检查 test/loader.mjs @deepseek-ai/ 模块解析垫片(仅测试用)
常见问题
dsh plugin --profile web add deepseek-search-tools 装完没反应? 还需要把包名加进 profile 的 dsh.profile.bundles(见上文),重启 dsh web。
桌面版 profile 改不动? desktop profile 由 Electron 应用独占管理(dsh --profile desktop --dump-config 会直接拒绝),必须在应用内重启或按 Ctrl+R。
和 dsh-free-search 冲突吗? 不冲突。本插件只接管被它趁默认值抢下的 web-search-free / fs-quality-fetch,它其它工具(advanced_search、multi_search、research、weather …)照常。
402 / 401? 余额不足与鉴权失败原样上报,不重试。
Deepseek-Search-Tools 把 DeepSeek 专用的 Tools API 接进 DeepSeek Harness(DSH),让内置的 web_search / web_fetch 直接打到 POST /v1/tools/search 和 POST /v1/tools/fetch——一次 HTTPS 调用,不用走一整轮模型,还带 date 和 authority 元数据,不产生任何 token。
dsh plugin --profile web add deepseek-search-tools
then add "deepseek-search-tools" to dsh.profile.bundles in ~/.dsh/profiles/web/package.json
and restart dsh web
它在 ctx.web 的两个注册表里各注册一个 provider(id 为 deepseek-tools),只接管无人认领或仍用默认值的 provider;遇到 403/404/超时退回普通 HTTP fetch;另外加一个双语 Search Tools 设置页(状态条、密钥管理、实时连接测试、逐次调用日志、用量汇总)。
跑离线检查:node --import ./test/register-loader.mjs test/harness.mjs(87 项检查,不需要 API key)。
许可
MIT © deepseek-search-tools contributors
插件清单收录主题:deepseek-harness-plugins · dsh-plugin预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ansellchen-boop/deepseek-search-tools
直连专用接口完成搜索与网页抓取,不耗模型轮次
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,161已汉化DSH
72.1
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,195已汉化DSH
71.2
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 694已汉化DSH
69.7
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 509已汉化MCP
67.9
AnySearch 搜索插件anysearch-team/anysearch-dsh
AnySearch 网页搜索服务商,为 DeepSeek Harness(DSH)提供高级搜索工具
★ 457已汉化DSH
66.6