跳至內容

JSDC 2025 演講回顧:讓 AI 寫前端,我們來寫未來

終於結束了! 上週六很榮幸能在 JSDC 2025 跟大家分享「讓 AI 寫前端,我們來寫未來」這個主題。 老實說,雖然我從第一屆 JSDC 上台到現在已經十多年了,但還是第一次講這麼不 JavaScript 的主題(笑)

除了蹭一下 AI 熱潮,這場演講想探討的,就是在 AI 工具越來越強大的今天, 我們前端工程師該如何與 AI 協作,避免掉入「Vibe Coding」的陷阱,同時又能善用 AI 的生產力,提升開發效率與品質。


關於 JSDC 2025

JSDC(JavaScript Developer Conference)是台灣最大的 JavaScript 年度技術研討會,自 2011 年起由多個開發者社群共同發起,致力於提供台灣中高階 JavaScript 技術人才與世界最新技術交流的平台,整合獨立開發者、企業與組織的技術力量。

今年的 JSDC 2025 於 11 月 29 日在集思台大會議中心舉辦,主題是「Code Compose Connect」,聚焦在生成式工具與智慧化開發流程的發展,探討開發者如何透過協作重新定義創作的邊界。

JSDC 2025

今年 JSDC 最大的感觸就是:AI 真的無所不在。 不只是我的場次,我聽其他講者分享時,大家都不約而同地聊到 AI 如何改變開發流程,工具鏈,甚至是產品設計思維。 這種氛圍讓我深刻感受到,AI 已經不再是「未來的趨勢」,而是「現在進行式」的現實。


演講內容回顧

在演講一開始,我做了一個簡單的田野調查:「現場有多少人已經在用 AI 輔助開發?」

結果目測有九成以上的人舉手。

這個數字其實不意外,但親眼看到還是蠻震撼的。 AI 輔助開發現在已經不是「要不要用」的問題,而是「怎麼用才不會踩坑」的問題。

什麼是 Vibe Coding?

接著我用一個場景帶入:「三分鐘用 AI 生成一個電商產品頁」。 畫面看起來很漂亮,但打開 Console 一看,滿滿的紅字錯誤。

這就是所謂的 Vibe Coding:憑感覺寫 Code。 戴上耳機,感覺對了,Code 生成了,畫面出來了,看起來很美。 但身為工程師的我們都知道,看起來能動跟真的能上線,中間隔著一道巨大的鴻溝。表面上省了時間,底層卻埋了更多技術債,填坑填不完。

六個開發階段的 AI 協作陷阱

我把前端開發拆成六個階段,分析每個階段 Vibe Coding 容易踩的坑,以及如何避免:

階段Vibe Coding 的坑解法
Phase 1: 需求分析AI 只處理 Happy Path,Edge Cases 得靠人想Interface First:先定義資料結構和元件介面
Phase 2: 視覺切版AI 亂猜顏色、間距、圓角,造成「視覺負債」Design Tokens:綁進 Tailwind,限制 AI 只能用定義的值
Phase 3: 元件實作AI 幻覺(漏 .value、混用 API、過時語法)Rules 檔案:.cursorrules 或 CLAUDE.md
Phase 4: 前後端整合只寫 Happy Path,不處理 Loading/Error/Race ConditionOpenAPI + MCP:提供即時規格和 Checklist
Phase 5: 測試與品質測試只測 Happy Path,Mock 太多沒意義TDD 思維:人寫測試定義正確,AI 寫實作
Phase 6: 效能與部署「能跑」不等於「能上線」Pre-deployment Checklist:Lighthouse、Bundle Size、敏感資訊檢查

Prompt Engineering 已死?Context Engineering 當立!

演講後半段,我提出一個觀點:重點不是「怎麼問」(Prompt Engineering),而是「給什麼」(Context Engineering)。

什麼是 Context Engineering?

根據 Anthropic 的定義,Context 指的是「在對 LLM 取樣時所包含的所有 token」,而 Context Engineering 就是「針對 LLM 固有的限制,優化這些 token 的效用」。LangChain 的文章 則給了更實務的定義:

Context Engineering 是建構動態系統,以正確的格式提供正確的資訊和工具,讓 LLM 能夠合理地完成任務。

簡單來說,Prompt Engineering 關注「怎麼問」,用詞彙和技巧調整 AI 行為;Context Engineering 關注「給什麼」,用結構化的資訊架構引導 AI。

為什麼 Context Engineering 更重要?

大多數 AI Agent 失敗的原因,不是模型能力不足,而是沒有提供適當的背景資訊給模型

LLM 有一個特性叫 Context Rot:隨著 Context Window 中的 token 數量增加,模型回憶資訊的準確度會下降。Context 是有限資源,不是塞越多越好,而是要精準地提供「對的資訊」。AI 的智商取決於模型,但 AI 的準確度取決於 Context。

前端開發的四種 Context

在演講中,我把 Context Engineering 對應到前端開發的四個階段,整理成四種 Context 類型:

Data Context(資料的形狀)

對應需求分析階段。就是 TypeScript 的 Types 和 Interfaces。

還記得前面講的嗎?先定義 Product interface,裡面有 status 欄位,AI 就知道要處理缺貨狀態。資料的形狀決定了 AI 要處理什麼,這就是「給方向,不給答案」,你定義結構,AI 填內容。

Visual Context(視覺的邊界)

對應視覺切版階段。就是 Design Tokens。

把顏色、間距、圓角都定義好綁進 Tailwind,AI 就只能在這個範圍內選擇。這是「限制選擇範圍」的概念,與其寫一堆「不要用 #ff0000」,不如直接定義「只能用這幾個顏色」。限制選擇,就是提高準確度。

Constraint Context(規則與禁令)

對應元件實作階段。就是 .cursorrulesCLAUDE.md

告訴 AI:NEVER use anyALWAYS use Composition API記得加 .value。明確的禁止和要求,讓 AI 知道邊界在哪。這裡「給範例比給規則有效」,與其寫一堆規則,不如在 Rules 檔案裡放幾個標準的元件範例讓 AI 參考。

Knowledge Context(即時的規格與知識)

對應前後端整合階段。這裡有兩個面向:

一個是 API 規格。如果有 OpenAPI (Swagger) spec,AI 可以根據正確的 API 合約生成 Client Code,不用你一個一個欄位跟它講。這是跟後端協作的基礎。

另一個是即時知識。AI 的訓練資料可能停在一年前,它不知道 Vue 3.5 可以解構 props。透過 MCP,AI 可以即時查詢最新文件、資料庫 Schema,用對的方式寫 Code。

還沒導入 MCP 也沒關係,先把 openapi.yamlschema.sql 放在專案的 docs/ 資料夾,在規則檔裡指引 AI 去讀,也是一個好的開始。

為什麼叫「工程」而不是「技巧」?因為這是系統性的方法。你不是在賭 AI 這次會不會寫對,而是在建構一個環境,讓 AI 在這個環境裡面只能寫對。

這四個 Context 剛好對應到前面講的四個開發階段,這不是巧合。 AI 時代的前端架構,其實就是在為 AI 建構一個高品質的 Context 環境。


會眾 Q&A 補充

由於時間關係,在現場沒能進行 Q&A,所以我在這裡整理幾個會眾透過 Slido 提出的問題。

Q1: Design Token 感覺是設計師的工作,前端該怎麼辦?

在讓 AI 寫前端畫面時,定義 design token 或畫面相關要給的規格感覺是設計師的工作,我們身為前端工程師該怎麼自己通靈規格,或改怎麼跟設計師要求規格?或是我們身為前端工程師,有推薦該如何學習哪些設計概念以加強 AI 的產出嗎?

很多前端會覺得「這是設計師的事吧?」,但現實是,很多時候我們根本沒有設計師,或者設計師沒空理你。這時候前端自己把 Token 定義起來,其實是在救自己。

如果你有設計師,可以主動拿著 Design Token 的概念去跟他聊,說明這樣做可以讓開發更一致、修改更方便。很多設計師其實樂見這種系統化的做法,只是不知道怎麼開始。Figma 本身就有 Variables 功能可以定義 Design Token。

如果設計稿已經給了,那就自己整理出重複使用的顏色、間距、圓角。你甚至可以用 AI 幫你分析:「請從這份設計稿中整理出常用的顏色、間距、字體大小」。

另外推薦了解一些基本設計概念:8px Grid System(間距用 8 的倍數)、Typography Scale(字體大小有規律的比例)、Color System(主色、輔色、語意色)。不需要變成設計師,但這些知識能讓你跟設計師溝通更順暢。

實在不想自己搞的話,Tailwind 本身的預設值就是經過設計的系統,直接用 text-lgp-4rounded-md 這些 class,已經比亂猜數值好很多了。


Q2: AI 可以幫忙統合不同團隊的程式碼嗎?

假設一個官網有英文版和中文版,是個別由不同團隊開發的網站,所以開發方法、初始定義的樣式、元件模組都是個別刻的。但後來希望能盡量統合成一致、同步規格,以便加快復刻的範例。定義成一致的規格當作 design token 給 AI 去復刻?

可以,但別想一步到位。

我會建議這樣做:先讓 AI 分別讀兩邊的程式碼,整理出各自的命名慣例、元件結構、樣式寫法。這一步是為了搞清楚「差異在哪」。

接下來,「要統一成哪一種」這件事得由人來決定。哪邊的寫法比較好維護?哪邊的團隊比較大需要遷就?有沒有第三種更好的方式?這些 AI 沒辦法幫你判斷。

決定好之後,把統一的 Design Token、元件 Props 介面、Coding Style 寫成規格文件,這份文件就會成為 AI 的 Context。

最後是漸進式重構。不要想一次全改,從新功能開始用統一規格,舊的部分有碰到再逐步調整就好。

不過說真的,這種跨團隊的統合,溝通成本往往比技術成本高。AI 可以幫你產出程式碼,但「讓兩個團隊同意用同一套規格」這件事,還是得靠人去喬。


Q3: 實務上很難全部做到,技術債持續增加怎麼辦?

概念上能理解講者講的各個原則、執行要注意的細項,但是實務上覺得還是很難全部做到,尤其目前專案已經越來越多技術債增加的感覺。想聽講者對實務上克服的看法。

講是講「理想狀態」,但我自己也沒辦法 100% 做到(笑)。重點不是追求完美,而是「不要讓新的債繼續堆上去」。

如果現在專案一團亂,不可能一夜之間變好。 我的做法是「每次碰到的程式碼,離開時比來時乾淨一點」就好。 舊的技術債先放著,但新功能開始導入 Interface First、Design Token 這些做法,至少新的部分不會繼續堆債。

要挑的話,先挑 ROI 高的做。 像是建立 Rules 檔案(.cursorrulesCLAUDE.md),當我們規則寫得好,寫一次就能讓 AI 每次都遵守,投資報酬率超高。 Design Token 也是,建立一次之後效益是累積的。

另外,技術債很多時候來自「團隊沒有共識」。與其靠 Code Review 抓問題,不如把規則寫進 ESLint、寫進 AI Rules,用工具自動化的約束比口頭約定可靠多了。

還有,AI 很擅長做「把所有 var 改成 const」、「把 Options API 改成 Composition API」 之類的重構, 搭配 MCP 讓 AI 去讀官方文件,AI 可以幫你把舊程式碼升級到新標準,最後我們只要驗收就好。

這樣就可以把人力放在更高價值的地方,讓 AI 當苦力,人專注在架構決策就好。


Q4: 有些規則是 AI 產出後才發現需要的,怎麼辦?

規格要在 AI 產出前先寫清楚,避免規則後補,但有些細節有可能 AI 產出後才發現我希望遵循某些規則或細節,算是一種不理解自己需求或是無法清楚表達所有細節的狀況?請問這狀況要如何改善?

這完全正常,不需要太焦慮。規則本來就是「迭代」出來的,不可能一開始就想到所有細節。

我的做法是:AI 產出一段程式碼,發現「欸,這邊應該要怎樣怎樣」,就立刻把這個規則加進 Rules 檔案,然後再讓 AI 讀取新的 Rules,重新產出。 這樣不斷累積規則,AI 寫出來的東西就會越來越符合團隊需求。

我們可以建立一份「AI 踩過的坑」清單,每次 AI 做錯什麼就記下來變成規則。這份清單會越來越完整,最後就是你團隊專屬的 Best Practice。

其實這是一個學習過程:你對 AI 的理解在加深,AI 對你專案的理解也在累積(透過 Rules 檔案)。前幾次會比較痛苦,後面會越來越順。

不要覺得這是「不理解自己需求」。很多細節本來就是做了才會浮現,傳統開發也一樣, 寫著寫著才發現「啊,這邊需要處理 xxx 狀況」,差別只是以前自己寫自己改,現在是跟 AI 協作而已。


Q5: 只會寫 code 的工程師是否岌岌可危?

看起來用 AI coding 最重要的是讓它能理解需求、想要的工具以及目的。但這樣來說,coding 對我們工程師來說已經不是最重要的,而是「釐清」。也想請教說,是不是「只會寫 code」的工程師未來是不是岌岌可危,或是我們該要有怎麼樣的 mindset?

這題我想拆開來聊。

「會寫 code」變成基本功,而不是全部價值

把「會寫 code」比喻成「會用 Word」,聽起來有點誇張,但想講的是:以前「把需求轉成程式碼」這個轉譯過程本身就很稀有、有價值。現在有 AI,「把自然語言變成程式碼」這一段越來越可以被工具代勞,但「寫什麼、為什麼要這樣寫、整體系統要長什麼樣子」還是人決定。

所以 code 變成「你跟 AI 溝通的語言」和「你驗收成果的工具」,而不是你唯一的產出。但這不代表你可以不會寫 code,不會寫 code,基本上很難「管得住」AI 寫出來的東西。

真正的價值在「AI 不擅長」的地方

釐清問題 / 需求分析:AI 可以幫忙整理、brainstorm,但真正的需求來自商業目標、限制、風險、時間、預算,這些是「政治 + 商業 + 人性」的綜合產物。AI 可以記住、推理已知的規則,但它不會主動 challenge「這個需求有意義嗎?」、不會問「這個 KPI 設對了嗎?」、沒有「政治後果意識」與「長期責任感」。能清楚說出「我們到底在解什麼問題?不做這功能會怎樣?」這個能力超值錢。

系統 / 架構設計:AI 很會「給你某個檔案的程式碼」,但「整個系統要拆幾個 service?資料流怎麼走?未來容易改嗎?安全性?擴充性?」這些高維度的 trade-off,牽涉到團隊能力、既有系統、部署環境、組織文化。這種「設計空間的決策」,AI 可以給選項,但最後要你扛責任。

品質把關:包含 code review、測試策略、觀察指標、風險評估。AI 可以幫你寫測試、生成 code,但「測試有沒有測到重點?這個改動會不會踩到別的系統?這個實作在高流量、高錯誤率情境下撐得住嗎?」這些是經驗 + 系統性思維,不是單純語言模型就能搞定的。

溝通協調:AI 可以幫很多「低層工作」,像是整理會議重點、把技術說明翻成 PM 聽得懂的話、列 pro/cons 當溝通素材。但真正難的是:判斷「現在這個場要講真話還是講安慰版」、在衝突中拿捏立場、願意站出來說「現在的做法會爆,大家要不要一起調整?」這種「關係 + 風險 + 誠實度」的東西,靠的是人。

一個重要前提:你本來就要有不錯的工程基礎

「大家都來當管 AI 的人」這句話有個現實前提:你要管得動 AI,基本盤還是要讀得懂 code、看得出異常、知道什麼是壞味道(code smell)、懂基本的設計、測試、部署。不然就會變成在「相信 AI」vs「更相信 AI」之間做選擇,而不是「判斷它到底對不對」。

如果有人解讀成「那我就不用學那麼扎實的 coding 了,反正以後 AI 會寫」,那就會悲劇。比較健康的理解是:學 code 的目的,從「自己一行一行刻」變成「能快速理解、重構、組合、把關」。

不要害怕 AI,把它當成一個很會寫 code 但需要你指導的 Junior 就好。未來的決勝點在於:你能不能駕馭 AI,幫你寫出高品質的系統。


這場演講的核心訊息是:AI 是強大的工具,但工具需要人來駕馭。

Vibe Coding 的問題不在於用 AI,而在於「無腦地用」。當我們建立好 Interface、Design Token、Rules 檔案這些 Context,AI 的產出品質會大幅提升。

前端沒有死,死掉的是舊的開發模式。

我常跟團隊說,雖然 AI 幫我們寫 code,但每一次 Commit, PR 都是自己的名字在背書,當 Git Blame 被靠北的時候躲也躲不掉。

業界在談 Responsible AI,講的是倫理、公平、透明。但對我們開發者來說,「負責任地使用 AI」更實際的意思是:AI 幫你寫,你為它的產出買單。 不是不用,而是要用得明白、用得有把握,對最終上線的每一行 code 負責。

從前的前端,我們會強調我們是「橋接設計與後端的拱心石」,現在的前端有了 AI 的幫助,前端的價值早就不只是「把頁面刻出來」而已。 當我們把效能做到極致,使用者留存就會提高;當我們用動畫、視覺化、沉浸式體驗串聯情緒,使用者對品牌的記憶就會更深;當我們讓 AI 與產品互動自然融合,整個產品就會打開新的成長空間。

現在的前端生態,有框架、有工具、有 AI 輔助,從 idea 發想到上線可以快到不可思議。 如果你想深入創新,有 Edge Runtime、有 Streaming UI、有 AI 原生架構,讓你在未知領域挖掘自己的金礦。

我認為 AI 與前端的交會點,就是未來最大的機會。

這是我們與 AI 共存的最好時代,也是最考驗架構能力的時代。

JSDC 2025 演講現場照片

感謝 JSDC 2025 的邀請,以及現場所有參與的會眾。期待明年再見!

簡報連結:


最後預告一下

12 月我在 WebConf 2025 也有一場 「AI 只懂 React?Vue.js 也能 Vibe Coding!」的演講,這場的內容預計會是這場的延伸,更聚焦在實務上 Vue.js 生態系如何與 AI 協作,以及 Vue.js 開發者該注意的 AI 陷阱,歡迎有興趣的朋友來聽!

然後再預告一下 😏

v-conf 2026

💬 留言討論

Released under the MIT License.