它是什么
easyeda-agent 把嘉立创EDA专业版(EasyEDA Pro)变成 AI agent 真能操作的对象。它不再把官方 eda.* 扩展 API 里的原始 JavaScript 交给模型,而是暴露一套 typed action 目录——放件、连线、组合图纸、自动布局与布线、跑 DRC、导出 BOM 与制造文件——并且让每一步都可观测、可校验、可审计。
这是一个多形态产品。用 dsh plugin add 装进 harness 的 DSH bundle 只是面向 harness 的薄层。承重的部分都在它之外:Go CLI/daemon、EasyEDA 连接器 .eext、agent Skill、以及 stdio MCP 适配器。理解这个切分是读本条目的重点。
架构:四个协作部件
Skill / MCP / 人类
│
▼
easyeda CLI ──typed action──► Go daemon(127.0.0.1:60832)
│ WebSocket
▼
EasyEDA 连接器(.eext,跑在编辑器内)
│ 官方 eda.* API
▼
EasyEDA Pro 画布
- Go CLI/daemon(
easyeda)掌管协议、会话状态、产物、审计日志与校验。daemon 固定监听 单端口60832(不溢出到相邻端口;占着该端口的陈旧 easyeda daemon 会被自动接管)。窗口级动作在编辑器未连上时返回NO_CONNECTOR。 - 连接器
.eext跑在 EasyEDA 内,刻意做薄:握手、重连,再把 typed action 派发到官方eda.*。插件市场展示名现为「EDA Agent Connector」,包名与 uuid 不变。debug.exec_js仍保留为任务范围内的临时逃生门——刻意不通过 MCP 暴露。 - Skill(
skills/easyeda-agent)描述专家工作流与护栏:先读后写、连通性 JSON 为真源、四段式门禁、版本锁定纪律。 - stdio MCP(
mcp/src/server.mjs)把同一条 CLI/daemon 路径包成 11 个工具——easyeda_health、easyeda_actions、easyeda_blocks、easyeda_workflow,再加每个安全 domain 一件(schematic、pcb、board、document、artifact、project、system)。它不绕过 typed action、审计或 workflow gate。进程启动时会先跑easyeda actions加载目录;CLI 缺失则直接退出。
电路模块库(旗舰能力)
社区共建、带署名的外设子电路——CH340 USB 串口、ESP32 自动下载、按键去抖、USB-hub、buck……——沉淀为已校验、可复用的 block。你拷贝拓扑,只重绑边界网络;引脚按功能名引用,零重新编号。每个 block 作者/贡献者齐全,且必须通过 place → wire → check → DRC=0 才入库。库嵌在 CLI 里:easyeda blocks ls/show/search 离线可用,不依赖 daemon 或编辑器窗口。
DSH bundle 实际装了什么
根 package.json 名为 easyeda-agent-dsh(private: true,版本 1.5.0),只声明 "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }。那份 patch 恰好贡献两行:
easyeda-mcp—— in-box 的@deepseek-ai/dsh-mcp-client实例,stdio 指向包内mcp/src/server.mjs。EASYEDA_BIN默认取 PATH 上的easyeda,可用环境变量覆盖。dsh-mcp-client与dsh-skill-filesystem都走 DSH 的 fallback 链接解析;不要再去pnpm add它们——registry 上的旧版会遮蔽 in-box 副本。easyeda-skill-fs—— 独立的dsh-skill-filesystem实例(providerName: easyeda、includeDefaultRoots: false),只扫包内skills/easyeda-agent,注册进 global skill 层。
也就是说,bundle 本身不装 Go 二进制、不装 daemon、不装 EasyEDA 连接器。装进 dsh 之后你得到的是:会去调 easyeda 的 MCP 工具,加上 Skill。没有 CLI(以及做在线编辑所需的 daemon + 连接器 + 开了「允许外部交互」的 EasyEDA Pro),MCP 进程在启动阶段就因加载不了 action 目录而退出。
.npmignore 保证 GitHub 安装包只保留 package.json、cordis.patch.yml、mcp/、skills/ 与 README/LICENSE——Go 源码、examples、training 数据都被剥掉。没有安装期脚本(preinstall/install/postinstall/prepare),根包也没有 dependencies。
运行要求
- 整套产品要另外装。 文档里的首次路径是一条命令装 CLI + Skill,再从 GitHub Release 装与 CLI 严格同版的连接器
.eext(或从立创官方插件市场装,但市场版本可能滞后),然后在 EasyEDA Pro 设置里开启「允许外部交互」,再easyeda daemon start。 - 三要素同版。 CLI、Skill、连接器必须落在同一发布线上;连接器落后时
easyeda daemon health会报connectorVersionOk: false。Skill 在动手前强制会话门禁(easyeda update --check --exit-code)。 - Node
>=20.17.0(根包与 MCP 的engines)。MCP 适配器还依赖@modelcontextprotocol/sdk(mcp/package.json里钉1.30.0);DSH 已验证的安装路径从 harness 环境解析它——独立给 Codex 注册时 README 要求先npm --prefix mcp ci --ignore-scripts。 - 没有
dshTarget。package.json、bundle patch 与 DSH 集成文档都没有写出受支持的 DSH 版本,因此本条目是 L2,不写dshTarget。 - 不在 npm 上。
easyeda-agent-dsh与easyeda-agent在 registry 上都是 404;只能github:安装(可选#<tag>锁定 release)。
什么东西会离开这台机器
- 运行时自动化是本地的。 typed action 走本机 WebSocket 到
127.0.0.1:60832;连接器再在编辑器内调用官方eda.*。动作路径没有文档记载的远程控制面。 - 网络主要用于获取与少数旁路。 安装脚本 curl GitHub Releases(并为解析 latest 调一次
api.github.com——匿名每 IP 每小时 60 次,公司出口/CI 容易撞满;可export GITHUB_TOKEN或EASYEDA_VERSION=<tag>锁版绕过)。Skill 写明在线库查询与更新需要网络;BOM 会到 LCSC 补 C 号。包内辅助脚本会用到 Python 3。 - DSH bundle 没有声明遥测字段。 本地 agent 会话在
easyeda调用之外还做了什么,归 harness 权限模型管,不是本插件的承诺。
已知限制
- 平台墙是真实且有文档的。 没有迷宫级自动布线(只有短、清晰的启发式布线;完整布线走外部 Freerouting + DSN 往返);没有交互式推挤 / 实时等长调 UX(无
eda.*API);受控阻抗 Z0 被封死(stackup 介电常数/厚度读不到);没有程序化 undo(回滚靠检查点 + 逆操作);对 API 添加的元件,增量import_changes是 no-op。 sch compose不是电路综合器。 它把已设计好的 Lib 几何按 Z 序摆到一张图上;不会替你推断任意周边电路,也不自动分页。- 1.5 没有重跑完整的四层 ESP32 现场验收。 离线测试和局部原理图验证不等于整板通过;EasyEDA 3.2.186 的一次现场会话里,原理图导图 API 对新旧符号均返回空文件,根因仍未确定。
- 许可证是 MIT,外加 Apache-2.0 例外。 GitHub API 报
NOASSERTION,是因为LICENSE在 MIT 之外还有第三方声明:extension/src/beautify/下四个文件移植自 Easy_EDA_PCB_Beautify,保持 Apache-2.0,署名与改动列表在NOTICE。package.json写的是MIT。两证兼容;再分发连接器 bundle 必须带上 NOTICE 与 Apache-2.0 文本。 security: unverified—— 本条目没有对该包做过沙箱验证。Stars 不等于维护:445 stars、60 forks、最近 push 2026-09-12,原生 Cordis 插件形态仍在路线图上。
什么时候用它、什么时候不要用
你在 EasyEDA Pro 里画板,并且希望 agent 从连通性数据和 typed action 干活——而不是看截图猜、也不是直接甩原始 JS——就用它。电路模块库是日常最锋利的那一刀:已验证的外设被拷贝重绑,而不是每次重画。CLI + 连接器已经就位之后,DSH bundle 才是对的入口——它只负责把 skill 与 MCP 接进 harness。
别把 DSH bundle 当成自包含插件来装。没有 Go CLI、daemon、连接器和活的 EasyEDA Pro 窗口(编辑器级动作需要),MCP 工具没有可调用的对象。也别指望 daemon 给出迷宫级布线、交互推叠或受控阻抗计算——那些是平台墙,不是开关。若你的威胁模型禁止本地编辑器自动化或禁止从 GitHub 装二进制,无论 harness 怎么包装,这套栈都不合适。
FAQ
DSH 插件会装完整套 easyeda-agent 吗?
不会。bundle 只装两行 DSH 配置——一个指向打包 stdio server 的 MCP client,外加只扫 skills/easyeda-agent 的隔离 skill-filesystem。Go CLI/daemon、EasyEDA 连接器 .eext 和 EasyEDA Pro 本体是分开的、要锁同版的安装。缺了它们,MCP 进程在跑不动 easyeda actions 时就会退出。
为什么 GitHub 报许可证是 NOASSERTION?
因为仓库整体是 MIT,但对 extension/src/beautify/ 下四个文件(移植自 Easy_EDA_PCB_Beautify)有明确的 Apache-2.0 例外。package.json 声明 MIT;LICENSE 与 NOTICE 写清了例外。若再分发条款对你重要,请读这两个文件,而不是那个字段。
电路模块库能离开编辑器单独用吗?
能。easyeda blocks ls/show/search 对嵌入库离线运行——不需要 daemon,也不需要 EasyEDA 窗口。把 block 真正落进在线原理图,仍需要整套栈。
这个条目面向哪个 DSH 版本?
没有声明。docs/dsh-integration.md 记录了已验证的 bundle 安装(模型能看到 skill + 11 个 MCP 工具),但没写 harness 版本号,所以没有 dshTarget,verification 为 L2。
正常编辑时有什么会离开这台机器?
动作路径是本地的:CLI → daemon 127.0.0.1:60832 → 连接器 → 官方 eda.*。网络出现在安装/升级(GitHub Releases)、在线器件/库查询、以及 LCSC BOM 补号。Skill 文档记载了这些联网需要;DSH bundle 没有遥测字段。
能把安装钉在某个 release tag 上吗?
可以。文档写法是 dsh plugin --profile web add "github:zhoushoujianwork/easyeda-agent#<tag>"。请让 CLI、Skill、连接器落在同一条发布线上;只升 DSH bundle 会让连接器落后,直到你重导同版 .eext 并重启 EasyEDA。