1. 这个组合解决什么问题:OpenClaw 与 SolidWorks 到底怎么配合
1.1 先搞清楚 OpenClaw 是个什么角色
OpenClaw 是一个可自行部署的开源 AI 代理框架。它跟网页版 ChatGPT、对话机器人最大的区别在于:它运行在你自己的服务器或本地电脑上,能通过飞书、Microsoft Teams、Web 页面等渠道和你对话,并且可以按你的指令去执行本地命令、调用脚本、读文件、操作外部程序。
我举个最直白的例子:你可以在飞书群里直接说一句“帮我把某型号的装配体清单导出来”,OpenClaw 收到这句话之后,会在后台完成意图解析、参数提取、工具调用,最终把结果以一个表格文件的形式回传到飞书会话里。整个过程不需要你手动打开 SolidWorks,也不需要你去背命令行。
很多人第一次听说 OpenClaw 时,容易把它理解成“又一个智能聊天机器人”。实际上更准确的说法是:它是一个带工具调用能力的代理运行时。你能给它注册多少种工具,它就能干多少种活。这也是为什么它能和 SolidWorks 结合——SolidWorks 自动化本来就有一堆脚本接口,以前缺的只是一个好用的“调度入口”罢了。
1.2 SolidWorks 一侧的自动化接口
SolidWorks 的自动化能力被大量工程师低估了。大部分人对它的认知停留在“画图软件”,但实际上,SolidWorks 从很早就内置了三层自动化接口:
第一层是宏录制。你用鼠标操作一遍 SolidWorks,它会把操作翻译成 VBA 代码并录制成 .swp 宏文件。这个功能对普通设计师来说是最容易上手的,因为不需要系统学习编程,录下来再改改就能用。第二层是 COM API,通过 SldWorks.Application 这个对象,外部程序可以启动、控制 SolidWorks,读取模型数据、执行另存为、批量修改属性等。这一层可以用 VBA、C#、VB.NET、Python 等语言访问。第三层是任务计划与批处理,SolidWorks 自带的 Task Scheduler 可以把“批量转换格式”“批量打印图纸”“批量更新自定义属性”这类操作做成定时任务。
这些能力加在一起,意味着 SolidWorks 里的绝大多数重复性操作,都有办法通过编程来替代。关键在于,你得先有一个能根据自然语言指令去调用这些脚本的“大脑”,OpenClaw 恰好可以充当这个大脑。
1.3 两者合起来能做什么
把 OpenClaw 和 SolidWorks 接上之后,我实际用下来的典型场景有这么几类:
第一类是日常批量导出。设计部门每天早上都有几十个装配体需要输出 STEP、PDF 或者 STL,过去靠人一个个打开再另存为,耗时且容易漏。现在直接在飞书群里发一条消息,AI 代理会自动解析出项目路径,然后调用你预先写好的 SolidWorks 宏或 Python 脚本,一个接一个地完成任务并把文件归档。
第二类是信息提取与报表生成。比如从一个大装配体里提取所有子零部件名称、数量、材质、质量属性,生成 BOM 表;或者是导出模型的自定义属性明细,用于采购和外协沟通。
第三类是跨软件协同。SolidWorks 建好的模型,经常要导入 Unity3D、Blender 或其他仿真软件,这套流程同样可以通过代理编排。先由 SolidWorks 脚本转出中间格式,再由另一个脚本做二次处理,全程由 OpenClaw 按指令驱动。
这类工作以前也不是不能做,但要么得靠工程师手动操作,要么得写一个固定的批处理程序,参数一变就得改代码。现在有了 AI 代理层,最大的变化是人机交互方式变了:你用自然语言下达需求,代理负责解析和调度,脚本负责执行。对使用者来说,门槛大幅降低了。
2. OpenClaw 部署与接入:从安装到连上 Teams/飞书
2.1 部署环境和安装方式
OpenClaw 的部署谈不上复杂,但对环境有一定要求。我自己先在 Linux 服务器上部署了一版,又在一台 Windows 工作站上部署了一版。如果你纯粹是想驱动 SolidWorks,建议直接把 OpenClaw 装在和 SolidWorks 同一台 Windows 工作站上,这样调用脚本时不需要走网络共享,权限和路径问题都少很多。
安装前需要确认几件事:系统最好是 Windows 10/11 较新版本并保持更新;需要安装 Python 3.10 以上版本,同时把 pip 和 venv 环境配置好;如果是 Linux 部署,建议用 Docker 方式,避免宿主环境依赖冲突;需要预留至少 4GB 内存给代理运行时,如果还要加载本地模型,内存需求会更高。
在 Windows 上的一键部署,网络上有不少现成脚本。不过“一键”并不代表不会出错,我踩过最多的坑是环境变量没生效、Python 解释器指向了 Microsoft Store 的版本、防火墙把内部端口给拦了。建议新手部署时,每一步都打开终端看回显,不要只看“安装完成”之类的最后一行提示。
部署完成后,OpenClaw 通常会提供一个本地 Web 控制台,你可以先在浏览器里打开控制台,输入一句测试消息确认代理能正常回复,再接入 IM 渠道。这一步能帮你把“代理本身的问题”和“渠道接入的问题”区分开,后面排查起来思路会清晰很多。
2.2 接入 Microsoft Teams 与飞书
接入 Microsoft Teams 是很多企业用户的首选,因为团队协作本来就在 Teams 里。你需要先在 Azure 门户里申请一个 Bot 注册,拿到 Bot 的 App ID 和 Client Secret,然后在 OpenClaw 的渠道配置里填入这些信息,并且指定租户 ID。Teams 的 Bot 接入过程有一个比较隐蔽的点:必须正确配置 Bot 的 messaging endpoint 回调地址,否则消息根本到不了 OpenClaw。
飞书侧接起来稍微直接一些。在飞书开放平台创建企业自建应用,开启“机器人”能力,拿到 App ID 和 App Secret,再配置事件订阅地址。这里经常遇到的问题有两个:第一个是订阅地址必须是公网可访问的 HTTPS 地址,本地调试时需要用内网穿透工具;第二个是事件签名校验不过,多半是 Secret 复制漏了字符或者地址末尾多了斜杠,这类小错误排查起来反而最耗时。
我个人建议,如果你只是做技术验证,先接飞书比接 Teams 简单;如果公司标准化办公软件是 Teams,那么就一步到位接 Teams。关键是先把渠道打通再谈其他,否则后续所有自动化演示都缺少一个交互入口。
2.3 模型配置与国产模型接入
OpenClaw 本身不包含大模型,它需要接入一个对话模型来负责理解用户意图。你可以选择云端 API,也可以接入通过 Ollama 或者 vLLM 部署的本地模型。我实测中比较顺手的是配置通义千问的 API,也就是热词里说的“配置千问”。配置方式不复杂,在 OpenClaw 的环境变量或者配置文件中填上 API Key、模型名称和接口地址即可。
需要注意,不同模型的函数调用能力差异很大。OpenClaw 这类代理框架依赖模型能理解工具描述并生成正确的调用参数,如果模型的指令跟随能力弱,脚本就经常被调用错。建议在选择模型时优先考虑支持 function calling 的版本,而不是一味追求参数规模大。
如果你在飞书里使用,还会遇到一个很常见的体验问题:OpenClaw 在飞书输出时容易被截断。现在飞书机器人对单条消息长度有限制,超长内容会被拦掉或显示不完整。解决方案是让代理不要用文本返回长内容,而是把详细日志写入一个 txt 文件,然后把文件上传回飞书会话里。这个思路处理任何长输出场景都适用。
3. SolidWorks 编程基础:宏、API 和外部调用
3.1 学会用宏记录器入门
很多机械工程师刚开始接触 SolidWorks 编程时心里发怵,觉得编程很难。实际上,从宏录制入门是最平滑的路径。打开 SolidWorks,在工具菜单里找到“宏 → 录制”,然后你正常做一遍操作,比如打开一个装配体、导出 STEP 文件、关闭文档,操作结束后停止录制并保存宏。此时 SolidWorks 会生成一个 .swp 文件,里面就是你刚才每一步操作的 VBA 代码。
录出来的代码通常很啰嗦,里面充满了类似boolstatus = swDoc.Extension.SelectByID2(...)这样的选择语句,很多行是图形界面必需的辅助调用。真正需要关注的只是核心几行:打开文档、执行命令、保存文档。你可以把录制的宏当作“语法字典”来查,而不是直接拿成品用。
例如我录一个“导出当前零件为 STEP”的宏,最终精简后核心代码差不多是:
Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Dim errors As Long Dim warnings As Long swModel.ExportToFile "D:\output\part.step", 0, errors, warnings你看,就这么几行就能完成格式导出。录制宏的真正价值,是让你看到 API 方法名字和参数是怎么写的。你要做的,就是慢慢删掉那些“界面操作噪音”,把核心逻辑抽出来组合成自己的工具。
3.2 用 API 读取装配体信息并生成 BOM
读取装配体信息是 SolidWorks 自动化里最实用的题目。以“行星齿轮箱装配体”为例,如果要求导出所有零件的名称、数量、材料和质量,手动操作少说要十几分钟,而写一个 API 脚本只需要一两秒。
核心思路是:打开装配体文档,遍历所有零部件。SolidWorks 的装配体文档对象是AssemblyDoc,通过它的GetComponents方法可以拿到所有组件,然后逐个获取组件名称、数量以及自定义属性。
下面这段 VBA 代码是我的常用模板,用来生成一个含“图号、零件名、数量、材质、单件质量”的 BOM 表:
Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swAsm As SldWorks.AssemblyDoc Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swAsm = swModel Dim swComp As SldWorks.Component2 Dim vComps As Variant vComps = swAsm.GetComponents(False) Dim i As Integer Dim fs As Object, f As Object Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.CreateTextFile("D:\output\bom.csv", True, True) For i = 0 To UBound(vComps) Set swComp = vComps(i) Dim swCompModel As SldWorks.ModelDoc2 Set swCompModel = swComp.GetModelDoc2 If Not swCompModel Is Nothing Then Dim swProp As SldWorks.CustomPropertyManager Set swProp = swCompModel.Extension.CustomPropertyManager("") Dim partNo As String, mat As String, mass As String partNo = swProp.Get("图号").Value mat = swProp.Get("材料").Value mass = swProp.Get("质量").Value f.WriteLine swComp.Name2 & "," & partNo & "," & mat & "," & mass End If Next i f.Close这段代码有几个地方值得注意。第一,GetComponents(False)返回的是当前状态下的组件明细,参数设为 False 表示只取顶层组件,不递归展开子装配体;要统计所有层次就把参数改成 True。第二,读取自定义属性时,图号、材料、质量都是我自己定义的属性名,实际使用时要和你公司的模板对齐。第三,写 CSV 文件时避免用 Excel,因为 SolidWorks 的 COM 调用和 Excel COM 同时使用容易造成进程互相等待。
这个宏输出的数据已经足够生成表格。如果你想直接生成带格式的 Excel BOM,可以把 CSV 交给 Python 的 pandas 库做后处理,这样职责更清晰,代码也更容易维护。
3.3 把脚本变成可以被外部调用的工具
宏写好了,只是第一步。要让 OpenClaw 能调用它,还得解决“外部启动”的问题。
SolidWorks 提供了一个命令行接口,可以用/run参数指定宏文件路径。基本形式是:启动SLDWORKS.exe,后面跟上宏文件路径,SolidWorks 启动后会加载该宏并执行。但实际用下来,这种方式的稳定性一般,主要问题在于 SolidWorks 的启动速度很慢,而且宏运行完毕后进程不一定会自动退出。
如果你是做外部程序集成,我更推荐走 COM 调用。用 Python 加 pywin32 包,在外部启动 SolidWorks 并执行操作,比依赖命令行开关更可靠。下面是一个简单的 Python 示例,它连接到一个已在运行的 SolidWorks 实例:
import win32com.client swApp = win32com.client.Dispatch("SldWorks.Application") swApp.Visible = True doc_path = r"D:\projects\gearbox.SLDASM" model_type = 2 # 2 表示装配体文档 doc = swApp.OpenDoc6(doc_path, model_type, 1, "", 0, 0) if doc: print("文档名称:", doc.GetTitle()) props = doc.Extension.CustomPropertyManager("") val = props.Get("项目编号").Value print("项目编号:", val) swApp.CloseDoc(doc.GetTitle())这段代码的意义在于打通了“外部程序 → SolidWorks”的链路。OpenClaw 只需要执行这条 Python 脚本,就能间接控制 SolidWorks。注意Dispatch("SldWorks.Application")这种方式,如果当前没有 SolidWorks 实例,它会创建一个新的;如果有多个实例,可能会连到不期望的那个。为了避免混乱,可以在脚本里先枚举系统进程,找到对应的 PID 再通过GetObject的方式绑定。
4. 把 OpenClaw 变成 SolidWorks 的调度中枢
4.1 设计一条 AI 驱动的工作流
现在两边的基础都准备好了,该谈怎么把 OpenClaw 这只“大脑”和 SolidWorks 这台“执行引擎”组合成一条真正的自动化链路。
我的设计思路是把整个流程分成四层:
第一层是用户入口,也就是飞书或 Teams 里的对话窗口,用户在这里用自然语言提出需求,比如“把 AZ-203 装配体的 BOM 生成一下”。第二层是意图解析层,OpenClaw 接收到消息后,让大模型分析用户意图,从中抽出关键信息:项目代号、操作类型、输出要求。第三层是工具调度层,OpenClaw 根据意图匹配已注册的工具,把参数填充进脚本命令并执行。第四层是执行层,Python 脚本或 VBA 宏在 SolidWorks 里完成真正的建模、读取、导出等工作。
这个分层最大的好处是每一层都能单独调试。出现问题时,你可以先确定是模型理解错、工具参数错,还是 SolidWorks 脚本错,不至于一上来就面对一团乱麻。
4.2 注册本地命令与脚本工具
OpenClaw 支持自定义工具注册。所谓“注册工具”,就是告诉代理:你有一个命令,它叫什么名字、接收哪些参数、执行时运行什么命令行。
假设我已经把 BOM 导出脚本打包成了export_bom.py,脚本接收两个参数:装配体文件路径、输出目录。那么我在 OpenClaw 的工具配置里会这样注册:
tools: - name: export_solidworks_bom description: 从 SolidWorks 装配体导出 BOM 清单,包含图号、名称、数量、材质和质量。 parameters: - name: assembly_path type: string required: true description: 装配体文件的完整路径,例如 D:\projects\gearbox.SLDASM - name: output_dir type: string required: false description: 输出目录,默认取装配体所在目录 command: python D:\scripts\export_bom.py {assembly_path} {output_dir}实际不同版本 OpenClaw 的配置格式会略有差异,但思路是一致的:给代理一份工具说明书,包括名称、说明、参数和命令行模板。关键点在于 description 字段要写清楚,因为大模型要靠它来判断什么时候调用这个工具。描述越具体,误用率越低。
注册完成后,你在飞书里发一句“帮我看看 D 盘 gearbox 装配的 BOM”,OpenClaw 就会自动填充装配体路径和默认输出目录这两个参数,然后执行脚本,最后把生成的 CSV 文件传回对话里。
4.3 并发控制和 session file locked 问题
集成中最容易踩的坑是并发问题。OpenClaw 作为多线程代理,可以同时处理多个用户请求;但 SolidWorks 本身不适合被多个进程同时操作。如果两个任务同时触发,一个在导 STEP,另一个在生成 BOM,SolidWorks 的 COM 接口很容易出现状态混乱,甚至直接崩溃。
我遇到过的典型报错就是:agent failed before reply: session file locked (timeout 60000ms)。这个错误表面上是说会话文件被锁定,60 秒内没拿到锁。说白了,就是前一个 OpenClaw 会话还在占用任务资源,后一个会话挤上来了。
处理方式有两个层面。第一,在 OpenClaw 侧,把涉及 SolidWorks 的工具都配置成串行执行,也就是同一时间只允许一个任务占用 SolidWorks 资源。第二,在脚本侧,加一个简单的文件锁机制,比如脚本开始时尝试创建一个.lock文件,如果发现文件已存在就等待或者直接报错。不要只依赖 OpenClaw 的排队机制,因为脚本本身的防护更能兜底。
另外还有一个容易忽视的点:SolidWorks 启动速度很慢,冷启动可能要几十秒。OpenClaw 的默认超时时间通常是 60 秒,如果脚本里包含了启动 SolidWorks 的过程,很容易超时。我建议在注册工具的配置里把 timeout 调大,至少给到 180 秒,否则任务会反复失败,但实质问题只是启动太慢。
5. SolidWorks 安装、许可与崩溃问题排查实录
5.1 安装与卸载阶段的坑
SolidWorks 的安装问题占了我日常技术支持工作量的一半。最常见的是安装不上、装完打不开、卸载不干净。先说安装,SolidWorks 2025 SP5、2026 这些版本对系统环境的要求越来越高,安装前建议关闭杀毒软件的实时防护,用管理员身份运行安装程序。不要只装 SolidWorks 主程序,Visual C++ 运行库、.NET Framework 这类依赖如果缺失,装完也会各种报错。
真正难处理的是卸载残留。很多人旧版本卸载不干净就直接装新版,结果安装到一半弹出一个奇怪的路径错误,比如“安装项目错误: 项目文件不存在 (c:\windows\solidworks\im_20260-40000-1100-100)”之类的提示。这个目录是安装过程中生成的中间目录,正常情况下安装完会清理掉,但如果上一次安装异常终止,它就会残留在 C 盘,导致下一次安装时找不到旧引用而失败。
遇到这种问题,我的处理步骤是:用 Windows 自带的“控制面板 → 卸载程序”先卸载已存在的 SolidWorks 组件;删除安装目录和 ProgramData 下的 SolidWorks 残留;检查 C 盘根目录是否有异常的 im_ 开头的临时文件夹,直接删掉;清理注册表中 SolidWorks 相关的残余项;最后再重装。
删除 SolidWorks Electrical 相关文件夹时,还会遇到“文件夹总显示打开中”的提示。这多半是 SolidWorks Electrical 的 SQL Server 服务还在后台占用文件。解决方法是先停掉 SQL Server 服务,再删除文件夹。如果删不掉,重启进入安全模式再删,或者用 unlocker 类工具解除占用。
5.2 许可获取失败排查
“无法获得下列许可 solidworks standard” 是另一个高频问题。SolidWorks 的授权机制分为单机版和网络版。网络版启动时需要通过 FlexNet 服务去局域网内找许可证服务器,这个流程一旦中间哪个环节断了,客户端就会弹出这个报错。
排查顺序我建议这样走:先看许可证服务器上的 SolidWorks FlexNet Server 服务是否正在运行,如果没有启动,到服务管理工具里手动启动。然后检查客户端和服务器之间的网络连通性,SolidWorks 是用固定端口通讯的,如果防火墙把端口挡了,客户端根本找不到服务器。再看许可证服务器的 hostid 有没有变化,部分企业服务器更新网卡后 license 会被锁住,需要重新绑定激活。
单机版则简单一些,一般是软件激活失效了,重新打开 SolidWorks 激活向导就好。但我见过更隐蔽的情况:用户安装完 SolidWorks 后改了电脑用户名或者系统盘符,导致注册表里的激活信息失效,也会报许可错误。
如果你正被这类问题困扰,记得先试着重启 FlexNet 服务再重启 SolidWorks。这个操作简单但成功率很高,我至少有一半的许可是问工作通过重启服务解决。
5.3 崩溃、SQL 连接与资源库问题
SolidWorks 崩溃的原因五花八门,但查来查去八成集中在三个方面:显卡驱动兼容性、内存不足、模型自身损坏。尤其在大装配体环境下,SolidWorks 对显存和内存都极其敏感。如果打开装配体或执行渲染时频繁崩溃,先更新显卡驱动到厂商测试过的版本,并在 SolidWorks 的高级设置里把“性能”相关的加重负载选项关掉,比如 RealView 图形。SolidWorks 官方会提供一个经过认证的显卡驱动列表,按着列表去选驱动会稳很多。
SolidWorks Electrical 的报错比较特殊,因为它依赖 SQL Server 数据库。“SolidWorks Electrical 无法连接到 SQL Server”这个提示,问题通常不在 SolidWorks 本身,而在 SQL Server 的实例服务没有启动,或者数据库账户密码不正确。检查 Windows 服务里有没有MSSQLSERVER或SolidWorksElectrical开头的 SQL 实例,并把服务设为自动启动。如果服务正常,再检查连接字符串里的服务器名称是否已更新为新机器名。
还有一个困扰很多人的点是“找不到 romans 字体”之类的提示。Romans 是 SolidWorks 工程图里常用的字体,属于软件自带资源。这个提示出现,通常意味着安装不完整,或者字体文件被清理软件误删了。最简单的办法是重新安装一次 SolidWorks 的字库组件,或者从另一台安装正常的电脑复制相应的字体文件到系统字体目录。
至于“SolidWorks design library 下载”“国标型材库”“焊接轮廓件大全”这些资源包,安装方法都差不多:下载后放到 SolidWorks 设计库目录,然后在系统选项里重新指定设计库路径。设计库文件夹可以自定义路径,放到网络共享目录后还能实现团队共用。
6. 完整实战:通过飞书自动生成装配体 BOM
6.1 任务准备
前面讲了那么多原理,这一节我完整记录一次实际操作的流水线,让整个流程更贴近真实。
我们的目标是:在飞书群里发一条中文消息,让 OpenClaw 调取一个 SolidWorks 行星齿轮箱装配体,提取 BOM 信息,生成 CSV 文件,然后把文件作为飞书消息回传。
环境是我手头的一台联想工作站,Windows 11,安装了 SolidWorks 2025 SP5,OpenClaw 部署在本机,飞书应用已接通。
6.2 脚本配置
我准备了两个文件。第一个是用 Python 写的 SolidWorks 调用脚本export_bom.py,它通过 pywin32 连接 SolidWorks,打开指定的装配体,遍历所有组件并读取自定义属性,最后输出 CSV。
第二个是 OpenClaw 的工具注册文件。我把按第 4 节那样的配置写好后,放入 OpenClaw 的 tools 配置目录,并重启了代理进程让配置生效。重启后我在 OpenClaw 控制台里先做了一次“冒烟测试”:直接执行注册好的工具接口,而不是走飞书消息链路,把所有参数都写死。这一步是为了确认 Python 脚本本身能不能在 OpenClaw 的环境下正常执行,避免把飞书链路的问题和脚本问题混在一起。
测试命令大概是:
python D:\scripts\export_bom.py D:\projects\gearbox.SLDASM D:\output脚本正常运行并输出了 CSV 文件。注意 CSSV 文件里包含了图号、零件名、数量、材质、质量五列,编码用的是 UTF-8 with BOM,这样飞书发送文件后拿到 Excel 里打开不会乱码。
6.3 实测过程与效果
冒烟测试通过后,我在飞书群里发了一条消息:“帮我导出 D 盘 projects 下 gearbox 装配体的 BOM 清单。”
OpenClaw 收到消息后做意图解析,匹配到了名字为export_solidworks_bom的工具,自动填充参数assembly_path=D:\projects\gearbox.SLDASM,output_dir没填就用了默认值。它在后台执行了脚本,整个过程花了大约 45 秒,其中大部分时间花在 SolidWorks 冷启动上。
脚本执行结束后,生成的bom.csv文件被 OpenClaw 作为文件消息发送到飞书会话里。点开文件,数据完整,材质、质量等参数都和 SolidWorks 里的属性值一致。
这个测试跑通之后,我把工具的 description 写得更精确了一点,比如在描述里加上了“如果用户没有指定路径,询问用户具体路径”,避免大模型在参数缺失时自己瞎猜。经过这轮调优,后续的使用就很少出现参数错误了。
这次实战让我印象最深的一点是:真正花时间的其实不是写脚本,而是调工具描述和参数解析。AI 代理的调用准确率,大部分取决于你给模型的“工具说明书”写得好不好。
7. 避坑清单与个人心得
最后写一份我自己反复踩过坑之后总结的避坑清单,希望能帮你跳过这些弯路。
脚本层面,所有涉及 COM 对象的地方都要判空。SolidWorks 的 COM 对象有时会返回 Nothing,比如用户手动关闭了文档,或者文件名路径写错了,这时候直接调用方法就会抛异常。写代码时每个对象调用前都检查一下,看似繁琐,能省大量排查时间。
任务调度层面,涉及 SolidWorks 的脚本一定要串行执行。不要觉得“同时处理三个导出请求”性能更高,SolidWorks 在这一块非常脆弱。OpenClaw 的排队机制 + 脚本文件锁双保险,才是稳定的做法。
路径层面,SolidWorks 脚本和 OpenClaw 工具注册时,路径统一使用绝对路径,不要用相对路径。因为 OpenClaw 的工作目录不一定是你脚本所在目录,相对路径很容易指向错误位置,报错还会非常误导。
在接飞书时,“输出容易被截断”的根因是消息长度限制,解决方案是文件化输出。任何超过一屏的内容,都让代理生成文件再上传,而不是强行发长文本。这个习惯一旦建立,使用体验会稳定很多。
关于 OpenClaw 和同类产品比如 WorkBuddy 的选择,我的体会是:如果你看重的是本地部署、数据不出内网、而且希望对底层工具调用逻辑有完全的控制权,OpenClaw 更合适;如果你追求的是零配置开箱即用,对数据合规要求不那么敏感,那商业化的 WorkBuddy 上手会更快。这两者没有绝对的好坏,看你的应用场景更偏向哪一边。
在 SolidWorks 版本选择上,如果你主要目的是做自动化接口开发,建议优先使用 2025 及以上版本,API 的稳定性和文档完整度都更好。老版本也不是不能用,但遇到 API 调用报错时,你很难判断是接口变了还是自己代码的问题,排查成本会高不少。
SolidWorks 的定制资源,比如国标型材库、GB 材料库、焊接轮廓件库,装好以后要注意备份。很多人只备份了模型文件,忽略了设计库,系统重装后这些定制库全部要重新下载配置,非常浪费时间。建议把设计库目录整理成独立文件夹,纳入你的常规备份计划。
关于批量把虚拟零部件保存为标准零件,这个操作在 SolidWorks 里手动做很繁琐,但通过 API 是可以自动化的。基本思路是遍历装配体中的每个虚拟零部件,调用模型的保存接口,把它从“内部存储”变成外部独立零件文件。不过这个操作对数据引用关系有影响,执行前一定要做好装配体备份,否则一旦保存路径和命名规则设置不对,整个装配体的引用关系都会乱掉。
最后再说几句个人体会。把 SolidWorks 和 OpenClaw 接在一起这件事,绝对不是一个“炫技”项目。它解决的是工程师每天都会遇到的真实痛点:重复劳动、格式转换、数据汇总、跨系统传递。这一套方案跑稳定之后,我把之前每周至少两小时的重复性工作量压缩到了十几秒,而且出错率明显下降。
我建议你从最小需求开始落地,先挑一个你每周都要做、而且流程固定的任务做试点。比如最简单的 STEP 批量导出,或者装配体自定义属性汇总。跑通一个场景之后,再逐步扩展到你想要的其他自动化能力。不要一开始就想搭建一个万能系统,那样大概率会陷入各种集成问题里,迟迟拿不出成果。
如果你也在做类似的集成,有一个小思路可以分享:给每个 SolidWorks 工具脚本都添加详细的日志输出,包括每一步的执行时间和关键变量的值。这些日志平时不起眼,但当 AI 代理调用失败时,你能很快定位是模型理解错了、参数传错了,还是 SolidWorks 脚本本身出了问题。这个习惯帮我节省了无数个小时的排查时间,也让我对整套自动化系统有了更强的掌控感。