前言¶
DeepSeek Harness (DSH) 生态支持通过插件扩展功能。@MarvekG/dsh-plugins 是一个由 MarvekG 维护的 DSH 插件集合,包含兼容性修复和功能增强。它解决了智能体开发中常见的两个具体问题:冗余的沙箱权限请求报错,以及在 Web 界面点击文件路径失败的问题。
核心功能¶
本插件包含以下已核实的能力:
1. 处理冗余沙箱权限请求:当 session 权限已切换为 danger-full-access,但重试请求仍携带窄于当前权限的 sandbox_permissions 和 justification 时,插件会自动清理这些冗余字段,避免 DSH 报错 sandbox escalation is not strictly wider。
2. 点击路径改为弹出网页查看器:将原生的文件打开请求(可能涉及 spawn powershell.exe)拦截并改为在浏览器中打开,解决 WSL 环境下的路径调用失败问题。
3. 多入口结构:包含 sandbox-same-mode 和 path-viewer 两个独立入口,每个入口拥有独立的 Cordis 生命周期。
4. 语法高亮:依赖 highlight.js 实现代码语法高亮。
安装与启用¶
需要确保 dsh 命令行工具已安装并运行正常。
从 GitHub 安装¶
执行以下命令将插件安装到 web profile(请根据实际情况替换 profile 名):
dsh plugin --profile web add github:MarvekG/dsh-plugins
安装或更新后,必须重启 DSH Web 才能生效。
从旧版本升级¶
本包已从 @MarvekG/dsh-bug-fix 重命名为 @MarvekG/dsh-plugins。升级时必须先卸载旧包,再安装新包,不能走更新流程。
dsh plugin --profile web remove @MarvekG/dsh-bug-fix
dsh plugin --profile web add github:MarvekG/dsh-plugins
dsh web
注意:卸载与重装之间不要重启 DSH Web,避免旧名缺失导致的装配告警。
本地调试与测试¶
本地调试¶
克隆仓库后,在根目录执行:
dsh plugin --profile web add .
dsh web
运行测试¶
在插件目录执行:
npm test
典型用法¶
沙箱权限处理¶
插件在工具注册时包装执行函数,覆盖全局工具和 DSH Web 的 preset-scoped 工具。当满足以下条件时,会删除冗余的升级字段并按当前权限执行:
1. sandbox_permissions 是工具 schema 明确公开的枚举值;
2. justification 是非空字符串;
3. 请求权限不宽于当前调用、当前 session 的有效 sandbox 权限。
真正的权限升级和非法输入仍按原流程处理。
路径查看器¶
插件通过 cordis.patch.yml 单独挂载了 dsh-plugins-path-viewer 入口。
* 查看路径:访问 GET /view?path=<绝对路径>[&line=N]。文件会被渲染为行号表格,目录渲染为可点击的列表页。
* 配置项:
* maxBytes:单次渲染字节上限。
* intercept:改道的 RPC 方法列表。
* 实现机制:通过 webserver/index-inject 向 GUI 页面注入脚本,拦截 host.openPath 和 host.openTextFile RPC,改用 window.open('/view?path=…') 在新标签页展示。若被拦截,自动放行原始请求。
注意事项¶
- 安装或更新后务必重启 DSH Web。
- 插件不扩大工作区,也不修改
workspaceRoot,仅做路径展示和权限清理。 - 插件基于 MIT 许可证开源。