DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-sw-approval

s

dsh-sw-approval

Manifest valid

专注于dsh对于soildwork建模的审批

hasBundlePatchMachine translated

dsh-sw-approval

给 DeepSeek Harness(DSH)用的「SolidWorks 建模安全自动审批」插件。

SW 建模时 SolidWorks 的 COM 在受限沙箱下无法工作(CO_E_SERVER_EXEC_FAILURE,甚至启动即崩), 所以 DSH 每一步都要把终端提权到 danger-full-access;一次建模会话可能出现几十次人工审批, 你没盯着的时候流程就卡住了。

本插件在 approval/request 这一层做窄口自动放行:只有能证明是 SolidWorks 建模、且严格匹配 白名单的命令才替你说一次「允许本次」;其它任何操作仍然照常弹窗。 它不是 danger-full-access + approval: never 的全局放权。

Safe, narrow auto-approval for SolidWorks workflows in DSH. It never disables the sandbox or the approval system globally: only strictly allowlisted SolidWorks escalations are auto-approved, everything else fails closed to the human prompt. ---如果这个插件帮到了你,欢迎点个⭐Star

✨ 功能

  • 只对工程模式(关于工程模式请看 https://github.com/fyjgtddco/DSH-SW-and-CAD )会话生效,其它会话完全不受影响。
  • 自动放行对象仅限 pwsh / write / edit 的 danger-full-access 提权。
  • 判定依据是会话日志里真实的 tool/call 参数,不是模型写的 justification。
  • SW 证据必须是可操作证据:受信任脚本、启动 SLDWORKS.exe、SldWorks.Application COM、 Get-Process SLDWORKS、DSH_SW_EXE + python 脚本等;纯输出文本里的 "SldWorks" 不算。
  • 危险命令拒绝清单:删除/覆盖、注册表、服务/计划任务、联网/下载/安装、cmd /c、 Invoke-Expression、Add-Type、taskkill、凭据路径、宏执行、非 SW COM ProgID 等。
  • 模型生成的 build_*.py 会先做静态扫描(必须有 SW/COM 特征;禁止 subprocess/ctypes/shutil/ winreg/urllib/requests/反射/os 破坏 API/FSO 等)。
  • 受信任脚本 SHA-256 钉住:授权脚本被改写/缺失 → 该脚本转人工审批。
  • 每会话 500 次、每回合 80 次自动放行上限;超限恢复弹窗。
  • 本地审计日志 + /swapproval 命令(status / on / off / log / rehash)。
  • 判定异常、字段缺失、解析失败 → 一律 fail-closed 交还人工审批。

⚡ 快速上手

1. 执行安装命令

把仓库 clone 到任意位置后,用 DSH 自带 CLI 安装到 desktop profile(路径换成你的实际路径):

"D:\dsh guanfnag\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "C:\path\to\dsh-sw-approval"
其它安装方式
  • 应用内安装:在 DSH 对话里让 Agent 调用 plugin_manager { action: "install_bundle", target: "<绝对路径>/dsh-sw-approval" }
  • 直接放目录:把仓库目录放进 %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-sw-approval, 并在该 profile 的 package.json 中把 dsh-sw-approval 加进 dependencies 与 dsh.profile.bundles。

2. 重启 DSH 桌面端

宿主插件是进程级配置,安装后必须完全退出并重新启动 DSH 桌面端才生效。 重启后可以在任意会话输入 /swapproval status 自检,看到下面这两行就说明装好了:

SW 安全自动审批(dsh-sw-approval)
  受信任脚本哈希:9 个
  Python 解释器:C:\Users\<你>\...\Python312\python.exe

3. 新建会话,切换到【工程模式】,开始 SW 建模

新建会话后在顶部把 Agent 预设 切到 工程模式(engineering),然后直接描述建模任务,例如 「画一个 11mm 的正方形并导出 CAD 图纸」。符合白名单的命令会被自动放行,不再逐步弹窗。

插件默认只对工程模式生效。standard 等其它预设下所有审批照旧弹窗——这是刻意的安全设计。 可以先 /swapproval status 确认「当前会话预设:engineering」。


🔒 安全模型(摘要)

闸门规则
会话preset ∈ presets(默认仅 engineering)
工具只处理 pwsh / write / edit
提权目标只处理 danger-full-access
命令必须有可操作 SW 证据 + 全部 cmdlet 在白名单 + 命中拒绝清单即弹窗
脚本工程 tools 下授权脚本按哈希钉住信任;工作区脚本必须静态扫描通过
写文件只放行工作区与 extraWriteRoots 内的 write/edit;不含受信任脚本目录
预算每会话/每回合限额,超限全部人工审批
兜底任何异常 → next()(人工审批)

完整威胁模型、攻击矩阵与残余风险见 SECURITY-REVIEW.md; 判定规则源码级契约见 DESIGN.md。

📦 环境要求

  • Windows(路径语义为 win32;其它平台未验证)
  • DeepSeek Harness 0.2.x(engines.dsh: >=0.2.0-rc.1 <0.3.0)
  • Node.js >= 22(插件本身零第三方依赖)
  • 一个可用的 engineering agent preset(含 tools/sw_bridge.py 等;默认路径 %USERPROFILE%\.dsh\.agent-presets\engineering,可配置)

🚀 安装

git clone https://github.com/<your-name>/dsh-sw-approval.git

在 DSH 里用 plugin_manager 以本地目录安装(把路径换成你 clone 下来的绝对路径):

plugin_manager { action: "install_bundle", target: "<绝对路径>/dsh-sw-approval" }

安装后 profile 的 cordis.patch.yml 会插入一行 dsh-sw-approval。 宿主插件是进程级配置,需要重启 / 重载 DSH 才生效。

插件以 link: 方式引用仓库目录:之后修改源码也不会被热加载,重启 DSH 才会加载新代码。

⚙️ 配置

在 profile 的 cordis.patch.yml(或插件设置)里覆盖任意子集;未写字段用默认值:

- id: dsh-sw-approval
  name: dsh-sw-approval
  config:
    enabled: true
    presets: [engineering]                     # 想覆盖其它预设需显式加入(不推荐)
    engineeringRoot: 'C:\Users\<you>\.dsh\.agent-presets\engineering'
    solidworksExe: 'D:\SolidWorks 2026\SOLIDWORKS\SLDWORKS.exe'
    authorizedScripts: [sw_bridge.py, swapi.py, physics_bridge.py, visual_check.py,
                        workflow_gate.py, mode_gate.py, mode2_flow.py, defense_gate.py, ask_user.py]
    workspaceScriptNames: []                   # 空数组 = 任意 cwd 下 .py 经静态扫描通过即可
    extraWriteRoots: []                        # 允许 write/edit 提权写入的额外目录(谨慎)
    scanWorkspaceScripts: true
    maxAutoApprovalsPerSession: 500
    maxAutoApprovalsPerTurn: 80
    auditDir: 'C:\Users\<you>\.dsh\sw-approval'

🧭 使用

  • 平时不用管:engineering 会话里白名单 SW 提权直接通过,其它操作照常弹窗。
  • /swapproval status:查看是否生效、本会话放行次数、最后命中规则、审计路径。
  • /swapproval off / on:本会话紧急暂停 / 恢复自动审批。
  • /swapproval log [n]:查看本会话最近 n 次自动放行。
  • /swapproval rehash:正常更新工程预设/授权脚本后重新学习受信任脚本哈希。
  • 审计:%USERPROFILE%\.dsh\sw-approval\audit.jsonl
  • 状态:%USERPROFILE%\.dsh\sw-approval\status.json(确认插件已加载)

🧪 测试

node --test --experimental-test-isolation=none test/policy.test.mjs test/plugin.test.mjs test/adversarial.test.mjs

或 npm test。测试只用 node: 内建,无需安装依赖。

  • test/policy.test.mjs:判定规则单测 + 116 条真实历史审批脱敏语料
  • test/plugin.test.mjs:胶水层集成测试(prepend、preset、callId、预算、/off、审计、哈希/rehash、fail-closed)
  • test/adversarial.test.mjs:独立红队对抗套件(注入、路径穿越、编码绕过、脚本 API 绕过等)

⚠️ 已知局限 / 残余风险

  1. B6 静态扫描本质是启发式:它能挡住已知危险 API,但不能数学证明没有新绕过。 真正边界仍是进程级最小权限;本插件只降低「审批疲劳」,不能替代系统级隔离。
  2. 受信任脚本目录是信任根:engineeringRoot\tools 下被列入 authorizedScripts 的脚本 按可信代码处理;哈希钉住只能发现改写,不能阻止一次性恶意脚本通过扫描。
  3. 读取类命令在具备 SW 可操作证据时仍可读工作区外文件(DSH 沙箱本身不限读; 凭据路径已被拒绝清单拦截)。
  4. 只对本机 DSH 0.2.x 验证:升级 DSH 后请重跑测试并确认 approval/request 签名未变。
  5. 一些合法但罕见脚本可能因保守 token 被误判为 ask;人工批准一次即可。

🗂 目录结构

dsh-sw-approval/
├── index.js              # Host 插件胶水:审批拦截、预算、preset、哈希钉住、审计、/swapproval
├── lib/policy.js         # 纯函数判定引擎(零 import、零 IO)
├── cordis.patch.yml      # DSH bundle 补丁(插入插件行与默认配置)
├── locale/{zh,en}.json   # 插件市场/设置页显示文案
├── icon.svg
├── DESIGN.md             # 判定规则契约
├── SECURITY-REVIEW.md    # 独立安全审查报告
├── SECURITY.md           # 漏洞报告与安全范围
└── test/                 # 单元 / 集成 / 对抗测试与脱敏 fixture

📄 许可证

MIT

本项目与 Dassault Systèmes(SolidWorks)、DSH-SW-and-CAD、fyjgtddco及 DeepSeek 官方无隶属关系; SolidWorks 是其各自权利人的商标。

Comments

Loading…

Similar plugins

dsh-collab-dev

by sxwer001

DSH native collaboration: main-agent architecture and validated plans, parallel workers, verification and independent review.

Workflow & AutomationManifest valid

★ 0

MIT

JavaScript

Oct 13, 2026

dsh plugin --profile web add dsh-collab-dev

by MoonlitDropOfBlood

An independent approval subagent judges every sandbox escalation, with a configurable model and an audit log.

Workflow & AutomationSecurity & AuditTerminal & ClientsManifest valid

★ 4

↓ 242/wk

MIT

JavaScript

Oct 19, 2026

dsh plugin --profile web add @duke-dsh-plugins/dsh-agent-approval

by NEVSTOP-LAB

DSH 审批模式插件,在 DSH 窗口的权限下拉框(Read Only / Workspace Write / Full Access)旁边加一个「审批模式」按钮,在 Workspace Write 模式下工具调用自动放行

Security & AuditManifest valid

★ 7

MIT

JavaScript

Sep 29, 2026

dsh plugin --profile web add dsh-approval-mode

by Modole

面向 DSH Agent 的 DAG 工作流创建、测试、发布和执行插件。

Manifest valid

★ 0

MIT

JavaScript

Aug 15, 2026

dsh plugin --profile web add @laobos/dsh-workflow

by ArisuYuuko

DSH 审批弹窗 AI 注释器:模型请求权限外操作时,用模型自己的推理解释这次操作的意义与风险

Security & AuditTerminal & ClientsManifest valid

★ 0

MIT

JavaScript

Oct 19, 2026

dsh plugin --profile web add dsh-approval-explainer

by 040822

Codex-style approval autopilot for DeepSeek Harness: ordered glob rules (allow/ask/deny) plus an AI risk judge (low/medium/high) mapped through a risk tolerance, as an approval answerer.

Development & InfrastructureTerminal & ClientsManifest valid

★ 3

↓ 295/wk

MIT

JavaScript

Oct 10, 2026

dsh plugin --profile web add dsh-codex-approval