How I Design with AI.(我如何用 AI 做設計)

Image

原始來源與檔名:2026-08-28T094041+0800-How I Design with AI..md


SOURCE | 資訊源評估

NAPKIN | 餐巾紙

餐巾紙公式

去 slop 設計 = (工程師自訂的約束清單)驅動整體方案 → 減法刪除 AI 冗料 → 設計工具內生 3-4 個 variant 迭代 → 元件化組裝 → 真實資料預覽驗收 → 借用既有解 → 品味反覆打磨 核心是「約束先行、整體考量」:AI agent 天生傾向堆料與局部修補(slop 的來源),工程師的價值在於定義約束、做減法、並用真實資料與品味把關;流程是一個迴圈,約束一變就回到源頭重想,而不是在症狀上打地鼠。

一句話

工程師用 AI 做設計時,別讓 agent 逐點修補,而是自己定義約束、在設計工具中探索多方案、用減法刪掉 AI 的堆料,最後靠真實資料與反覆批判養出品味。

餐巾紙草圖

┌── 反 slop 設計迴圈(工程師 × AI)

│   自訂約束清單(字體/流程/商業邏輯狀態)
│        │
│        ▼
│   多方案探索:設計工具中生 3-4 個 variants
│        │
│        ▼
│   減法:對每個元素問「我真的需要它嗎?」
│        │
│        ▼
│   元件化組裝(/showcase 頁先試玩)
│        │
│        ▼
│   真實資料驗收(preview deploy)
│        │
│        ▼
│   品味打磨(團隊圍毆式批判)
│        │
│        ├── 約束增刪?──▶ 回到最頂端重想整體
│        │
│        └── 感覺對了 ──▶ 非 slop 的成品

│   貫穿全程的敵人:
│     ‧ 打地鼠式修補(頭痛醫頭)
│     ‧ prototype gravity(第一版綁架探索)
│     ‧ agent 堆料(多餘文案/線條/圖示)
└──

ROUND 1: SKELETON | 骨架掃描

章節骨架(條列)

ROUND 2: DISSECTION | 血肉解剖

論證鏈

┌── 論證鏈

│ 觀察:AI 時代所有 landing page / app / tui 長得一樣(slop)
│   │
│   ▼ 歸因一(流程面)
│ 跳過「列出約束」直接解題
│   → 使用者一困惑就進入 solution mode
│   → AI 加劇:prompt「讓 X 更顯眼」「加個 Y 的 affordance」
│   → 產出隨機偏重某些互動的破碎拼湊(patchwork)
│   │
│   ▼ 歸因二(產物面)
│ agent 天生堆料:多餘文案、線條、圖示
│   → 看起來比工程師手做的好,其實「kind of bad」
│   │
│   ▼ 解方(七條原則層層設防)
│ 1 約束驅動整體 ── 對抗歸因一(回饋先驗證是否動搖約束)
│ 2 減法清理     ── 對抗歸因二(逐元素存續審問)
│ 3 設計工具迭代 ── 阻斷 prototype gravity,強制多案探索
│ 4 元件化       ── 防止 re-implement 按鈕的拼湊感
│ 5 preview deploy ── 真實資料揭穿「看起來對」的假象
│ 6 借用既有解   ── 站在已解決的 UX 問題上
│ 7 品味打磨     ── 用批判次數換取解法庫(最終收斂機制)
│   │
│   ▼
│ 結論:工程師不需要變成設計師,需要的是流程紀律 + 反思的 reps
└──

關鍵證據

隱形假設與邊界

ROUND 3: SOUL | 靈魂提取

留白提問(2 題,需附架構師引導思路)

跨域映射

DEEP READ | 精讀指引(2-3 段,需先摘錄原文金句 + 推薦理由,製造認知阻力)

“The temptation is to spot-fix but that road leads to ruin… When feedback arrives, evaluate if it changes your design constraints before jumping to solutions.”

這句是全文的樞紐,值得停下來抵抗一下「同意然後滑過去」的衝動。請先自問:你上一次收到使用者回饋時,中間隔了幾分鐘就動手改 code?作者的挑戰在於順序顛倒——不是「回饋 → 解法」,而是「回饋 → 它動搖了哪條約束 →(若無)記進 papercut 文件 →(若有)重跑整個設計迴圈」。真正難的不是理解這句話,而是在「使用者正在困惑、老闆正在催」的壓力下守住這個順序。精讀時請把 Alexander 三步驟中的第 3 步(約束增刪就回到第 1 步)在腦中跑一遍你目前的專案:你列得出自己的約束清單嗎?列不出來,表示你一直是在無約束狀態下打地鼠。

“Prototype gravity is the silent killer. This is when you have the agent build the first version in your code base then it feels easier to just refine that instead of exploring other options.”

這句的認知阻力在於它反直覺地指控了一個「看起來像效率」的行為:讓 AI 直接在你的 codebase 蓋第一版,起手超快、成果超好,誰都會這麼做。但作者指出這正是探索空間被謀殺的現場——第一版一旦存在,「refine 它」的心理成本就永遠低於「另起爐灶」,於是你從「在方案空間中搜尋」被降級為「在單一方案的鄰域中微調」。讀這段時請誠實回想:你最近一個 UI,看過幾個真正不同的版本才定案?若答案是 1,那你已經在 gravity 裡面了。作者給的逃脫艙門很具體:設計工具隔離 + 強制 3-4 variants。

“Even if the agent builds exactly what you told it, you may still hold it in your hands with real data and realize it’s not right.”

這句戳破了「指令正確 = 結果正確」的等式,也是 preview deploy 那一條的靈魂。它隱含一個深層主張:設計的驗證媒介是「手握真實資料的身體感」,不是 spec 的忠實度——agent 越聽話,這個斷裂越顯得是你的問題而非它的。精讀時可以追問:哪些類型的錯只有真實資料才會揭穿?(空資料狀態、極端長度文字、真實延遲下的感知…)這直接決定你的 preview deploy 要多「真」:接真 backend、真流量形狀的資料,還是 mock 也行?作者的答案偏向前者,而這正是多數團隊省略的那一步。

STRUCTURE MAP | 全書結構圖

┌── How I Design with AI. — 結構圖

│ 開場宣告:工程師反 slop 宣言
│ (所有頁面長一樣且難懂)
│   │
│   ├─【心法層】
│   │    ├─ 1. Always consider the whole
│   │    │     ‧ Alexander 三步驟(約束→方案→增刪回圈)
│   │    │     ‧ 陷阱:打地鼠式修補
│   │    │     ‧ 實踐:papercut 追蹤文件
│   │    │
│   │    └─ 2. Remove stuff
│   │          ‧ agent 堆料本能(code/UI 同源)
│   │          ‧ 實踐:逐元素「需要嗎?」審問
│   │
│   ├─【工具層】
│   │    ├─ 3. Iterate in a design tool
│   │    │     ‧ 敵人:prototype gravity
│   │    │     ‧ 實踐:Figma 等工具 + 3-4 variants
│   │    │
│   │    └─ 4. Use components and libraries
│   │          ‧ view/logic 分離、可復用元件
│   │          ‧ 實踐:/showcase 頁先建後接
│   │
│   ├─【驗證層】
│   │    └─ 5. Use preview deploys
│   │          ‧ 真實資料是唯一考場
│   │          ‧ 實踐:FE/BE PR 分離 + GitHub action
│   │
│   ├─【素材層】
│   │    └─ 6. Steal stuff
│   │          ‧ 多數 UX 問題已有解
│   │          ‧ 實踐:截圖收集餵 agent 當 context
│   │
│   └─【素養層】
│        └─ 7. Explore your taste
│              ‧ 品味 = 反思自己的反應
│              ‧ 缺的是解法庫,靠 reps 補
│              ‧ 實踐:Ref 打穀式團隊批判

│ 結尾:GLHF
└──

How I Design with AI. (Architectural Deep Dive)

前言/背景

作者 @reactiverobot 是 Ref 團隊的工程師——一個自陳「不是設計師、且痛恨 slop」的人。他所謂的 slop,指 AI 時代批量生成的設計平庸物:每個 landing page、每個 app、每個 tui(terminal UI)看起來都一樣,而且多數難以理解。這篇 X 推文串(2026-08-26 發表)是他的反 slop 作戰手冊:七條原則,混合了 Christopher Alexander 的經典設計理論、對 AI agent 行為模式的觀察,以及 Ref 團隊(沒有全職設計師)的具體工程實踐。文章的隱含命題是:AI 沒有讓設計變難,而是把「工程師跳過設計紀律」的舊病放大成流行病——因此解法不是等更好的模型,而是工程師自己重建流程紀律。

章節詳細總結(依原文結構)

開場:反 slop 宣言

作者自述身份:工程師、非設計師、痛恨 slop。現象診斷:AI 時代所有 landing page、app 與 tui 看起來都一樣,是多數難以理解的 slop。隨後展開七條「去 slop」原則。

1. Always consider the whole(永遠考量整體)

設計流程約是三步驟,出自 Christopher Alexander 的《Notes on the Synthesis of Form》(形式綜合論)——一本作者評為「令人愉悅地嚴謹」的設計流程探索:

  1. 列出你正在設計的所有約束(constraints)
  2. 考慮一組滿足這些約束的方案
  3. 若意識到必須增加或可以移除某條約束,回到第 1 步

Image

(《Notes on the Synthesis of Form》,一本非常好的書。)

約束的形式很多元:字體與尺寸規則、必須支援的工作流程、商業邏輯的狀態機。關鍵在於——約束必須由你決定,不是由 agent。

最常見的病是跳過第 3 步、玩「設計打地鼠」:使用者一困惑,團隊很自然就跳進 solution mode。作者坦承自己團隊常被 nerd-snip(被誘惑分心去解有趣的問題),尤其面對左側 sidebar——它在極小空間裡塞了巨量資訊與操作。誘惑是就地修補(spot-fix),但那條路通往毀滅。

Image

(小空間裡塞了巨量資訊與操作。避免打地鼠式設計。)

跳過約束佈建的後果,是得到一個隨機偏重某些互動的破碎拼湊(disjoint patchwork)。而 AI 加劇了打地鼠的引力——它鼓勵你 prompt「讓 X 更顯眼」「加一個做 Y 的 affordance」,最終更多使用者感到困惑。

回饋到來時,先評估它是否改變你的設計約束,再跳向解法。 Ref 的做法是維護一份追蹤 papercut(小割傷)與惱人細節的文件:明顯的修復快速進行,次要的記錄下來,等改版時一次性整體處理。重點是避免過度反應、製造更多混亂。

2. Remove stuff(刪除東西)

Agent 愛加東西。你的工作是移除不必要的部分。

工程師對此應該很熟悉,因為 agent 在 code 與計畫中做的一模一樣:熱愛 belt-and-suspenders(雙重保險)、多包一層 try-catch、把同一個 utility 反覆重新實作。

UI 設計中,agent 也一樣:愛加多餘的文案、線條與圖示。你會得到「看起來比多數工程師手做還好、但其實有點糟」的設計。

簡單的做法:檢視設計的每個元素,對每個元素問——「我真的需要它嗎?」

Image

(清掉 agent 的垃圾。)

3. Iterate in a design tool(在設計工具中迭代)

你不該在產品內迭代設計。用一個提供精細控制、能快速迭代、且幾乎不需額外 context 的工具。

Prototype gravity 是沉默殺手。 指的是:你讓 agent 在 codebase 裡蓋出第一版之後,「就地 refine 它」感覺比「探索其他選項」更容易。在真實 codebase 裡做設計,也迫使 agent 打造一個得嫁接到你真實(複雜環境)上的版本。

Figma 仍是 GOAT(史上最強),而且它的 AI 整合每週都在進步。Cursor Design Mode、Claude Design、一堆新創、甚至 HTML prototype 也都很好。

總之:用為設計而生的工具,並讓 AI 對每樣東西生成 3-4 個 variants。

Image

(Figma 仍是設計迭代的 GOAT。)

4. Use components and libraries(使用元件與函式庫)

這條對多數工程師大概顯而易見,但很重要所以快速帶過:分離 view 與 logic,建立可復用元件。 不難,且持續生息——你的 app 會是視覺一致的整體,而不是一堆重新實作的按鈕拼成的拼湊。

Ref 的做法是維護一個 /showcase 頁:讓 agent 先在那裡建 UI 元件、試玩之後,才連接到主 app。

Image

(/showcase 頁,收藏 Ref 全部元件。)

5. Use preview deploys(使用預覽部署)

評估設計最好的方式是用真實資料。Preview deploy 讓你用真實 backend 試用新設計。

要記住:永遠會有需要 polish 與重做的地方。即使 agent 蓋出的正是你吩咐的東西,你仍可能雙手握著它、配上真實資料後,發現它不對勁。

對橫跨前後端的大型功能,preview deploy 會變得棘手。Ref 的解法是前後端 PR 分離:backend 變更用 unit test 與 integration test 驗證;frontend 變需要人工驗證,而 preview deploy 讓分享一條連結變得容易。

Image

(GitHub action 為每個 frontend PR 架起 preview deploy。)

6. Steal stuff(偷東西)

多數 UX 問題已經被解決了,你該做的是把碎片撿起來拼在一起。花時間研究正在解決相似問題、或溝通相似概念的產品。

作者合作過的每個狠角色設計師,每個專案都是從收集一大疊截圖開始。你也該這麼做——這是餵給 agent 的絕佳 context。

Image

(一位非常優秀的真設計師收集的 landing page 靈感。)

7. Explore your taste(探索你的品味)

這是有趣的部分!

品味,是反思你對某事物的反應。作者向 Kyle Chayka 致歉(對方寫過〈為何科技宅痴迷於 taste〉),但反思自身經驗並不是布魯克林閣樓派對的專利——它是「創造」與「創造 slop」的必要分界。

產品工程師非常擅長辨識「設計行不通」,卻很難知道怎麼修。 工程師缺的是從經驗累積出來的解法庫。建立它只需要反覆嘗試與反思(reps)。把玩與探索很有趣,但過程也相當殘酷——那是一場批評的洪水,直到某個版本夠好為止。

Ref 沒有全職設計師,於是採用「農業打穀式」方法煉化品味:把設計丟到中間,用棍子圍毆,直到大家覺得 OK。

(Ref 團隊把設計打到投降為止。GIF)

結尾

「我能講的就是這些。GLHF(good luck, have fun)。」

總結與結論(3-5 點)