🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

通用搜索工具包 snow-The/dsh-search

DeepSeek Harness
snow-The16 天前有提交已提供中文文档扫描:含敏感能力

统一多引擎搜索、抓网页并做本地语义检索

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add snow-The/dsh-search
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/20·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 16 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/20) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 57 处,展示前 25 条)
  • 读取密钥环境变量
    dist/index.js:68
    const key = process.env.ARK_API_KEY;
  • 请求外部主机ark.cn-beijing.volces.com
    dist/index.js:72
    const res = await fetch("https://ark.cn-beijing.volces.com/api/v3/embeddings", {
  • 发起网络请求
    dist/index.js:72
    const res = await fetch("https://ark.cn-beijing.volces.com/api/v3/embeddings", {
  • 写入本地文件
    dist/index.js:149
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
  • 读取本地文件
    dist/index.js:149
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
  • 读取本地文件
    dist/index.js:206
    entries = readdirSync(dir);
  • 读取本地文件
    dist/index.js:214
    st = statSync(full);
  • 读取本地文件
    dist/index.js:227
    const source = readFileSync4(full, "utf8");
  • 读取本地文件
    dist/index.js:681
    if (!existsSync4(metaPath) || !existsSync4(chunksPath) || !existsSync4(bmPath)) return null;
  • 读取本地文件
    dist/index.js:683
    const meta = JSON.parse(readFileSync5(metaPath, "utf8"));
  • 写入本地文件
    dist/index.js:706
    mkdirSync3(dir, { recursive: true });
  • 写入本地文件
    dist/index.js:708
    writeFileSync2(join5(dir, "metadata.json"), JSON.stringify(meta), "utf8");
  • 写入本地文件
    dist/index.js:709
    writeFileSync2(join5(dir, "chunks.json"), JSON.stringify(data.chunks), "utf8");
  • 写入本地文件
    dist/index.js:710
    writeFileSync2(join5(dir, "bm25.json"), JSON.stringify(data.bm25.serialize()), "utf8");
  • 写入本地文件
    dist/index.js:715
    writeFileSync2(join5(dir, "vecs.bin"), buf);
  • 发起网络请求
    dist/index.js:968
    const res = await fetch(url, {
  • 发起网络请求
    dist/index.js:1003
    const res = await fetch(url, {
  • 发起网络请求
    dist/index.js:1024
    const res = await fetch(url, { signal: AbortSignal.timeout(2e4) });
  • 发起网络请求
    dist/index.js:1075
    const res = await fetch(url, { signal: AbortSignal.timeout(2e4) });
  • 发起网络请求
    dist/index.js:1308
    const res = await fetch(url, { headers: { "User-Agent": "Mozilla/5.0 (dsh-search)" }, redirect: "follow", signal: AbortSignal.timeout(2e4) });
  • 读取密钥环境变量
    dist/index.js:1369
    const env = process.env.GITHUB_TOKEN || process.env.GH_PAT;
  • 读取密钥环境变量
    dist/index.js:1564
    return process.env.GITHUB_TOKEN || process.env.GH_PAT || void 0;
  • 读取密钥环境变量
    dist/index.js:2293
    async function handleRequest(req, res, token = process.env.DSH_SEARCH_HTTP_TOKEN ?? null) {
  • 读取密钥环境变量
    dist/index.js:2321
    const token = process.env.DSH_SEARCH_HTTP_TOKEN ?? "";
  • 读取密钥环境变量
    dist/index.js:2334
    const token = process.env.DSH_SEARCH_HTTP_TOKEN ?? null;
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:ark.cn-beijing.volces.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(124 字)↓

DeepSeek Harness 的通用搜索工具包:统一网页搜索服务商(Bing/DDG/SearXNG/Exa/Tavily,带降级链和缓存)、页面抓取、GitHub 搜索、向量语料库、深网探测,外加本地代码库语义搜索(search_code)。

README

由 DeepSeek 最新模型翻译生成
dsh-search DeepSeek Harness 的通用搜索工具包——不用浏览器、不依赖 GPU,在无头/远程主机上也能跑。 工具 | 工具 | 作用 | | search_fetch | 不用浏览器抓取 URL,返回提取后的页面文本 | | search_github | 官方 GitHub 搜索(仓库 / 代码 / issue / commit)——直连 GitHub REST API,不走 Google | | search_corpus_add | 抓取 + 提取 + 分块 + 向量化 + 索引 URL,写入临时 SQLite 向量语料库 | | search_corpus_search | 在语料库上做语义 top-k 搜索(float32 向量上的余弦相似度) | | search_corpus_clear | 清空这个一次性语料库 | 设计 - TypeScript(tsc + esbuild 构建,和 dsh-gitkit 同一套模式;不用 HTTP 框架——原生 node:http) - 预编译正则、预编译 SQLite 语句、float32 BLOB 向量(每维 4 字节,对比 JSON 字符串)、带重叠的句子感知分块、批量 ARK 向量化(每批 16 条)
展开完整文档(README 剩余 1 节)
dsh-search

DeepSeek Harness 的通用搜索工具包——不用浏览器、不依赖 GPU,在无头/远程主机上也能跑。

工具

| 工具 | 作用 |
| search_fetch | 不用浏览器抓取 URL,返回提取后的页面文本 |
| search_github | 官方 GitHub 搜索(仓库 / 代码 / issue / commit)——直连 GitHub REST API,不走 Google |
| search_corpus_add | 抓取 + 提取 + 分块 + 向量化 + 索引 URL,写入临时 SQLite 向量语料库 |
| search_corpus_search | 在语料库上做语义 top-k 搜索(float32 向量上的余弦相似度) |
| search_corpus_clear | 清空这个一次性语料库 |

设计

- TypeScript(tsc + esbuild 构建,和 dsh-gitkit 同一套模式;不用 HTTP 框架——原生 node:http)
- 预编译正则、预编译 SQLite 语句、float32 BLOB 向量(每维 4 字节,对比 JSON 字符串)、带重叠的句子感知分块、批量 ARK 向量化(每批 16 条)
- 向量化:有 ARK_API_KEY 时用 ARK doubao-embedding-large(search_code 的语义层;纯本地 BM25+rerank 核心无 key、无网络也能跑)(可用 DSH_BROWSER_EMBED_MODEL 覆盖);本地 64 维 n-gram 哈希兜底——离线安全
- GitHub token:GITHUB_TOKEN/GH_PAT 环境变量,或 ~/.dsh/.credentials.yaml 里的引用(按行解析)。代码搜索必须认证(GitHub 的规定)。未认证:10 次请求/分钟
- 可选本地 HTTP API,跑在原生 node:http 上:设置 DSH_SEARCH_HTTP_PORT(仅回环):
- GET /health、GET /fetch?url=、GET /github?q=&type=repo|code|issue|commit、POST /corpus {urls}、GET /corpus/search?q=&k=、DELETE /corpus
- 认证(v0.5.1,必需): 只设端口已经不够——还要设 DSH_SEARCH_HTTP_TOKEN (≥16 字符),每个请求都必须带 Authorization: Bearer <token>;否则返回 401 + WWW-Authenticate: Bearer。只设端口不设 token = 守护进程拒绝启动 并说明原因,而不是悄悄提供无认证服务。
- 为什么守护进程自己设门禁,而不是挂到官方 ctx.webServer 上: dsh-host-webserver(ctx.webServer)是一个完全没有认证的裸路由 (实测:该包里零处提到 authorization/token/401/403/origin),挂上去不会继承任何防护,还会把 /fetch、/corpus 这类通用路径放到 GUI 端口上,共用 GUI 的绑定范围(可能是 0.0.0.0),并争抢路径空间。
官方的 Host/Origin + 浏览器认证防护确实存在——但在 ctx.connection (dsh-client-connection)里,不在 webserver 里(isTrustedApiRequest → 403, requestRejection → 401)。它针对的是浏览器发起的跨站调用,并且放行没有 Origin 头的请求,所以对这个守护进程的非浏览器调用方来说,它是错误的控制手段:独立回环端口 + bearer token 才是。如果这些路由以后需要从 GUI 的浏览器会话里调用,用 ctx.connection.requestRejection()(见 dsh-busyloop 的
createRequestFence(),用于工作调用的形态)。

GitHub 搜索限定符(直接透传)

lang:ts stars:>100、repo:owner/name、org:google、is:issue is:open —— GitHub 搜索 API 接受什么,就传什么。

搜索方法论

插件内置一套提炼过的搜索方法论,内容摘自 3 本专业书(OCR 识别,逐行标注出处):

- docs/search-methods.md —— 速查:操作符、引擎架构、调查工作流,以及它们各自对应到哪些工具
- docs/book-osint-techniques.md —— OSINT Techniques 11th:Google/X-Twitter 操作符、平台清单、侦察工作流(110+ 条)
- docs/book-ai-powered-search.md —— AI-Powered Search:信号加权、语义/稠密向量搜索、ANN、量化、RRF 混合排序(138 条)
- docs/book-bellingcat.md —— We Are Bellingcat:核查工作流、地理定位、虚假信息防御(70+ 条)

安装

把 @snow-the/dsh-search 加进配置档的 dependencies 和 dsh.profile.bundles,然后执行 pnpm install 并重启。
预览分享卡片长什么样 ↓snow-The/dsh-search
分享 · DeepSeek Harness Hub
snow-The/dsh-search

统一多引擎搜索、抓网页并做本地语义检索

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部