昨天與學生分享研究構想,討論近期火熱的vibe coding,它是一種新興的程式開發方式,由 OpenAI 共同創辦人 Andrej Karpathy 於 2025 年提出。指的是開發者透過自然語言(如英文)向大型語言模型(LLM)描述需求,讓 AI 自動生成程式碼,開發者則負責引導、測試與調整,而非親自撰寫每一行程式碼。
順著自己的感覺走,並且接受AI生成的coding內容,按下diff button,忽略程式碼的存在,持續調整自己的需要,接受你現在code所呈現的效果。假設開發者夠聰明與彈性的話,有時diff的結果會偏離原先期待的設計結果,帶來出其不意的好,不同於事先能預期的好。
環顧設計學的發展歷程中,設計行為與語意內容是緊密關連,譬如現代主義的Louis Sullivan提出的「形式追隨功能」(Form follows function),可說是一種設計語意學的經典論述,物體的外觀應該直接反映其用途,後來進入後現代,語意開始多元化與隱含符號性,人們開始思考認為設計不僅僅是功能的表達,還應該包含文化、歷史和情感的符號意義,所以像是一些家具或物品,以鮮豔的色彩和不規則的幾何形狀呈現,不僅挑戰功能主義的美學標準,更是強調設計的情感和文化語意。
當然,設計學與語意發展脈絡龐雜,並不是一下子可以說明清楚,至少可以確定的是,看到一個從單一、直接的語意,朝向複雜、多層次的語意系統演變,簡單地說,設計師不再僅僅視語意為設計的靜態屬性,而是將其視為設計師、使用者和社會環境之間的動態對話,而且在對話之中,設計行為既是語意的創造者,也是語意的解釋者和回應者。
AI讓設計行為的語意,從預設語意,演變到生成語意,以UI/UX為例,一般來說,設計語意是由設計師預先定義的,根據文化約定、心理學和個人創意來創造形式,並傳達特定的含義和功能,讓它可直覺可認知好操作。例如,按鈕的凸起設計暗示它可以被按下,滑桿的線性排列暗示可調節的數值範圍。而生成語意是,例如設計師告訴 AI「我需要一個感覺友好且易於使用的表單」時,AI 可能會生成多種implementations,每一種都建立在 AI 對過去成功設計的分析和使用者反應數據的基礎上,呈現了不同的「友好」和「易用」的解釋,而非設計師的個人理解,因此這個轉變可視為一種悖論,挑戰我們對設計作者身份和意圖的傳統理解:誰是設計語意的真正作者?是提出需求的設計師,還是生成解決方案的 AI,或者是最終通過互動來完成語意循環的使用者呢?
我們可以先忽略語意究竟是屬於誰原創的問題不談。
Vibe Coding可說是設計語意的生成與表達方法,讓開發者使用自然語言來表達設計意圖,也導致增加了設計語意的抽象層次,譬如設計師需要精確指定每個元素的位置、大小、顏色和行為,在 Vibe Coding 中開發者可以使用更高階的概念性語言,如「建立一個強調信任感的介面」或「設計一個展現永續發展的產品外觀」。另外,設計是一種固定的產物,一旦製作完成,其語意就相對固定,相對的,Vibe Coding讓設計行為實現成持續性的對話模型,使用情境具有適應性的特徵。
如何研究Vibe Coding的設計語意化的歷程呢?
從我過去對儀式感的操作與研究,進一步可以延伸到這裡。我認為,Schön & Wiggins(1992) 的看-動-看(Seeing-moving-seeing)模式、Gero & Kannengiesser(2004) 的功能-行為-結構(Function-Behavior-Structure,FBS)模型,或許可深入用來解釋 Vibe Coding的設計方法,進一步端看與理解設計語意化過程。
Schön 的看-動-看模式描述設計師的認知過程,設計師先觀察現狀(第一個「看」),然後基於這種觀察作出改變(「動」),最後評估變化的結果(第二個「看」),其「動」的循環過程反應出設計過程的反思特質,整體描述了設計過程的認知動態。而Gero 的 FBS 模型則從本體論角度分解了設計對象的組成要素,功能(Function)指設計的目的,行為(Behavior)指從結構衍生出的屬性,結構(Structure)指設計對象的組件及其關係,整體則描述了設計對象、或說設計目的的相關元素及組成。
以Schön看動看模式,融入對應Gero原所提FBS具有的八道程序,可分析如下:
第一個「看」階段
[1] Formulation(F → Be)
功能的意圖轉換為預期行為:
→設計者思考:「我需要幫助使用者追蹤飲食的應用」→「使用者能輕鬆記錄餐食,看到營養分析」。
[2] Synthesis(Be → S)
將預期行為轉譯為具體結構:
→對 AI 說:「做個直覺的飲食追蹤應用,上方有搜索欄,中間是食物列表,下方有營養摘要圖表」。
AI 將這轉化為具體代碼,創建介面、功能和視覺風格。
第二個「看」階段
[3] Analysis(S → Bs)
從結構中推導出實際行為屬性:
→發現問題:搜索功能不夠靈活,圖表過於複雜,操作需多次點擊。
[4] Evaluation(Be ←→ Bs)
評估預期與實際行為之間的差異:
→比較預期「簡單記錄」vs 實際「操作繁瑣」
→比較預期「清晰理解」vs 實際「訊息過載」
[5] Documentation(S → D)
設計結構與生成歷程的記錄:
→記下當前設計的問題點與成功之處,為下次迭代做準備。
[6] Reformulation Type 1(S → S)
重新設計結構以符合行為需求:
→對 AI 說:「保持相同佈局,但簡化搜索功能,用進度條替代複雜圖表,減少點擊次數」
[7] Reformulation Type 2(Be → Be)
調整預期行為,重新定義行為目標:
→對 AI 說:「使用者可能更需要簡單指導而非詳細數據,改為提供易懂的飲食建議」
[8] Reformulation Type 3(F → F)
從根本重新思考設計目的:
→對 AI 說:「核心應該是培養健康習慣,而非記錄數據。加入習慣養成和社群支持功能」
從Vibe Coding的生成語意方式中可知這條清楚的演變脈絡:“tell AI what to do” → “co-design with AI”,設計知識不再是預設的靜態輸入,而成為動態協商的相互生產物。為了要能進一步協助設計師/開發者掌握與理解語意,可從語意生成過程的互動關係,以及功能、行為與結構之間的轉化關係切入,可以看到設計意圖與語意化的循環過程,讓人機協作更接近人類的習慣。
AI是人類的影子,人類在哪,AI就在那...
-
Schön & Wiggins(1992). Kinds of seeing and their functions in designing, Design Studies, 13 (2), p135-156.
-
Gero J.S. and Kannengiesser U., (2004). The situated Function-Behaviour-Structure Framework, Design Studies, Vol.25 (4), pp.373-391.