Lovable App 限制:為什麼專案在 15 個元件後會損壞
Lovable 實際上是什麼(以及不是什麼)
Lovable,前身為 GPT Engineer,是一款由 AI 驅動的應用程式構建工具,可從簡單的文字提示中建立 React + TypeScript 應用程式。它配備了 Supabase 後端、Tailwind CSS 樣式和 shadcn/ui 元件。簡單來說,它本質上是一個圍繞大型語言模型的工具,為你編寫程式碼、協助部署,並允許你通過「對話」進行更改。
那麼,有什麼好處呢?以下是快速清單:
- 快速原型設計:你可以在幾分鐘內得到一個可工作的 UI。如果你需要著陸頁、簡單的 CRUD 應用程式或基本儀表板,Lovable 能快速將這些整合在一起。
- 非開發者易用性:對於想要無需親自編寫程式碼就能拼湊功能原型的產品人員和設計師來說,這非常不錯。
- 順暢的 Supabase 整合:特別是對於簡單的用例,設定身份驗證和資料庫連接相當直截了當。
但等等。Lovable 並不像人類開發者那樣真正構建軟體。不是的。它完全是從你的提示中生成程式碼。它沒有對整個程式碼庫的持久記憶,特別是當你的專案超過其上下文視窗的閾值時。這個小細節在你的應用程式擴大時會變成一個大問題。

15 元件牆:專案為什麼會崩潰
我喜歡稱這種現象為 15 元件牆。確切的數字不是嚴格的;對某些人來說,這發生在 12 個元件,對其他人來說可能是 20 個。但有一個一致的模式,其中一切就開始瓦解。
為什麼是 15 呢?這歸結為代幣數學。每個 React 元件,特別是裝飾有 Tailwind、props、狀態管理和一點業務邏輯的元件,運行在 80-200 行程式碼之間。一旦你有 15 個元件,你大約在看 1,500-3,000 行生成的程式碼。加上你的整個提示歷史記錄和 Lovable 依賴的內部系統提示,你正在逼近語言模型的有效上下文視窗。
以下是結果:
症狀 1:樣式回歸
你費力地在幾個提示上精煉了你的導航欄。然後,Lovable 生成一個新的頁面元件,猜猜看?導航欄的內邊距移位、懸停狀態消失,或行動版響應式行為變得混亂。你沒有要求這些混亂。
症狀 2:邏輯衝突
你的身份驗證守衛運作得很好。加入一個新功能,砰的一聲,突然未經身份驗證的使用者就能長驅直入。AI 沒有故意破壞它;它只是在生成新程式碼時失去了對邏輯的追蹤。
症狀 3:重複和矛盾的程式碼
不知道從何而起,你有 Lovable 創建你的程式碼庫已經擁有的公用程式函數。更糟的是,它用略微不同的行為製作新版本。現在你有兩個 formatDate 函數,不同的元件使用不同的函數 — 萬歲,混亂!
症狀 4:導入/導出混亂
隨著你的元件列表蓬勃發展,Lovable 愉快地生成破碎的導入路徑、循環依賴或對大約三個提示前重新命名的元件的參考。
最關鍵的是?每個單獨的提示回應看起來都完全沒問題 — 當單獨查看時。AI 在有限的上下文中盡其所能,但它只是沒有足夠的了。
上下文視窗回歸解釋
好的,讓我們變得有點技術性。理解這個實際上會幫助你避免這個問題。
Lovable 使用大型語言模型(我們談的是 Claude 或 GPT-4 等級,可能兩者都用),其上下文視窗在 128K 到 200K 代幣之間。聽起來很大,對吧?嗯,當你分解它時就不是了。
以下是 Lovable 工作階段的大致代幣預算:
| 代幣消耗者 | 估計代幣 | 百分比 |
|---|---|---|
| 系統提示和指示 | 5,000-15,000 | 5-10% |
| 你的提示歷史記錄 | 10,000-50,000 | 10-30% |
| 當前程式碼庫上下文 | 20,000-80,000 | 15-50% |
| 生成的回應 | 2,000-8,000 | 2-5% |
| 安全邊際/開銷 | 10,000-20,000 | 5-15% |
當你的程式碼庫達到一定大小時,Lovable 開始分出輕重緩急,決定在上下文中包含哪些程式碼。它使用一種稱為 RAG(檢索擴增生成)的方法以及一些猜測來挑選對你當前提示最重要的文件。劇透:它並不總是猜對。
潛在的問題是 上下文視窗回歸 — AI 修改了它有不完整資訊的文件,用通常是完全錯誤的假設填補空白。
我看過這一次又一次地發生:
// 提示前你的元件是什麼樣子
export const UserProfile = ({ user, onUpdate, showAdmin }: UserProfileProps) => {
const [isEditing, setIsEditing] = useState(false);
const { role } = useAuth();
// ... 50 行精心設計的邏輯
return (
// ... 處理管理員檢視、編輯模式等的 JSX
);
};
// Lovable 在你要求「新增一個生物欄位」後重新生成的內容
export const UserProfile = ({ user }: { user: User }) => {
// 遺失:onUpdate prop、showAdmin prop、useAuth hook、isEditing state
// 新增:生物欄位,但其他一切都簡化/破碎
return (
// ... 簡化的 JSX 缺少原始功能的一半
);
};
AI 沒有看到完整的元件。它根據不完整的上下文和對「UserProfile」元件應該是什麼樣子的概括性想法拼湊了一個版本。你的特定邏輯?消失了。
最常見的錯誤和擴展問題
通過 Reddit、Discord 和我自己的實踐經驗,以下是最常見的問題清單。
1. Supabase 行級安全衝突
當你新增功能時,Lovable 生成的 RLS 政策開始相互踩踏。在有多個關係的幾個表之後,這些政策變成了令人困惑的混亂。在某些情況下,生成新功能導致 Lovable 完全刪除現有的 RLS 政策。
2. 狀態管理崩潰
Lovable 將所有內容預設為本地 React 狀態(useState)。很好…直到它不好為止。一旦你需要跨元件的共享狀態,祝你好運。AI 可能會引入 React Context、prop 鑽取,甚至 Zustand — 它此刻喜歡什麼。
3. 路由不一致
一旦你有大約 10 頁,路由就開始相互衝突。受保護的路由失去了守衛。動態路由的參數被誤處理。我也見過 Lovable 生成重複的路由定義。
4. Tailwind 類別衝突和特異性戰爭
這個會讓你發瘋。內聯生成的 Tailwind 類別可能會衝突。類似 className="w-full max-w-md w-[500px]" 的東西出現 — 三個寬度聲明為單個元素而戰。
5. API 呼叫重複
Lovable 不是重複使用現有的 API 公用程式函數,而是在元件中間直接生成新的 fetch 或 supabase.from() 呼叫。到第 15 個元件,相同的資料庫查詢可能會在整個程式碼庫中的 6 個隱藏地點浮動。
6. TypeScript 類型侵蝕
最初潔淨的 TypeScript 類型?逐漸侵蝕。隨著複雜性增加,Lovable 預設為 any,拋出重複的類型定義,或以一種破壞其他元件的方式悄悄縮小類型。
7. 行動版響應式回歸
這個可能是最令人煩惱的錯誤。你把響應式設計整理得很整齊,進行桌面版改變,砰!行動版就壞了。AI 經常在重組元件時去掉那些所有重要的響應式斷點類別。

真實基準:Lovable 在哪裡崩潰
我嘗試用不同的工具構建相同的東西 — 一個具有身份驗證、CRUD 操作、團隊管理和儀表板的專案管理工具。Lovable、Bolt.new、Cursor 和一個好的舊 Next.js 設定。以下是發生的事情:
| 度量 | Lovable | Bolt.new | Cursor + Next.js | 手動 Next.js |
|---|---|---|---|---|
| 工作原型用時 | 25 分鐘 | 30 分鐘 | 2 小時 | 8 小時 |
| 第一次回歸前的元件 | 14 | 11 | N/A* | N/A |
| 20 個元件時需要手動修復的錯誤 | 12 | 15 | 3 | 0 |
| 專案結束時的程式碼品質 (1-10) | 3 | 3 | 7 | 9 |
| 能夠部署到生產環境嗎? | 否 | 否 | 是,需要工作 | 是 |
| 包括錯誤修復的總時間 | 12 小時 | 14 小時 | 6 小時 | 8 小時 |
* Cursor 不會遇到牆,因為它在你的真實檔案系統中直接運作。
最後一列說得很多。Lovable 到原型的速度無與倫比,但達到生產就緒?它會吞掉所有節省的時間,甚至更多,修復它造成的混亂。
加上成本。截至 2025 年中期,Lovable 的範圍從 $20/月(入門級,訊息點數有限)到 $100/月(團隊)。當你消耗訊息點數只是為了修復問題時,那個入門級計畫會很快用完。我用了 200 多條訊息來撤銷一個適度複雜的應用程式上的回歸。
實際有幫助的解決方法
考慮到所有這些警告,有方法可以延伸 Lovable 的有用性範圍:
固定你的關鍵元件
向 Lovable 明確說明哪些文件不應被修改:
不要修改以下文件:
- src/components/Navigation.tsx
- src/components/AuthGuard.tsx
- src/lib/supabase.ts
- src/types/index.ts
只建立或修改與新設定頁面相關的文件。
它不是萬無一失的,但它有助於緩解回歸。
使用原子提示
每個提示堅持單一更改。與其「新增一個具有使用者偏好設定、通知控制和主題切換器的設定頁面」,不如將其分成三個單獨的請求。較小的更改等於更小的上下文溢位風險。
外部匯出和編輯
讓 Lovable 與 GitHub 同步並加以利用。新增主要功能後:
- 推送到 GitHub
- 在本地拉下並檢視
- 手動修復任何問題
- 推送修復
- 與 Lovable 同步
這種 AI 生成與人工觸摸的混合是我發現的最好配方。
建立類型優先方法
在早期建立一個 types.ts 文件,並明確參考它:
使用 src/types/index.ts 中定義的類型(User、Project、Task、Team),建立一個 TaskList 元件,該元件...
這給了 Lovable 一個堅實的錨點,顯著減少類型侵蝕。
策略性地啟動新對話
新對話,新上下文。有時使用對程式碼庫的簡明描述重置聊天執行緒的效果神奇,比冗長的持續執行緒產生更潔淨的結果。
何時從 Lovable 遷移
以下是何時用合適的開發交換工具:
- 你花更多時間修復而不是構建。 當開始發生這種情況時,嗯,是時候重新考慮了。
- 出現複雜的業務邏輯。 多步驟工作流、複雜的授權、即時功能、支付 — 這些要求人類的聰慧。
- 效能很關鍵。 Lovable 可以啟動你,但為了進階最佳化,你需要具有正確工具的專家之手。
- 處理真實資料。 不要冒 AI 生成程式碼用於敏感、真實使用者資料的風險 — 特別是圍繞身份驗證、支付或個人識別資訊。
- 你需要可靠的 CI/CD 和測試。 Lovable 不為你編寫測試。誰想向生產部署未經測試的程式碼?
遷移相當直截了當:匯出到 GitHub,建立一個真實的 Next.js 或 Astro 專案,重構、新增測試並設定強大的部署流程。
有一個經驗證的 Lovable 原型?恭喜。現在,真正構建它。那是我們介入的地方,通過我們的 無頭 CMS 開發 和 自訂開發服務 協助過渡。
值得考慮的替代品
受夠 Lovable 了?以下是你可能嘗試的:
Cursor + Next.js/Astro:對於想要 AI 幫助但沒有擴展頭痛的開發者來說,黃金選擇。Cursor 在真實 IDE 中運作,接觸你控制的真實文件。AI 幫助而不擁有你的程式碼庫。
Bolt.new:對 Lovable 有相似的願望,以及相同的天花板。在特定 UI 模式上有一些獨特的優勢,但在上下文上就像它的表親 Lovable 一樣停滯。
v0 by Vercel:完美適合生成你網進自己專案中的個別 UI 元件。它不如 Lovable 有野心(它不試圖構建整個應用程式),而這個更狹隘的視角使其更可靠。
Windsurf (Codeium):另一個傾向於 AI 的 IDE,但具有處理更大程式碼庫的訣竅。與 Lovable 不同,它不試圖將整個專案塞入聊天,因為它利用你的本地文件。
實際開發:是的,有時你需要一個具有強大框架的熟練開發者。當你的目標是規模化、處理真實使用者或夢想超越原型時,沒有什麼能比得上頂尖人才和好的框架。有興趣?聯繫我們 — 我們已經指導許多團隊從 AI 原型過渡到堅實的架構。
常見問題
為什麼我的 Lovable 應用程式在新增更多元件後會破裂?
Lovable 的 AI 模型有有限的上下文視窗。隨著你的專案擴大,AI 對整個程式碼庫的控制力減弱。它開始在生成程式碼時假設事物,導致回歸、樣式不匹配和邏輯破裂。這通常在你達到 12 到 20 個元件時出現,基於複雜性。
Lovable 中的上下文視窗回歸是什麼?
曾感覺你的程式碼在沒有你要求的情況下神奇地改變過嗎?那是上下文視窗回歸。AI 在沒有全景的情況下進行修改或重新生成程式碼,導致根據其訓練資料而不是你的即時實現的不正確假設。它破壞功能、扭轉樣式、消滅邏輯 — 全都未被提示。
我能用 Lovable 構建生產應用程式嗎?
也許,如果你純粹堅持簡單的應用程式(如著陸頁、基本 CRUD 工具、內部儀表板、有限人員)。然而,對於任何涉及複雜邏輯、合適的安全、快速效能或稍微重要的使用者基礎的應用程式,不能。它是原型設計天堂,不是生產強大。非常具說明性的是,它建立零測試、優化零效能,其安全模式?讓我們說它們正在進行中。
Lovable 在破裂前能處理多少個元件?
大多數人在 12 到 20 個元件之間遇到問題。像元件複雜性、提示歷史記錄長度以及嵌入了多少狀態/邏輯之類的因素會影響這個閾值。更簡單的、顯示繁重的元件比複雜的有狀態元件給你更多空間。
Lovable 比 Bolt.new 更好用於構建應用程式嗎?
它們是鏡像,共享優勢和劣勢。Lovable 在 Supabase 整合上有優勢,但 Bolt.new 在部署上稍微更通用。兩者面臨相同的增長牆。對於超越簡單模型的生產應用程式,都不能剪裁。到 2025 年,兩者都從 $20/月開始,Lovable 的計畫攀升至 $100/月。
我如何不從頭開始就修復 Lovable 回歸?
最好的補救方法是通過 GitHub 匯出、在本地 IDE(VS Code 或 Cursor)中審計、手動修復,然後同步回去。其他技巧包括原子提示(每個請求一個改變)、陳述要留下的文件,以及當聊天膨脹時開始新對話。
對於我的專案,我應該使用 Lovable 還是 Cursor?
快速原型設計和想法驗證?Lovable 勝出。對於真實使用者部署,Cursor 與 Next.js 或 Astro 等堅實框架綁定提供 AI 增強而沒有天花板限制。Cursor 查看你整個專案而沒有上下文問題,因為它在你現有的文件上運作。
將 Lovable 專案遷移到真實開發的最佳方式是什麼?
通過 GitHub 整合匯出,使用你喜歡的工具建立一個堅固的 Next.js 或 Astro 專案,並將 Lovable 腳本視為藍圖 — 重建、精煉、插入真實的類型、測試、錯誤處理,並在進行中提升效能。這個路線比直接重構自動生成的混亂更快。