AI接管KiCad图形界面:KiCAD MCP Server的11个GUI驱动工具如何工作
【免费下载链接】KiCAD-MCP-ServerKiCAD MCP is a Model Context Protocol (MCP) implementation that enables Large Language Models (LLMs) like Claude to directly interact with KiCAD for printed circuit board design.项目地址: https://gitcode.com/gh_mirrors/ki/KiCAD-MCP-Server
KiCAD MCP Server 不仅能让 AI 直接读写 KiCad 的设计文件,还提供了一组KiCad GUI 驱动工具,让大模型(LLM)像人手一样操作 KiCad 的图形界面——枚举菜单、点击按钮、驱动对话框、截取屏幕。这套 GUI 驱动能力由 11 个工具组成,基于本地套接字通信与可选的 AT-SPI 无障碍通道,让 AI 完成"看得见、点得着、验得了"的完整 GUI 自动化闭环。
为什么需要 GUI 驱动:AI 的两条 KiCad 通道
KiCAD MCP Server 操作 KiCad 有两条独立通道:
| 通道 | 职责 | 能力边界 |
|---|---|---|
| kipy 通道 | 设计内容 | 增删元件、布线、改原理图,但看不到界面 |
| gui-driver 通道 | 界面 chrome(外观) | 菜单、工具栏、对话框、插件按钮,不碰设计文件 |
这个分工在 docs/GUI_DRIVER_SPEC.md 中被明确定义:kipy = design content, gui-driver = chrome。也就是说,AI 无法通过 kipy 回答"Open kiHarness 按钮是否存在"这类问题,也无法替你点击菜单或操作对话框——这正是 GUI 驱动工具要解决的空白。
架构速览:一个助手插件 + 两条后端
整套系统由三部分构成:
AI (LLM) ──> MCP Server ──> 本地 TCP 套接字 (127.0.0.1:8770) ──> KiCad 内的助手插件 ──> wx UI 线程 │ └── 后端 B(可选):Linux AT-SPI 无障碍总线,零侵入- 助手插件:源码位于 gui_driver_plugin/plugins/driver.py 与 gui_driver_plugin/plugins/listener.py,元数据见 gui_driver_plugin/metadata.json。它作为 KiCad 外部插件运行,在本地端口监听 JSON 行协议,所有 wx 操作都通过
wx.CallAfter调度到 UI 线程执行(wx 非线程安全)。 - MCP 客户端:python/commands/gui_driver.py 是纯套接字客户端,负责把 11 个 MCP 工具的请求转发给助手。
- 安全设计:控制通道默认不监听,仅在设置
KICAD_GUI_DRIVER_ENABLE=1后开启;且每次会话生成一个随机令牌,写入权限 0600 的文件,每个请求必须携带该令牌——本地其他进程(包括浏览器标签页)无法驱动你的 KiCad。 - 优雅降级:助手不可达时,所有工具立即返回
success: false和清晰的安装指引,绝不崩溃或挂起。
11 个 GUI 驱动工具逐一拆解
工具注册入口在 src/tools/gui-driver.ts,完整清单也可查 docs/TOOL_INVENTORY.md。
🔍 基础"看"与"点"(后端 A:进程内 wx)
| 工具 | 作用 | 一句话理解 |
|---|---|---|
kicad_gui_tree | 枚举活动 GUI 的菜单/子菜单(名称+id)和 AUI 工具栏(id+tooltip) | 让 AI看见整个界面 |
kicad_gui_click | 按名称激活菜单项或工具栏按钮 | 让 AI点击,真实事件注入,无需像素坐标 |
kicad_gui_tree输出中,危险菜单(如 "Update PCB from Schematic…"、"Delete")会被加上⚠前缀并标记destructive: true——这是提示性标记,提醒 Agent 谨慎,但并不拦截。
🔌 插件与窗口
| 工具 | 作用 |
|---|---|
kicad_run_action_plugin | 按名称找到"Tools > External Plugins"子菜单项并触发(如Open kiHarness) |
kicad_gui_wait_for | 轮询等待标题包含指定子串的顶层窗口出现,解决"点击后要等对话框打开"的时序问题 |
kicad_gui_screenshot | 把目标窗口的屏幕区域截成 PNG 并返回路径,供 AI 做视觉验证 |
📋 三个"剧本"工具(Playbooks)
剧本是对通用工具的薄封装,把多步操作打包成一次调用,实现逻辑见 python/commands/gui_driver.py:
| 工具 | 自动执行的动作 |
|---|---|
kicad_pcb_snapshot | 触发 Zoom to Fit → 等待重绘 → 截图,一块完整的视觉版图快照 |
kicad_reload_and_open_plugin | 触发 Refresh Plugins → 打开指定外部插件入口,插件开发测试循环一步到位 |
kicad_run_drc | 打开 DRC 对话框 → 点击 Run DRC → 轮询并把违规列表刮成结构化数据,实现AI 自动跑设计规则检查 |
🐧 后端 B:Linux AT-SPI 零侵入通道
| 工具 | 作用 |
|---|---|
kicad_gui_tree_atspi | 从 Linux 无障碍总线读取 KiCad 的控件树(角色+名称),无需在 KiCad 内装任何代码 |
kicad_gui_click_atspi | 按可访问名称(可选角色过滤)激活控件 |
这是"黑盒"路径:完全站在 KiCad 外部,特别适合 CI 式的界面回归验证——项目团队正是靠它诊断过"插件按钮神秘消失"的 bug(docs/GUI_DRIVER_SPEC.md)。
📦 安装器
| 工具 | 作用 |
|---|---|
install_gui_driver | 把助手插件显式部署到用户 KiCad 的插件目录(opt-in 设计,不会偷偷安装) |
三步启用指南
- 部署助手:对 AI 说"运行
install_gui_driver",助手插件会被写入你所有 KiCad 版本的3rdparty/plugins目录; - 开启通道:在 KiCad 环境变量中设置
KICAD_GUI_DRIVER_ENABLE=1; - 重启生效:重启 KiCad,或在界面执行 Tools → External Plugins → Refresh Plugins。
之后 AI 就能直接说"帮我跑一次 DRC 并把违规列出来"、"截一张 PCB 全览图看看布局"了。
一个典型工作流:AI 自查布线
- AI 调用
kicad_run_drc—— 自动打开对话框、点击运行、刮取结果; - 若违规数为 0,AI 再调用
kicad_pcb_snapshot生成一张全览截图做最终确认; - 若失败,AI 调用
kicad_gui_tree查看当前可用菜单,用kicad_gui_click补做修复动作。
整个过程不写一行脚本、不需要人工点鼠标——GUI 成了 AI 的"眼睛和手"。🎯
小结
KiCAD MCP Server 的 GUI 驱动把"AI 接管 KiCad"从数据层推进到了界面层:11 个工具分工清晰(2 个看/点 + 3 个辅助 + 3 个剧本 + 2 个 AT-SPI + 1 个安装器),以本地套接字 + 会话令牌保证安全,以优雅降级保证健壮。设计细节可深入 docs/GUI_DRIVER_SPEC.md,工具全表见 docs/TOOL_INVENTORY.md。
【免费下载链接】KiCAD-MCP-ServerKiCAD MCP is a Model Context Protocol (MCP) implementation that enables Large Language Models (LLMs) like Claude to directly interact with KiCAD for printed circuit board design.项目地址: https://gitcode.com/gh_mirrors/ki/KiCAD-MCP-Server
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考