1. 当自然语言指令撞上 SolidWorks API:OpenClaw 建模自动化的真实卡点
如果你正在看这篇内容,大概率已经试过让 AI 帮你写 SolidWorks 脚本,或者正打算把「画一个直径 60mm、高 40mm 的水杯」这种自然语言指令,变成能直接跑的建模代码。OpenClaw 就是干这件事的:它把大模型的自然语言理解能力,接到 SolidWorks 的 COM 接口上,让你用说话的方式驱动参数化建模和批量出图。适合谁?适合每天要出几十个相似零件、改尺寸改到手指发麻的机械工程师,也适合想把重复建模流程脚本化的自动化爱好者。
但真正动手的人都知道,这条路有三个坑。第一个坑是模型侧:Python 通过 win32com 调FeatureManager.FeatureExtrusion(),代码不报错,SolidWorks 里却什么都不显示,拉伸特征像被吞了一样。第二个坑是链路侧:OpenClaw 要调大模型把指令翻译成 API 脚本,你得自己维护 API Key、Base URL、模型 ID 三件套,换个模型就要改一遍配置,散落在各个脚本里。第三个坑是稳定性:Python API 时灵时不灵,VBA 宏反而稳,但 VBA 又不好和外部 AI 流程串起来。
我试过的解法是:把模型调用这一层统一收口到 TaoToken,用一个 Key 打通 OpenClaw 的指令解析环节,让 SolidWorks 侧专心处理建模。这样你改模型、换场景,只需要动一个配置文件,不用满项目找 Key。下面从环境准备开始,一步步把最小闭环跑通。
2. TaoToken 统一 Key 前置:OpenClaw 侧 endpoint 与鉴权字段怎么填
先说清楚 TaoToken 在这条链路里的位置。OpenClaw 的工作流是:接收你的自然语言指令 → 调用大模型 API 把指令转成结构化的 SolidWorks 操作序列 → 执行 Python/VBA 脚本建模。中间「调用大模型」这一步,就是 TaoToken 接管的地方。它提供统一的 API 入口,你拿一个 Key,就能在 OpenClaw 里切换不同模型,不用为每个模型单独配一套鉴权。
你需要准备的东西只有两样:一个 TaoToken 的 API Key,以及 OpenClaw 的配置文件路径。Key 在控制台的 API Keys 页面创建,建议单独建一个给 OpenClaw 用,方便后续排查和额度管理。创建入口在这里:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
拿到 Key 之后,OpenClaw 侧的配置核心是三个字段:Base URL、API Key、Model ID。Base URL 填https://taotoken.net/api,注意这个地址不带任何查询参数,是纯 API 根路径。API Key 就是你刚创建的那串字符。Model ID 按你实际要用的模型填,比如做指令解析这种任务,选一个响应快、结构化输出稳的就行。
这里有个容易踩的坑:很多人把 Base URL 填成官网首页https://taotoken.net,结果请求 404。API 调用必须走/api这个路径。另外,OpenClaw 有些版本会在 Base URL 后面自动拼/v1/chat/completions,所以你填的时候不要自己再加/v1,否则会变成/api/v1/v1/...。填完先别急着跑建模,用一条最简单的对话请求验证鉴权通不通,确认 200 之后再往下走。
如果你更习惯用命令行工具做长期编码和 Agent 任务,TaoToken 也有对应的 Coding Plan 方案,配置逻辑一致,只是入口不同:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
3. 可复制配置:OpenClaw 的 settings 与 SolidWorks 连接脚本
这一节给你两份可以直接抄的配置。第一份是 OpenClaw 侧的模型接入配置,第二份是 SolidWorks 侧的 Python 连接脚本。两份都跑通,链路才算搭起来。
先看 OpenClaw 的配置文件。不同版本的 OpenClaw 配置文件名可能不一样,常见的是settings.json或config.toml。下面给 JSON 版本,路径按你本机实际安装位置调整,字段名保持和 OpenClaw 文档一致:
{ "llm": { "provider": "taotoken", "base_url": "https://taotoken.net/api", "api_key": "sk-你的TaoToken密钥", "model_id": "你的模型ID", "timeout": 60, "max_retries": 2 }, "solidworks": { "enabled": true, "connection": "win32com", "visible": true, "template_path": "C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\templates\\part.prtdot" } }如果你用的是 TOML 格式,等价写法是这样:
[llm] provider = "taotoken" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoToken密钥" model_id = "你的模型ID" timeout = 60 max_retries = 2 [solidworks] enabled = true connection = "win32com" visible = true template_path = "C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\templates\\part.prtdot"注意template_path里的反斜杠要转义,JSON 里写双反斜杠,TOML 里单反斜杠在字符串中也要注意。这个模板路径是 SolidWorks 2024 的默认位置,你本机版本不同的话,去 SolidWorks 里「工具 → 选项 → 文件位置 → 文档模板」查实际路径。
第二份是 SolidWorks 连接脚本,负责把 OpenClaw 解析出来的操作序列落到模型上。先写一个最小连接和画圆验证:
#!/usr/bin/env python # -*- coding: utf-8 -*- import win32com.client import pythoncom def connect_solidworks(): pythoncom.CoInitialize() sw = win32com.client.Dispatch('SldWorks.Application') sw.Visible = True return sw def create_circle(sw, radius_mm=30): doc = sw.ActiveDoc if not doc: raise RuntimeError('没有活动文档,请先在 SolidWorks 中新建零件') doc.SketchManager.InsertSketch(True) r = radius_mm / 1000.0 doc.SketchManager.CreateCircle(0, 0, 0, r, 0, 0) doc.InsertSketch2(False) doc.ForceRebuild3(True) doc.ViewZoomtofit2() return doc.GetTitle if __name__ == '__main__': sw = connect_solidworks() title = create_circle(sw, 30) print('Circle created in:', title)这段代码里,CreateCircle的坐标单位是米,所以 30mm 要除以 1000。这是 SolidWorks API 的常见坑,很多人直接填 30,结果画出一个巨大的圆。连接部分用Dispatch('SldWorks.Application'),如果 SolidWorks 没启动,它会自动拉起一个实例。
4. 验证请求:从一条指令到零件生成的最小闭环
配置填好之后,怎么确认整条链路是通的?不要一上来就搞复杂零件,先用一条最简单的指令验证「自然语言 → 模型解析 → API 调用 → 零件生成」这个闭环。
第一步,在 OpenClaw 里发一条指令,比如「新建一个零件,在前视基准面上画一个半径 30mm 的圆」。OpenClaw 会把这句话发给 TaoToken 的 API,模型返回结构化的操作序列,大概长这样:
{ "actions": [ {"type": "new_part", "template": "part.prtdot"}, {"type": "select_plane", "name": "Front Plane"}, {"type": "insert_sketch"}, {"type": "create_circle", "cx": 0, "cy": 0, "cz": 0, "radius_mm": 30}, {"type": "exit_sketch"}, {"type": "rebuild"} ] }第二步,OpenClaw 把这份 JSON 映射成上一节的 Python 调用。你可以在 OpenClaw 日志里看到实际发出的 HTTP 请求,重点确认三件事:请求地址是https://taotoken.net/api开头的、Header 里带了Authorization: Bearer sk-...、返回状态码是 200。如果这三项都对,说明模型调用这一层没问题。
第三步,看 SolidWorks 窗口。正常情况下,你会看到一个新零件文档被创建,前视基准面上出现一个半径 30mm 的圆,视图自动缩放到合适大小。控制台打印出Circle created in: Part1。
这一步跑通的意义在于:你验证了 TaoToken 的 Key 是有效的、OpenClaw 的 endpoint 配置是对的、SolidWorks 的 COM 连接是活的。接下来再往上加拉伸、切除、批量出图,都是在这个闭环上叠操作。如果这一步就卡住,先别往下走,按下一节的排查表定位。
5. 本篇常见错排查:401、local proxy failed 与拉伸不显示实体
这一节按真实报错来。你在跑上面闭环时,最可能撞上四类问题。
第一类,401 Unauthorized。报错原文通常是{"error":{"message":"Invalid API key","type":"invalid_request_error"}}。原因基本是 Key 填错、Key 被删、或者 Header 格式不对。检查顺序:确认api_key字段里没有多余空格;确认请求 Header 是Authorization: Bearer sk-xxx,Bearer 后面有一个空格;确认这个 Key 在控制台里状态是启用。如果都没问题,重新生成一个 Key 再试。
第二类,local proxy failed 或 connection refused。这个报错说明 OpenClaw 根本没连上 TaoToken 的 API 地址。最常见的原因是 Base URL 填成了https://taotoken.net而不是https://taotoken.net/api,或者本机网络环境有额外的代理设置干扰。检查base_url字段,确保是纯 API 根路径,不带尾部斜杠,不带/v1。如果你本机配了系统级代理,先临时关掉再测。
第三类,reading choices 相关报错,比如KeyError: 'choices'或list index out of range。这说明请求发出去了、也返回了,但返回结构不是 OpenClaw 预期的格式。常见原因是 Model ID 填了一个不支持对话补全的模型,或者模型返回了错误信息但被 OpenClaw 当成正常响应解析。解决办法:先用模型对话页面单独测一下这个 Model ID 能不能正常返回:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite 确认模型本身可用,再回 OpenClaw 排查解析逻辑。
第四类,也是最经典的:Python 调FeatureExtrusion()不报错但不出实体。这是 SolidWorks 2024 和 win32com 的兼容性问题,参数传递方式对不上。临时方案有两个:一是改用 VBA 宏执行拉伸,Python 只负责生成 VBA 代码和调用;二是检查FeatureExtrusion的参数个数和顺序,SolidWorks 2024 推荐用FeatureExtrusion2,参数列表更长但更稳定。如果你在 OpenClaw 里同时用了 Cline MCP 或 Codex 的auth.json做辅助,记得这三件套要写全:Base URL 填https://taotoken.net/api、Key 填 TaoToken 的 Key、Model ID 填你验证过的模型,缺一个都会导致鉴权失败。
排查时有个通用技巧:在 OpenClaw 里打开 debug 日志,把实际发出的 HTTP 请求和响应完整打出来。大部分问题看请求地址、Header、响应体这三处就能定位。
6. 把 Key 收口之后:OpenClaw 建模链路的下一步
走到这里,你已经有了一个能跑通的最小闭环:自然语言指令进,SolidWorks 零件出,中间用 TaoToken 统一 Key 管住模型调用。接下来可以做的事很具体。一是把画圆扩展成参数化建模,让模型从指令里提取直径、高度、壁厚这些参数,直接填进CreateCircle和FeatureExtrusion2。二是批量出图,用 OpenClaw 循环生成不同尺寸的零件,每个零件调一次SaveAs和工程图导出。三是把 VBA 宏作为兜底执行层,Python 负责解析和编排,遇到拉伸这类不稳定操作就切 VBA。
配置层面,建议你把 TaoToken 的 Key 放在环境变量里,而不是硬编码在配置文件中。OpenClaw 支持读取TAOTOKEN_API_KEY这类环境变量,这样换机器、换项目都不用改文件。如果你要长期跑 Agent 任务,Coding Plan 的额度模型更适合持续调用,配置方式和单次 API 一致,只是计费维度不同。
最后留一个实用习惯:每次改完配置,先用一条「画圆」指令做冒烟测试,确认闭环没断,再去跑复杂零件。这样出问题时你能快速判断是配置层还是建模层的问题,不用在一堆报错里猜。