DSH-SW-and-CAD
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 33 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
核弹,椅子,瘫坐!DSH新预设模式“工程模式”,只需要你说出“请帮我完成一个机械臂”,你的AI模型靠内部的工作流,按照要求完成对应机械的设计,完全实现“AI设计机械,无需人工干预”的场景!
🔧 DSH 工程模式 · Engineering Mode
面向 CAD / SolidWorks 机械设计的 DeepSeek Harness Agent 预设。
以「完成工图」为唯一目标:需求访谈 → 三维建模 → 有限元校核 → 出图交付,
每一道关键闸门都写在 Python 代码里 —— 不通过,流程走不下去。
一句话:它不是一个"帮你写建模脚本的助手"。
它是一个会自己判断能不能交付的机械设计工程师。
| 项目 | 值 |
|---|---|
| 目标平台 | DeepSeek Harness 0.2.x(Electron 桌面版 / dsh web) |
| 预设 ID | engineering · 显示名「工程模式」· order: 4 |
| UI 插件 | dsh-engineering-ui v1.2.0 |
| 技能 | 7 个 |
| 门禁 / 桥接脚本 | 12 个核心脚本 + 14 个物理模块 |
| 回归测试 | 30 个 Python + 12 个插件测试 |
| 许可 | MIT |
🎬 30 秒看完它怎么干活
真实会话录像,2 倍速播放(原片约 60 秒)。一句「帮我制造一个机械工厂用的机械臂」进去,
出来的是:需求访谈 → 门禁判定 → 拆成多个建模小屋 → 并行驱动 SolidWorks → 汇合总装。
后面每一节,就是这段录像里的一环。
这是什么
DSH 的插件分三个平面,放错位置会互相连坐:
| 平面 | 位置 | 内容 | 生效方式 |
|---|---|---|---|
| 宿主层(进程级) | profiles/<profile>/cordis.patch.yml |
权限预设表、全局服务 | 必须重启 DSH |
| preset 层(会话子作用域) | 插件 bundle 里的 preset-engineering.patch.yml |
人设、工具、技能 | 热生效 |
| profile bundle | profiles/<profile>/package.json 的 dependencies + dsh.profile.bundles |
UI 插件(客户端半) | 必须重启 DSH |
⛔ 绝对不要把
- id: permission写进 preset。@deepseek-ai/dsh-permission-presets是宿主层进程级服务,preset 里再声明一次 = 重复注册同名服务,
loader 直接拒绝,后果是新建会话 / 切预设 / 选模型三件事一起坏。
💡 DSH 0.2.x 不再读取
.agent-presets目录。
仓库里的engineering/agent.cordis.yml只是历史对照,运行时真正加载的是
插件 bundle 声明的那份preset-engineering.patch.yml。
它能做什么
| 能力 | 实现 |
|---|---|
| 真的驱动 SolidWorks 建模 | Python win32com,SW 2018 ~ 2025,单位 mm |
| 自己算有限元 | 纯 Python + numpy(2D CST / 3D CTE),可选 Gmsh / CalculiX / Code_Aster / SW Simulation |
| 疲劳与寿命校核 | Basquin S-N + Marin 修正 + Miner 累积损伤,默认 30 年设计寿命 |
| 出工程图 | 三视图 + 等轴测 → .SLDDRW / .DWG / .DXF / .PDF,GB/T 排版规范 |
| 图纸几何校验 | CADX 七项检查(图层 / 图幅 / 线型 / 重叠 / 尺寸链 …) |
| 多零件协作 | 拆分「房间」,子代理串行或并行建模,SW 进程级 FIFO 锁 |
| 判断能不能交付 | 材料 / 物理 / 领域 三大防线 + 看图证据 + 台账一致性 |
三种任务类型(AI 自判,不打扰你)
| 模式 | 场景 | 执行方式 |
|---|---|---|
| 模式 1 | 单个零件、几何简单 | 单线程直接建模出图 |
| 模式 2 | 多零件 / 机构 / 传动系统 | 门禁流水线 + 多子代理「多屋」协作 |
| 模式 3 | 用户发来图片 / 截图 | 单线程识图、提尺寸、重建、出图 |
三种模式共用同一套 SW / CAD / 物理工具链,区别只在要不要走门禁、要不要开子代理。
🧭 并行策略与搭建方式
门禁启动后的第一件事不是让 AI 直接开画,而是先问你两个互相独立的问题。
这两问写死在tools/choice_contract.py里,题面和选项由代码给出,AI 不能改写。
① 并行策略:多屋是排队还是并行
| 选项 | 含义 | 适合 |
|---|---|---|
| D | 部分小屋并行,按波次分批启动 | 零件多、彼此独立、想快 |
| E | 单小屋串联,一次一个房间 | 零件之间有强耦合、想稳 |
② 搭建方式:这件事你自己能做主吗
| 选项 | 含义 | 交互强度 |
|---|---|---|
| A | 完全自主搭建,AI 自主决策关键尺寸与材料 | 几乎不打扰你 |
| B | 部分自主,关键节点询问 | 中等 |
| C | 步步确认,每个零件建模前都出参数表给你确认 | 最严,全程把关 |
C 模式是代码级强制的:每件零件必须单独提问、单独得到答复,
由主对话执行 mode_gate.py confirm-part <房间> <零件> 才能写入授权令牌。
沿用上一件零件的确认会被拒绝,并记进 violations.json。
选定之后
python "<根>\tools\workflow_gate.py" select C,E
写法很宽松,以下全部等价:select C,E / select C E / select "C, E" /select c e / select --choice C --parallel E。
select 会把结论当场写进 workflow_state.json,并与 mode_state.json 自动对齐 ——
不会出现两个命令读到相反结论的情况。
☑️ 需求是怎么问出来的
工程模式的第一条纪律:不猜参数。
材料、公差、配合类型、载荷来源,不确定就必须问你 —— 但也不是一股脑把几十道题全砸过来。
先定「问多细」
门禁第 2 步只问一个问题:本次任务要不要严格把关参数?
| 你的回答 | 题数区间 | 说明 |
|---|---|---|
| 强需求(严格校核) | 10 ~ 50 题 | 载荷、尺寸、公差、材料都要有设计依据 |
| 不强 / 精简 | 5 ~ 10 题 | 先出大致结构,细节按工程经验定 |
区间由 mode2_flow.validate_question_budget() 强制:超上限直接拒绝,
收尾时未达下限同样拒绝交付 —— 既不许敷衍,也不许审问到死。
再决定「什么时候问哪一题」
旧做法是开局把候选题目全部抛出,用户答到手软。
现在改成按需提问:AI 先沿十阶段往下推,推到某个阶段发现缺信息,才问那一题,并写明理由。
🆕 十阶段不再由主对话自己跑:它由一个真实子代理「总计子代理」推进
(开工先analyst-bind绑定自己的 sessionId),主对话只负责编排与建小屋。
主对话若自己调begin-stage会被ANALYST_ACTOR_REQUIRED拒绝。
十阶段设计流水线(顺序即契约,跳阶段会被拒):
TaskUnderstanding 任务理解 结构化 TaskSpec:目标 / 环境 / 载荷 / 约束 / 未知量
FunctionalDecomposition 功能分解 FunctionTree:子功能 + 输入输出 + 依赖
PhysicsReasoning 物理推导 运动 / 力 / 转矩 / 能量 / 自由度 + 假定
PrincipleSynthesis 工作原理探索 多个候选原理 + 淘汰理由
MechanismSynthesis 机构综合 MechanismGraph:构件 + 连接 + 自由度
RecursivePartReasoning 递归零件推导 PartRequirementGraph:每个零件为何存在
PartSynthesis 零件设计与选型 标准件 / 自定义件 + 几何与接口定义
EngineeringValidation 工程验证 PASS / FAIL / UNKNOWN + 证据
DesignIteration 自主迭代 回退位置 + 版本 + 未解决问题
ExplainableDesignOutput 可解释输出 完整设计报告 + 可追溯性
提问必须挂在已经推进到的阶段上:
# 1) 先推进阶段(必须按序)
python "<根>\tools\workflow_gate.py" mode2 begin-stage TaskUnderstanding
# 2) 真的缺信息了,才问 —— 且必须写明理由
python "<根>\tools\workflow_gate.py" mode2 ask "使用场合是什么" --stage TaskUnderstanding --reason "决定材料与防护等级"
阶段没 begin-stage 就提问 → 拒绝;无理由提问 → 拒绝。
这就是「不许开局把题全抛出去」的机器判据。
回答完还要落盘(answer-question)—— 题目一旦有答复,挂在它上面的阶段产物会立刻标 stale,
必须用新的产物重做那一段才能继续,防止下游拿着过期参数去建模。
📏 载荷只有一个来源
曾经踩过一个很典型的坑:门禁按 1000 N 估算、physics 按 100 N 校核 ——
两套数值,报告当然对不上。
现在载荷只有一条通路:
门禁问答 ──落盘──> tools/load_cases/gate_load_case.json ──读取──> 有限元 / 疲劳
| 规则 | 说明 |
|---|---|
| 优先读用户写的数值 | 「100N」「10kg」「0.1kN」会被直接识别为额定载荷 |
| 冲击只是系数 | 出现冲击 / 动态关键词,只放大动载系数,不改额定值 |
| 落盘即真相 | 额定载荷 = magnitude_n,physics 严禁另写数值 |
| 估算必须复核 | 返回 load_is_estimate=true 时,AI 必须先向你确认才能继续 |
👥 子代理:主对话只编排,分析交给「总计子代理」
装配体不是一个大脚本能画完的。工程模式把它拆成若干房间,
每个房间一个子代理,房间之间靠 SW 进程锁排队 —— 而不是靠人盯着。
三层角色
| 角色 | 干什么 | 边界 |
|---|---|---|
| 主对话(大屋) | 问答、编排、建小屋、收尾 | 不自己跑十阶段;只能调根会话命令 |
| 总计子代理 | analyst-bind 后跑十阶段分析、按需提问、决定房间编制 |
只有它能写阶段与编制 |
| 建模小屋 + 总理子代理 | 各自建模;总理同波监工、收上报、校验相邻尺寸 | 只做本房间 |
房间数量不再固定 3 个:由总计子代理按分析结论登记(1 ~ 24 个),
每个房间必须写清 parts(负责哪些零件)与 why(为什么需要它)。set-subagent-plan --decided-by 总计子代理 是硬要求,别人署名直接判越权。
波次
| 波次 | 房间 | 干什么 |
|---|---|---|
| 第 1 波 | 建模小屋 1..N + 总理子代理 | 并行建模;总理与建模同波启动,长生命周期监工 |
| 第 2 波 | 总装与验证 | 只有第 1 波全部 room-end 后才允许开始 |
| 第 3 波 | 工程图输出 | 总装完成后出三视图 / 剖视 / 标注 |
SW 是单实例,所以有一个进程级 FIFO 锁
| 机制 | 行为 |
|---|---|
| 排队 | 谁先请求谁先用,队列保留;返回 sw_busy 就等 90 秒重试同一条命令 |
| 公平轮转 | 有人排队时,单房间最多连续 3 条命令或独占 180 秒,超出强制让位(防饿死) |
| 心跳 | 子代理每 60 秒续一次,但已降级为辅助证据 |
| 清场 | 每波开始前 close-all,确认没有残留的 SLDWORKS.EXE |
判活只认看板,不认心跳
python "<根>\tools\mode_gate.py" room-board --json
room-board 给每个房间一个一等状态,外加 safe_to_restart 与 next_action:
| 状态 | 含义 | 能不能重启 |
|---|---|---|
starting |
刚建,宽限期内 | 否 |
running |
正常干活中 —— 不许说"没反应" | 否 |
waiting_sw |
在 SW 队列里正常等锁,不是死了 | 否(严禁判死) |
idle |
平台侧活着,当前没有可观察动作 | 否 |
unbound |
平台侧活着但忘了 subagent-assign |
否,补绑定即可,禁止 reset |
done / failed |
已收工 / 已失败 | 按需 recover |
dead |
真的没了 | 是 —— 唯一允许 recover/restart 的状态 |
旧实现的六态分类会把排队等锁的屋子误判成死,于是主对话重启一个其实活着的屋,
两个子代理抢同一份 SW 文件。现在 waiting_sw 是一等状态,看板直接给 safe_to_restart=false。
两条禁令 + 一个例外
- 小屋不许越权:建模小屋不能调
mode_gate/workflow_gate/list_agents/subagent_fork,只做本房间的建模与验证。
唯一例外是总计子代理 —— 它只能用mode2_flow.py的阶段 / 提问 / 编制命令,
以及ask_user.py提问桥。 - 根会话命令不外借:
init/provide_context/select/confirm-assembly/recover/restart/reset只许主对话调用,子代理调一律返回ROOT_SESSION_REQUIRED。
这两条都在代码里按 sessionId 校验,不是提示词约定 —— 越权不是"不应该",是调不通。
小屋自己不会提问,所以有桥
DSH 不允许子代理直接向用户提问(userQuestions.ask() 会校验 agents.roots(),
子代理必抛 DELEGATED_CALLER)。ask_user.py 把问题登记到本小屋 → 卡片出现在右侧面板 →
原地阻塞轮询直到你作答 → 答案以 tool_result 回到提问方。全程不结束回合。
🛡️ 三大防线:本项目的核心
这是它和「普通 CAD 助手」最大的区别:质量校验不是建议,是硬门禁。
| # | 防线 | 凭据 | 判不通过的依据 |
|---|---|---|---|
| ① | 材料 | 每个 .sldprt 旁的 <零件>.SLDPRT.material.json |
缺凭据 / 密度 = 1000(水)/ 跨标准静默替代 |
| ② | 物理 | reports/<房间>.physics.json |
overall == FAIL,或静力过了但寿命不够 |
| ③ | 领域 | reports/<房间>.domain.json |
存在 CRITICAL 违规(按 GB/T 规则库判) |
四个强制点(走到就得过)
sw_bridge.py run → ① 材料
mode_gate.py room-end <房间> → ①②③(该房间)+ 看图证据
workflow_gate.py confirm-assembly → ①②③(全部建模房间)
workflow_gate.py select (收尾) → ①②③(全任务)
凭据为什么伪造不了
凭据由宿主进程签名:HMAC-SHA256,密钥只存在宿主内存里,绝不落盘。
Python 侧不持有密钥,签名与验签都得请求宿主;
宿主不可用时不是"放行",而是 fail-closed —— 无法验签即视为未通过。
所以哪怕 AI 能读写工程模式目录里的所有文件,也写不出一份能验签的凭据。
宿主自己会读磁盘上的真实报告再签,调用方没法让它为"不存在的运行"背书。
签名有效期默认 24 小时(
DSH_DEFENSE_SIG_TTL_MS可覆盖)。
早先设成 10 分钟时,只要一个房间里零件保存跨度超过 10 分钟,room-end就必然失败 —— 多零件装配等于永远过不了门。
还有一道「你得亲眼看过」
建模房间下线前,本房间产出过的每个零件都必须留下经核实的看图证据:
截图真实存在、非 0 字节、闭环判定 PASS。缺任何一件 → VISUAL_EVIDENCE_REQUIRED,拒绝下线。
唯一合法绕行(且必定留痕)
python mode_gate.py room-end "<房间>" --force # 显式强制
$env:DSH_DEFENSE_BYPASS = 1 # 环境变量
两条路都会写进 reports/defense_bypass.json —— 绝不静默放行。
🔬 物理在环(FEA + 疲劳)
建模不是终点。每个房间都要出一份物理校核报告,FAIL 或寿命不足就拒绝下线。
求解器的降级链
按本机装了什么自动降级,没有外部 FEA 软件也照样算:
| 级别 | 后端 | 依赖 |
|---|---|---|
| L0 | 解析解(梁理论) | 无 |
| L1 | 纯 Python FEA(numpy CST 三角形 / CTE 四面体) | numpy |
| L2 | Gmsh + CalculiX | 可选安装 |
| L3 | Gmsh + Code_Aster | 可选安装 |
| L4 | Gmsh + Elmer | 可选安装 |
| L5 | SolidWorks Simulation API | SW Premium 许可 |
疲劳是必过项,不是加分项
- 方法:Basquin S-N + Marin 修正(ka/kb/kc/kd/ke)+ Goodman / Soderberg / Gerber 平均应力修正 + Miner 线性累积损伤
- 每次
solve_fea之后自动追加,结论并入gates与overall - 静力过了但寿命不够 → 直接
FAIL,不再误判为 PASS - 默认按 30 年设计寿命;铝合金按无真实疲劳极限处理(5 × 10⁸ 次条件极限)
一个闸口只归一层管
同一个闸口 ID 曾出现几何层与 FEA 层给出相反结论的情况。现在 physics/simulation_report.py 用GATE_OWNER 给每个闸口声明唯一归属层,聚合时只采信归属层:
| 闸口 | 归属 |
|---|---|
DESIGN_SPACE / CONNECTIVITY / WALL_THICKNESS |
几何层 |
SAFETY_FACTOR / MAX_DISPLACEMENT / FATIGUE / MESH_QUALITY |
FEA 层 |
📐 从模型到图纸
建模阶段只做三件事:草图完全定义 → 特征建模 → 圆角倒角孔。
然后是一条固定链路:run → drawing → dwg → show,出图后截图验收。
python "<根>\tools\sw_bridge.py" run <建模脚本.py> # 画零件
python "<根>\tools\sw_bridge.py" drawing <零件> # 出 .slddrw
python "<根>\tools\sw_bridge.py" dwg <零件> # 导 DWG(AutoCAD 可编辑)
python "<根>\tools\sw_bridge.py" show # 截图看一眼
工程图含三视图(前 / 俯 / 右)+ 等轴测,导出 .SLDDRW / .DWG / .DXF / .PDF。
排版是硬规则,出界即不合格
画布归一 1.0 × 1.0,原点左下,各纸型同比例。
| 规则 | 值 |
|---|---|
| 安全区 | (0.05, 0.05) ~ (0.95, 0.95),唯一合法区域 |
| 标题栏禁区 | (0.80, 0.90) ~ (1.00, 1.00) |
| 主视 / 俯视 | (0.30, 0.72) / (0.30, 0.28) |
| 右视 / 等轴测 | (0.75, 0.72) / (0.75, 0.28) |
| 投影关系 | 主俯同 x(长对正),主右同 y(高平齐) |
| 视图间距 | 任意两视图 ≥ 35 mm(约 0.04) |
宁可升纸型,也不许越界。轴类零件画中心线(点划线),特征交界画分界线,禁边线重合。
两个不商量的小事
- 命名必须中文:
DSH_+ 中文名,例如DSH_关节轴.sldprt。 - 默认材料 Q235:
new_part()就赋材,杜绝「密度恒为 1000(水)」导致的整条校核失真。
🖥️ 界面:三栏工作区
UI 插件 dsh-engineering-ui 只在工程模式下生效,可在设置里关掉。
| 区域 | 内容 |
|---|---|
| 主对话(约 3/4) | DSH 原生会话区,检测到子代理时自动收窄 |
| 中间竖排频道 | 每个子代理一个按钮,绿点 = 运行中,点击切换右侧屏幕 |
| 右侧工作区(约 1/4) | 所选子代理的实时输出、工具调用与参数、运行状态、可直接作答的提问卡片 |
没有子代理时三栏全部隐藏,回到全宽聊天。
设置页「工程模式」分区
- 工程环境检查:换电脑后一键扫 Python / pywin32 / numpy / ezdxf / shapely /
SolidWorks / AutoCAD / 交付目录 / 跨机残留设置,逐项给绿黄红和一行修复建议; - 生成修复提示词:用本机实测结果现场生成一段提示词,直接发给新对话让它自己查、自己装;
- 连接区:SW / CAD 连接探测与启动,状态落
connection_state.json,AI 与设置页共读同一份; - 显示页开关:可把右侧子代理面板交回 DSH 官方。
📦 安装
环境要求
| 项 | 要求 |
|---|---|
| 系统 | Windows(SolidWorks / AutoCAD 自动化依赖 win32com) |
| DSH | 0.2.x(Electron 桌面版或 dsh web) |
| Python | 3.8+ 64 位,需 pywin32;物理校核另需 numpy |
| 可选 | ezdxf + shapely(DXF 几何校验)、Pillow(看图)、Gmsh / CalculiX(高阶 FEA) |
| 软件 | SolidWorks 2018 ~ 2025;AutoCAD(仅出 DWG 时需要) |
一键安装(DSH 0.2.x)
cd <本仓库>
.\install-0.2.0.ps1
# 只装指定 profile:
.\install-0.2.0.ps1 -Profile web,desktop
脚本会做四件事:
- 把
engineering/tools复制到~/.dsh/.agent-presets/engineering/tools(门禁脚本); - 把
engineering/skills复制到~/.dsh/skills(技能); - 把 UI 插件复制进每个 profile 的
node_modules,并登记进package.json
(dependencies+dsh.profile.bundles); - 写入宿主层
cordis.patch.yml(权限三档),绝不覆盖已有 patch。
⚠️ 装完必须重启 DSH。宿主层与插件 host 半都是进程级配置,热更新无效。
只改客户端半(lib/client.js)时,刷新页面即可。
改了代码之后
仓库里的 engineering/ 是源码,DSH 真正加载的是安装副本。改完要同步:
.\sync-to-dsh.ps1 -DryRun # 先看要动哪些文件
.\sync-to-dsh.ps1 # 实际同步(逐个备份 .bak-sync-<时间戳>)
python engineering\tools\verify_sync.py # 逐文件 SHA-256 比对,确认真的同步了
运行时状态文件(
mode_state.json/workflow_state.json/sw_state.json/connection_state.json/settings.json)是会话现场数据,同步时会被跳过 ——
不要手动覆盖,否则流程会误判。
⌨️ 命令速查
门禁的入口全是命令行脚本,不是 DSH 工具。
历史文档里出现过的workflow-gate-init这类"工具名"在本环境并不存在,照抄会失败。
$T = "<工程模式根目录>\tools" # 含 mode_gate.py 与 workflow_gate.py 的那个目录
python "$T\_root.py" # 不确定根目录?先跑这个自检
workflow_gate.py — 门禁大脑
| 子命令 | 用途 |
|---|---|
init "<任务>" |
初始化任务,返回第 1 步(模式确认 + 并行策略 D/E + 搭建方式 A/B/C) |
provide_context "<回答>" |
推进状态机,需调用 3 次(模式确认 → 需求强度 → 汇总估算) |
select C,E |
锁定搭建方式与并行策略 |
confirm-assembly "<清单>" |
第 1 波完成后确认总装 |
check-part / verify-ownership |
零件归属校验 / 总装前去重核对 |
status / gate-summary / check |
状态 / 总览 / 是否允许建模 |
recover / restart <房间> / reset |
恢复卡住 / 重做房间 / 清空重来 |
mode2 <子命令> |
十阶段契约:begin-stage / ask / prime-report / prime-verify … |
stage-status / pre-delivery |
阶段进度 / 交付前总闸 |
除
status/gate-summary这类只读命令外,只许根会话调用;
子代理调init/select/reset会拿到ROOT_SESSION_REQUIRED。
mode_gate.py — 房间状态机 + SW 锁
| 类别 | 子命令 |
|---|---|
| 看板(权威) | room-board [--room X] [--json] — 八态 + safe_to_restart + next_action |
| 房间 | room-start / room-end / room-fail / room-status / room-report / room-report-read |
| SW 锁 | sw-request / sw-wait / sw-release / sw-status / sw-proc / lock-doctor / close-all |
| 子代理 | subagent-assign(每次 fork 后必做) / subagent-free / subagent-status / whoami |
| 心跳 | room-heartbeat(辅助证据) / room-heartbeat-check |
| 授权 | confirm-part <房间> <零件>(C 模式) / room-artifact |
| 看护 | sw-guard-start / sw-guard-stop / sw-guard-status(CPU / 内存 > 85% 立刻关 SW) |
| 维护 | doctor / rooms-reset / stale-artifacts / residue-check / platform-refresh |
mode2_flow.py — 十阶段 / 编制 / 总理
| 子命令 | 用途 |
|---|---|
analyst-bind / analyst-status |
总计子代理绑定自己的 sessionId / 查看是否已绑定 |
begin-stage / mark-stage-done |
按序推进阶段 / 登记产物(只认总计子代理身份) |
ask / answer-question / refresh-stage |
按需提问 / 落盘答复 / 重做过期阶段 |
set-subagent-plan --rooms-json ... --decided-by 总计子代理 |
登记本轮房间编制 |
prime-board / prime-report / check-consistency |
监工看板 / 收上报 / 相邻尺寸一致性 |
prime-verify / export-docx / pre-delivery |
统一核实 / 汇总 docx / 交付前总闸 |
其他脚本
| 脚本 | 用途 |
|---|---|
defense_gate.py check-room <房间> / check-task |
三大防线自查 |
sw_bridge.py <命令> |
SW 桥接(run / drawing / dwg / physics-* / conn-* / cad-*) |
physics_bridge.py <子命令> |
物理验证 CLI(validate-case / optimize / fatigue / validate-domain) |
visual_check.py gate --part <零件> --expect <json> |
看图闭环校核 |
ask_user.py --room <房间> --child <id> ... |
子代理阻塞式提问 |
part_registry.py |
零件台账:相邻尺寸一致性 / SHA-256 防篡改 / 导出 docx |
settings.py report / env_check.py probe |
本机设置 / 环境自检 |
🗂️ 目录结构
DSH-SW-and-CAD-main/
├── README.md # 本文件
├── assets/gifs/ # 四段实录动图
├── install-0.2.0.ps1 # DSH 0.2.x 安装(装进所有 profile)
├── install.ps1 / install.sh # DSH 0.1.x 安装(Win / macOS-Linux)
├── sync-to-dsh.ps1 # 源码 -> 安装副本同步
├── patch-incompatible.ps1 # 第三方插件 peer range 修补
├── RUNNING_WORKFLOW.md # 源码级全链路追踪(从一条消息到一次 COM 调用)
├── engineering/ # ★ 预设本体
│ ├── preset.yml # 显示元数据
│ ├── agent.cordis.yml # 历史清单(运行时不加载,仅对照)
│ ├── README.md # 架构与门禁细节(更技术向)
│ ├── skills/ # 7 个技能
│ │ ├── mode-selection/ # 强制入口:模式选择 + 门禁流程
│ │ ├── assembly-orchestration/ # 多屋编排
│ │ ├── cad-workflow/ # AutoCAD 工作流
│ │ ├── sw-design/ # SW 设计 + GB/T 制图
│ │ ├── solidworks-bridge/ # SW 桥接
│ │ ├── sw-to-cad/ # SW -> CAD
│ │ └── physics-in-loop/ # 物理在环
│ ├── tools/ # ★ Python 工具链
│ │ ├── workflow_gate.py # 门禁大脑
│ │ ├── mode_gate.py # 房间状态机 + SW 锁 + room-board
│ │ ├── mode2_flow.py # 十阶段契约 / 编制 / 总理
│ │ ├── defense_gate.py # 三大防线
│ │ ├── sw_bridge.py # SW 桥接执行器
│ │ ├── swapi.py # 高层建模 API
│ │ ├── part_registry.py # 零件台账 + 一致性校验
│ │ ├── visual_check.py # 看图闭环
│ │ ├── physics/ # 物理子系统(FEA / 疲劳 / 规则库)
│ │ ├── physics/rules/ # GB/T 规则包
│ │ ├── load_cases/ # 载荷工况(gate_load_case.json)
│ │ ├── reports/ # 防线凭据 + 房间报告
│ │ └── test_regression_*.py # 30 个回归测试
│ └── plugins/dsh-engineering-ui/ # UI 插件
│ ├── lib/index.js # Host 半(HTTP 路由 / 提问桥接 / 防线签名)
│ ├── lib/client.js # 浏览器半(三栏工作区)
│ ├── lib/defense-sign.js # HMAC 凭据签名
│ ├── preset-engineering.patch.yml # ★ 运行时真正加载的人设
│ └── test/ # 12 个插件测试
├── profiles/ # 宿主层 patch 模板
└── third-party-patched/ # 打过补丁的第三方插件
动手改之前先读
engineering/README.md:那里记着每个历史 bug 的现场现象 / 根因 / 修复判据,
很多看起来"多余"的代码,是为了防止某个已经踩过两次的坑复发。
⚠️ 已知限制
- 强依赖 Windows + 已装好的 SolidWorks。SW / CAD 自动化走 COM,macOS 与 Linux 上只能跑非建模部分。
- 没装 SolidWorks 的机器上,SW 相关行为无法验证(
massprops、GetBodyBox等)。 - CADX 的重叠检查依赖
ezdxf+shapely,两者缺失时该项自动跳过 —— 别把它当成"已通过"。 - 铝合金按无真实疲劳极限处理(用 5 × 10⁸ 次条件极限),校核偏保守。
- 规则库是元数据注册表 + 适用性提示:具体机读数值仍需从标准原文提取;
BLOCKER / CRITICAL 类规则必须人工复核,不可由 AI 自动放行。 - 部分文件是 UTF-8 with BOM。Windows PowerShell 5.1 的
Get-Content会按 ANSI 解码,
读中文 JSON 容易报「传入的对象无效」。用python -c "..."或 DSH 的 read 工具读。 - 四段动图合计约 13 MB,GitHub 首屏加载会慢一些;介意的话可以换成压缩版或外链。
📜 版本历史
| 提交 / 日期 | 说明 |
|---|---|
| 2026-10-28 | 总计子代理真实化(analyst-bind + 身份校验)+ 总理子代理同波启动与监工 + room-board 状态可信化(waiting_sw / unbound)+ 子代理禁令(ROOT_SESSION_REQUIRED)+ 插件自动平台登记 |
e12d665 |
为移动端 DSH Go 做适配性调整 |
fe671a3 |
mode2_flow 与防御门控完善,新增回归测试与物理运行记录 |
b2a11b1 |
已适配 DSH 0.2.1-rc.2 |
578818e |
模式二流程改造:十阶段契约 + 总理核实 + 看图闭环 + SW 双路看护 |
eb55f4a |
适配 DSH 0.2.0 桌面版(bundle 路径、desktop profile、三栏 UI) |
d2e6828 |
工程工作流更新:技能、mode gate、插件、SW 桥接改进 |
English
DSH Engineering Mode is an Agent Preset for DeepSeek Harness,
built for CAD / SolidWorks mechanical design. Its single goal is a finished engineering drawing.
What makes it different from a chat assistant that writes CAD scripts:
| Real SolidWorks automation | Python win32com, SW 2018 ~ 2025, millimetres |
| Built-in FEA | pure-Python CST / CTE solver, optional Gmsh / CalculiX / Code_Aster / SW Simulation |
| Fatigue by default | Basquin S-N + Marin + Miner, 30-year design life |
| Three defense lines | material / physics / domain, enforced by host-signed HMAC credentials |
| Multi-room subagents | assembly split into rooms, process-level FIFO lock around SolidWorks |
| Gated workflow | analyst subagent runs a ten-stage pipeline, then a pre-delivery check |
| Quick start (Windows, DSH 0.2.x): |
.\install-0.2.0.ps1 # install preset + skills + UI plugin
# then restart DSH
Requirements: Windows, DSH 0.2.x, Python 3.8+ (64-bit) with pywin32, SolidWorks 2018 ~ 2025.
Optional: numpy (physics), ezdxf + shapely (DXF validation), Pillow (visual check).
The preset ships a Chinese persona out of the box. The tooling, gate scripts and HTTP routes
are language-neutral; see engineering/README.md for the architecture notes.
License
MIT — 见 LICENSE。
本项目是 DeepSeek Harness 的第三方 Agent 预设,与 DeepSeek 官方无隶属关系。
SolidWorks 与 AutoCAD 分别是 Dassault Systèmes 与 Autodesk 的商标,本项目仅通过其公开 COM 接口进行自动化调用。
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found