boardwise-draw · git:20261105.924a180 · 2026-11-05 · sha256 aaeed10a8a4e7306
boardwise-draw git:20261105.924a180A
Immutable. This exact content never changes and is served at /api/v1/blob/aaeed10a8a4e7306.
--- name: boardwise-draw description: boardwise 绘制线专项 SOP:原理图绘制(PresentationSpec、功能分岛/合岛、布局布线、旗标与文字)的硬裁决规则——语义归属优先、成对支路一致性、机器闸与视觉闸互不替代、修复优先级与 agent/解释器责任边界。当用户或任务要求画原理图、写/改 PresentationSpec、决定功能岛划分、跑 draw compile/plan/apply/lint、把候选画回编辑器,或审查一张「机器全绿但读起来不像工程师画的」图时加载。它是 boardwise 总 SOP 的专项扩展,通用真机纪律与交付三关仍以 boardwise 为准。 whenToUse: 提到原理图绘制、画图/落图、PresentationSpec、功能岛/分岛/合岛、布局布线、旗标/文字避让、draw compile / draw plan / draw apply / draw lint、画回编辑器、视觉自审,或机器闸全过但图读不懂时 --- # boardwise-draw(绘制线专项 SOP) > **身份**:本文件是 boardwise 总 SOP 的**绘制线专项扩展**,不是第二套通用 SOP。 > R1–R3、真机白名单与禁地、交付三关、git 与删除纪律、子代理纪律**全部继承**总 SOP: > `.kimi-code/skills/boardwise/SKILL.md`(`.agents/skills/boardwise/SKILL.md` 是它的 > 逐字节同步副本)。两处冲突时,通用纪律以总 SOP 为准,绘制裁决以本文件为准。 > **命令手册**:`docs/draw.md`;**样式规格**:`docs/schematic-style-spec.md` > (S-01…S-21,视觉自审逐条对照);**三种结果记账**(`automatic` / `reference-replay` / > `agent-adjusted`)的原则见 `tasks/543_semantic_layout.md` §1,本文不复述。 > **派单入口**:`tasks/draw-line.md`。本文只写裁决规则,不复制命令手册与样式表。 ## 0. 分工与责任边界(先划清,再谈图) - **Agent 决定语义**:功能分岛/合岛、核心器件(`core`)、主信号流与阅读方向,写进 PresentationSpec。 - **解释器只消费意图**:按规格做确定性布局布线、文字/旗标避让、机器校验; **不自动语义分岛**,也不猜没有写出来的几何关系。 - 现有合同里能表达的关系按 `docs/draw.md` 当前口径使用(`modules[].parts` / `role` / `core` / `branchOrder` / `modules[].attach`、`flow`、`islands`、`serviceLayout` 等); **没实现的约束不许说成「已有」**——缺能力就派单补通用约束。 - **责任**:Agent 对错误的语义输入和视觉放行负责,不能把锅推给解释器;解释器对未表达的 约束不能猜语义,Agent 必须补显式规格,或派单修解释器的通用能力。 - 一句话:**图读不懂,先查语义与约束,再查算法。** ## 1. 语义归属优先 功能岛按**电路功能与阅读关系**划分。**不许为了绕开编译器位姿、碰撞、布线或页框困难, 拆散本应属于同一功能组的器件。** 局部算法受阻是算法问题,不是改变语义分岛的理由; 该修的是解释器能力或显式约束,不是把电路拆成算法好摆的样子。 ## 2. 拆岛/合岛前必须写清三件事 提交任何分岛/合岛改动前,规格或候选说明里必须有一句: 1. **功能理由**:这组器件在电路上是什么功能、为什么同属一组; 2. **空间/信号关系**:与宿主岛的位置关系,以及跨岛的信号边界; 3. **预期图形结果**:读者应该看到什么(成对并列、同一行、旗标分布、桩长节距)。 只写「这样编译能过 / 某个约束能绕开 / 这样排得下」= **禁止提交该规格**。 附属支路(上下拉、去耦、钳位、检测脚)优先留在宿主岛;必须分开时要有显式 `attach` 或等价关系,**不许留成无约束孤岛**。 ## 3. 成对与同类支路默认一致 成对/同类支路(CC1/CC2、上下拉、对称滤波、双通道、同一引脚的重复去耦等)默认: - 同向、对齐、等节距/等桩长; - 标签阅读方向一致,标签贴着自己的引脚; - GND/电源处理一致(同侧、同型旗标)。 - 信号型成对二端支路(例如 CC 下拉)在宿主连接为水平时默认横向,shared pin 朝宿主; 供电去耦保持其功能支路的阅读方向,不得借“统一”把所有二端件一律旋转。 - 同一器件上的一对 D+/D− 必须等桩长;A/B 镜像组可以采用不同扇出深度,但不得让 对内一长一短。避让应先成对联合选档,再分别验碰撞,不得逐脚选完才接受偶然差异。 需要不对称时,必须有电路或可读性理由并写进规格;**不允许由局部搜索偶然决定**。 边界:这里讲的是**原理图阅读一致性**,不是 PCB 差分等长/阻抗规则,不要错误推广。 ## 4. 禁止结构性问题的局部化妆 竖排文字、无意义拐线、旗标绕合、成对支路姿态不一致——**先回溯分岛、模块关系、 支路约束**: - 不许只旋转文字、拉长/缩短桩、挪坐标把根因盖住; - agent 手动微调是合法兜底,但必须走受守卫接口(plan/apply、ATTR 位姿/可见性), 记 `agent-adjusted`,保存调整前后证据,并重跑三关;不能冒称 `automatic`,也不能 用它关闭解释器的能力缺口; - 一次成功的微调不构成通用能力:同类问题第二次出现就派单补通用约束。 ## 5. 机器闸与视觉闸不可互相替代 - lint/DRC/逐脚连通全过,只证明相应的机器条件,**不证明「像一个工程师画的」**。 - 视觉检查必须逐岛回答四问:① 这是什么功能、归属哪个岛;② 同类/成对支路是否一致; ③ 有没有多余拐点、绕线、跨网穿越;④ 读写方向与标签方向是否一致。 - 任一问答不上来 → **候选判废**,不落画布、不端给用户;不许写「机器全绿所以可交付」。 - 判废不删证据:候选、渲染与读数留在 evidence,写清判废理由。 ## 5A. 可见连接与旗标聚簇(岳复审补充) - **每条不连续导线都要有可见去向**:名字必须贴着自己的载体;同名但不连续的导线各有 名字,不许为了全模块去重而让一段长线变成无解释裸桩。隐藏重复名只处理重复显示, 不能删除读者理解连接所需的信息。网表连通、`valueVisible=false` 和 lint 通过都不能 证明图面已经接上;文字盒与线端的固定容差也不能给明显脱线开脱。 - **地/电源旗使用同一策略**:先按功能支路与阅读关系决定合并与否,再比较终点路径; 成对但独立的支路默认各自本地旗,不得强制共享。power 高扇出逐脚放旗、gnd 按坐标聚簇 的旧分歧不是合法视觉裁决。 - **并联支路两端同类判定**:同一宿主、两端网络分别相同的并联支路(例如同组并联去耦), 其共同回流端可以进入共簇候选,和共同供电端一样过同一距离与视觉闸;不得把 `other_net` 一律写死成独立旗。信号端不同的独立支路(例如 CC1/CC2 各自下拉)仍各自 本地旗,不得仅因返回网相同而共享。 - **聚簇距离必须是导线终点的合法绕行距离**:从两条支路各自准备挂旗的导线终点求最短 合法正交路径,绕开器件、文字、旗标、其他导线和禁入区,累计各段长度;不可达记 `∞`, 不得共簇。禁止用焊盘欧氏距离,也禁止用两根线上任意点的最近距离。A–B 近、B–C 近 不构成 A/B/C 共簇的理由。 - 距离只决定能否候选共簇,最终还要过语义与视觉闸;分开后的同名旗之间不画线。 ## 6. 修复优先级 1. **错误语义分岛 / 缺失模块关系** → 改规格与关系(先修输入); 2. **成对支路偶然不一致** → 补解释器的通用约束(派单),并加回归用例; 3. **纯局部小瑕疵**(一处桩长、一处避让) → agent 受控微调,记账 `agent-adjusted`。 禁止用手改一堆坐标代替通用能力,禁止每次为算法方便重新分岛。 ## 7. 分岛前 / 视觉验收清单 **分岛前:** - [ ] 每个岛能用一句话说出功能,名称与电路对应; - [ ] 没有器件因为「编译/布线/页框好过」被搬离它的功能组; - [ ] 跨岛表达(信号边界、附属关系)已在规格里显式写出; - [ ] 成对/同类支路的预期姿态已写进「预期图形结果」。 **视觉验收(逐岛):** - [ ] 功能归属说得清,读图顺序与主信号流一致; - [ ] 成对支路同向、对齐、等节距/等桩长、标签方向一致; - [ ] 无多余拐点、无跨网穿越、无旗标绕合; - [ ] 地/电源用旗标(可汇聚就近引脚,但不拉全板母线); - [ ] 标题栏禁地内无内容;机器读数(lint、逐脚)单独列,不当视觉结论。 **反例(只说明规则,不写页面流水账)**:为解决 USB-C 连接器翻转后 D+/D− 标签方向, 把两只 CC 下拉电阻从 USB 功能组拆成独立岛。拆后失去宿主与成对约束,解释器把两支路 自由摆放:一支竖桩竖字、一支横桩,GND 上端绕合。`draw lint` 0E/0W/0I、逐脚 58/58 全通,图仍然不合格——**机器全绿不改变判废结论**。正确做法:留在 USB 功能组内, 或建立显式附着与成对约束后再重画。 ## 8. 命令面与交付口径 - 链:`boardwise draw propose`(意图合同 → PresentationSpec 草稿)→ `boardwise draw compile`(离线候选,`ok=True` 才过编译闸)→ `boardwise draw plan`(候选 → ChangePlan)→ `boardwise draw apply` (守卫 → 落图 → 回读 → 保存 → 出图);画完一页先跑 `boardwise draw lint --page …` 再谈交付。 - 操作细节(符号库实测工序、apply 执行序、支路顺序三来源、旗标画法)全在 `docs/draw.md`;`--profiles` 必须先在真机上量过,不许拿没量过的 profile 落图。 - 交付时必须把三关分开报:编译闸读数、逐脚连通读数、视觉自审的逐岛结论; 缺哪关就说缺哪关,不合并成一句「通过」。