helmd
ADWMC/helm-d单包逆向与渗透测试安全分析插件:首轮工具收敛、领域路由与 33 个工具,覆盖 APK、Web、原生二进制、协议、恶意样本与 LLM 场景的逆向分析、加壳脱壳与 License 破解绕过;内置 H-CoT 评估引擎(语义路由、/hcot 命令)、账本驱动的 Web 工作台与工具货架、磁盘案件工作区(证据链自动存证、E 编号结论校验、上下文压缩后恢复)、GitHub 工具检索与 361 篇按需参考文档。
细粒度权限网关:按分类(工作区外目录/命令/读写文件/子代理/重复操作)逐项审查工具调用,全局/项目双级白黑名单、快捷工具默认值、自定义规则,中英文审批弹窗(内联 diff 详情、自定义拒绝意见)与底层沙箱升级流程。
为 DeepSeek Harness(DSH)提供的细粒度权限控制插件
🌏 中文 | English
dsh · dsh-plugin · plugin · permission control · approval · sandbox · security · AI agent · 权限控制 · 审批 · 沙箱 · 权限网关
当前 DSH 仅有 [Read only]、[Workspace Write]、[Full access] 三档权限,权限粒度较粗。本插件新增 「自定义审查」(Custom Review) 权限网关,对工具调用进行逐项审查。
权限按分类(目录访问 / 执行命令 / 读取文件 / 读取图片 / 编辑文件 / 撤销操作 / 启动子代理 / 重复操作)逐项审查工具调用,支持全局/项目双级配置、例外(白/黑名单)、快捷工具默认值、自定义规则、兜底策略,以及中英文双语审批弹窗与沙箱升级流程。
web_search、skill 等没法按文件或命令分类的工具,也能单独设定默认是询问、直接允许还是直接拒绝。rm -rf」),比分类例外更灵活;优先级 规则 > 例外 > 默认值,用最少的规则管住最多的情况。git status *),常放行的命令顺手就加进例外。已安装 dsh-market(DSH 插件市场)的用户:打开 设置 → 插件市场(Plugin Market),搜索 dsh-permgate,点卡片上的「安装」并按提示确认来源(npm:@mrweicodes/dsh-permgate;若卡片显示 GitHub 源则为 github:MrWeiCodes/dsh-permgate)。安装完成后重启 `dsh web`。然后在会话的权限选择器(/permission)中选择 「自定义审查」。
把本仓库地址告诉 DSH 的 AI 助手即可,例如:「安装 https://github.com/MrWeiCodes/dsh-permgate 这个插件」。AI 会替你完成插件装载、依赖与补丁处理;之后重启 dsh web,在会话的权限选择器(/permission)中选择 「自定义审查」(每个对话独立记忆;也可在 设置 → Permission 里设为新会话默认)。
宿主侧插件为纯 ESM JavaScript,浏览器注册脚本也作为运行时文件随仓库直接提交。本包没有 build、prepare 或 install 脚本,因此从 Git 安装时不需要授权 pnpm 执行构建。
从 npm 安装(推荐):
dsh plugin --profile web add @mrweicodes/dsh-permgate从 GitHub 安装:
dsh plugin --profile web add -w github:MrWeiCodes/dsh-permgate从本地 checkout 安装(仅当 checkout 位于 profile 目录内时依赖才能解析;否则请用方式四):
dsh plugin --profile web add -w ./dsh-permgate重启 dsh web,然后在会话的权限选择器(/permission)中选择 「自定义审查」(每个对话独立记忆);也可在 设置 → Permission 里把它设为新会话默认。
已按「方式四」手动安装过的,请先按「卸载」清掉旧的手动行与依赖,再使用方式三,避免重复注册。
无 pnpm 或离线环境时的备选路径:
# 示例:web profile
$dst = "$HOME\.dsh\profiles\web\packages\dsh-permgate"
git clone https://github.com/MrWeiCodes/dsh-permgate.git $dstpackage.json 的 dependencies 中加入:"@mrweicodes/dsh-permgate": "file:./packages/dsh-permgate"cordis.patch.yml 的内容并入 profile 的 cordis.patch.yml(在文件末尾追加)。pnpm install(或 npm install)、dsh web。⚠️ 1.3.9 起包名变更为 `@mrweicodes/dsh-permgate`(原 dsh-permgate)。- 插件市场安装的:在市场点「更新」即可——市场会自动完成源迁移(移除旧包名、装入新包名),失败会自动回滚。
- 手动安装的(方式三/方式四):请先移除再重新安装:
```powershell
dsh plugin --profile web remove dsh-permgate
dsh plugin --profile web add -w github:MrWeiCodes/dsh-permgate
`- 配置($DSH_HOME/dsh-permgate/config.json)不受影响,无需重新设置。按安装方式对应操作,配置(`$DSH_HOME/dsh-permgate/config.json`)在更新后都会保留,无需重新设置。
dsh plugin --profile web update @mrweicodes/dsh-permgate若没有拉到最新提交(git 依赖有缓存),先移除再添加一次:
dsh plugin --profile web remove @mrweicodes/dsh-permgate
dsh plugin --profile web add -w github:MrWeiCodes/dsh-permgate然后重启 dsh web。
cd "$HOME\.dsh\profiles\web\packages\dsh-permgate"
git pull # 或重新拷贝新版本覆盖
pnpm install # 依赖声明有变化时执行然后重启 dsh web。
打开 设置 → 插件市场,在 dsh-permgate 卡片上点「卸载」(两步确认),本会话安装的插件会即时移除。配置目录 $DSH_HOME/dsh-permgate/ 不会被自动删除,按下方「残留位置清单」决定保留或清理。
直接告诉 AI 助手「卸载 dsh-permgate 插件」。AI 按下方「残留位置清单」移除插件、清理补丁与依赖,并删除配置目录(如需保留配置请提前说明)。
dsh plugin --profile web remove @mrweicodes/dsh-permgatedsh plugin remove 只移除插件本体与补丁层,不会删除配置目录——需按下方清单删除 $DSH_HOME/dsh-permgate/。
cordis.patch.yml 中删除 - insert: permgate 行;permission 预设覆盖整行可一并删除(恢复平台默认预设表)。package.json 的 dependencies 中删除 "@mrweicodes/dsh-permgate": ...。pnpm install(或 npm install)、dsh web。$DSH_HOME/dsh-permgate/——$DSH_HOME 默认是 ~/.dsh(Windows 下 C:\Users\.dsh),插件的 config.json 保存在这里。卸载不会自动删除,AI 卸载时按此路径删除整个目录。$DSH_HOME/profiles//packages/dsh-permgate/。package.json 中的 "@mrweicodes/dsh-permgate": ... 依赖、cordis.patch.yml 中的 - insert: permgate 行与 permission 预设覆盖。permission/preset: custom-review 事件是 DSH 自身的记录,不属于插件残留,不要删除。$DSH_HOME/dsh-permgate/config.json 不会被自动删除(这是插件唯一的持久化文件),卸载后手工删除即可。permission/preset 事件——这是 DSH 自身的会话记录,非本插件写入的数据,不属于插件残留;卸载后该预设不存在,权限选择器会自动回退到匹配当前沙箱/审批设置的内置预设(如 Workspace Write),不会报错。sandbox/mode 会话事件保留,卸载后仍生效(属 DSH 会话状态,非插件残留)。$DSH_HOME/dsh-permgate/config.json
webServer 路由、tools pre-execute 审查链、locale/slots 服务等),未通过 hook、补丁等手段修改原生 DSH 代码或内部实现;卸载即从进程中完全移除,刷新页面后浏览器侧不留任何痕迹。/permgate/*(含 SSE /permgate/events),与其他插件冲突概率极低。permgate、permgate-approval 等独立 id;若与其他插件撞 id 会直接报错(不会静默破坏)。permission 整行是全表覆盖语义(重述全部预设)。若第三方补丁同时覆盖同一配置会互相覆盖——不要与其它修改 permission 配置的补丁并存。approval.request,互不冲突。ctx.fsEncoding 解码服务后,permgate 的审批弹窗与对比面板(含写类 diff 与撤销预览)会复用它判定编码并渲染内容,并标注解出的编码;若编码是按内容猜测的(而非 BOM 确定的),预览上会带问号提示,避免把猜测当成文件真实编码。解出的文本若仍含 NUL 字符则按二进制处理、不预览(维持「读不出」的提示而非展示乱码)——这条判据不区分编码来源:二进制在猜测路径下会被单字节编码兜底映射成「看似成功」的文本,同样要拦下;而合法的 UTF-16/32(带 BOM)文本解出后不含 NUL,不受影响。该依赖是可选的:未安装时预览维持原有行为(对非 UTF-8 文件提示读不出),不自行猜测——同一份字节在两处各自猜会导致显示分歧,判定权统一归该插件。(二进制判定沿用 DSH 的既有口径:只采样文件前 8KB,NUL 出现在采样窗口之后的文件仍可能被当作文本,这是上游 ctx.fs 的行为。)# 本仓库文件即插件源码(根目录 index.js = 宿主半,client.js = 浏览器半)
node --check index.js
node --check client.js如需自定义插件功能或修改插件,直接使用 DSH 的 Creator mode 即可快速进行开发修改。