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

多插件工具集 margbug01/dsh-ma-plugins

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

为会话补上联网搜索、调研、交接与文件拖放能力

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 64 处,展示前 53 条)
  • 发起网络请求
    dsh-file-drop/client.js:154
    const response = await fetch(`${UPLOAD_PATH}?${query}`, {
  • 发起网络请求
    dsh-file-drop/client.js:204
    await fetch(`${UPLOAD_PATH}?sessionId=${encodeURIComponent(sessionId)}&name=${encodeURIComponent(chip.name)}`, { method: "DELETE" });
  • 写入本地文件
    dsh-file-drop/index.mjs:45
    await mkdir(dir, { recursive: true });
  • 写入本地文件
    dsh-file-drop/index.mjs:50
    await writeFile(join(dir, candidate), body, { flag: "wx" });
  • 删除本地文件
    dsh-file-drop/index.mjs:130
    await unlink(target);
  • 写入剪贴板
    dsh-handoff/lib/client.js:202
    try { await navigator.clipboard.writeText(parsed.brief); setCopied(true); setTimeout(() => setCopied(false), 1500); } catch {}
  • 发起网络请求
    dsh-librarian/lib/github.js:210
    async fetch(key, {
  • 发起网络请求
    dsh-librarian/lib/github.js:326
    response = await fetch(url, {
  • 发起网络请求
    dsh-librarian/lib/github.test.js:51
    const first = await cache.fetch("repo", { ttlMs: 1000, load });
  • 发起网络请求
    dsh-librarian/lib/github.test.js:52
    const second = await cache.fetch("repo", { ttlMs: 1000, load });
  • 发起网络请求
    dsh-librarian/lib/github.test.js:70
    const first = cache.fetch("file", { ttlMs: 1000, inflightKey: "same-agent", load });
  • 发起网络请求
    dsh-librarian/lib/github.test.js:71
    const second = cache.fetch("file", { ttlMs: 1000, inflightKey: "same-agent", load });
  • 发起网络请求
    dsh-librarian/lib/github.test.js:93
    const first = cache.fetch("shared", {
  • 发起网络请求
    dsh-librarian/lib/github.test.js:99
    const second = cache.fetch("shared", {
  • 发起网络请求
    dsh-librarian/lib/index.js:299
    return responseCache.fetch(cacheKey, {
  • 读取本地文件
    dsh-oracle/lib/context.js:74
    const root = await realpath(path.resolve(cwd));
  • 读取本地文件
    dsh-oracle/lib/context.js:86
    const target = await realpath(candidate);
  • 读取本地文件
    dsh-oracle/lib/context.js:88
    const info = await stat(target);
  • 读取本地文件
    dsh-oracle/lib/context.js:93
    const buffer = await readFile(target);
  • 写入本地文件
    dsh-oracle/lib/context.test.js:19
    await mkdir(path.join(root, "src"));
  • 写入本地文件
    dsh-oracle/lib/context.test.js:20
    await writeFile(path.join(root, "src", "app.js"), "const value = 42;\n", "utf8");
  • 删除本地文件递归
    dsh-oracle/lib/context.test.js:27
    await rm(root, { recursive: true, force: true });
  • 写入本地文件
    dsh-oracle/lib/context.test.js:35
    await writeFile(outside, "outside", "utf8");
  • 写入本地文件
    dsh-oracle/lib/context.test.js:36
    await writeFile(path.join(root, ".env"), "API_KEY=secret-value", "utf8");
  • 写入本地文件
    dsh-oracle/lib/context.test.js:37
    await writeFile(path.join(root, "image.bin"), Buffer.from([1, 2, 0, 4]));
  • 删除本地文件递归
    dsh-oracle/lib/context.test.js:42
    await rm(root, { recursive: true, force: true });
  • 删除本地文件
    dsh-oracle/lib/context.test.js:43
    await rm(outside, { force: true });
  • 写入本地文件
    dsh-oracle/lib/context.test.js:50
    await writeFile(path.join(root, "a.txt"), "a".repeat(20), "utf8");
  • 删除本地文件递归
    dsh-oracle/lib/context.test.js:57
    await rm(root, { recursive: true, force: true });
  • 发起网络请求
    dsh-session-manager/client.js:55
    return (await decode(await fetch("/session-manager", { method: "GET", cache: "no-store" }))).snapshot;
  • 发起网络请求
    dsh-session-manager/client.js:58
    const response = await fetch("/session-manager", {
  • 读取本地文件
    dsh-session-manager/index.mjs:82
    await stat(path)
  • 写入本地文件
    dsh-session-manager/index.mjs:91
    await mkdir(dirname(path), { recursive: true })
  • 写入本地文件
    dsh-session-manager/index.mjs:93
    await writeFile(temporary, JSON.stringify(value, null, 2) + '\n', 'utf8')
  • 写入本地文件
    dsh-session-manager/index.mjs:94
    await rename(temporary, path)
  • 读取本地文件
    dsh-session-manager/index.mjs:119
    const raw = await readFile(trashMetaPath(id), 'utf8')
  • 读取本地文件
    dsh-session-manager/index.mjs:125
    const entries = await readdir(TRASH_ROOT, { withFileTypes: true })
  • 读取本地文件
    dsh-session-manager/index.mjs:208
    const identity = await stat(location.path, { bigint: true })
  • 读取本地文件
    dsh-session-manager/index.mjs:598
    if ((await readdir(path)).length === 0) await rm(path, { recursive: true, force: true })
  • 删除本地文件递归
    dsh-session-manager/index.mjs:598
    if ((await readdir(path)).length === 0) await rm(path, { recursive: true, force: true })
  • 读取本地文件
    dsh-session-manager/index.mjs:621
    await stat(location.path)
  • 写入本地文件
    dsh-session-manager/index.mjs:634
    await mkdir(directory, { recursive: true })
  • 写入本地文件
    dsh-session-manager/index.mjs:637
    await rename(location.path, artifactPath(metadata))
  • 删除本地文件递归
    dsh-session-manager/index.mjs:639
    await rm(directory, { recursive: true, force: true })
  • 删除本地文件递归
    dsh-session-manager/index.mjs:699
    await rm(trashDir(id), { recursive: true, force: true }).catch(() => {})
  • 写入本地文件
    dsh-session-manager/index.mjs:718
    await mkdir(dirname(metadata.originalPath), { recursive: true })
  • 删除本地文件递归
    dsh-session-manager/index.mjs:726
    await rm(trashDir(id), { recursive: true, force: true })
  • 删除本地文件递归
    dsh-session-manager/index.mjs:740
    await rm(trashDir(id), { recursive: true, force: true })
  • 发起网络请求
    dsh-web-search-tavily/lib/index.js:341
    response = await fetch(endpoint, {
  • 发起网络请求
    dsh-web-search-tavily/lib/index.js:391
    response = await fetch(endpoint, {
  • 发起网络请求
    dsh-web-search-tavily/lib/index.js:472
    async fetch(request, signal) {
  • 发起网络请求
    dsh-web-search-tavily/lib/index.js:527
    response = await fetch(endpoint, {
  • 发起网络请求
    dsh-web-search-tavily/lib/index.js:575
    response = await fetch(endpoint, {
扫描于 2026/11/5(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 网页搜索
  • 第二意见咨询
  • 会话交接与文件投递

README

由 DeepSeek 最新模型翻译生成
dsh-ma-plugins 一组 DeepSeek Harness(DSH)插件:联网搜索、只读第二意见、GitHub 调研、会话交接、会话归档、拖文件进对话框。 每个包都声明了 dsh.bundle。dsh plugin add 会挂进 profile。本仓库已打上 dsh-plugin 话题,方便 dsh-find-plugin 和 GitHub 话题页找到。 dsh-plugin dsh license 插件 | 插件 | 版本 | 用途 | | dsh-web-search-tavily | 0.3.1 | Tavily + Exa 混合搜索,以及 Exa 优先、Tavily 回退的页面提取 | | dsh-oracle | 0.2.2 | 无工具、脱敏、强制只读的第二意见 Agent | | dsh-librarian | 0.3.2 | 带行号证据的 GitHub 调研子代理 | | dsh-handoff | 0.4.1 | /handoff 生成脱敏交接稿并开新会话 | | dsh-session-manager | 0.2.4 | 会话盘点、改名、归档、恢复、批量删除 | | dsh-file-drop | 0.1.1 | 拖任意文件进输入框,保存到 .dsh-uploads/ | 安装 这是 monorepo,按包安装。
展开完整文档(README 剩余 1 节)
dsh-ma-plugins

一组 DeepSeek Harness(DSH)插件:联网搜索、只读第二意见、GitHub 调研、会话交接、会话归档、拖文件进对话框。

每个包都声明了 dsh.bundle。dsh plugin add 会挂进 profile。本仓库已打上 dsh-plugin 话题,方便 dsh-find-plugin 和 GitHub 话题页找到。

dsh-plugin
dsh
license

插件

| 插件 | 版本 | 用途 |
| dsh-web-search-tavily | 0.3.1 | Tavily + Exa 混合搜索,以及 Exa 优先、Tavily 回退的页面提取 |
| dsh-oracle | 0.2.2 | 无工具、脱敏、强制只读的第二意见 Agent |
| dsh-librarian | 0.3.2 | 带行号证据的 GitHub 调研子代理 |
| dsh-handoff | 0.4.1 | /handoff 生成脱敏交接稿并开新会话 |
| dsh-session-manager | 0.2.4 | 会话盘点、改名、归档、恢复、批量删除 |
| dsh-file-drop | 0.1.1 | 拖任意文件进输入框,保存到 .dsh-uploads/ |

安装

这是 monorepo,按包安装。GitHub 安装用 #path: 指定子目录:

dsh plugin --profile web add github:margbug01/dsh-ma-plugins#path:dsh-web-search-tavily
dsh plugin --profile web add github:margbug01/dsh-ma-plugins#path:dsh-oracle
dsh plugin --profile web add github:margbug01/dsh-ma-plugins#path:dsh-librarian
dsh plugin --profile web add github:margbug01/dsh-ma-plugins#path:dsh-handoff
dsh plugin --profile web add github:margbug01/dsh-ma-plugins#path:dsh-session-manager
dsh plugin --profile web add github:margbug01/dsh-ma-plugins#path:dsh-file-drop

本地开发把 spec 换成 link:C:/path/to/dsh-ma-plugins/。

装完后重启 dsh web。

改配置时,在 ~/.dsh/profiles/web/cordis.patch.yml 里按 id 覆盖。Cordis 会整段替换该行的 config,要保留的键必须全部重写。见 examples/cordis.patch.yml。不要再 - insert 已经由 dsh plugin add 挂上的插件。

凭据

插件只读运行时凭据,仓库里不存密钥。

- dsh-web-search-tavily — TAVILY_API_KEY、EXA_API_KEY
- dsh-librarian — GITHUB_TOKEN

请通过 DSH 凭据服务或启动环境配置。不要提交 .env、.credentials.yaml、Token 或日志。

兼容性

面向 DeepSeek Harness 0.1.0-rc.6,需要 Node.js 22。

License

MIT
预览分享卡片长什么样 ↓margbug01/dsh-ma-plugins
分享 · DeepSeek Harness Hub
margbug01/dsh-ma-plugins

为会话补上联网搜索、调研、交接与文件拖放能力

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