eda-agent
salitronic/eda-agent加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
硬件工程师最怕听到的一句话是:「设计已经画完了,你只要改几个参数就行。」
因为在 Altium 里改一个看似简单的参数,可能牵动整个工程的位号、网络名、封装映射和原理图连线。这类工作通常需要工程师花上半天到几天,小心翼翼地打开对话框、勾选复选框、盯着脚本跑完。
eda-agent 的作者 George Saliba(马耳他岛一位有 20 年经验的独立电子设计工程师)把这个痛点写进了项目首页的 Demo:一句话规格——12V 转 3.3V、2A、基于 TI TPS62130——Claude Code 调起 eda-agent,自动去抓数据手册、按手册算出电感/电容/反馈分压参数、生成符号、画出原理图、并校验网表。全程你看着 Altium 里的图一笔一笔长出来。

图:从一句话规格自动生成的 12V→3.3V 降压原理图
eda-agent 是一个 MCP(Model Context Protocol)服务器,让任何 MCP 兼容的 AI 客户端直接驱动一个正在运行的 Altium Designer 会话。它的技术路线分四层:
第一层:DelphiScript 桥接。 Altium 内部跑一个常驻的 DelphiScript 轮询循环,Python 侧的 eda-agent 通过基于文件的 IPC 发送命令,Altium 执行后写回响应再回到轮询。关键设计是:这不是批处理工具。它不是打开工程、跑脚本、退出,而是一条你想用多久就用多久的活连接——你可以边聊天边让 AI 看当前打开的工程,问它「这个电阻连到哪些网络」,它当场读给你听。
第二层:GUI 兜底。 Altium 有大量能力根本没有脚本 API——execute_menu 报告成功但什么也没执行,DevExpress 菜单栏的 GetMenu 直接返回 0,Update From Libraries、Preferences 这些对话框彻底无 API。于是项目另起了一套 Win32 + MSAA/UIAutomation 的 UI 自动化通道,用真实键鼠事件驱动菜单和对话框。关键细节:这些路径不走桥接,所以即使一个模态对话框卡住了 Altium 的脚本引擎,UI 自动化依然能工作——而那正是最需要它的时候。
第三层:批量原语。 500 个工具如果一个一个调,AI 的每一轮推理都要等一次 IPC 往返。项目提供了 obj_batch_modify、obj_batch_create、pcb_place_tracks、sch_place_components、proj_get_connectivity_many 等一批批量接口,把 N 轮 LLM 交互 + N 次 IPC 压成 1 次,官方数据是墙钟时间节省 10 到 100 倍。design_review_snapshot 一次打包 8~12 项设计评审读取;design_lint_report 一次 IPC 跑 31 项审计检查。
第四层:设计代理层(Design Agent Surface)。 提供 design_get_discipline、design_snapshot_inventory、design_validate_plan、design_preview_plan、design_execute_plan、design_audit_schematic、design_validate 等工具,让 LLM 产出一份结构化的 DesignPlan JSON,先在 Altium 之外预览渲染图,确认无误再真正落到工程里。
一、datasheet-first 纪律。 每个涉及元件的响应里都带 _datasheet_guidance 区块,附上按厂商给的检索式;app_attach/app_ping 会捎带一条 _system_reminder 让每个接入的客户端在会话开始时就看到这条规则:禁止编造数据手册参数。这个设计直击 AI 做硬件设计最大的风险——它很乐意给你一个「看起来很合理」的电容耐压值。
二、Sch ↔ PCB 网表交叉核对。 crossref_net(net_name) 把同一网络的原理图引脚和 PCB 焊盘逐一对账,输出 in_sync 标志和 sch_only/pcb_only 差异。它能抓出的经典事故是:板子已经打样了,但原理图后来又改过,ECO 没合进去。
三、自动布局的算法路径。 pcb_plan_placement 从零算布局:力导向全局布局 + 硬推式合法化 + 每元件 0/90/180/270 朝向搜索,最小化引脚级半周长线长。没有原理图时,直接从 PCB 焊盘网络反推连接图。纯 Python 解析式计算,返回坐标让 AI 预览、调整、应用。
eda-agent 在 Altium 后端注册约 500 个工具(两个后端同时注册超过 580 个)。MCP 客户端普遍会限制工具数量,或者在启动时把所有 schema 序列化进模型上下文导致明显变慢。
项目给的解法是 EDA_AGENT_TOOLSET=minimal:只对外广播两个工具——tool_catalog(按名称、类别、成熟度查找操作并取 schema)和 tool_invoke(按名字执行)。其余工具照样注册、照样可达,只是需要通过这一对「先查后调」。
作者还特意强调不把工具合并成通用分发器:pcb(action=...) 这种写法会丢掉每个工具自己的名字、描述和 schema,而那恰恰是让模型找到正确操作、遵守每工具纪律的东西。这是个有取舍但判断正确的设计。
另外还有两个「问路」工具:tool_catalog 让你按名字找,tool_guide 让你用自然语言问「我现在想干这个该用哪个工具、什么做不到、为什么做不到」——后者会明确告诉你哪些事是真的不可能,而不是让你反复撞墙。
http://127.0.0.1:8766,MCP 服务自动拉起):偏设计评审。Review 标签页有数据手册/厂商型号/封装覆盖率仪表盘和可执行的问题队列(缺数据手册、缺 MPN、孤立网络…);Project、Components、Nets、Libraries、Plan 标签页给结构化视图,点任意元件或网络可下钻到详情抽屉,一键交叉探针到 Altium。亮/暗主题,SSE 实时推送。
图:eda-agent 的本地网页设计评审仪表盘
git clone https://github.com/salitronic/eda-agent
cd eda-agent
python -m pip install -e .
eda-agent install-scripts # 把 DelphiScript 工程放到 Altium 的脚本目录
claude mcp add altium eda-agent # 注册为 MCP 服务器
之后在 Altium 里做一次性的注册:DXP → Preferences → Scripting System → Global Projects → Install from file,选 Altium_API.PrjScr;然后 File → Run Script... → Dispatcher.pas → StartMCPServer。
项目还提供了 eda-agent health(离线检查:工作目录、指针文件、内置脚本)和 eda-agent doctor(完整预检:Altium 进程、脚本轮询是否响应、版本是否匹配、只读命令金丝雀测试),带 --json 输出。
后端可选:EDA_AGENT_BACKEND 启动时选一个,默认 altium(最完整);kicad 走 KiCad IPC API 和 kicad-cli;easyeda 通过导入 EasyEDA Pro 的浏览器扩展反向连接。
scripts/altium/lint.py),扫 Cardinal() 强制转换、畸形十六进制字面量、空 .Add('') 参数、注释里的花括号、定长数组做函数局部变量等解析器雷区,构建阶段就拦住坏部署。EDA_AGENT_UI_AUTOMATION=0 整体关闭。app_save_all 或 app_detach 时才落盘,干净文档永不重写。docs/RELEASE_VERIFICATION.md(约 13.9 万字符)来补这个缺口。eda-agent 代表的趋势是**「AI 驱动的 EDA」从「生成代码」走向「生成设计」**。
过去的 AI EDA 工具大多止步于「根据需求生成一份网表或一份原理图文件」——产物是静态的,要落地还得工程师手动搬进 EDA。eda-agent 走的是另一条路:让 AI 进入你已经在用的工具,在你的工程上、在你眼前干活。
这个选择带来的不只是效率,而是信任的形态变化。当 AI 改的是你正在做的板子,「备份先」就不再是客套话,而是使用前提。项目把这条护栏反复写在文档最显眼的位置,甚至提供了关闭高风险能力的开关——这种克制,在急着刷 star 的项目里反而是稀缺品质。
Apache-2.0 协议开源,README 末尾还挂着一句「如果你觉得这个项目有用,请作者喝杯咖啡」——一个工程师把自己的工作日工具开源出来,期待的不是商业化,是同行少受点罪。