TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南
TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南

OpenUI 是 W&B 開源的 AI 介面產生器,用文字描述生成可預覽、可轉成 React 的網頁元件。官方示範站已斷線近一年、pip 套件名被無關專案佔用,目前可用路徑是 docker 自架:一條指令開機、模型引擎自選、全案零遙測,本文附自架實測與兩個安裝陷阱。
用 AI 摘要這篇文章:
想要一個登入表單、一張產品卡片或一個定價區塊,把想法用一兩句話講出來,讓它直接變成看得到、改得到的網頁元件,這是 OpenUI 在做的事。它是機器學習平台 Weights & Biases(W&B)在 2024 年開源的專案,在 GitHub 上累積了 22,619 顆星與 2,059 次 fork,授權是寬鬆的 Apache-2.0。先把結論說完:這個專案目前處於休眠狀態,官方雲端示範站斷線快一年沒人修,Python 套件名也被另一個無關的舊專案佔走,能用的路只剩自架一條;而自架這條路我在 macOS 上實際跑過,是通的,而且自架版編出來的介面完全不帶遙測。它適合想在完全自控的環境裡玩「文字生介面」的開發者,不適合想註冊帳號就上手的人。
W&B 自己給它的定位寫在 README 第一段:這是他們內部用來測試與原型化下一代 LLM 工具的實驗場。README 開頭的 Overview 段還有一句更誠實的自評,原文是 “It’s like v0 but open source and not as polished”,翻成白話就是「類似 v0,開源,但沒那麼拋光」。這句作者宣稱值得當成全文的期望值基準:把它理解成一間大公司丟出來的實驗工具,而不是一項產品,後面遇到的每個現象都會合理。
2026 年 10 月 19 日我對 README 上標註 Live Demo 的 openui.fly.dev 做了兩次連線測試,第一次等了 30 秒毫無回應,第二次等了 50 秒收到 503 錯誤。這不是新的消息:GitHub issue #250 的標題就叫「https://openui.fly.dev/ is down」,2025 年 11 月 5 日開立,到今天仍然是開啟狀態,沒有官方回覆、沒有指派處理人,僅有的留言是另一個使用者在一個多月後留下一句 +1。README 至今沒有改掉這條連結,跟著官方文件走的人,第一步就會撞牆。

有人可能會問:W&B 的 GitHub Pages 上不是還有一個 openui 頁面?那個頁面我也抓下來看過,它其實是生成結果的預覽沙箱,一個等著接收網頁內容的空殼,直接打開只會看到空白頁,不是能用的示範站。換句話說,官方親手經營的入口全部失效,想要試用,自架是唯一的方式。
休眠的不只是示範站,還有程式碼本身。看 main 分支的提交記錄:2026 年 4 月以來只有 4 次提交,全是相依套件機器人與安全性維護雜務,最後一次停在 2026 年 6 月 30 日;有實質功能的開發在 2025 年中就停了。官方 Docker 映像檔的 latest 版本建立於 2025 年 5 月 24 日,之後沒有再更新過。整個專案的貢獻結構也一目瞭然:主力維護者 vanpelt(W&B 的 Chris Van Pelt)一人提交 167 次,第二名是只提相依套件更新的機器人,6 次。這種單人扛旗的結構,作者注意力轉移就等於專案停擺。開源工具停更不等於不能用,之前寫過的靜態圖片編輯器 Fabritor 停更兩年照樣能跑,磁力連結預覽工具 Link Preview 也是介面死了兩年、引擎照常運作;差別在於你要知道自己接手的是現狀,不是一個會進化的產品。

網路上流傳的舊教學會教你 pip install openui,這條指令今天執行會裝到一個完全無關的東西。PyPI 上的 openui 套件屬於一位韓國開發者,版本停在 2023 年 5 月 18 日上架的 0.0.1,說明文字是韓文,首頁連向另一個 GitHub 專案。W&B 的 OpenUI 從來沒有用這個名字發過 PyPI 套件,時間序也對不上:PyPI 套件比 W&B 專案的建立時間還早了將近十個月。
現行 README 給的安裝路徑只有兩條,都是有效的。第一條是 Docker:docker run -p 7878:7878 ghcr.io/wandb/openui,映像檔約 206MB,Apple Silicon 上有原生 arm64 版。第二條是從原始碼跑,用 uv 建環境後執行 python -m openui。不想在本機裝任何東西的人,倉庫裡還附了開發容器設定,直接開 GitHub Codespace 就有預載環境,README 建議記憶體至少 16GB,環境會自動裝好 Ollama 並拉下 llava 模型,等於一條免安裝的評估路徑。這個專案沒有發布過任何正式版本,GitHub 的 releases 頁面是空的,版本概念只存在於 Docker 映像檔標籤裡。
實際把映像檔拉下來跑,開機過程比預期乾淨:容器起動後 uvicorn 在 7878 埠提供服務,背景自動拉起一個 LiteLLM 代理,這層代理就是它「接什麼引擎都能用」的關鍵。打開瀏覽器連到 localhost:7878,介面直接載入,本機模式自動配發工作階段,不需要任何登入。這是設計上的刻意分工:GitHub 帳號登入、每日 70 萬 token 的用量上限,這些是當年官方託管版的管理機制,自架版一律不啟用。
第一個反常的地方出現在模型選單。什麼金鑰都不設的話,模型清單是空的:後端會同時去問 OpenAI、Groq、Ollama 與 LiteLLM 四個來源,沒有半個來源有東西可回。裝好打開卻只看到空清單,這不是壞掉,是它把引擎選擇權整個交給你。
第二個坑就比較兇了,而且官方文件寫錯了。README 說 OPENAI_COMPATIBLE_API_KEY 是可選的,只設 OPENAI_COMPATIBLE_ENDPOINT 指向自己的相容端點就能用;實際測試的結果是後端在開機階段直接崩潰,日誌裡是 OpenAI 客戶端拋出的「api_key 必須設定」錯誤,而且這個錯誤沒有被接住。對照原始碼,產生引擎設定的函式在沒有金鑰時直接把空值塞給客戶端建構子,README 的「可選」與程式的「必填」是矛盾的。解法很簡單,隨便給一個假值當金鑰就能開機,但如果你照著官方文件逐字操作,會在這裡卡上一段時間。
把端點與金鑰補上之後,整條流程就通了:自訂端點提供的模型會自動出現在介面的模型選單裡,輸入一段介面描述送出,生成請求經過後端轉發,回傳的 HTML 放進預覽沙箱即時渲染,畫面上出現了完整的登入表單。本篇的實測集中在自架與接引擎這一層,生成內容的品質取決於你接的模型,這裡不對它下判斷。

OpenUI 支援的引擎全靠環境變數宣告:OpenAI、Groq、Gemini、Anthropic、Cohere、Mistral 各有對應的金鑰變數,另外有一組 OPENAI_COMPATIBLE_ENDPOINT 加 OPENAI_COMPATIBLE_API_KEY 可以接任何 OpenAI 相容服務,本機跑 Ollama 則用 OLLAMA_HOST 指過去。這種「引擎自帶」的設計與之前介紹過的 BYOK 手機聊天用戶端 是同一個思路:工具只做介面,模型自己挑,成本與資料流向自己決定。
接引擎時還有一個容易漏掉的能力邊界:介面支援上傳截圖、讓模型看著現有畫面照你的要求修改,但這需要模型本身支援圖片輸入。README 特別註明 llava 是少數支援圖片的 Ollama 模型之一,換句話說,接本機引擎時模型選擇會直接決定「看圖改圖」這條路通不通,不是所有模型都能吃截圖。
這裡有個 2025 年停更留下的具後遺症:自動生成的引擎設定把每家服務綁死在寫程式當時的型號清單上。設了 ANTHROPIC_API_KEY,選單裡只會出現 claude-3-opus、claude-3-5-sonnet、claude-3-haiku 三個 2024 年的舊型號;設 Gemini 金鑰,拿到的是 1.5 系列。要用更新的模型,得自己寫一份 LiteLLM 設定檔覆寫,放在執行目錄、容器的 /app/ 底下,或用環境變數指定路徑。這不算難,但已經脫離「設個金鑰就能用」的範圍,是採用前要有心理準備的維運成本。
隱私與資料流向是這類工具最該問的問題,OpenUI 在這部分的答案相當乾淨。遙測這層先看:整個專案裡唯一的追蹤碼是一段 Google Analytics,而且被條件式鎖在官方託管模式下,自架建置裡這個條件永遠不成立,追蹤碼連載入都不會。W&B 自家的觀測工具 weave 確實整合在程式裡,但只有在環境或 .netrc 裡找得到 WANDB_API_KEY 時才會啟用,屬於主動開啟而非預設上線。至於你輸入的提示與生成內容,只會送往你自己設定的模型端點,接雲端 API 就進該家服務,接 Ollama 就全程不出本機,OpenUI 本身不經手。
架構上有一個值得記下來的設計:瀏覽器端拿的是一個寫死的假金鑰,所有生成請求都打向自架後端的同一個網域路徑,真正的金鑰只存在後端環境變數裡。金鑰永遠不進瀏覽器,這在把實例分享給團隊共用的場景下,金鑰管理會單純很多。生成紀錄也是同樣的邏輯:反覆修改的過程會以版本形式保留、側欄可以回看每個中間版本,這些紀錄存在瀏覽器自己的儲存空間裡,換台電腦開就不會在。
要留意的細節只有一個,而且跟存取方式有關。用 localhost 開啟時,生成結果的預覽頁由本機服務;但如果用區域 IP 或網域名稱去連自己架的實例,預覽框架會改指向 W&B 的 GitHub Pages 頁面,生成的 HTML 會被送到那個頁面裡渲染。那是一個純靜態頁、沒有任何遙測,但渲染這件事確實發生在 W&B 控制的網域上。要全程留在本機,養成用 localhost 開的習慣就好。
生成的產物也要設對期待:系統提示詞把輸出綁定在 Tailwind CSS 加上一組 shadcn 風格的色彩變數上,佔位圖用的是 placehold.co,互動用原生 ES6 寫;改完滿意後,再由第二段提示詞把 HTML 轉成 React、Svelte 或 Web Components 等框架程式碼。它的單位是單頁元件,不是多頁網站,拿來做原型與靈感驗證剛好,拿來生成整站會失望。還有個小彩蛋:原始碼裡有個自動修正會把 Tailwind 的灰色系從 gray 換成 zinc,作者對配色的固執也寫進了程式裡。
該裝的人:已經有在用的大型語言模型金鑰或本機模型,想要一個完全自控、零遙測的介面原型沙盒,而且有能力自己寫 LiteLLM 設定檔的開發者。對這種人來說,一條 Docker 指令換到一個引擎隨便挑的生成環境,加上 Apache-2.0 授權可以自由改造,是划算的交易。如果你平常在做 UI 設計輔助的工作流,它也可以跟既有的 UI 設計輔助工具接在同一條生產線上。
別碰的人:想要開箱即用、有官方支援、持續更新的產品的人。示範站斷線近一年、單人維護、映像檔停在 2025 年 5 月,這三件事加起來意味著遇到 bug 沒有人會來救你,模型清單也不會自己長出新型號。順帶一提,自架環境裡有個會嚇到人的細節:還沒命名的新工作階段,標題列會顯示成「Unknown Error」配一個警告圖示,這是原始碼裡對空名稱的 fallback 寫法,不是真的壞了。
休眠的開源專案要不要撿,判斷標準從來只有一條:它現在的樣子對你有沒有用。OpenUI 的現在式是一個介面乾淨、邊界清楚、引擎完全自選的原型工具,代價是所有的事自己來。如果你的工作流程裡本來就有一個順手的模型端點,給它一個下午的 Docker 時間是合理的;如果沒有,先去把模型端點準備好再回來。