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

实用插件工具箱 moon16u/dsh-pouch

DeepSeek Harnessv0.5.1
moon16u13 天前有提交已提供中文文档扫描:含敏感能力

DSH 实用小插件工具箱,一袋给 DeepSeek Harness 用的实用插件

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @moon16u/dsh-pouch
npm 源 · @moon16u/dsh-pouch 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/10/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 13 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@moon16u/dsh-pouch @ 0.5.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/13 09:37:30

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 30 处,展示前 30 条)
  • 写入剪贴板
    lib/client.js:225
    if (!await _uiPrimitives.writeClipboard(text)) throw new Error("clipboard write failed");
  • 发起网络请求
    lib/client.js:934
    return fetch("/api/dsh-mcp-console" + path, {
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/index.js:179
    if (!isHomeOrRoot && existsSync(cwd)) {
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/index.js:183
    if (existsSync(wsStoragePath)) {
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/index.js:184
    const raw = JSON.parse(readFileSync(wsStoragePath, "utf8"));
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/index.js:189
    const target = list.find((w) => w.path && existsSync(w.path) && resolve(w.path) !== resolve(home));
  • 发起网络请求
    packages/dsh-plugin-mcp-console/lib/client.js:352
    return fetch("/api/dsh-mcp-console" + path, {
  • 写入本地文件
    packages/dsh-plugin-restart/lib/index.js:41
    mkdirSync(dshHome, { recursive: true });
  • 写入本地文件
    packages/dsh-plugin-restart/lib/index.js:42
    writeFileSync(helperPath, helper, { mode: 0o700 });
  • 执行外部命令固定命令
    packages/dsh-plugin-restart/lib/index.js:56
    execFileSync("/bin/bash", ["-c", launch], { stdio: "ignore" });
  • 读取本地文件
    packages/dsh-plugin-restart/lib/index.js:75
    if (Date.now() - statSync(path).mtimeMs > FAILURE_NOTICE_MAX_AGE_MS) return "";
  • 读取本地文件
    packages/dsh-plugin-restart/lib/index.js:76
    const m = JSON.parse(readFileSync(path, "utf8"));
  • 写入剪贴板
    packages/dsh-plugin-session-copy/lib/client.js:169
    if (!await primitives.writeClipboard(text)) throw new Error("clipboard write failed");
  • 发起网络请求
    packages/dsh-plugin-web-search-tavily/lib/index.js:95
    response = await fetch(url, {
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/store.js:86
    if (existsSync(this.path)) {
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/store.js:88
    raw = JSON.parse(readFileSync(this.path, "utf8"));
  • 写入本地文件
    packages/dsh-plugin-mcp-console/lib/store.js:92
    renameSync(this.path, aside);
  • 写入本地文件
    packages/dsh-plugin-mcp-console/lib/store.js:140
    mkdirSync(dir, { recursive: true });
  • 写入本地文件
    packages/dsh-plugin-mcp-console/lib/store.js:142
    writeFileSync(temp, body, "utf8");
  • 写入本地文件
    packages/dsh-plugin-mcp-console/lib/store.js:143
    renameSync(temp, this.path);
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/clientAdapter.js:47
    if (existsSync(hoisted)) bases.push(hoisted);
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/clientAdapter.js:49
    for (const entry of readdirSync(profilesRoot, { withFileTypes: true })) {
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/clientAdapter.js:52
    if (existsSync(base) && !bases.includes(base)) bases.push(base);
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/clientAdapter.js:73
    if (typeof resolved !== "string" || !existsSync(resolved)) continue;
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/yamlMigrator.js:256
    if (!existsSync(targetPath)) {
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/yamlMigrator.js:259
    const rawYaml = readFileSync(targetPath, "utf8");
  • 写入本地文件
    packages/dsh-plugin-mcp-console/lib/yamlMigrator.js:357
    writeFileSync(targetPath, output, "utf8");
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/yamlMigrator.js:431
    let baseContent = existsSync(targetPath) ? readFileSync(targetPath, "utf8") : "";
  • 读取本地文件
    packages/dsh-plugin-mcp-console/lib/yamlMigrator.js:431
    let baseContent = existsSync(targetPath) ? readFileSync(targetPath, "utf8") : "";
  • 写入本地文件
    packages/dsh-plugin-mcp-console/lib/yamlMigrator.js:448
    writeFileSync(targetPath, baseContent + appendContent, "utf8");
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

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

README

由 DeepSeek 最新模型翻译生成
dsh-pouch dsh-pouch 是一个包含多个相互独立、可单独安装的 DeepSeek Harness (DSH) 插件的 monorepo。 仓库根目录只是 pnpm workspace——它不是 DSH bundle,不能安装,也从不发布到 npm。按需安装其中任意插件即可。 📦 包含插件 | 插件 | 类型 | 描述 | | @moon16u/dsh-restart | Host / Web UI | 提供 /restart 与 /dsh-restart 命令、原生 🔄 重启 候选菜单与 dsh_restart Agent 工具,实现进程分离的安全 3 秒平滑重启。 | | @moon16u/dsh-mcp-console | Web UI + Host | 设置页「MCP 服务器」控制台:运行时增删改/启停/重连、工具级开关、SSE 实时状态、mcpServers JSON 导入。零 MCP 协议代码——全部复用官方 @deepseek-ai/dsh-mcp-client;profile YAML 里的 MCP 条目在启动/刷新时自动移植为动态管理(可逆回写)。 | | @moon16u/dsh-hooks | Host / Web UI | 文件声明的 DSH 命令钩子,覆盖会话启动、提问、工具、审批、Stop 与压缩后等事件,配套只读审批界面。
展开完整文档(README 剩余 1 节)
dsh-pouch

dsh-pouch 是一个包含多个相互独立、可单独安装的 DeepSeek Harness (DSH) 插件的 monorepo。
仓库根目录只是 pnpm workspace——它不是 DSH bundle,不能安装,也从不发布到 npm。按需安装其中任意插件即可。

📦 包含插件

| 插件 | 类型 | 描述 |
| @moon16u/dsh-restart | Host / Web UI | 提供 /restart 与 /dsh-restart 命令、原生 🔄 重启 候选菜单与 dsh_restart Agent 工具,实现进程分离的安全 3 秒平滑重启。 |
| @moon16u/dsh-mcp-console | Web UI + Host | 设置页「MCP 服务器」控制台:运行时增删改/启停/重连、工具级开关、SSE 实时状态、mcpServers JSON 导入。零 MCP 协议代码——全部复用官方 @deepseek-ai/dsh-mcp-client;profile YAML 里的 MCP 条目在启动/刷新时自动移植为动态管理(可逆回写)。 |
| @moon16u/dsh-hooks | Host / Web UI | 文件声明的 DSH 命令钩子,覆盖会话启动、提问、工具、审批、Stop 与压缩后等事件,配套只读审批界面。未经批准的命令不执行;信任绑定精确定义、实际执行目录与固定内容文件。 |

🚀 安装

每个插件都是独立的 DSH bundle,拥有独立的 npm 包与版本号。按需安装:

dsh plugin --profile web add @moon16u/dsh-restart
dsh plugin --profile web add @moon16u/dsh-mcp-console
dsh plugin --profile web add @moon16u/dsh-hooks

安装后重启一次 dsh web(bundle 层只在启动时组合)。无需手改 cordis.patch.yml——每个包都自带挂载补丁。

从本地检出的仓库安装

git clone https://github.com/moon16u/dsh-pouch.git ~/dsh-pouch
dsh plugin --profile web add file:~/dsh-pouch/packages/dsh-restart

从旧的一体化 bundle 迁移

@moon16u/dsh-pouch 曾经是一个加载全部插件的单一 bundle。最后一个 bundle 版本是 0.7.3,现已弃用、不再更新。如果你的 profile 仍依赖它,请先移除再安装各独立包:

dsh plugin --profile web remove @moon16u/dsh-pouch

不要把旧 bundle 与独立包同时安装——两者会加载同一批插件,导致重复的 restart 命令、重复的设置卡片和重复的 MCP 控制台。

🛠️ 单个插件详解

1. @moon16u/dsh-restart

* 痛点:在修改插件或配置后,需要手动到外部终端重启 DSH 进程;如果在 Agent 内部直接 kill 自身会导致会话卡死;第三方命令在 Web 下拉菜单中缺乏原生图标与中文描述。
* 解决:在 DSH 内部注册 /restart 与兼容旧版的 /dsh-restart 斜杠命令、原生风格的 🔄 重启 restart 下拉候选装饰与 dsh_restart Agent 工具。采用 detached setsid 异步工作进程,回车或点击后即刻响应并在 3 秒后安全平滑重启。

2. @moon16u/dsh-mcp-console

* 痛点:官方接入 MCP 的方式是往 cordis.patch.yml 写静态条目——没有 GUI、不能运行时增删改,每次改动都要重启;声明出来的服务器在面板里只能是只读摆设。
* 方案:设置页新增完整的MCP 服务器管理页,基于 cordis 动态装配运行时编排官方 @deepseek-ai/dsh-mcp-client(每台一个 fiber,热更新配置、免重启 DSH):主开关、工具级启停胶囊、SSE 实时状态与工具列表、mcpServers JSON 一键导入。外部 Agent 写进 cordis.patch.yml 的 MCP 条目由 Auto-Ingest 引擎接管:启动/刷新时连根移植进 ~/.dsh/dsh-mcp.json(含 fiber 接管与条目级 YAML 精确修剪),POST /export-yaml 可逆回写。所有 API 响应中的凭据一律打码。

🧪 运行测试

本仓库采用 pnpm workspace 管理,所有插件均包含基于 Node.js 原生测试运行器的单元测试与契约测试:

cd dsh-pouch
pnpm install
pnpm test

📄 开源协议与致谢

* MIT License © 2026 moon16u
* Logo 图标来源于 Icons8 的 Toolbox 图标。
预览分享卡片长什么样 ↓moon16u/dsh-pouch
分享 · DeepSeek Harness Hub
moon16u/dsh-pouch

DSH 实用小插件工具箱,一袋给 DeepSeek Harness 用的实用插件

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