前言¶
在 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 中实现,不全局禁用沙箱或审批系统。
核心功能¶
生效范围¶
- 默认只对「工程模式」会话生效。Agent 预设需为
engineering(工程模式说明见 DSH-SW-and-CAD)。standard等其它预设下审批行为不变,仍逐步弹窗。 - 自动处理的对象仅限工具
pwsh、write、edit且提权目标为danger-full-access的请求。
判定依据¶
- 依据会话日志里真实的
tool/call参数,不采信模型写的 justification。 - SolidWorks 证据必须是可操作证据,例如:受信任脚本、启动
SLDWORKS.exe、SldWorks.ApplicationCOM、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 钉住:
engineeringRoot\tools下列入authorizedScripts的脚本被改写或缺失时,该脚本相关请求转人工审批。 - 预算:每会话最多 500 次、每回合最多 80 次自动放行,超限恢复弹窗。
- 判定异常、字段缺失、解析失败 → 一律交还人工审批(
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 内路径;受信任脚本目录不在额外写根之列。
典型用法¶
- 新建会话,将顶部 Agent 预设 切到 工程模式(engineering)。
- 用自然语言描述建模任务,例如:「画一个 11mm 的正方形并导出 CAD 图纸」。
- 符合白名单的
danger-full-access请求会被自动放行;其它操作仍弹窗。 - 需要暂停时在本会话执行
/swapproval off;恢复用/swapproval on。更新工程预设或授权脚本后可用/swapproval rehash重新学习哈希。
平时无需额外操作;非 engineering 预设下不会自动放行,这是刻意设计。
适用场景与注意¶
适合:在 DSH 0.2.x 上长期做 SolidWorks 自动化建模、希望减少 danger-full-access 审批点击、又不愿全局关闭沙箱与审批的 Windows 用户。
务必注意:
- 插件以当前 DSH 进程权限运行;安装前请阅读源码、
LICENSE(MIT)及SECURITY.md,自行评估信任边界。 - 静态扫描是启发式,不能数学证明无绕过;受信任脚本目录是信任根;本插件降低「审批疲劳」,不替代系统级隔离。
- 社区目录 SkillHub 插件页 与 GitHub 仓库由社区维护,与 DeepSeek、幻方及 Dassault Systèmes(SolidWorks)无资料中所述的隶属关系。
- 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