按序轮换多个 Tavily 密钥,失败自动回退官方搜索
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add apherchin/dsh-websearch-tavily-keys-select该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · search
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 31 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 32 处,展示前 29 条)
- 读取本地文件bundle/host/config-store.mjs:54
size = statSync(path).size - 读取本地文件bundle/host/config-store.mjs:64
text = readFileSync(path, 'utf8') - 写入本地文件bundle/host/config-store.mjs:79
mkdirSync(dirname(path), { recursive: true }) - 写入本地文件bundle/host/config-store.mjs:80
writeFileSync(temporary, text, 'utf8') - 写入本地文件bundle/host/config-store.mjs:81
renameSync(temporary, path) - 读取本地文件bundle/host/config-store.mjs:93
size = statSync(path).size - 读取本地文件bundle/host/config-store.mjs:103
text = readFileSync(path, 'utf8') - 写入本地文件bundle/host/config-store.mjs:118
mkdirSync(dirname(path), { recursive: true }) - 写入本地文件bundle/host/config-store.mjs:119
writeFileSync(temporary, text, 'utf8') - 写入本地文件bundle/host/config-store.mjs:120
renameSync(temporary, path) - 读取本地文件bundle/host/config-store.mjs:131
size = statSync(path).size - 读取本地文件bundle/host/config-store.mjs:141
text = readFileSync(path, 'utf8') - 发起网络请求bundle/host/index-v5.mjs:881
const response = await fetch(endpoint, { - 发起网络请求bundle/host/index-v5.mjs:933
const response = await fetch(endpoint, { - 发起网络请求bundle/host/index-v5.mjs:1014
const response = await fetch(endpoint, { - 写入本地文件bundle/host/index-v5.mjs:1104
appendFileSync(auditFile(), `${JSON.stringify(entry)}\n`) - 写入本地文件bundle/host/index-v5.mjs:1134
appendFileSync(auditFile(), `${JSON.stringify({ at: new Date().toISOString(), probe: true, ...payload })}\n`) - 发起网络请求bundle/host/index-v5.mjs:1398
const response = await fetch(`${baseURL}/usage`, { - 发起网络请求row-chain/client.js:1139
const response = await fetch(CONFIG_PATH, { method: "GET" }); - 发起网络请求row-chain/client.js:1177
const response = await fetch(CONFIG_PATH, { - 发起网络请求row-chain/client.js:1203
response = await fetch(CONFIG_PATH, { - 读取本地文件sync-to-profile.mjs:51
for (const name of readdirSync(join(bundleRoot, 'host')).sort()) { - 读取本地文件sync-to-profile.mjs:86
if (!existsSync(sourceRoot)) continue - 读取本地文件sync-to-profile.mjs:98
for (const entry of readdirSync(dir, { withFileTypes: true }).sort((a, b) => (a.name < b.name ? -1 : 1))) { - 读取本地文件sync-to-profile.mjs:110
const bytes = readFileSync(path) - 读取本地文件sync-to-profile.mjs:116
if (!existsSync(path)) return undefined - 写入本地文件sync-to-profile.mjs:137
mkdirSync(dirname(entry.target), { recursive: true }) - 写入本地文件sync-to-profile.mjs:138
if (entry.transform === undefined) copyFileSync(entry.source, entry.target) - 写入本地文件sync-to-profile.mjs:139
else writeFileSync(entry.target, contentOf(entry.source, entry.transform))
扫描于 2026/11/2(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 轮换多个搜索密钥
- 失败自动回退
- 设置页配置卡片
展开完整介绍(147 字)↓
多源网页搜索链:按顺序尝试最多 3 个 Tavily key(Windows 环境变量或明文),失败则回退官方 DeepSeek 搜索;设置页有配置卡片。 | DSH 插件:多源网页搜索链,按顺序尝试最多 3 个 Tavily key,失败则回退官方 DeepSeek 搜索。插件页有配置卡片。
README
由 DeepSeek 最新模型翻译生成dsh-websearch-tavily-keys-select(正本)
DSH 的 Web 搜索链路:Tavily(0~3 个源)→ 官方 DeepSeek 搜索兜底,并在侧栏 Plugins 的本包页面提供配置卡片(Windows 环境变量 / 明文两种密钥来源)。面向用户的说明见 bundle/README.md (含配置页截图);本文件只写开发侧约定。
三个 npm 包(一个仓库)
| 目录 | 包名 | 角色 |
| bundle/ | dsh-websearch-tavily-keys-select | 安装入口:dsh.bundle.patch + 宿主实现(host/,已自包含在包内) |
| row-chain/ | dsh-search-chain | 链本体行包:按包名 re-export 宿主实现 + 配置卡片 client.js |
| row-deepseek/ | dsh-search-deepseek | 官方兜底行包:同样按包名 re-export 宿主实现(host-only) |
- bundle 的 cordis.patch.yml 只插两行,name: 分别是上面两个行包名;两行都 re-export 同一个模块 ⇒ 一个模块实例 = 一份源注册表。
展开完整文档(README 剩余 1 节)
dsh-websearch-tavily-keys-select(正本) DSH 的 Web 搜索链路:Tavily(0~3 个源)→ 官方 DeepSeek 搜索兜底,并在侧栏 Plugins 的本包页面提供配置卡片(Windows 环境变量 / 明文两种密钥来源)。面向用户的说明见 bundle/README.md (含配置页截图);本文件只写开发侧约定。 三个 npm 包(一个仓库) | 目录 | 包名 | 角色 | | bundle/ | dsh-websearch-tavily-keys-select | 安装入口:dsh.bundle.patch + 宿主实现(host/,已自包含在包内) | | row-chain/ | dsh-search-chain | 链本体行包:按包名 re-export 宿主实现 + 配置卡片 client.js | | row-deepseek/ | dsh-search-deepseek | 官方兜底行包:同样按包名 re-export 宿主实现(host-only) | - bundle 的 cordis.patch.yml 只插两行,name: 分别是上面两个行包名;两行都 re-export 同一个模块 ⇒ 一个模块实例 = 一份源注册表。 - bundle ↔ 行包互相声明依赖(bundle 依赖行包以安装它们;行包依赖 bundle 以解析裸包名导入)。只有依赖图成环,运行时不成环(宿主实现不 import 行包)。 正本 ↔ 生成物 - 正本 = 本目录(进 git)。 - 生成物 = profile 的 node_modules 副本: - bundle\ → ~\.dsh\profiles\desktop\node_modules\dsh-websearch-tavily-keys-select\ - row-chain\ → …\dsh-search-chain\ - row-deepseek\ → …\dsh-search-deepseek\ - 唯一写入通道:node sync-to-profile.mjs --apply(需要提权,profile 不在文件围栏内)。 收工自检:node sync-to-profile.mjs --check(期望 一致:N/N,退出码 0)。 ⚠️ 发布阻塞点(2026-09-29 修掉):行包原先用相对路径 re-export(from '../dsh-web-search-chain/index-v5.mjs')——在 profile 的扁平 node_modules 里碰巧能解析,但 dsh plugin 用的是 pnpm(虚拟 store + 符号链接),从 .pnpm/dsh-search-chain@…/node_modules/dsh-search-chain/ 出发那个兄弟目录不存在 ⇒ 装上去 import 失败。 现已改成按包名 re-export,并在行包里声明 bundle 依赖(test/manifest.test.mjs 有守卫)。 运行期文件 | 路径 | 作用 | | $DSH_HOME\web-search-chain.json | 源列表(唯一真源),链路每次搜索重读;损坏/超 64KB 时按默认值工作 | | $DSH_HOME\.credentials.yaml | 明文密钥(DSH 凭据域;refs 段,引用名 WEB_SEARCH_TAVILY_<n>) | | $DSH_HOME\web-search-chain.log | 审计:哪条源服务了、何时走了官方兜底 | 测试(逐文件跑,本机 node --test 必失败——沙箱禁命名管道) node test\run-all.mjs # 全部 .test.mjs(进程内汇总) node test\verify-client.mjs # 客户端验证台(vm + 假 react/jsx + 合规守卫 + 注册 key 动态比对) node test\make-mutants.mjs # 变异测试:5 个变异必须全部被杀 发布 三个包分别发布(先 row 后 bundle,保证依赖已在线) cd row-chain ; npm publish --auth-type=web cd ../row-deepseek ; npm publish --auth-type=web cd ../bundle ; npm publish --auth-type=web 验收 改任何文件后:--check 一致 → --apply 同步 → 整机重启 DSH(打包版没有「刷新页面」)→ 侧栏 Plugins → 本包包页看卡片。 改动记录见 work\websearch-plugin-20260929\profile-patch-diff.md(profile 补丁那次改动),完整实施与验证见 reports\dsh-websearch-配置界面-实施与验证.md。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
apherchin/dsh-websearch-tavily-keys-select
按序轮换多个 Tavily 密钥,失败自动回退官方搜索
相关插件 · 搜索 / 抓取
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