🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

MarvekG/dsh-plugins

DeepSeek Harnessspec-screened扫描:低风险在 GitHub 查看 ↗
⚠ 装前注意

@MarvekG/dsh-plugins

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/8/26 · 已提供中文文档
综合分
29.6
GitHub 分
29.6
用户评分
—
★ Stars
3
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add MarvekG/dsh-plugins
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 1 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · market
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 30 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/21(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

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

✗npm 包@MarvekG/dsh-plugins(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/22 03:52:56

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
@MarvekG/dsh-plugins

许可证:MIT

第一章:安装指南

⚠️ 从旧包名 @MarvekG/dsh-bug-fix 升级:必须先卸载再安装。
本包已更名为 @MarvekG/dsh-plugins,包名变了,不能走「更新」流程平滑切换(旧条目会残留在 profile 里)。请先执行:

dsh plugin --profile web remove @MarvekG/dsh-bug-fix
dsh plugin --profile web add github:MarvekG/dsh-plugins
dsh web

卸载与重装之间不要重启 DSH Web,避免旧名缺失导致的装配告警。

1.1 从 GitHub 安装

需要先安装并确认 dsh 可以正常运行。默认从 GitHub 安装:

dsh plugin --profile web add github:MarvekG/dsh-plugins
dsh web

这里的 web 是 DSH profile 名称。如果使用其他 profile,把 web 换成对应的 profile 名称。

安装后,重启 DSH Web 即可生效。

1.2 固定版本

如果不想跟随仓库最新代码,可以在仓库地址后加 commit SHA:

github:MarvekG/dsh-plugins#

1.3 本地调试

克隆本仓库后,在仓库根目录执行:

dsh plugin --profile web add .
dsh web

1.4 卸载

从 web profile 移除插件:

dsh plugin --profile web remove @MarvekG/dsh-plugins

1.5 更新

更新时先移除旧版本,再安装新版本:

dsh plugin --profile web remove @MarvekG/dsh-plugins
dsh plugin --profile web add github:MarvekG/dsh-plugins
dsh web

本地调试时,把第二条命令替换为:

dsh plugin --profile web add .

1.6 运行测试

在插件目录执行:

npm test

1.7 多入口结构

本包使用 DSH 的子路径入口。当前入口:

@MarvekG/dsh-plugins/sandbox-same-mode
@MarvekG/dsh-plugins/path-viewer

它由 cordis.patch.yml 单独挂载。以后新增修复时,可以新增一个脚本、一个 exports 子路径和一个独立的 patch 行;每个入口拥有自己的 Cordis 生命周期,可以单独加载和卸载。

第二章:已解决的问题

本章按问题分别记录修复内容。后续新增问题时,继续在本章增加独立小节。

2.1 冗余沙箱权限请求

原始报错

session 权限已经切换为 danger-full-access 后,重试仍携带以下参数:

{
"file_path": "/home/wang/codes/StickyProxy/plugin/internal/state/store.go",
"content": "x",
"sandbox_permissions": "workspace-write",
"justification": "write the requested plugin fix outside the workspace"
}

DSH 在写入真正执行前报错:

sandbox escalation to "workspace-write" is not strictly wider than this call's current "danger-full-access" mode

为什么会报错

因为有效权限按 session 决定,工具 schema 会公开所有可能的升级目标。模型可能在较窄权限下收到重试指引,然后在 session 切换到相同或更宽权限后继续使用该参数。这个例子中,workspace-write 比当前的 danger-full-access 更窄,请求字段并没有增加能力,因此 DSH 正确地将它拒绝为非升级请求。

插件如何处理

插件会在工具注册时包装其执行函数,因此同时覆盖普通全局工具和 DSH Web 的 preset-scoped bash、pwsh、write、edit 工具。它只会在以下条件同时满足时,把升级字段删除并按当前权限执行:

1. sandbox_permissions 是该工具 schema 明确公开的枚举值;
2. justification 是非空字符串;
3. 请求权限不宽于当前调用、当前 session 的有效 sandbox 权限。

此时请求只是冗余声明,因而不弹审批,也不再报 not strictly wider。

真正的权限升级和所有非法输入仍然保持原来的流程:

- read-only → 更高权限:继续申请审批;
- workspace-write → danger-full-access:继续申请审批;
- 缺少说明、说明为空或参数不完整:继续报错;
- 未被工具 schema 公开的权限值(包括伪造的同级值):仍由 DSH 原始参数校验拒绝。

插件不会绕过什么

插件不会扩大工作区,也不会修改 workspaceRoot,更不会偷偷增加权限。有效权限仍为 workspace-write 时,去掉冗余升级字段后,工作区外的请求仍可能因为沙箱工作区边界而被拒绝。

安装或更新后应重启 DSH Web,使新的 preset-scoped 工具注册时经过本插件;它不会追溯包裹重启前已存在的 session 工具定义。

2.2 点击路径改为弹出网页查看器

原始报错

在 DSH Web 里点击文件路径时报:

path open failed: path open failed: spawn powershell.exe ENOENT

为什么会报错
WSL 下 DSH 通过 powershell.exe 把路径交给 Windows 桌面打开。/etc/wsl.conf 配置了 [interop] appendWindowsPath = false 时,Windows 目录不会追加进 PATH,裸命令名 spawn 直接 ENOENT。而且「从 WSL 唤起 Windows 桌面」本就脆弱——GUI 本身就跑在 Windows 浏览器里。

插件如何处理

新增 dsh-plugins-path-viewer 条目(cordis.patch.yml 单独挂载),把原生打开换成纯浏览器方案:

1. 在同一个 web 服务上注册带回环围栏的 GET /view?path=[&line=N]:文件渲染为行号表格(HTML 转义、tab=4、超 4 MiB 截断横幅、二进制识别不渲染),目录渲染为可继续点击进入的列表页。
2. 通过 webserver/index-inject 向 GUI 页面注入一段 head 脚本:拦截发往 /api/host.openPath、/api/host.openTextFile 的 RPC,改用 window.open('/view?path=…') 在新标签页展示,并按线上封包形状伪造成功应答({type:'server-response',rpcId,result:{ok:true,value:{opened:true}}});若新标签页被浏览器拦截,自动放行原始请求。常见源码由 highlight.js 做语法高亮,未知扩展名安全地按纯文本展示。

全程不 spawn 任何 Windows 进程。配置项:maxBytes(单次渲染字节上限)与 intercept(改道的 RPC 方法列表)。安装或更新后重启 DSH Web 生效。

第三章:许可证与友情链接

本项目基于 MIT 许可证 开源。

友情链接

- linux.do — 开放、友好的开发者社区。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(MarvekG)的其他插件

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群