DSH 免费联网搜索插件Parallel 后端,零依赖
31.1/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ExplorerZYzhou/DSH-freeweb该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · search
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-freeweb(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:14:06
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
- 发起网络请求freeweb-search.js:88
const resp = await fetch(ENDPOINT, {
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- Parallel后端
- 零依赖
README
由 DeepSeek 最新模型翻译生成DSH freeweb
DSH 免费网页搜索 provider:把 DeepSeek 官方按量计费的 web_search 切换成 Parallel 免费搜索后端(匿名免 key,永久免费层)。
- 🆓 真·零依赖(插件本身):纯全局 fetch + 标准 JS,没有任何 import——不存在装完缺依赖崩溃的问题(⚠️ 但插件页 / CLI 安装这条路径需要系统里有 pnpm;手动挂载不需要,见安装章节)
- 🧯 完整错误处理:所有异常返回诊断信息,不静默失败
- 📦 组合包形态(本插件 0.2.0 起):声明 dsh.bundle,可从 Web 插件页安装/启停/卸载,卡片显示为 dsh-freeweb
- 🧹 干净可逆:插件页卸载;或手动方式 = 1 个文件 + 2 行 patch,删掉即回退
- ⚠️ 手动方式下,插件通过 cordis.patch.yml 引用本地文件 ./freeweb-search.js,该文件必须存在;缺失时 DSH 启动会报错——回退时请先删 patch 行,再删文件。
免费后端:Parallel Search
Parallel Search MCP 官方免费提供:AI agents 匿名调用,无需账号、无需 API key。免费层有速率限制(个人日常使用足够);要更高限额可注册账号。
展开完整文档(README 剩余 1 节)
DSH freeweb
DSH 免费网页搜索 provider:把 DeepSeek 官方按量计费的 web_search 切换成 Parallel 免费搜索后端(匿名免 key,永久免费层)。
- 🆓 真·零依赖(插件本身):纯全局 fetch + 标准 JS,没有任何 import——不存在装完缺依赖崩溃的问题(⚠️ 但插件页 / CLI 安装这条路径需要系统里有 pnpm;手动挂载不需要,见安装章节)
- 🧯 完整错误处理:所有异常返回诊断信息,不静默失败
- 📦 组合包形态(本插件 0.2.0 起):声明 dsh.bundle,可从 Web 插件页安装/启停/卸载,卡片显示为 dsh-freeweb
- 🧹 干净可逆:插件页卸载;或手动方式 = 1 个文件 + 2 行 patch,删掉即回退
- ⚠️ 手动方式下,插件通过 cordis.patch.yml 引用本地文件 ./freeweb-search.js,该文件必须存在;缺失时 DSH 启动会报错——回退时请先删 patch 行,再删文件。
免费后端:Parallel Search
Parallel Search MCP 官方免费提供:AI agents 匿名调用,无需账号、无需 API key。免费层有速率限制(个人日常使用足够);要更高限额可注册账号。
| 项 | 值 |
| 端点 | https://search.parallel.ai/mcp |
| 协议 | MCP(JSON-RPC over HTTP),直接 tools/call,无需握手 |
| 认证 | 无(匿名) |
| 返回 | 结构化 JSON:url / title / publish_date / excerpts |
| 中文 | 可用(中文查询返回中文结果) |
安装
分发方式:本插件通过 GitHub 仓库分发,尚未发布到 npm。下面三种方式都以「你手上的这份源码目录」为前提。
前置条件
- DSH:手动挂载(方式 C)需要 ≥ 0.1.5;组合包安装(方式 A / B)建议 ≥ 0.2.0(组合包链路仅在 0.2.0-rc.2 上实测过,见下文「版本声明」)
- Node.js ≥ 18(插件依赖全局 fetch;DSH 本身要求更高的版本)
- pnpm:仅方式 A / B 需要(DSH 的插件安装器由 pnpm 驱动,安装与卸载都调它)。没有 pnpm 时用方式 C,功能完全相同
方式 A:插件页安装(推荐,DSH 0.2.0+)
1. 侧栏 插件 → 添加插件
2. 输入本目录的绝对路径(例:D:\plugins\DSH-freeweb)
3. Host 会先 inspect(读 package.json 确认声明了 dsh.bundle)→ 安装 → 立即启用
4. 之后在 已安装 分组里出现 dsh-freeweb 卡片:可整包启停/卸载;点进去可单独启停它的行 freeweb-search
方式 B:命令行安装
npx @deepseek-ai/dsh plugin --profile web add "<本目录绝对路径>"
与方式 A 等价:都会把包装进 profile 依赖,并写入 package.json 的 dsh.profile.bundles。
方式 C:手动挂载(零打包,最轻)
⚠️ 与方式 A / B 互斥:两种方式同时存在会注册两个 freeweb provider,seam 以 WEB_DUPLICATE_PROVIDER 拒绝第二个。二选一。
1. 把 freeweb-search.js 放进 profile 目录:
~/.dsh/profiles/web/freeweb-search.js (Windows: C:\Users\<你>\.dsh\profiles\web\)
2. 在 profile 的 cordis.patch.yml 追加(见 example-cordis.patch.yml):
- id: web
config:
searchProvider: freeweb
fetchProvider: http # ⚠️ 必须带:config 是整段替换,不写会丢掉 dsh-base 的 fetch provider
- insert:
- id: freeweb-search
name: ./freeweb-search.js
3. 重启 DSH,模型侧的 web_search 工具自动走免费搜索。
技术细节:插件文件是标准 CJS(module.exports = { inject, apply });Loader 用动态 import() 加载它,并会归一化 CJS / default 的导出形状。
验证安装成功
先看界面(最快)
1. 侧栏 插件 → 已安装 里能看到 dsh-freeweb 卡片
2. 设置 → 内置插件 里 include:freeweb-search 显示「已启用 / 运行中」
再实测一次:让 agent 搜一次,能正常返回来源列表即可。
技术判据(排障用,需要读会话日志)
官方 DeepSeek 搜索 provider 每次都会往会话日志写一条 web/deepseek-search-llm-request 事件;freeweb 不写。所以搜索后:
| 观察 | 结论 |
| 没有新增 web/deepseek-search-llm-request | ✅ 走的是 freeweb |
| 有新增 | ❌ 仍是官方 provider(检查 - id: web 的覆盖是否生效) |
升级 / 降级
- 升级:DSH 目前不支持插件自动更新。先卸载再装新版(插件页卸载 → 再「添加插件」,或 CLI dsh plugin --profile web add <路径>)
- 降级:同样操作,装回旧版本即可
- 手动挂载方式没有版本概念——把文件换掉即可
- 若将来发布到 npm,可直接用包名 spec(如 dsh-freeweb@<version>)
插件页开关 = 接管开关(0.2.1 起)
启用或停用本插件,就是「用免费搜索 / 回官方搜索」的开关:
- 启用:apply 把 web.searchProvider 写成 freeweb,覆盖官方设置页里选的那个 (延迟 3 秒等 settings 服务挂载;失败只降级,不影响 provider 注册)
- 停用:不做任何清理 —— 接管写入的 freeweb 恰好等于本 bundle 的 patch 默认值, DSH 会把它规范化成「清除覆盖」;插件停用后 bundle patch 消失,配置自然回落到官方默认
- 官方设置页再改也会被抢回:插件监听 settings/document-updated,改动后重新接管
已知限制:
| 项 | 说明 |
| 回落版本不保证 | 停用后回的是 DSH 默认搜索(当前 deepseek-official),不保证是你设置页里选的那版。官方淘汰旧搜索时再做适配 |
| 3 秒窗口 | apply 时 settings 服务尚未挂载,接管延迟 3 秒;极慢的机器上可能仍不可用 → 静默跳过。此时若你在设置页选过官方,搜索会走官方 |
| 不要手动改回 | 停用即回默认,不需要再手动改 patch;改回去也会被接管逻辑覆盖 |
回退官方
| 安装方式 | 回退操作 |
| 插件页 / CLI | 停用或卸载皆可:插件不加载后搜索自动回到官方默认(deepseek-official)。原理见上一节 |
| 手动挂载 | 删除 cordis.patch.yml 里那两块(- id: web 与 - insert:),重启。先删 patch 行,再删文件(反之 DSH 会报找不到文件) |
故障排查
| 症状 | 原因 / 处理 |
| 安装时提示 not-a-bundle | 该目录没声明 dsh.bundle(本仓库已声明;若你复制了旧版单文件,请更新到组合包形态) |
| 安装/卸载时报找不到 pnpm | 方式 A / B 需要 pnpm。装一个(npm i -g pnpm,或 corepack enable pnpm——后者要求 Node 安装目录可写,权限不足时会报 EPERM),或改用方式 C |
| 搜索返回 freeweb: HTTP 429 | 免费层限速,稍后重试 |
| 搜索返回 freeweb: MCP error - ... | Parallel 服务异常,稍后重试 |
| 搜索返回 freeweb: 响应解析失败 | Parallel 返回格式变化(可能改版) |
| 报 WEB_PROVIDER_AMBIGUOUS | 同时有多个可用搜索 provider 但没显式 pin——检查 - id: web 的 searchProvider: freeweb 是否生效 |
| 报 WEB_DUPLICATE_PROVIDER | 同一 profile 里装/挂了两份 freeweb(例如插件页装了、手动挂载又留着一份) |
| DSH 启动报找不到 freeweb-search.js | 手动方式下文件没放对位置,或删了文件但 patch 行还在 |
已知限制与设计权衡
| 项 | 说明 |
| 免费层限速 | Parallel 匿名层有速率限制(返回 freeweb: HTTP 429 时稍后重试) |
| 索引偏英文 | 中文查询可用,但结果质量不如英文查询 |
| ★ 搜索结果形态与官方不同 | 官方 DeepSeek 搜索返回结构化引用块(cited_text 按 URL 关联成 snippet),Parallel 返回 excerpts(首段摘录)。实测体感:来源列表(url / title / 日期)够用,但带原文引用的长摘要变少——模型能逐条引用的原文片段会比走官方时少 |
| 结果数量 | 上限由调用方决定(dsh-tool-web 默认 8);插件内部再兜一层硬上限 50 |
| ★ fetchProvider: http 被本包固定 | web 行的 config 是整段替换,所以本包必须连 fetchProvider 一起写。若将来 dsh-base 换了默认抓取后端,本包会把它按回 http——升级 DSH 后遇到抓取异常,先检查这里 |
| ★ 手动挂载与组合包安装互斥 | 同时存在 → 两个 provider → WEB_DUPLICATE_PROVIDER |
| ★ 失败以「答案文本」返回 | 插件失败时把诊断塞进 content(模型可见),而 seam 的设计推荐抛 WebError(带可按机器路由的 code)。这是刻意的取舍:本插件选择「永不阻断、故障透明」,不走抛错路径 |
| 本地依赖是绝对路径 | CLI / 插件页安装会写入 link:<绝对路径>;换机器或挪目录需重新安装 |
| 路径含空格 | 安装路径若含空格,命令行与配置里注意加引号(部分工具对空格敏感) |
与 DSH 0.2.0 的适配说明
| 层面 | 状态 |
| seam 接口(registerSearchProvider / WebSearchProvider / 请求与结果字段) | ✅ 完全兼容,未改动一行 |
| 挂载方式 | ✅ 组合包(dsh.bundle.patch);insert 的相对路径按 patch 文件锚定 |
| ctx.effect(() => disposer) | ✅ 保留。seam 内部用的是 web 服务自己的 ctx.effect,因此插件行卸载时需自行注销 provider |
| web 行 config | ⚠️ 必须同时写 searchProvider 与 fetchProvider(整段替换) |
| 插件页显示名 | 组合包形态下显示包名 dsh-freeweb(手动方式显示为文件名) |
版本声明是「声明式」的(重要)
package.json 里声明了官方规范定义的 dsh.manifestVersion: 1 与 engines.dsh,但官方当前并不强制校验它们——官方文档原话:
兼容性仅作声明。当前安装器和加载器不强制检查 dsh.manifestVersion 或 engines.dsh;声明范围不会拒绝不兼容的宿主,也不会校验 SemVer 语法。
所以:
- 不要把它理解为「DSH 会自动拦住不兼容版本」——它不会
- 实际兼容下限见下表,由实测得出,而不是由字段保证
| 形态 | 实测过的 DSH 版本 | 说明 |
| 手动挂载(单文件 + patch) | 0.1.5-rc.x / 0.1.7-rc.2 / 0.2.0-rc.2 | 早期版本用旧依赖后端,该方式不依赖 dsh.bundle |
| 组合包形态(dsh.bundle) | 仅 0.2.0-rc.2 | dsh-package-manifest 规范自 0.1.5 时代引入(官方示例即 dsh: '0.1.5-alpha.1'),但组合包安装链路在 0.1.5 / 0.1.7 上未实测 |
保守建议:组合包方式在 DSH ≥ 0.2.0 上使用;更早版本请用「方式 C 手动挂载」。
版本说明
| 版本 | 形态 | 说明 |
| 0.1.0 | 裸单文件 + 手动 patch | 只能手动挂载 |
| 0.2.0 | 组合包(bundle) | 声明 dsh.bundle;可插件页安装/启停/卸载;手动挂载仍受支持 |
| 0.2.1 | 组合包 | 插件页开关即接管开关:启用自动抢占免费搜索、停用自然回落官方;代码从 267 行精简到 184 行(删掉全部时间设计);零依赖不变 |
定位与取舍
DSH freeweb 追求极致轻量化与 DSH 自身安全,因此功能不会很强:
- 它是一份快速、无安全负担的免费联网方案——单文件、零依赖、匿名免 key;
- 适合联网搜索要求不大的玩家长期使用,或高要求玩家作为临时备选(Parallel 免费层有速率限制,且索引偏向英文)。
如果你需要更强的搜索(更精准的中文、更高频的调用),建议评估带 key 的商用搜索方案。本插件的价值在于:用最轻的代价,把"联网"这个基本能力免费补上。
设计说明(为什么这么写)
本插件的设计哲学:最小冲击、故障透明、取舍明确。
- 零依赖:只用一个全局 fetch 和标准 JS,没有任何 import。本包自身不引入任何依赖(「插件页 / CLI 安装」所需的 pnpm 属于系统前置,见安装章节;手动挂载连它也不需要)。
- 朴素装配:只用最简单的 - insert: 引用同包内的本地文件,不用 !!js 表达式做存在性检查(其语法有其风险)。代价是文件缺失时 DSH 会报错——由安装/回退流程管理(README 已写明顺序)。
- 故障透明:apply 和 search 的每个失败分支要么返回诊断信息(通过 content 字段给模型),要么 console.error 留日志(如注册失败)。绝不静默吞错——但不向 Loader 抛错,避免影响 DSH 启动。
- 按码点截断:查询和摘录用 Array.from(...) 按 Unicode 码点截断,避免把 emoji 的代理对劈成半个产生乱码。
- 去重:多查询返回的重复 URL 会合并。
- 无配置界面:刻意不做 Config —— require('@deepseek-ai/schemastery') 在 profile 里解析不到(插件走 ESM 解析,拿不到 DSH 安装目录里的包),三次尝试均失败,最终改为硬编码接管:开关就是插件页的启用/停用,配置就是 patch 里那两行。
- 保持 CJS:module.exports = { inject, apply } 让"组合包安装"和"手动挂载"两种方式都能工作;改 ESM 会引入 type: module / .mjs 的解析约束。
与社区标准的协作
本项目关注并支持 dsh-std 社区互操作标准(dsh-ecosystem-spec 基线的 apiVersion + kind 协议坐标),待其 manifest 格式稳定后,将补充协议声明(dsh-plugin.json)。在此之前,本插件保持零依赖的独立形态,不与草案格式绑定。
Credits
设计协作:DeepSeek V4 Flash 0731(AI 协作者)组合包适配与文档:DeepSeek V4.1 Flash(AI 协作者)
License
MIT — see LICENSE预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ExplorerZYzhou/DSH-freeweb
DSH 免费联网搜索插件Parallel 后端,零依赖
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,379已汉化DSH
72
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,228已汉化DSH
71.3
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 695已汉化DSH
69.8
动画花园资源检索yjl9903/AnimeGarden
動漫花園 镜像站 | 动画 BT 资源聚合站 | 动画 BT 资源开放接口
★ 1,391已汉化DSH
69.2
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 510已汉化MCP
67.9
这是你的仓库?认领条目