← 返回
AI技术

我做了一个开源 AI Agent,能自动设计原理图和 PCB

✍️ zhirenhun 📅 2026/10/28 👁 26 阅读 ⏱ 11 分钟
我做了一个开源 AI Agent,能自动设计原理图和 PCB

大家好!我想分享一下我的开源项目 EasyEDA Copilot。它能让 AI Agent 直接在 EasyEDA Pro 里创建和编辑原理图与 PCB。

我既做编程也做电子。大学学的电子专业,课上教的就是 EasyEDA。我觉得它比 Altium Designer 好学多了,所以自己的项目一直用它。

EasyEDA Copilot 的想法很早就有了,甚至早于 GPT-6 Astra 学会在 KiCad 里设计 PCB。当时我想试着做一个自己的 AI Agent,把编程和电子这两个我感兴趣的领域结合起来。

第一版只能编辑原理图。后来我陆续加了更多功能:创建原理图、搜索元件、自动布局元件、PCB 布线。

现在 EasyEDA Copilot 能承担设计流程中很大一部分工作,产出的仍然是普通、可编辑的 EasyEDA 文档。

EasyEDA Copilot 的工作原理

主要集成通过 MCP 实现。

整体架构大致是这样:

AI agent => MCP => specialized algorithms => EasyEDA

MCP 服务器通过本地 WebSocket 连接 EasyEDA 扩展。Agent 可以获取原理图、元件、连接、层以及其他对象的信息。

也可以基于 MCP 单独构建一个 Skill。

我的做法和直接把编辑器开放给 AI 的主要区别在于:模型不必自己完成所有工作。

比如官方有一个 EasyEDA API Skill,允许 Agent 通过编辑器 API 执行 JavaScript。

我的思路稍有不同。

在 EasyEDA Copilot 里,模型主要描述要做什么。比如哪些元件应该放得近一些、连接器放在哪里、用哪些布线规则。

然后由常规算法完成实际工作。

同时,Agent 仍然可以直接在 EasyEDA 里执行 JavaScript。遇到不寻常的需求,或者要手动修 PCB 的某一部分,它可以用编辑器 API。

所以模型负责定义任务,但不必自己计算每个元件或每段走线的坐标。

元件布局的工作方式

布局使用一套独立算法,输入是元件、连接、板框几何和约束条件。

Agent 用 DSL 描述需求。

下面是个小例子:

board.rect(40, 30, {
  layers: ["top"],
  clearance: 0.3
});

block("MCU", ["U1", "C1", "C2"], "mcu");
block("CONNECTORS", ["J1", "J2"], "connector");

edgeMount("J1", "left");
edgeMount("J2", "right");

veryNear(pin("C1", 1), pin("U1", 5));
veryNear(pin("C2", 1), pin("U1", 8));

这里我们定义一块40×30 mm的电路板、两组元件、连接器位置,以及一项要求:把电容放在靠近特定微控制器引脚的位置。

随后算法会自动找到合适的布局方案。

布局计算借助GPU加速。许多操作可以并行执行,元件数量很大时尤其有用。

算法还会考虑元件尺寸、重叠、电气连接、机械约束和布局规则。

计算完成后,Agent可以查看预览、修改约束条件,或在EasyEDA中应用布局。

PCB布线的工作原理

布线采用类似的思路。

Agent描述规则:走线宽度、间距、层、过孔、差分对及其他要求。

例如:

drc({
  trackWidthMm: 0.2,
  clearanceMm: 0.15
});

powerNet("+5V", {
  trackWidthMm: 0.6,
  allowedLayers: "OUTER"
});

diffPair("USB", {
  positive: "USB_DP",
  negative: "USB_DM",
  trackWidthMm: 0.2,
  gapMm: 0.15,
  maxSkewMm: 0.5
});

plane({
  net: "GND",
  layers: "BOTTOM"
});

runAll();

这个示例中,我们定义通用布线规则、为电源单独设置走线宽度、一对 USB 差分线,以及底层的地平面。

当前实现基于 KiCad Routing Tools。我写了一个集成模块,把 EasyEDA 的板卡数据传给布线器,执行布线流程,再把结果带回编辑器。

之后,Agent 可以检查剩余未布通的连接,并运行 EasyEDA 内置的 DRC。

此外还有检查点机制:应用改动前先保存文档状态。如果应用结果时出错,可以恢复到之前的版本。

当然,布线还不完美。复杂板子需要多次尝试或手动修复。

我目前正在开发自己的布线算法,主要目标是提升速度,并提高复杂板子的布线完成率。

项目示例

STM32 CAN 与 RS485

其中一个例子是带 CAN 和 RS-485 接口的 STM32 板卡。

这个项目里,我用 EasyEDA Copilot 同时处理原理图和 PCB。

5A USB-PD 触发器

另一个例子是支持最高 5 A 的 USB-PD 触发器。

它的原理图已完成,PCB 也已全部布通。

这张技术文章配图显示了USB PD Trigger 5A的电路图

其他项目

我也在其他原理图和 PCB 上试过 EasyEDA Copilot。

比如,我有一个便携式单通道示波器项目,目标带宽 200 MHz。目前只完成了原理图。

仓库里还包含 ESP32-C3 控制器、四层 MIMXRT1011 板以及 2 GHz 射频放大器的示例。

你可以在 GitHub 仓库中查看这些示例。

SPICE 仿真

除了 PCB 设计,EasyEDA Copilot 还能借助 ngspice 运行 SPICE 仿真。

为此,我整理了一个约含 4 万个元件的元件库。

比如,你可以让 Agent 设计一个触发器的输入级。它能挑选元件、计算参数、搭建电路并运行仿真。

这张图是关于10MHz全尺寸信号的技术图表,包含了信号的波形图和电路图

这样,在动手搭建实物之前,你就能先了解电路的表现。

当然,仿真并不能保证真实电路的表现完全一致。结果取决于元件模型和仿真条件。

目前,SPICE 功能仍通过 EasyEDA Copilot 原有的内置界面提供。项目的大部分开发工作现已转向 MCP。

下一步计划

我正在继续开发自己的 PCB 布线器。

我还计划加入 PCB 分析工具:信号完整性(SI)、电源完整性(PI)和热分析。

我希望 Agent 不仅能绘制原理图和 PCB,还能执行工程计算、发现问题并修复问题。

不过这些功能仍在开发中。

源代码

EasyEDA Copilot 是一个采用 MIT 许可证的开源项目。

GitHub:https://github.com/biosshot/easyeda-copilot

使用前,你需要 EasyEDA Pro Desktop、Node.js,以及 Claude Code 或 Codex 之类的 MCP 客户端。

仓库中提供了安装说明、文档和项目示例。

欢迎各位反馈,尤其是从事电子相关工作、尝试过设计流程自动化的朋友。

——

广告 广告
🧑‍💻

zhirenhun

一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。

ai schematic pcb electronics