easyeda sch 域的当前能力清单 + 待支持路线。定位:让 AI agent(或人)可以完全通过
typed CLI 操作嘉立创EDA专业版的原理图——每个动作可观测、可校验;写入不具备事务回滚。
设计、布局、检查和修复统一遵守 数据驱动架构基准。 下面的存量命令是能力目录,不是要求逐个执行的主流程;fix 建议须回写源数据并重新求解, 不能照抄现场挪件后就称算法闭环通过。
动作目录的机器可读真值是
make actions/easyeda actions;本文是人读的功能地图, 按「AI 操作原理图需要什么」组织。设计流程(何时用哪个命令)见.agents/skills/easyeda-agent/references/design-flow.mdS0–S6。
| 能力 | 命令 | 说明 |
|---|---|---|
| 库搜索 | sch place 配套(schematic.library.search) |
立创/LCSC 库自由搜索,返回 libraryUuid+deviceUuid |
| 放置真实器件 | sch place |
按 uuid 放置,--designator 原子分配位号(免 place→list→modify 往返) |
| 换型号 | sch replace |
换库器件,pinDiff 非空提示需重接线 |
| 符号/封装重绑 | sch rebind-symbol / rebind-footprint |
五步 rebind(modify→delete→create→restore) |
| C 号解析 | sch resolve-lcsc |
已放置器件 → 真实 LCSC C 号(确定性,绝不模糊兜底);dry-run 默认 |
| 属性修改 | sch modify |
--x/--y/--rotation/--designator 快捷 flag,复杂属性走 --patch(两来源可并用,flag 覆盖同名键);merge 语义:只 patch 顶层字段(如 supplierId)时自动保留全部 otherProperty 并回报 propertiesPreserved(#175) |
| 位号修复 | sch designators allocate / plan / verify |
全工程 IR 按官方库前缀分配非标准位号;保留已有数字编号,功能名存 role。生成同页 modify 队列,文件 SHA 与现场前后数据守卫检查 ID、引脚、网、位置、导线并同步组成员;经 sch apply 执行 |
| 删除 | sch prim-delete / sch clear |
唯一删除入口:按 id 删任意图元(器件、文本、图形、导线)/ 整页清空(dry-run 可数)。旧 sch delete(仅器件)已移除 |
| 能力 | 命令 | 说明 |
|---|---|---|
| 画线 | sch wire |
折线;netflag 必须经真 wire 连(重叠坐标不算连接,平台规则) |
| 引脚出线+标志 | sch connect |
pin → 短 stub → netflag/netport,--pin U1:5 或 --x/--y 二选一定位,显式方向/offset;自动补偿平台「旋转存储取负」的坑 |
| 智能连接 | sch autoconnect |
打分器自选方向/offset:碰撞/穿件/图签/fanout 通道全几何成本,含 netport 竖排折叠惩罚(密集引脚列不再把标签翻竖);幂等(已连跳过),--replace 换网 |
| 断开 | sch disconnect |
connect 的逆操作:stub+flag 成对删(免孤儿桩) |
| NC 标记 | sch no-connect |
仅落实源设计中明确不用的物理脚;不能将 floating-pin 清单自动改为 NC 来消警 |
| 网表 | sch netlist / sch read |
导出网表 / 一次调用语义快照(器件+网络+检查) |
| 能力 | 命令 | 说明 |
|---|---|---|
| 本地设计对账 | sch design-diff expected.json actual.json --exit-code |
按稳定ID核对器件、引脚、网、几何;两份完整compose计划还比较导线、框和标题,报告覆盖范围及未验证项 |
| 显式核心/外围区内求解 | sch layout-plan --zones --from ... --out ... |
连接/几何、zone 所有权、attachments 与策略 → 完整区内候选;任一区失败不输出完整结果 |
| 位号实测几何导出 | sch designator-geometry --project ... --doc ... [--out ...] |
只读当前页逐 part 读取唯一可见 Designator 的官方 bbox、parent、值及来源;缺失、重复、隐藏或无效数据即失败,可按 parent 写入源测量 textBboxes |
| 核心移动/单脚标签修复 | sch layout-edit --source ... --page ... --snapshot ... (--move-core ID --to X,Y | --repair-pin ID:PIN) --out ... [--playbook ...] |
从保留源与新鲜快照生成目标;不直接写页面。核心固定目标后可重算本区,单脚修复生成作用域 playbook |
| 完整区域合页 | sch layout-sheet-plan --from ... --out ... |
只选择/平移合法完整候选,统一 spacing、Z 型流和同页约束,不拆外围 |
| 固定数据渲染 | sch layout-render --from ... --out ... |
校验并转译同一目标,不补线、不改坐标;不证明现场已 Apply |
| 已选页固定转换 | sch compose --layout-page page.json --from ... --before ... --playbook ... |
保持已确认的区内/整页几何及 spacing;本页源 titleBlock 文本经 typed 命令写入并回读,再过 strict gate |
| 通用求解诊断 | sch layout-plan --from input.json --out layout.json --report report.json [--zones] |
源哈希、算法版本、阶段及结构化冲突;失败非零、不输出半计划,有限搜索失败不称全局无解 |
| 已有实例无损重排(dev.6 开发验证) | sch compose --replace --preserve-instances --layout-page page.json --from ... --before ... --playbook ... |
保留原 primitiveId/uniqueId/参数;只重算绘制内容,源身份/属性与末态均检查;开发能力不等于现场验收通过 |
| Lib 内部计算 | sch lib-layout --from ... --out ... |
既定电路图与实测姿态→局部位置、短线和电源地;有界搜索,输出compose输入 |
| 单页 Lib 组合 | sch compose --from ... --out ... --before ... --playbook ... [--replace] |
保留原位号;完整IR与模块几何→端子直线错长、紧凑标题、Z字紧凑框排布、固定10 raw边距(实测sheetBorder可核验内框净距);实际引脚/NC/bbox/导线路径回读。跨页位号唯一才许重建;范围 |
| 固定 LDO 数据规划 | sch power-layout --from ... --out ... --playbook ... |
实测几何→器件/引脚/线/电源符号/模块框;标题择上下空档压缩包络后,默认左上 Z 字起排、同行顶齐、每框保持自身高度;输入可带实测 titleMetrics;--frames-only 只验证并补框 |
| 模块呈现转换 | sch frame apply/check --from ... |
JSON→粉色虚线框+0.2 inch 标题;按页面和模块记录 ID,回读样式/实际文字边界;可选 titleLayout 核验预测包络和障碍物净距,重复 Apply 不增图元 |
| 模块感知自动布局 | sch autolayout |
双引擎:template(spec 驱动,核心放分区中心+外围环绕,确定性,布线前用)/ official(平台 @beta 兜底,破坏性,--rewire 网表重建) |
| 空隙打包 | sch autoplace-free |
无分区场景往空白处塞件 |
| 对齐/等距 | sch align / sch distribute |
按渲染 bbox 对齐(left/right/top/…)/ 单轴等距摊开;默认 dry-run;选集部分覆盖持久组时硬拒绝(--break-group 显式放行) |
| 刚体平移 | sch group-move |
器件+桩线+flag 一起搬:--ids(无状态,每次传全 id)或 --group <id>(持久组,成员桩线+远端 flag 自动展开,触碰非成员脚的线树留在原地并报告) |
| 持久化编组 | sch group create/list/add/remove/ungroup |
virtual group(平台墙真机坐实:EasyEDA Pro 3.2.121 的 eda.* 无编组 API,组件实例 70 个方法/属性零 group/parent 字段——UI 原生组对扩展完全不可见;后经用户 UI 实建 Group1 复核:44 图元全状态前后差分 0、selection 三种读法含私有属性零组字段,与 virtual group 并存不冲突)。create --if-absent 仅在名称、成员及来源均相同才保持不变。按 documentUuid 存 workflow state(同 zones claims 模式);成员存位号(netlist key,页内稳定;primitiveId 在 wire 重建/reload 时会变),move 时解析当前 id;同一位号只属一个组(入组查重报所在组);组空自动删;list 标 stale 成员;autolayout/autoplace-free 检测到组时警告(v1 不保组内相对几何) |
| 布局硬门 | sch layout-lint |
真实渲染 bbox 查重叠(ERROR 非零退出)/紧间距/off-grid/分区违规 |
| 组内布局计算 | sch group tidy |
三层体系 Group 层:pattern auto/power-updown/signal-row——双电源旗电容自动竖放+上电下地+文字朝外(真机校准 rotation 表);实测 pin 二义消解、stale 双读、未建模第三连接拒绝、连带断开即错、自检红即逐步回滚 |
| 功能区刚移 | sch zone move |
Zone 层:区内组+散件+桩+旗+note 整体平移;全区一份展开(区内直连线随行,跨区线才留守);出界/压图签硬拒、压他区警告;分区框自动重画(重画前指纹 settle) |
| 组间叠加布局 | sch zone tidy |
Zone 层:区内组当刚体排布(锚组+上下堆叠,hGap 默认 117 可调);装不下给最小尺寸诊断不硬塞;双认领图元差集(正/回滚对称);自检红逆序回滚 |
| 布局质量分 | sch layout-score |
五维诊断与归因;proximity 不等于外围所有权硬门,缺测不算通过。fix 提示用于修改源约束,不照抄现场试摆;实际覆盖见 Skill |
| 能力 | 命令 | 说明 |
|---|---|---|
| 分页管理 | sch pages / page-new / page-rename / page-delete |
页集合要 reconcile 到模块计划(改名成功能名/补页/删多余空页) |
| 分区认领 | sch zones set/status/clear |
模块→分区格的持久化认领,layout-lint 消费出 zone-violation |
| 数据驱动分区规划 | sch zone-plan |
一个虚拟组 / zone 认领 = 一个分区(与 zone-arrange 的区一一对应,同一把尺;网格带合并那条路已删),框按成员真实 bbox 撑出来;校验六项(越界/重叠/压图签/模块出区/标签碰撞/贴纸边)全 0 才许画;抬升与校验共用同一安全余量常量(治「按 A 抬按 B 校」假绿) |
| 画分区框 | sch zone-draw |
虚线框+区名(--mode partition 整纸版式,框贴合模块内容不拉满页,给图签留缺口) |
| 图纸/图签 | sch sheet-geometry / titleblock / titleblock-get |
默认查询比例估算;sheet-geometry --from-svg <全页.svg> 离线解析精确内框/图签、绑定源 SHA-256 / 明细表读写 |
| 能力 | 命令 | 说明 |
|---|---|---|
| 逐项设计检查 | sch check |
平台 DRC 只给聚合数,check 从图元重建逐项 finding:悬空脚/几何-网表错配/导线交叉/压引脚/零长线/悬空线/重合标志/压图签/标志互压/多器件页未分区(missing-partition,铁律#15 机械兜底;证人是画布:认页上的区标题文本——与 zone-draw 生成标题同一个函数——绘制记账仍读,两者取大,所以换机器/清 state/--project 名字不一致导致记账丢失时不再恒报;口径未放宽,真没画框照报)/netport 竖排折叠(folded-net-label) |
| 桥接检测 | sch bridge-check |
树粒度:共线合并短路 BRIDGE / 孤儿桩 ORPHAN(单线视角看不全的盲区) |
| 官方 DRC | sch drc |
SDK 门(可能仅聚合) |
| S5 一条龙门 | sch gate |
固定顺序 layout-lint→check→bridge-check→drc 出一张报告;--strict 全部 WARN 也拦;verdict=blocked=检查器没跑成≠板子有问题 |
| 能力 | 命令 | 说明 |
|---|---|---|
| 浏览/查找 | easyeda blocks ls/show/search |
离线,20 块/11 类目;块携带 internal_nets/ports/parts/pcb_layout/silk 多维知识 |
| 一键实例化 | sch block-apply |
放件+内部连线+端口绑定+落位避让+失败补偿回滚;带 schematic_layout 模板的块按人审过的几何落。--spec <s0.json> 落块后自动回填真实位号;--max-attempts N(默认 3)在同一失败签名重复 N 次时动手之前停手,组比整页还大时报 page-too-small(停手问用户,不自动分页) |
| 模板反推 | sch extract-layout |
真板摆好的实例 → 反向导出块模板 JSON(「摆好一次→固化」数据管线) |
| 能力 | 命令 | 说明 |
|---|---|---|
| 非电气参考图片 | sch image create/list/modify / sch prim-delete --ids |
PNG/JPEG/SVG 嵌入原理图,不产生引脚或网络;raw 单位、左上角 anchor,尺寸可按源比例解析;使用与历史验证边界 |
| 页面导图 | sch export-image |
SVG/PNG/PDF,选区或整页,不依赖前台视口(残留进度条已在导出后主动销毁) |
| BOM/网表 | sch export(bom/netlist) |
BOM 自动补 LCSC C 号(bom-enrich.py) |
同族命令的边界与参数差异——每条都来自 agent 真实误用记录,读这张表可以一次选对:
| 你想做 | 用这个 | 别用/别混 | 参数注意 |
|---|---|---|---|
| 给引脚接网络标志(常规) | sch autoconnect --pin R1:1 --kind netport --net EN |
— | --pin 是 位号:脚号 一参式 |
| 给引脚接标志(指定方向) | sch connect --pin U1:5 --direction right |
也可 --x <px> --y <py>(裸坐标/无位号场景) |
--pin 与 --x/--y 互斥二选一 |
| 断开引脚的 stub+flag | sch disconnect --pin C4:1 |
⚠ 不是 --designator C4 --pin 1 两参式 |
也可 --flag-id/--wire-id |
| 挪器件/改属性 | sch modify --id <pid> --x 100 --y 200 |
复杂属性(customAttributes 等)走 --patch '{json}' |
flag 与 patch 可并用,flag 覆盖同名键 |
| 删图元(任意类型) | sch prim-delete --ids id1,id2 |
旧 sch delete(仅器件)已移除 |
--ids 是 CSV(JSON 数组已不再接受) |
| 清整页 | sch clear |
— | 残留或枚举警告非零退出;--dry-run --expect-empty 只读验证所有非图纸图元为空 |
| 列页/切页 | sch pages / sch open |
doc ls/doc switch 是跨域老入口,功能重叠 |
sch 域内优先用 sch 命令 |
| 出图给人看 | sch export-image |
snapshot 是视口截图(需前台、会 stale) |
export 不依赖前台 |
| 读电路状态 | sch read(=list+nets+check 聚合) |
只要器件清单用 list;合页快照加 --include-bbox --include-pins --include-wires;只要检查用 check |
read 最贵但一次拿全 |
| 分区框(整纸版式) | zones set → zone-plan(校验)→ zone-draw --mode partition |
⚠ 固定九宫格 claim 对宽模组会误报 zone-violation——partition 画完后 zones clear |
三段链,顺序固定 |
| 整组挪动(免收集 id) | sch group-move --group g1(先 sch group create --members …) |
--ids 是无状态老路:每次手工传全部 primitiveId |
两 flag 互斥;--group 存位号、move 时解析 id,并自动带上成员桩线+远端 flag。移动目的地保持净空:把组临时压到其他电路上再搬走(如 ±100 往返测试)会造成"树终止于异脚"的接触歧义(与真连线几何不可分),个别桩可能按真连线保留原地并报 note——真实用途(挪到空白区)无此问题,压他人电路本身就是 layout-lint 会拦的违规布局 |
| 建裸网络标志 | 尽量别用 sch netflag |
裸 flag 不经 wire = 假连接(铁律 9) | 用 connect/autoconnect |
参数风格已收敛:pin 定位统一 --pin 位号:脚号(connect/autoconnect/disconnect 同式,connect 另留
--x/--y 裸坐标能力)、--ids 统一 CSV、modify 快捷 flag 对齐 place。旧的 JSON 数组 --ids 与
sch delete 命令已移除(不留兼容)。
现行架构是区内/纸张两层数据计算,见 架构。
存量 group/zone/sheet tidy 和 zone move 仍是维护工具,不构成新设计的布局主链。
维护时明确完整成员及附着导线/标志,旋转后重新读取真实引脚,移动目标预留净空;
回读不稳定时停止依赖旧坐标。局部零重叠不能证明外围归属、真实直连或整页正确,
失败也不意味着宿主提供事务回滚。移动安全经验见 ADR-0004。
持久化编组(原路线 §1)已落地,见上文「布局与整理」表的
sch group行。 存储在 workflow state 的groupsByPage(按 documentUuid),结构刻意不 sch 专名化——PCB 侧同需求(#173)落地时同一存储直接挂 PCB 文档的 uuid。 v1 范围:group-move 自动展开附着物 + align/distribute 刚体保护;autolayout / autoplace-free 只警告不保组内几何(组感知重排是后续项)。
sch layout-score 已有诊断能力,不等于完整自动精修。外围所有权/直连、位号与框的完整
原始几何覆盖,以及源输入到现场的溯源须分别举证;未覆盖必检项不能靠截图补签。
型号/参数等非位号属性文字排除页面碰撞和框包络,位号保留。
通用 layout-plan 已沿连接计算核心/外围位置;zone 所有权和共享外围归属仍需源输入
明确声明,不把局部网络启发式当作自动理解整个功能电路。旧 block fallback 不定义新主链。
当前 compose/frame 已消费器件、导线、标记、标题占位,不是只算器件 bbox。 必检范围与现场测量限制以 Skill 检查覆盖 为准;不能以预测包络代替真实回读。
modify 挪件后立即 zone-draw 会按旧 bbox 画框(隔几个命令重画就对)。 需要在 zone-draw 取数前强制 fresh 读(schematic 侧的 stale 时序与 PCB reload 同族)。
connect/autoconnect 只有端点挂 netflag/netport 一种表达;同模块内「实线直连 + 线上标网名」 的行业画法(如上拉电阻串进引线)需要 netlabel 创建 API 封装。
本文与 docs/FEATURES.md(全域 action 清单+roadmap)互补:那边是动作粒度,
这边是「AI 操作原理图」的功能域视角。改动原理图相关命令后请同步本文。
1.4 不再提供独立 sch note 命令,也不以 Notes 的存在或归属阻塞检查。模块框标题由呈现数据转换生成,粉色字高 0.2 inch(20单位),方框使用虚线。标题放在上方或下方的合法空档,不固定保留顶部标题带。数据字段与转换验收见模块框与标题。普通文字读取仍使用 sch text-list。