<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>設計系統 on KnightLi的博客</title>
        <link>https://knightli.com/zh-tw/tags/%E8%A8%AD%E8%A8%88%E7%B3%BB%E7%B5%B1/</link>
        <description>Recent content in 設計系統 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Sun, 12 Jul 2026 12:15:00 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/%E8%A8%AD%E8%A8%88%E7%B3%BB%E7%B5%B1/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Astryx 怎麼讓 AI 生成前端接入設計系統：React 元件、主題與驗收約束</title>
        <link>https://knightli.com/zh-tw/2026/07/12/astryx-ai-generated-frontend-react-design-system-theme-guide/</link>
        <pubDate>Sun, 12 Jul 2026 12:15:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/07/12/astryx-ai-generated-frontend-react-design-system-theme-guide/</guid>
        <description>&lt;p&gt;讓 AI 生成一個頁面不難；難的是第二、第三個頁面仍沿用正確顏色、間距、元件狀態、無障礙屬性與互動邊界。Astryx 是 Meta 開源的 React 設計系統，官方稱其仍在 Beta，提供 150 多個可存取元件、主題、深色模式、範本與 CLI，並可用 CSS 自訂屬性覆寫主題。&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/astryx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;官方儲存庫&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;把 Astryx 接給 Agent 的目的不是讓模型自由設計，而是讓人與 Agent 使用同一套元件與文件。&lt;/p&gt;
&lt;h2 id=&#34;先判斷是否適合引入&#34;&gt;先判斷是否適合引入
&lt;/h2&gt;&lt;p&gt;適合的專案通常具備：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;React 專案已有多個後台頁，AI 生成 UI 開始風格漂移；&lt;/li&gt;
&lt;li&gt;團隊需要統一按鈕、表單、彈窗、空狀態與深色模式；&lt;/li&gt;
&lt;li&gt;希望 Agent 優先組合既有元件，而非每次手寫 CSS；&lt;/li&gt;
&lt;li&gt;可在隔離環境驗證並鎖定 Beta 依賴版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;若不是 React，或已有成熟內部元件庫，不必為追熱點重構。可將元件優先、token 優先、截圖驗收的方法移入既有系統。&lt;/p&gt;
&lt;h2 id=&#34;安裝與最小主題&#34;&gt;安裝與最小主題
&lt;/h2&gt;&lt;p&gt;官方範例套件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install @astryxdesign/core @astryxdesign/theme-neutral
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -D @astryxdesign/cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;先在獨立分支或小頁面驗證建置、樣式載入與深色模式，再擴展到應用入口。不要讓 Agent 直接替換全域樣式、路由殼或既有 token 檔案。&lt;/p&gt;
&lt;p&gt;主題應表達品牌約束，而不是讓每頁任意覆寫。把可調整的顏色、圓角、字型與間距寫進專案規則，讓 Agent 知道應復用什麼。&lt;/p&gt;
&lt;h3 id=&#34;先做小頁面不要替換應用外殼&#34;&gt;先做小頁面，不要替換應用外殼
&lt;/h3&gt;&lt;p&gt;從設定頁、篩選側欄或資料詳情卡等單一路由開始。列出目前字型、間距、色彩 token、互動狀態與元件，再讓 Agent 用 Astryx 重建一個區塊。保留路由、資料請求、權限判斷與全域樣式入口；設計系統只負責元件與主題，不承擔業務遷移。&lt;/p&gt;
&lt;p&gt;固定本地驗證順序：安裝後啟動開發伺服器；查看淺色與深色模式；用 Tab 走完表單、彈窗和按鈕；縮窄到行動寬度；最後跑既有測試或建置。每一步問題都記在該元件改動中，避免多頁接入後才發現 token 覆寫、CSS 優先序或焦點衝突。&lt;/p&gt;
&lt;p&gt;小頁面穩定後，把它作為參考實作，記錄允許套件、主題入口、元件匯入方式與不可改的全域檔案。後續 Agent 任務引用這份參考即可。&lt;/p&gt;
&lt;h2 id=&#34;給-agent-的專案級約束&#34;&gt;給 Agent 的專案級約束
&lt;/h2&gt;&lt;p&gt;把以下規則放入 &lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;CLAUDE.md&lt;/code&gt; 或 Skill：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 新页面优先使用 @astryxdesign 现有组件；新增自定义组件前先说明原因。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不新增全局 CSS reset，不修改既有主题 token。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 所有表单字段必须有可见 label、错误态和禁用态。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 完成后提供桌面和窄屏截图，并列出新增组件与交互状态。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不以截图相似为唯一验收；保留键盘操作和语义结构。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這比「用設計系統做儀表板」更可執行：Agent 有禁止項、復用路徑與交付物，審查者也能看出是否繞過元件庫。&lt;/p&gt;
&lt;h3 id=&#34;將輸入輸出與禁止項寫進任務單&#34;&gt;將輸入、輸出與禁止項寫進任務單
&lt;/h3&gt;&lt;p&gt;任務應列出頁面範圍、可用資料、允許修改的檔案與驗收截圖。例如只改 &lt;code&gt;src/features/orders/FilterPanel.tsx&lt;/code&gt;；復用既有查詢參數；不新增依賴、不改路由與 &lt;code&gt;theme.ts&lt;/code&gt;；提供桌面與窄屏截圖，並列出 Button、Select、Dialog 狀態。這可避免 Agent 為達成視覺效果順手改全域 reset、狀態管理或 API 層。&lt;/p&gt;
&lt;p&gt;複雜元件先要求結構草案：有哪些區塊、各自對應哪個 Astryx 元件、需要哪些 loading/error/empty 狀態。人工確認結構再寫程式。若設計稿超出元件庫，應調整設計或指定新元件維護者，而非塞入不可復用的臨時 CSS。&lt;/p&gt;
&lt;h2 id=&#34;用四層驗收減少-ui-漂移&#34;&gt;用四層驗收減少 UI 漂移
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;層級&lt;/th&gt;
          &lt;th&gt;檢查內容&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;元件&lt;/td&gt;
          &lt;td&gt;是否復用 Button、Input、Dialog 等既有元件，狀態是否完整&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主題&lt;/td&gt;
          &lt;td&gt;是否只用允許的 token 或 CSS 變數改變視覺&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;互動&lt;/td&gt;
          &lt;td&gt;鍵盤焦點、載入、錯誤、空狀態是否可用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;交付&lt;/td&gt;
          &lt;td&gt;建置是否通過、截圖是否覆蓋關鍵頁、是否有元件清單&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;視覺一致不是複製像素；真正應穩定的是可存取語義、狀態機、主題來源與可維護的元件邊界。&lt;/p&gt;
&lt;h2 id=&#34;可重複的驗收流程&#34;&gt;可重複的驗收流程
&lt;/h2&gt;&lt;p&gt;合入前先看 diff：是否新增繞過元件庫的全域樣式、寫死品牌色、修改無關檔案。瀏覽器中驗證正常資料、載入、空資料、API 失敗；表單另測必填、格式錯誤、禁用與送出中。只截正常態會掩蓋大多數回歸。&lt;/p&gt;
&lt;p&gt;最後以鍵盤完成一次關鍵流程：Tab 順序是否合理、焦點能否進出 Dialog、錯誤訊息是否關聯欄位、顏色對比是否足夠。將這些檢查放入 PR 範本，Agent 生成頁面也會受同一標準約束。&lt;/p&gt;
&lt;h2 id=&#34;常見誤區&#34;&gt;常見誤區
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;把 Beta 當成全站重構理由&lt;/strong&gt;：先鎖版，在單一功能域驗證升級成本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;讓 Agent 直接改元件內部&lt;/strong&gt;：優先組合與主題覆寫；確有需要才匯出或接管原始碼。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;每頁寫一套臨時 CSS&lt;/strong&gt;：設計系統只剩套件名稱，無法約束後續 Agent。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只驗截圖不驗互動&lt;/strong&gt;：截圖看不出 tab 順序、錯誤回饋與不能點擊的按鈕。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Astryx 可建立人與 Agent 共用的前端語言。先在少量頁面驗證元件、主題與驗收流程，再把規則沉澱到專案檔案；不要讓新設計系統成為另一層無人維護的抽象。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
