拆分 DSH 的 web 接缝:web_search 走 Parallel,web_fetch 走 Tavily,并自动升级到 Firecrawl。
30.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add AnbaoIy/DSH-Enhance该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · search
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 22 处,展示前 22 条)
- 发起网络请求lib/chain.js:226
async fetch(request, signal) { - 读取本地文件lib/session-ops.js:264
const parsed = JSON.parse(await readFile(historyFile(), "utf8")); - 写入本地文件lib/session-ops.js:273
await mkdir(moverDir(), { recursive: true }); - 写入本地文件lib/session-ops.js:276
await writeFile(temp, `${JSON.stringify(records, null, 2)}\n`, "utf8"); - 写入本地文件lib/session-ops.js:277
await rename(temp, target); - 写入本地文件lib/session-ops.js:286
await mkdir(backupDir(), { recursive: true }); - 写入本地文件lib/session-ops.js:296
await writeFile(join(backupDir(), `${backupId}.json`), JSON.stringify(payload), "utf8"); - 读取本地文件lib/session-ops.js:303
const parsed = JSON.parse(await readFile(join(backupDir(), `${backupId}.json`), "utf8")); - 删除本地文件lib/session-ops.js:400
await rm(join(backupDir(), `${id}.json`), { force: true }); - 读取本地文件lib/session-ops.js:411
entries = await readdir(backupDir()); - 读取本地文件lib/session-ops.js:420
const info = await stat(join(backupDir(), entry)); - 删除本地文件lib/session-ops.js:422
await rm(join(backupDir(), entry), { force: true }); - 读取本地文件lib/session-ops.js:763
entries = await readdir(directory); - 删除本地文件递归lib/session-ops.js:769
await rm(target, { recursive: true, force: true }); - 删除本地文件递归lib/session-ops.js:783
await rm(spillDirectory(spill.root, sessionId), { recursive: true, force: true }); - 发起网络请求lib/platforms.js:142
async fetch(ctx, request, _options, signal) { - 发起网络请求lib/platforms.js:242
async fetch(ctx, request, options, signal) { - 发起网络请求lib/platforms.js:329
async fetch(ctx, request, options, signal) { - 读取本地文件lib/health.js:53
const text = readFileSync(file, "utf8").trim(); - 读取本地文件lib/health.js:116
const raw = await readFile(healthFilePath(), "utf8"); - 写入本地文件lib/health.js:128
await mkdir(dirname(file), { recursive: true }); - 写入本地文件lib/health.js:129
await writeFile(file, `${JSON.stringify({ stateVersion: STATE_VERSION, ...state }, null, 2)}\n`, "utf8");
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-launch-environment@deepseek-ai/dsh-web@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 搜索走Parallel
- 抓取走Tavily
README
由 DeepSeek 最新模型翻译生成DSH-Enhance
DSH 会话删除、工作区迁移、搜索换源插件
功能
删除会话
会话行和归档行的「…」菜单多一项「删除会话」。二次确认后,把转录、工作区记账、归档标记与 spill 一起清掉,不留半截。
迁移会话
- 单条:把会话行拖到目标工作区的行上(落点有虚线高亮)。
- 整个工作区:工作区「…」→「迁移工作区」,选目标后一次迁走。
迁移会在目标路径下重建一份带完整历史的会话,再删除原会话(不进入归档)。工作区归属由会话 header 的 cwd 决定,且 header 不可改写,所以只能重建。
迁移记录
每次迁移前自动备份完整会话。「设置 → 增强设置」→「迁移记录」列出历史(会话名、从哪个工作区到哪个、时间),可把会话一键恢复到迁移前的工作区。
记录与备份保留 3 天,DSH 启动时自动清理过期项。
搜索 / 抓取替换
把网页搜索与抓取换成一串「优先 → 候补」平台。前一家不可用(没 key、限流、超时、没抓到正文)就自动换下一家。
展开完整文档(README 剩余 1 节)
DSH-Enhance
DSH 会话删除、工作区迁移、搜索换源插件
功能
删除会话
会话行和归档行的「…」菜单多一项「删除会话」。二次确认后,把转录、工作区记账、归档标记与 spill 一起清掉,不留半截。
迁移会话
- 单条:把会话行拖到目标工作区的行上(落点有虚线高亮)。
- 整个工作区:工作区「…」→「迁移工作区」,选目标后一次迁走。
迁移会在目标路径下重建一份带完整历史的会话,再删除原会话(不进入归档)。工作区归属由会话 header 的 cwd 决定,且 header 不可改写,所以只能重建。
迁移记录
每次迁移前自动备份完整会话。「设置 → 增强设置」→「迁移记录」列出历史(会话名、从哪个工作区到哪个、时间),可把会话一键恢复到迁移前的工作区。
记录与备份保留 3 天,DSH 启动时自动清理过期项。
搜索 / 抓取替换
把网页搜索与抓取换成一串「优先 → 候补」平台。前一家不可用(没 key、限流、超时、没抓到正文)就自动换下一家。
| 平台 | 搜索 | 抓取 | 免费额度 |
| Parallel | ✅ | — | 每月 5,000 次 |
| Tavily | ✅ | ✅ | 每月 1,000 credits |
| Firecrawl | ✅ | ✅ | 每月 1,000 credits |
选 DeepSeek 官方时,请求原样转交宿主,key 与账号令牌都由宿主管理,本插件不复制、不另存。搜索与抓取各三个槽位(优先、候补 1、候补 2),整条链 28 秒预算;页面确实 404/410 时不降级。
搜索与抓取设置
上图即「设置 → 增强设置」里的样子:一个总开关管搜索与抓取,两条链各自选平台,下方填各平台密钥。
安装
git clone https://github.com/AnbaoIy/DSH-Enhance.git
dsh plugin --profile desktop add link:C:/path/to/DSH-Enhance
或直接改 ~/.dsh/profiles/desktop/package.json:
{
"dependencies": { "dsh-enhance": "link:C:/path/to/DSH-Enhance" },
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-enhance"] } }
}
插件自带 cordis.patch.yml,把 web 的 searchProvider / fetchProvider 指向本插件。重启 DSH 后出现「设置 → 增强设置」。
不要与 dsh-webenhance、@michengai/dsh-archive-manager 同时启用:三者争用同一个会话菜单槽位与 web provider id。
设置项
| 开关 | 作用 |
| 删除会话功能 | 关掉后会话菜单不再出现「删除会话」 |
| 工作区迁移功能 | 关掉后拖拽与「迁移工作区」都不可用 |
| 搜索功能替换 / 抓取功能替换 | 关掉后交还宿主内置 provider |
同页还可配各平台 key、优先-候补链与超时。密钥存入 DSH 凭据服务,不写设置文件、不进日志。
常见问题
- 迁移后原会话在哪? 已删除,不进归档;3 天内在「迁移记录」里点「恢复」可以找回。
- 「恢复」是灰的? 那条记录由旧版插件留下,没有对应备份文件。
- 迁移后侧边栏显示「未命名」? 旧版本的问题,现在迁移完会立刻写好标题缓存;已受影响的会话点开一次即可。
- 搜索没走我配的平台? 确认开关已开、该平台在优先位、key 已保存。
开发
npm test
测试用 test/register-shims.mjs 把 @deepseek-ai/* 的裸导入指向 test/shims/ 替身,不需要 DSH 本体。改完宿主侧代码需重载插件或重启 DSH;改完 lib/client.js 需整页刷新。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
AnbaoIy/DSH-Enhance
拆分 DSH 的 web 接缝:web_search 走 Parallel,web_fetch 走 Tavily,并自动升级到 Firecrawl。
相关插件 · 搜索 / 抓取
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