dsh-sw-approval:SolidWorks 建模场景下的窄口安全自动审批

前言

在 DeepSeek Harness(DSH)里用 Agent 驱动 SolidWorks 建模时,SolidWorks 的 COM 组件在受限沙箱下往往无法正常工作,常见报错包括 CO_E_SERVER_EXEC_FAILURE,严重时进程会直接崩溃。为此,建模流程里几乎每一步都需要把终端提权到 danger-full-access;一次会话里可能出现几十次人工点「允许」,人不在电脑前时流程就会卡住。

全局关闭审批(例如 danger-full-access 配合 approval: never)能省事,但会把沙箱和审批体系一并放开。dsh-sw-approval 挂在 DSH 的 approval/request 层,只对能证明是 SolidWorks 建模、且严格匹配白名单的提权请求自动说一次「允许本次」,其余操作仍走人工弹窗,失败时一律 fail-closed。

下面介绍插件定位、判定规则、安装与典型用法。

这是什么

  • 名称:dsh-sw-approval(npm 包名同)
  • 维护者:sixrg7734(GitHub 仓库 sixrg7734/dsh-sw-approval)
  • 分类:admin-security(管理与安全)
  • 版本(package.json):0.1.3;许可证 MIT
  • 一句话:DeepSeek Harness 插件,仅对可信 SolidWorks 建模操作自动放行,兼顾效率与沙箱安全

插件以宿主(Host)形式运行,判定逻辑在纯函数模块 lib/policy.js 中实现,不全局禁用沙箱或审批系统。

核心功能

生效范围

  1. 默认只对「工程模式」会话生效。Agent 预设需为 engineering(工程模式说明见 DSH-SW-and-CAD)。standard 等其它预设下审批行为不变,仍逐步弹窗。
  2. 自动处理的对象仅限工具 pwsh、write、edit 且提权目标为 danger-full-access 的请求。

判定依据

  1. 依据会话日志里真实的 tool/call 参数,不采信模型写的 justification。
  2. SolidWorks 证据必须是可操作证据,例如:受信任脚本、启动 SLDWORKS.exe、SldWorks.Application COM、Get-Process SLDWORKS、DSH_SW_EXE 配合 Python 脚本等;仅在输出文本里出现 “SldWorks” 不算。
  3. 危险命令拒绝清单覆盖删除/覆盖、注册表、服务与计划任务、联网/下载/安装、cmd /c、Invoke-Expression、Add-Type、taskkill、凭据路径、宏执行、非 SW 的 COM ProgID 等;命中则弹窗。
  4. 模型生成的 build_*.py 会经静态扫描:须含 SW/COM 特征,并禁止 subprocess、ctypes、shutil、winreg、urllib、requests、反射、os 破坏 API、FSO 等。
  5. 受信任脚本 SHA-256 钉住:engineeringRoot\tools 下列入 authorizedScripts 的脚本被改写或缺失时,该脚本相关请求转人工审批。
  6. 预算:每会话最多 500 次、每回合最多 80 次自动放行,超限恢复弹窗。
  7. 判定异常、字段缺失、解析失败 → 一律交还人工审批(next())。

运维与审计

  • 本地审计日志;会话内命令 /swapproval(status / on / off / log / rehash)。
  • 审计目录默认:%USERPROFILE%\.dsh\sw-approval\(audit.jsonl、status.json)。

完整威胁模型与规则契约见仓库内 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(插件零第三方依赖)

安装与启用

插件是进程级配置,安装后须完全退出并重启 DSH 桌面端才生效。

方式一:DSH CLI(README 快速上手)

先把仓库放到本机任意目录,再用 DSH 自带 CLI 安装到 desktop profile(路径换成你的实际路径):

"D:\dsh guanfnag\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "C:\path\to\dsh-sw-approval"

方式二:应用内 plugin_manager

在 DSH 对话中让 Agent 执行(target 为仓库在本机的绝对路径):

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

方式三:手动放入 profile

将仓库目录放到 %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-sw-approval,并在该 profile 的 package.json 里把 dsh-sw-approval 加入 dependencies 与 dsh.profile.bundles。

安装后 profile 的 cordis.patch.yml 会插入插件行。以 link: 引用本地目录时,改源码后仍需重启 DSH 才会加载新代码。

自检

重启后在任意会话输入:

/swapproval status

若看到「SW 安全自动审批(dsh-sw-approval)」及受信任脚本哈希数量、Python 解释器路径等输出,说明插件已加载。

配置(可选)

在 profile 的 cordis.patch.yml 或插件设置中可覆盖子集;未写字段使用默认值。示例(摘自 README):

- 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: []
    extraWriteRoots: []
    scanWorkspaceScripts: true
    maxAutoApprovalsPerSession: 500
    maxAutoApprovalsPerTurn: 80
    auditDir: 'C:\Users\<you>\.dsh\sw-approval'

write / edit 的提权写入仅放行工作区与 extraWriteRoots 内路径;受信任脚本目录不在额外写根之列。

典型用法

  1. 新建会话,将顶部 Agent 预设 切到 工程模式(engineering)。
  2. 用自然语言描述建模任务,例如:「画一个 11mm 的正方形并导出 CAD 图纸」。
  3. 符合白名单的 danger-full-access 请求会被自动放行;其它操作仍弹窗。
  4. 需要暂停时在本会话执行 /swapproval off;恢复用 /swapproval on。更新工程预设或授权脚本后可用 /swapproval rehash 重新学习哈希。

平时无需额外操作;非 engineering 预设下不会自动放行,这是刻意设计。

适用场景与注意

适合:在 DSH 0.2.x 上长期做 SolidWorks 自动化建模、希望减少 danger-full-access 审批点击、又不愿全局关闭沙箱与审批的 Windows 用户。

务必注意:

  1. 插件以当前 DSH 进程权限运行;安装前请阅读源码、LICENSE(MIT)及 SECURITY.md,自行评估信任边界。
  2. 静态扫描是启发式,不能数学证明无绕过;受信任脚本目录是信任根;本插件降低「审批疲劳」,不替代系统级隔离。
  3. 社区目录 SkillHub 插件页 与 GitHub 仓库由社区维护,与 DeepSeek、幻方及 Dassault Systèmes(SolidWorks)无资料中所述的隶属关系。
  4. DSH 理念是「一切皆插件」;目录站点为独立生态入口,不宜写成官方应用商店。

结尾

dsh-sw-approval 在审批层做窄口自动放行:工程模式、白名单 SW 证据、danger-full-access 提权与预算上限叠加,其余一律人工确认。若你要在 DSH 里稳定跑 SolidWorks 建模而不全局放权,可按上文安装、切 engineering 预设,并用 /swapproval status 核对状态。

  • 目录页:https://www.skillhub.cn/plugins/sixrg7734/dsh-sw-approval
  • 源码与文档:https://github.com/sixrg7734/dsh-sw-approval
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜