资讯动态

解剖一个 AI Skill:EasyEDA 是如何让大模型操控 PCB 设计软件的

发布时间:2026/10/15 17:38:00 来源:尧图企业网站定制
1. 从一次真实的 PCB 改板说起EasyEDA AI Skill 到底解决了什么问题你有没有遇到过这种场景板子画到一半DRC 报了一屏间距违规你只能一个个点开、量距离、改坐标改完再跑一遍又冒出来新的。或者更烦的原理图里 80 多个元件的位号要批量改前缀手动改到怀疑人生。这类活儿不难但极其消耗耐心而且特别适合交给机器去做。EasyEDA AI Skill 就是冲着这类需求来的。它做的事情可以一句话概括让大模型通过一套统一的 Key/API 通道直接调用运行中的嘉立创 EDAEasyEDA客户端能力包括放置元件、读取图元、跑 DRC、创建差分对、拿网表等等。你不需要写插件、不需要学 EDA 的扩展开发只要在 AI 编程工具里说一句「帮我检查 PCB 的 DRC 并修掉所有报错」剩下的查文档、写代码、发请求、解析结果、迭代修复全自动完成。它适合谁三类人最直接受益。第一类是想复刻这条链路的开发者——你手上可能有别的桌面软件带 SDK 的那种想照着 EasyEDA 这套桥接模型做一个自己的 Skill。第二类是日常画板的硬件工程师想让 AI 帮忙做重复性的图元操作和规则检查。第三类是做 Agent 基础设施的人想看看一个高质量的 AgentSkills 技能包内部到底长什么样。这篇文章不打算停留在「用一下看看效果」。我会把整个链路拆开从 SKILL.md 的技能定义、Bridge Server 的端口发现和协议设计、reference 目录的文档组织到统一 Key/API 通道怎么接进来最后给出一份可复制的 Skill 配置片段和一次端到端验证动作。读完你应该能自己动手把这条链路跑通并且知道每一步为什么这么设计。先看整体架构。EasyEDA AI Skill 是一个典型的三方桥接模型AI Agent 在左边EasyEDA 桌面客户端在右边Bridge Server 在中间当翻译官。AI Agent 通过 HTTP REST API 把代码发到 Bridge ServerBridge Server 再通过 WebSocket 转发给 EasyEDA 客户端执行结果原路返回。整个通信跑在一个自动发现的端口范围 49620–49629 上启动时不用手动指定端口多个 Bridge 实例之间也不会冲突——这一点在实战里很关键比如你一台机器上同时跑 Claude Code 和另一个 Agent 工具两边各起一个 Bridge互不干扰。把 Bridge Server 比作翻译官不算夸张。AI Agent 说的是 JSON-RPC 风格的 execute 请求EDA 客户端需要的是浏览器沙箱里的 JS 执行环境Bridge Server 在这两者之间做了请求-响应匹配、超时控制、多窗口路由和心跳维护。理解了这层后面所有的配置和排障都会顺很多。2. 前置准备用 TaoToken 统一 Key/API 通道接入大模型在拆 Bridge Server 之前得先把「大模型这一端」接好。因为整个链路里AI Agent 是要真正去理解你的自然语言指令、查 API 文档、写 JS 代码的这背后需要一个稳定可用的大模型调用通道。我这边用的是 TaoToken 作为统一入口它把模型对话、Coding Plan、API Keys 这些能力收在一个地方省得你在多个平台之间来回切。TaoToken 是什么、能做什么、适合谁它是一个面向开发者的模型调用与 Agent 能力平台提供统一的 API 通道你可以用它来驱动 Claude Code、Cline、Codex 这类编程工具也可以直接调模型对话接口。适合想快速把大模型接进自己工作流、又不想折腾多套鉴权的开发者。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基址是 https://taotoken.net/api 这个不加 UTM。具体怎么接分三步走。第一步拿到你的 API Key。进控制台创建https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 在 API Keys 页面生成一个 Keyhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。这个 Key 就是你后面所有工具的统一凭证Base URL 填 https://taotoken.net/api Model ID 按你选的模型填比如 claude 系列或 gpt 系列具体以控制台展示为准。第二步如果你用的是 Claude Code 这类工具需要配置环境变量。这里有个坑不同工具读的变量名不一样。Claude Code 读的是 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN而有些工具读 OPENAI_BASE_URL。我建议你先确认自己用的工具读哪套再对应填。配置文档在这里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各工具的详细说明。第三步验证通道是否通。最直接的办法是发一个最小请求看能不能拿到模型回复。如果你只是想先确认模型能用可以直接在模型对话页面试https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 。如果打算长期跑编码和 Agent 任务建议直接上 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 额度更划算。这里要强调一点统一 Key/API 通道的价值在于「一处配置多处复用」。你的 AI Agent、Bridge Server 的调试脚本、甚至后面写的小工具都可以共用同一个 Base URL 和 Key。这样当你要换模型或者调额度时只改一个地方。对于 EasyEDA Skill 这种需要 AI 频繁读文档、写代码的场景通道的稳定性直接决定了体验——通道一断AI 就卡在「正在思考」不动了。配置好之后你的 AI 工具就具备了「理解指令 生成代码」的能力。接下来要做的是给它一个能真正操作 EDA 的「手」——也就是 Bridge Server 和 Skill 配置。3. 可复制配置Skill 片段、Bridge Server 与 settings 文件这一节是全文最实操的部分。我会给出可以直接复制粘贴的配置片段包括 Skill 的 SKILL.md 关键字段、Bridge Server 的启动方式、以及 AI 工具的 settings 配置。你照着填就能把链路搭起来。先说 Skill 的入口文件 SKILL.md。AgentSkills 规范里AI 工具加载技能时读的就是这个文件。它的 YAML 前置元数据里description 字段嵌入了触发词列表比如「嘉立创EDA启动」「立创EDA启动」「EDA启动」还有 EasyEDA、PCB、schematic、footprint 这些英文关键词。当你在对话里说到这些词AI 工具会自动匹配并加载这个技能。下面是一个精简后的 SKILL.md 结构示例--- name: easyeda-api description: 通过 Bridge Server 操控运行中的嘉立创 EDAEasyEDA客户端。 触发词嘉立创EDA启动/ 立创EDA启动/ EDA启动/ EasyEDA / PCB / schematic / footprint。 注意嘉立创EDA 的英文名是 EasyEDA两者是同一个产品。 license: MIT compatibility: EasyEDA Pro 3.2.149, Run API Gateway v1.0.5 ---注意 description 里那句「嘉立创EDA 的英文名是 EasyEDA两者是同一个产品」。这不是给人看的注释是给 AI 的纠偏指令——有些模型会把这两者当成不同产品或者在英文语境下用别的音译。直接写在 description 里每次触发都会注入确保不会歧义。这个技巧在你写自己的 Skill 时非常值得抄。然后是 Bridge Server 的启动。它依赖 ws 库启动命令很简单git clone easyeda-api-skill 仓库地址 cd easyeda-api-skill npm install npm run server服务会自动在 49620–49629 范围内找到空闲端口启动。端口发现用了两层判断第一层 isPortInUse() 发起 TCP 连接300ms 超时连上了就是被占用第二层 isBridgeRunning() 对目标端口发 GET /health解析 JSON 看 service 字段是不是 easyeda-bridge。两层都过了才绑定监听。如果发现已有实例在跑直接 process.exit(0) 退出防止重复启动。接下来是 AI 工具的 settings 配置。以 Claude Code 为例你需要把 Skill 放到它扫描的目录并配置模型通道。下面是一个 settings 片段示例路径按你的实际环境调整{ skillsDir: ~/.claude/skills, env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: 你的 TaoToken API Key, ANTHROPIC_MODEL: 你的 Model ID } }如果你用的是 Cline 或类似的工具配置项名可能不同但核心三件套是一样的Base URL Key Model ID。这三样缺一不可而且必须和 TaoToken 控制台里展示的一致。我见过有人把 Base URL 末尾多写了一个斜杠结果一直 404排查了半天。再补一个 Codex 的 auth.json 示例因为 Codex 的鉴权文件格式比较特殊{ OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: 你的 TaoToken API Key, model: 你的 Model ID }这里要提醒一句不同工具读的环境变量名不一样Claude Code 读 ANTHROPIC_Codex 和很多 OpenAI 兼容工具读 OPENAI_。你填之前先确认工具文档别一股脑全填上有时候冲突了反而报错。配置完成后目录结构大概是这样easyeda-api-skill/ ├── SKILL.md ├── scripts/ │ └── bridge-server.mjs ├── references/ │ ├── classes/ # 120 个 API 类文档 │ ├── enums/ # 62 个枚举定义 │ ├── interfaces/ # 70 个接口类型 │ └── _quick-reference.md ├── guide/ └── format/references/ 目录是技能包的真正数据层。classes/ 下每个文件对应一个 API 类格式统一类名、描述、方法列表含类型签名、参数说明、返回值类型、备注。_quick-reference.md 是一个单文件速查表把所有类的方法签名列在一起——当 AI 只需要确认方法名或参数顺序时读这一个文件就够了不需要逐个打开 120 个类文件。对于有 token 窗口限制的 AI 工具来说这个设计直接影响了单轮对话能完成的复杂度。这套配置的核心思路是离线优先所有 API 文档打包在技能包内部AI 查 API 时不需要访问在线文档站点。这解决了两个实际问题一是在线文档站是 JS 渲染的curl 或 AI 工具爬不到内容二是离线环境下照样能工作。4. 端到端验证从 health 检查到一次真实的 DRC 触发配置写完了怎么确认大模型真的能触发 EasyEDA 操作这一节给出一条完整的验证路径从最底层的 health 检查到一次真实的 DRC 触发每一步都有预期结果。第一步验证 Bridge Server 活着。启动服务后在终端跑curl http://localhost:49620/health预期返回类似{ service: easyeda-bridge, edaConnected: true, activeWindowId: win-xxxx, timestamp: 1730000000000 }如果 edaConnected 是 false说明 EasyEDA 客户端还没连上来先去装 Run API Gateway 扩展。如果连端口都连不上说明 Bridge Server 没起来回去看 npm run server 的输出。第二步验证 EDA 窗口连接。跑curl http://localhost:49620/eda-windows预期返回当前所有连接的 EDA 窗口列表。如果只有一个窗口Bridge Server 会自动把它选为活跃窗口——这个「默认选中」的逻辑省掉了大量交互轮次。如果有多个窗口比如原理图和 PCB 各开一个你需要用 POST /eda-windows/select 指定 windowId。第三步发一个最小的 execute 请求确认代码能在沙箱里跑。用 curl 发curl -X POST http://localhost:49620/execute \ -H Content-Type: application/json \ -d {code: return eda.dmt_Project.getCurrentProjectInfo();}预期返回当前工程的信息对象。如果返回 result: null八成是代码没写顶层 return或者包在了 IIFE 里——这是最常见的坑之一后面会细说。第四步让 AI 真正触发一次操作。在 AI 工具里说「帮我检查当前 PCB 的 DRC 并列出所有报错」。AI 会先调 eda.dmt_Project.getCurrentProjectInfo() 确认工程开着再调 eda.dmt_SelectControl.getCurrentDocumentInfo() 确认当前激活的是 PCB 文档然后跑 eda.pcb_Drc.check(true, true, false) 拿到报错列表。如果报的是间距违规AI 会去 references/classes/PCB_Primitive.md 查 get() 方法的签名然后调 eda.pcb_Primitive.get([id]) 取出图元toAsync() 进入修改模式setState 调整坐标或宽度done() 提交变更。全部修完再跑一次 check()反复迭代直到 passed 为 true。如果报的是差分对阻抗不匹配AI 不走图元修改的路子而是去查 references/classes/PCB_Drc.md发现 createDifferentialPair() 和 createNetClass() 可以直接用代码创建规则——USB_DP 和 USB_DM 配成一个 90Ω 差分对不需要在 UI 里逐个点选。整段代码不到十行从查文档到执行完毕不超过一分钟。整个过程 AI 不需要离开对话界面你只需要说一句自然语言指令。剩下的查 API、写代码、发 HTTP 请求、解析结果、迭代修复全部由 AI 和 Bridge Server 自动完成。这就是「大模型操控 PCB 设计软件」的真实样子——不是模拟鼠标点击而是语义级的 API 调用。验证通过后你可以再试几个更复杂的场景比如批量改位号、跨页拿网表、自动放置去耦电容。每验证一个你对这条链路的信任度就高一分。5. 常见报错排查401、local proxy failed、reading choices、OAuth链路跑起来之后真正花时间的往往是排障。这一节我把几个高频报错和对应的排查路径列出来都是实测踩过的。报错一401 Unauthorized。这个基本都出在模型通道这一端。原因通常是 API Key 填错、过期或者 Base URL 和 Key 不匹配。排查顺序先确认 Key 是从 TaoToken 控制台复制的完整字符串没有多余空格再确认 Base URL 是 https://taotoken.net/api 末尾没有多余斜杠最后确认你用的工具读的环境变量名对不对——Claude Code 读 ANTHROPIC_AUTH_TOKENCodex 读 OPENAI_API_KEY填错了就等于没填。如果三样都对还是 401去控制台看这个 Key 的额度是不是用完了。报错二local proxy failed。这个报错通常出现在工具尝试走本地代理但代理没起来的时候。排查思路先确认你的网络环境不需要额外代理配置很多开发机是直连的配了代理反而坏事再检查工具配置里有没有残留的 proxy 设置有就清掉最后确认 Bridge Server 和 AI 工具在同一台机器上或者网络可达。如果是 Bridge Server 跑在虚拟机、EasyEDA 跑在宿主机这种跨机部署要确认防火墙没挡住 49620–49629 这个端口段。报错三reading choices 相关报错。这个报错一般意味着模型返回的响应格式和你工具预期的格式对不上。常见原因是 Model ID 填错了或者你用的工具走的是 OpenAI 兼容格式但模型返回的是另一种格式。排查确认 Model ID 和控制台展示的完全一致确认工具的 API 格式设置有些工具要显式选 OpenAI Compatible如果还不行换一个模型试试排除是单个模型的问题。报错四OAuth 相关报错。有些工具默认走 OAuth 登录流程但你用的是 API Key 模式两者会打架。排查在工具设置里关掉 OAuth 登录选项强制走 API Key确认没有同时配置 OAuth token 和 API Key有冲突就删掉 OAuth 那部分如果工具支持多种鉴权模式明确选 API Key 模式。除了模型通道的报错EasyEDA 这一端也有几个高频坑一并列出来坑一字段名写错。sch_PrimitiveComponent.getAll() 返回的元件对象里位号字段叫 designator 而不是 designation。用错字段名遍历 80 多个元件看起来全是空对象第一反应会是「API 坏了」实际是字段名写错了。正确姿势是先 var s all.find(p p.designator); return Object.keys(s) 探一下而不是猜。坑二返回值捕获失败。execute 的代码必须顶层 return不能包在 IIFE 里。写成 (async () { ... })() 的话Bridge 会收到 result: null因为 IIFE 的返回值被吞掉了。正确写法就是直接 return await eda.xxx()。坑三跨页操作读错文档。dmt_EditorControl.openDocument(uuid) 返回成功但后续的 getAll() 读的还是最初的页面——沙箱绑定在第一个打开的文档上。对于跨页的网络分析用 sch_Netlist.getNetlist() 可以拿到整个工程的网表不需要切换页面。坑四console.log 不可靠。沙箱里 console.log 的输出不会被 Bridge 捕获调试要用 eda.sys_ToastMessage.showMessage() 或者直接 return。坑五await 漏写。getByLcscIds、search、getAll、DRC、netlist 这些全是异步的必须 await。唯一的例外是 3.2.149 版本的 create() 方法是同步的。这些坑在 SKILL.md 和 references/live-api-pitfalls.md 里都有记录但真正遇到的时候还是得靠 AI 自己对照提示去排查——这也是为什么 SKILL.md 里要写这么详细的常见错误清单。一个高质量的 Skill踩坑文档和代码模式同等重要。6. 把这条链路复用到你自己的桌面软件上拆完 EasyEDA 这套 Skill最有价值的其实不是 EDA 本身而是它背后的通用结构。一个 499 行的桥接服务器、一份 746 行的 SKILL.md、120 份 API 参考文档组合在一起就是一个标准化的 AI Agent 技能包。这套结构对任何「让 AI 操控桌面软件」的场景都适用。如果你想复刻核心就四件事。第一桥接层要薄但要稳。Bridge Server 只做三件事端口发现、请求转发、超时保护。不解析代码语义、不做权限控制、不缓存结果。薄的好处是好维护、好调试稳的要求是超时必有兜底、断连必有清理。第二SKILL.md 是给 AI 的使用说明书不是给人的 README。触发词列表、执行环境约束、常见错误清单、调试流程这些要写成具体的判断逻辑「如果窗口数为 0告诉用户检查扩展安装」而不是概览描述。第三离线优先。所有 API 文档打包在技能包内部AI 调用的每一步都不需要网络请求去取文档。第四踩坑文档和代码模式同等重要。同样的坑每个新用户都会踩一遍提前写出来省掉的是反复排查的时间。具体到操作层面把 eda 对象换成目标软件的 SDK 对象把 API 文档按同样的 reference 格式组织把 bridge-server 的端口发现和协议层直接复用——搞定。对于有 SDK 的桌面软件来说这套桥接模型几乎可以原封不动地搬过去。最后说一个实际部署的注意点。Run API Gateway 扩展的自动扫描只覆盖本机 localhost。如果 Bridge Server 跑在另一台机器上比如 Ubuntu 虚拟机需要在扩展的「配置」里手动填写 Bridge Server 的 IP 地址。我试过的一种部署是 Bridge Server 跑在 Ubuntu VM 的 0.0.0.0:49620Windows 宿主机上的 EasyEDA 通过局域网 IP 连接——两台机器、两个 Bridge 实例互不干扰。这种跨机部署在团队协作场景里挺有用一个人维护 Bridge多个人连上来用。如果你打算长期跑这类 Agent 任务建议把模型通道也固定下来。统一用 TaoToken 的 Coding Plan 是个省心的选择https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 额度和稳定性都比按次调用更适合高频的 Agent 场景。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 遇到配置问题先翻这里。想先验证模型能力的话模型对话入口在 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite API Keys 在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。整套链路跑通之后你会发现真正的门槛不在代码而在「把 AI 的决策路径写死在技能定义里不给它瞎猜的空间」。这一点想明白了你手上任何一个带 SDK 的桌面软件都能变成 AI 能操控的工具。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑