# V4-2333 走查轮十五 + 轮十六 —— AI 协作过程复盘（UX / PM 内部分享）

> 日期：2026-08-03 · Owner：Nancy · 对象：Config-T `rJJjWWs51n2iFOlCIC7aYG` + LCD `0054ib0nLmt27bC3QlGDl7`
> 本文复盘的是**人与 AI 的协作过程**，不是实现细节（实现见 handoff `§1k-P` / `§1k-Q`，决策见 design-spec `D21`–`D23`）。

---

## 1. TL;DR

- **两轮走查、一个 session**：轮十五（四条悬置项裁定 + 三处实体改动）+ 轮十六（两个 surface 各一个派单）。
- **最终交付**：Config-T 四帧等高 1228×1133、Section 6935；LCD C1 未选态归正 + 交付层 6 处措辞；DS repo commit `ef387622`；spec 新增 D21/D22/D23；handoff 新增 §1k-P / §1k-Q。
- **核心 process gap 数**：5 条（详见 §4），其中 3 条是**同一类**——「只读机器值不看图 / 不读上下文就定性」。
- **关键 insight**：本 session 三次抓错都不是靠机器闸抓到的，而是靠**看渲染图**和**逐字读上下文**。机器值告诉你「节点存不存在」，图告诉你「用户看到什么」，这两件事本 session 分岔了三次。

---

## 2. Session 概览

| 项 | 内容 |
|---|---|
| 起点 | 承接轮十四，起手四条悬置项待 owner 裁定；owner 一次答复四条 |
| 中途 | owner 三次插话追加派单（单选按钮库归属 / 禁用表达 / Text Color 快捷选项）|
| 再追加 | owner 两个新派单（LCD 未选态 / Text Color 自定义色方案）|
| 收尾 | owner 否决自定义色方案，要求下个 session 重新设计 |
| process artifacts | design-spec D21–D23 · handoff §1k-P / §1k-Q · DS backlog 打包裁定入口 · DS catalog 两段 · DS §I7 条文改写 · 本复盘 |

---

## 3. 主要迭代

| # | 阶段 | 触发 | 改动量 |
|---|---|---|---|
| 1 | 四条裁定落地 | owner 一次答复四条 | DS 3 文件 11 处 + spec D21 |
| 2 | 单选按钮归正 | 「这种单选按钮的为啥没用设计库中的组件啊」| 20 处换 DS `radio` |
| 3 | 禁用表达统一 | 「设计库中的组件已经有禁用的样式了，不用再整体降低透明度」| 撤 7 处双重处理，保留 4 处 |
| 4 | Text Color 快捷选项 | 「Color 要跟参考样式的一样，提供几个快捷选项」| 8 处重建 + 绑 5 个 DS 变量 |
| 5 | 几何三轮重排 | 上述改动连带帧高 / annot / UX 卡增高 | Section 6113 → 6361 |
| 6 | LCD 未选态 | 「不应该展示一个『---』，应该展示列表，但是没有已选中项」| C1 三节点 + 交付层 6 处 |
| 7 | 自定义色方案 | 「做一个效果图看看」→ **收尾时被否** | 示意区 3 节点，已标红存档 |

---

## 4. Top 5 process gap（按返工成本排序）

### G1 —— 只读机器值、不看渲染图，漏掉了 owner 明确提到的第二处（返工：半轮）

**实证**：owner 说「不应该展示 `---`，应该展示列表，**但是没有已选中项**」。我读 C1/C2 的机器值，发现两帧逐节点同构、唯一差异是字段行文本，据此判断「列表本来就没有选中标记」——于是只改了 `---`。隐藏 `---` 后截图目视，才看到列表里 `PM_X7M` 那行明明带着三角标记 + 深色高亮。那两个节点叫 `Rectangle 4` 和 `Path`，没有文本、坐标也看不出语义。

**为什么既有纪律没防住**：现行纪律是「判『有没有某个元素』必须 `findAll` 搜实际 characters，禁只看 `get_metadata`」——**但选中标记根本没有文本**，搜 characters 搜不到它。

**回流落点**：纪律应补一句「**判视觉元素（标记 / 高亮 / 装饰）存不存在，必须看渲染图**；节点名与坐标不具语义、无文本节点搜不到」。已写进 handoff §1k-Q ② 实测 H。

### G2 —— §2a ① 轮把活条文误判成历史陈述（返工：一处漏改，自查抓回）

**实证**：扫 `---` 残留时，spec D17 里那句「C1 进入选择页（字段行 `---`）」被我定性为「引用 owner 轮十一原话的历史陈述、保留」。逐字读上下文才发现那是 **AI 自己写的活条文**，且与新裁定正面互斥——下轮读 D17 就会读到旧口径。

**与轮十四的对照**：轮十四是「命中全是新写的否定句、差点改了不该改的」；本轮是**相反方向**——把该改的当成不该改的。两者都只能靠逐条读上下文分开，**正则命中数本身不含任何定性信息**。

### G3 —— owner 点名的位置从来不是对象全集（第 N+2 次复发）

| 轮次 | owner 点名 | 实际对象全集 |
|---|---|---|
| 十四 | 1 条状态行 | 2 条 |
| 十五 | C2 的 1 处降透明度 | 7 处双重处理（跨 C1a / C2、含色块行）|
| 十六 | LCD 的 `---` | `---` + 选中标记两节点 |

**已成稳定模式**：owner 给的是**样本**，不是清单。每次派单起手都必须做一次同型全量扫查（本轮的 `opacity < 1` 全量扫、radio 类 instance 全量核都是这么抓到的）。

### G4 —— 写进 handoff 的数字凭印象填（自查抓回 2 处）

**实证**：§2a ② 轮初稿写「F1 spec 轮十五指针 1 / F4 停止重查 1」，实跑 grep 得 3 和 2。**已订正并把「写数字前必须实跑」写进 handoff**。这类错不改会污染下一轮的基线比对。

### G5 —— 未提交窗口被并行 session 的全量 `git add` 吞掉（无损但归属丢失）

**实证**：我改完 DS `§I7` 四处后先去做别的事，期间并行 session 提交时做了全量 `git add`，把我未提交的改动一起带进了它的 commit。内容实测完整，但归属混进了别人的 commit message。

**结论**：「只 `git add` 自己的文件」这条纪律**只能约束自己、约束不了并行线**。真正能防住的是**写完立刻提交**（缩短未提交窗口）或起手就开 worktree。

---

## 5. 高效对话建议（按 ROI 排序）

### 给提需求方（UX / PM）

1. **点名一处 + 说清判据，比列全清单更高效**。owner 本 session 的三次插话都只贴了一个节点，但每次都附了判据（「设计库已经有禁用样式了」「跟参考样式一样」「自定义跟快捷选项区别不大」）——**判据让 AI 能自己推出对象全集**，比列清单更省你的时间。
2. **否决时说出「为什么不 OK」比说「不 OK」值十倍**。收尾这次否决只有一句「自定义跟快捷选项区别不大」，但这句话直接给出了下一轮的设计约束（自定义必须在**形态层面**与预设可区分），AI 无需再猜。
3. **凭印象说「库里有 X」时不必犹豫**——AI 有纪律必须实测再答。本 session 两次：「TVU UX Design System 里面有蓝色按钮」（实测无 blue 轴）、「设计库中的组件已经有禁用的样式了」（实测 radio/input/select 有、分段 tab 没有）。两次都靠实测把话说准了，没有一次是无效沟通。

### 给 AI 协作流程

4. **每个派单起手先做一次同型全量扫查**，再动手改 owner 点名处（G3 已成稳定模式）。
5. **凡「视觉上有没有某个东西」的判断，一律先出图再下结论**（G1）。
6. **DS repo 改完立刻提交**，不留未提交窗口（G5）。

### 给评审方

7. **看图评审比看文档评审快一个数量级**。本 session 三次关键纠正（单选按钮库归属、双重降透明度、自定义色方案被否）全部来自 owner **看图**，没有一次来自读 handoff。⇒ AI 应在每轮结束时主动给出可点击的帧链接，而不是只给文字总结。

---

## 6. 已回流 / 待回流的规则

| 规则 | 真源文件 | 状态 |
|---|---|---|
| §I7 ③ 改为「一律实测间距并与基线比对、禁分类预判」+ `ABSOLUTE` 浮层纳入对象 + Acceptance 要求贴 `baseline → now` | DS `mockup-conventions.md` | ✅ 已回流（在并行线 commit `85a4bf4f` 内）|
| `CANONICAL-F92–F94` 打包裁定入口（三条 tab/button 缺口一并裁定）| DS `backlog.md` | ✅ `ef387622` |
| `Message` 无 theme 轴是有意为之、不立缺口 | DS `figma-component-catalog.md` | ✅ `ef387622` |
| 分隔线在 DS 库不是组件、走 Line 样式（防重复检索）| DS `figma-component-catalog.md` | ✅ `ef387622` |
| **判视觉元素存不存在必须看渲染图**（无文本节点搜不到）| DS `mockup-conventions.md` §M-DISCIPLINE 或 M-INTEGRITY | 🟡 待回流（G1）|
| **禁用表达通则：有禁用变体就切变体、无变体才降透明度** | DS `mockup-conventions.md` | 🟡 待回流（owner 本轮口径，两端实为同一规则的两个实例）|

---

## 7. Model 选型推荐（基于本 session 实证）

- **本 session 全程 Opus 5（1M context）**，判断合适：跨两个 Figma 文件、23 条决策、2200+ 行 handoff，且多次需要「读机器值 → 出图 → 发现矛盾 → 回头改自己写的结论」这类多跳自我修正。
- **可下放给更小模型的部分**：批量 instance 替换（20 处 radio）、批量色块重建（8 处）这类**规格已定死的机械改动**；但**规格判定本身**（哪 20 处、变体怎么选、几何怎么补）不宜下放——本 session 的 7 处双重处理、第二处选中标记都是在这一层被抓到的。

---

## 8. Action items

- [ ] **owner**：C2 那处「字段行说选了一个、列表里标记的是另一个」选处置方式（三条见 handoff §1k-Q ⑦）。
- [ ] **owner**：Text Color 自定义色方案下一轮重新评审（方向线索见 D23 ④ 四条）。
- [ ] **下轮 AI**：把 G1、G6 两条待回流规则提给 DS（先确认是通则而非一次性失误）。
- [ ] **下轮 AI**：mockup 定稿后按精简格式发 Jira（发前贴全文确认）。

### 附录 · `use_figma` 改动统计（本 session）

| 类别 | 次数 |
|---|---|
| 只读 probe / 实测（含变体全枚举、库归属核验、参考面板勘察）| 14 |
| 写操作（instance 替换 / opacity / 文本重写 / 新建节点 / 几何重排）| 13 |
| 几何复检（含三轮重排后的全量复测）| 6 |
| 截图亲验 | 8 |
| 因字体 / 锚点校验失败而原子回滚 | 2（Verdana 加载失败 · indexOf 锚点不匹配）|
