2026年8月15日 星期六

AI Review Flow:當 AI 寫 Code 的速度超過人類 Review 的速度

 

AI Review Flow:當 AI 寫 Code 的速度超過人類 Review 的速度

不要讓 AI 只負責寫 Code,而是讓 AI 參與整個 Software Engineering 品質循環。

過去幾年,AI Coding 工具快速改變了軟體開發的方式。

以前,一個工程師可能需要花半天時間完成一個 CRUD 功能:建立 Migration、Model、Controller、Validation、API Resource,再補上 Admin 後台的 Form 與 Table。

現在,這些工作可能只需要幾分鐘。

AI 可以快速產生:

  • Migration
  • Model
  • Service
  • Controller
  • API Resource
  • Validation
  • Filament Resource
  • Form
  • Table
  • Test

甚至可以直接依照既有專案結構,模仿現有程式碼完成一整套功能。

這看起來是一件非常美好的事情。

但當程式碼產生速度提升之後,一個新的問題也開始浮現:

AI 產生程式碼的速度,已經遠遠超過人類逐行閱讀與驗證程式碼的速度。

於是,軟體開發真正的瓶頸開始從「Coding」轉移到另一件事情:

Verification

我們真正需要問的,已經不只是:

AI 能不能幫我寫 Code?

而是:

AI 寫完之後,我怎麼知道它寫對了?

這也是我認為 AI 時代非常重要的一個工程概念:

AI Review Flow


一、AI 最大的問題不是不會寫,而是太容易「寫得像對的」

很多人第一次使用 AI Coding 工具時,最容易被它的「完成度」驚艷。

你只要描述:

幫我新增一個 CMS Block。

AI 很快就可以產生一大堆程式碼。

Migration 有了。

Model 有了。

Enum 有了。

Filament Form 有了。

API Resource 有了。

Controller 也有了。

而且程式碼通常看起來非常合理。

這正是 AI 最危險的地方。

AI 最危險的錯誤,通常不是:

Parse error

這種錯誤很容易被發現。

真正危險的是:

程式碼完全合法,而且看起來非常漂亮,但商業邏輯是錯的。

例如:

if ($block->is_active) {
    return $block;
}

這段程式碼本身完全沒有問題。

但如果真正的商業規則是:

is_active = true
AND page.is_published = true
AND publish_at <= now()
AND expired_at > now()

那麼這段程式碼就是錯的。

問題不是 PHP。

不是 Laravel。

也不是 Coding Style。

而是:

AI 沒有完整理解 Specification。

所以 AI Code Review 最重要的事情,不應該只是檢查:

「這段 Code 寫得好不好?」

而應該檢查:

「這段 Code 是否真的符合規格?」

這兩件事情,看起來很接近,但其實完全不同。


二、AI Coding 時代,真正的瓶頸正在從 Coding 轉移到 Verification

傳統軟體開發流程通常是:

需求
 ↓
分析
 ↓
Coding
 ↓
Code Review
 ↓
Test
 ↓
Deploy

在這個流程裡,Coding 是很大的成本。

因此工程師會想辦法提高 Coding 效率。

例如:

  • IDE
  • Framework
  • Package
  • Code Generator
  • ORM
  • Admin Generator
  • AI Coding

但 AI 出現之後,Coding 的成本開始大幅下降。

原本需要兩個小時的 CRUD,可能變成十五分鐘。

原本需要一天的後台功能,可能幾個小時就完成。

問題是:

Review 沒有同步變快。

人類還是只有兩隻眼睛。

還是需要理解:

  • 這段程式在做什麼?
  • 為什麼這樣做?
  • 是否符合需求?
  • 有沒有漏掉條件?
  • 有沒有破壞既有功能?
  • 有沒有安全問題?
  • 有沒有資料一致性問題?

於是就產生了一個新的矛盾:

Code Generation
      ↑
      │
      │  AI:非常快
      │
      ↓
Verification
      │
      │  Human:有限速度
      ↓

如果我們只是一直提高 AI 的 Coding 能力,最後很可能會發現:

Code 寫得越快,Review 反而成為最大的瓶頸。

所以 AI 時代真正需要升級的,不只是 Coding。

而是整個 Review Flow。


三、完整的 AI Review Flow

一個比較完整的 AI Software Engineering 流程,可以變成:

需求
 ↓
Specification
 ↓
AI Implementation
 ↓
AI Self Review
 ↓
Static Analysis / Test
 ↓
AI Code Review
 ↓
Human Review
 ↓
修正
 ↓
Regression Test
 ↓
Merge

這裡最大的改變是:

AI 不再只是 Developer,而同時成為 Reviewer。

但這裡有一個非常重要的前提。

不要讓同一個 AI 同時當 Developer 和 Reviewer

如果我們叫 AI:

幫我完成這個功能。

AI 寫完之後再說:

幫我 Review 剛才的程式碼。

它很容易出現一個問題:

AI 會用自己剛才建立的假設,去驗證自己剛才建立的實作。

如果第一步理解錯需求,第二步很可能只是把錯誤合理化。

因此更好的做法,是把角色分開。

Developer AI

負責:

  • 理解 Specification
  • 建立實作
  • 修改程式碼
  • 撰寫 Test

Reviewer AI

負責:

  • 重新閱讀 Specification
  • 檢查 Implementation
  • 找出規格與實作的差異
  • 找出遺漏的 Business Rules
  • 找出 Edge Cases
  • 找出 Security 與 Data Integrity 問題

也就是:

Developer AI
     ↓
Implementation
     ↓
Reviewer AI
     ↓
Specification
     ↓
Gap Analysis

Reviewer 的核心不是:

「這份 Code 看起來不錯。」

而是:

「Specification 說了什麼,而 Implementation 做了什麼?」


四、Specification First:AI Review 的第一原則

AI Review Flow 的核心其實不是 Prompt。

而是:

Specification First

如果沒有清楚的 Specification,AI Review 很容易變成:

AI
 ↓
自己理解需求
 ↓
自己寫 Code
 ↓
自己 Review
 ↓
自己說沒問題

最後得到:

LGTM。

但問題是:

誰決定它真的符合需求?

所以在 AI 開始寫 Code 之前,應該先把規格定義清楚。

一份基本 Specification 至少應該包含:

1. 功能目的

這個功能到底要解決什麼問題?

2. Data Model

需要哪些欄位?

哪些可以是 NULL?

哪些有 Default?

欄位之間有什麼關係?

3. Business Rules

什麼情況可以建立?

什麼情況可以修改?

什麼情況必須拒絕?

4. Permission

誰可以看到?

誰可以修改?

誰可以刪除?

5. API Behavior

API 應該回傳什麼?

哪些資料不能回傳?

哪些條件下資料才可以出現在 API?

6. Edge Cases

停用怎麼辦?

刪除怎麼辦?

沒有資料怎麼辦?

多語系缺少翻譯怎麼辦?

資料已經存在怎麼辦?


五、Review 不應該從 Coding Style 開始

很多 AI Code Review 最後會變成:

  • Method 太長
  • Variable 命名可以更好
  • 可以抽 Service
  • 可以使用 Collection
  • 可以重構
  • 可以減少重複程式碼

這些不是沒有價值。

但它們應該放在後面。

一個更合理的 Review 優先順序應該是:

1. Correctness

程式邏輯是否正確?

2. Security

是否有:

  • 權限漏洞
  • 資料洩漏
  • SQL Injection
  • Mass Assignment
  • 未授權資料存取

3. Data Integrity

資料是否可能:

  • 被錯誤更新
  • 被錯誤刪除
  • 產生不一致
  • 遺失關聯
  • 產生重複資料

4. Business Rules

Specification 裡面的規則是否全部實現?

5. Regression

是否破壞既有功能?

6. Performance

是否產生:

  • N+1 Query
  • 重複 Query
  • 不必要的資料載入
  • 不必要的 API Request

7. Code Quality

最後才是:

  • Naming
  • Structure
  • Readability
  • Maintainability
  • Refactoring

簡單說:

先確認「對不對」,再討論「漂不漂亮」。


六、不同風險的程式碼,不應該使用相同的 Review 強度

AI 並不是不能處理高風險程式碼。

問題是:

高風險程式碼不能只依賴 AI。

例如一般 CRUD:

建立資料
修改資料
列表
查詢

這些通常屬於相對低風險的工作。

AI 可以大量協助。

但以下功能就完全不同:

權限
金流
訂單狀態
資料隔離
多租戶
交易一致性
刪除邏輯
API 資料暴露

這些都是高風險區域。

AI 可以幫忙:

  • 分析
  • 找漏洞
  • 寫 Test
  • 做 Review
  • 提出風險

但是:

人類必須是最後決策者。

因此我認為 AI 時代非常重要的一個原則就是:

AI 負責加速,人類負責定義邊界。


七、用 Laravel CMS 看 AI Review 最容易發現什麼

假設今天我們要新增一個 CMS Block:

GroupCompany
 └── Blocks
      ├── Text Image
      ├── Card Grid
      └── Contact

AI 很快就可以建立:

Migration
Model
Enum
Filament Resource
Form
Table
API Resource
Controller

看起來非常完整。

但真正需要 Review 的問題可能是:

Block 停用之後會發生什麼?

假設資料結構是:

Page
 └── Blocks
      ├── Block A
      ├── Block B
      └── Block C

現在:

Block B
is_active = false

我們真正想要的行為是:

Block B
 ↓
保留資料
 ↓
後台仍然存在
 ↓
前台不顯示

而不是:

Block B
 ↓
被刪除

這兩個行為在技術上都完全可以被寫出來。

甚至兩段 Code 都可能沒有任何 Syntax Error。

所以:

單純檢查 Code 是抓不到這個問題的。

必須回到 Specification:

「停用」和「刪除」是不是兩種不同的操作?

如果答案是 Yes,那麼 Reviewer AI 就應該把它列為重要檢查項目。

這就是 AI Review 真正有價值的地方。


八、真正有價值的 Review 是 Gap Analysis

因此,我現在會比較不建議只對 AI 說:

Review this code.

因為這句話太模糊。

AI 很容易把任務理解成:

Code
 ↓
Style
 ↓
Best Practice
 ↓
Refactoring

更好的指令應該是:

Compare the implementation against the specification and identify any behavioral gaps.

也就是:

Specification
      ↓
      ↓
Implementation
      ↓
      ↓
Gap Analysis

Review 的重點變成:

  • Specification 有要求什麼?
  • Implementation 實際做了什麼?
  • 哪些規則沒有實作?
  • 哪些 Edge Case 沒處理?
  • 哪些行為和規格不同?
  • 哪些地方存在額外的、不被允許的行為?

這才是真正有價值的 Code Review。


九、AI Review 應該形成一個閉環

一個成熟的 AI Workflow 不應該是:

AI 寫完
 ↓
AI 說 OK
 ↓
結束

而應該是一個循環:

Specification
      ↓
AI Developer
      ↓
AI Self Review
      ↓
Test / Lint / QA
      ↓
AI Reviewer
      ↓
   PASS / FAIL
      ↓
   ┌──┴──┐
   │     │
 PASS   FAIL
   │     │
   │     ↓
   │   Fix
   │     │
   │     ↓
   │   Review
   │     │
   └─────┘
      ↓
Human Approval
      ↓
Merge

這裡最重要的是:

Review 不是一次性的動作,而是一個循環。


十、Fail Fast,Recover Faster

AI 時代有一句話反而更加重要:

Fail Fast, Recover Faster.

不要追求 AI 第一次就產生 100% 正確的 Code。

因為這不現實。

真正應該追求的是:

讓錯誤越早被發現。

因為錯誤被發現的時間越晚,修正成本通常越高。

可以把它分成五個 Level:

Level發現位置修正成本
Level 1Specification 發現需求矛盾最低
Level 2AI Review 發現邏輯問題低
Level 3Automated Test 發現錯誤中
Level 4Human Code Review 發現問題高
Level 5Production 才發現最高

例如:

如果 Specification 就發現:

停用到底是隱藏還是刪除?

這時候修改成本幾乎是零。

但如果系統已經上線,管理員停用資料後發現資料真的被刪掉:

這時候就可能涉及:

  • 資料恢復
  • 使用者影響
  • API 錯誤
  • Production Incident
  • 客戶問題
  • 信任成本

所以:

好的 AI Workflow,不是讓 AI 永遠不犯錯,而是讓錯誤盡可能早被發現。


十一、AI Review 不是要取代 Human Review

AI Review 最容易被誤解成:

既然 AI 可以 Review,那是不是以後不需要工程師 Code Review?

我認為答案是否定的。

真正合理的架構應該是:

AI
 ↓
大量自動檢查
 ↓
篩掉明顯問題
 ↓
Human
 ↓
專注高價值決策

AI 很適合處理:

  • Naming
  • Formatting
  • CRUD Completeness
  • Nullable
  • Basic Query
  • 重複程式碼
  • 明顯的 Edge Case
  • 基本 Security Check
  • Test Coverage

而人類應該把時間留給:

  • Architecture
  • Business Logic
  • Security Boundary
  • Data Integrity
  • Trade-off
  • Product Decision
  • 系統長期維護成本

換句話說:

AI 不應該取代 Code Review,而應該提高 Code Review 的品質。


十二、真正重要的不是 Prompt Engineering,而是 Workflow Engineering

現在很多人還在研究:

哪一種 Prompt 可以讓 AI 寫出更好的 Code?

這當然有價值。

但如果只關注 Prompt,容易忽略更重要的問題:

AI 到底應該被放在整個 Software Engineering 流程的哪裡?

成熟的 AI 開發流程不應該是:

Human
 ↓
Prompt
 ↓
AI
 ↓
Code

而應該是:

Human
 ↓
Specification
 ↓
AI Implementation
 ↓
AI Review
 ↓
Automated Verification
 ↓
Human Review
 ↓
Merge

這兩種流程最大的差別是:

第一種把 AI 當成:

Code Generator

第二種把 AI 當成:

Software Engineering Team 的一個角色。

這是一個非常重要的轉變。


十三、AI Engineering 的核心其實是「角色分工」

當 AI 越來越強,我們不一定需要一個「全能 AI」。

反而可以把工作拆成不同角色:

Product / Human
      ↓
Specification
      ↓
┌─────────────────┐
│ Developer AI    │
│ 負責實作         │
└────────┬────────┘
         ↓
┌─────────────────┐
│ Reviewer AI     │
│ 負責找問題       │
└────────┬────────┘
         ↓
┌─────────────────┐
│ Testing / QA    │
│ 負責驗證         │
└────────┬────────┘
         ↓
┌─────────────────┐
│ Human Engineer  │
│ 最終決策         │
└─────────────────┘

這種架構最大的優點是:

把「產生」和「判斷」分離。

AI 非常擅長產生大量候選方案。

但工程品質真正需要的是:

判斷哪一個方案符合需求、符合架構、符合安全邊界。

而這正是 Review Flow 存在的價值。


十四、AI 時代,工程師的價值正在改變

如果 AI 可以幫我們快速寫出 CRUD,那麼:

「我會不會寫 CRUD」

這件事情本身的價值就會下降。

但另外幾種能力反而會變得更加重要:

Requirement Analysis

能不能把模糊需求變成明確規格?

System Design

能不能決定資料模型與架構?

Business Logic

能不能理解真正的商業規則?

Risk Assessment

能不能知道哪些地方不能交給 AI 自動決策?

Verification

能不能設計有效的測試與驗證流程?

AI Orchestration

能不能讓多個 AI 工作角色協同完成任務?

因此 AI 並沒有讓 Software Engineer 變得不重要。

它只是讓「工程師真正重要的能力」重新排序。


十五、我認為 AI 時代最重要的工程原則

如果要把整個 AI Review Flow 濃縮成幾個原則,我會留下這五個:

1. Specification First

沒有規格,就沒有可靠的 Review。

2. AI Developer ≠ AI Reviewer

產生與驗證應該盡可能分離。

3. Review Specification,而不只是 Review Code

真正要檢查的是:

Requirement
     ↓
Specification
     ↓
Implementation

三者是否一致。

4. 高風險邏輯必須保留 Human Decision

權限、金流、資料一致性、資料隔離等核心邏輯,不應該完全自動化。

5. Fail Fast, Recover Faster

不要追求「AI 永遠不犯錯」。

應該追求:

錯誤越早被發現,修正成本越低。


十六、最後:AI Coding 的下一個戰場不是「寫得更快」

AI Coding 的第一階段,比的是:

誰的 AI 寫 Code 比較快?

第二階段可能會變成:

誰的 AI 寫 Code 比較完整?

但我認為真正成熟之後,競爭會變成:

誰能建立更可靠的 AI Software Engineering Workflow?

因為當 Code 產生速度提升 5 倍、10 倍甚至更高之後,最大的瓶頸就不再是 Coding。

而是:

Verification

你可以讓 AI 在幾分鐘內產生數千行程式碼。

但如果沒有可靠的驗證流程,那些 Code 只是:

高速產生的風險。

反過來,如果我們建立完整的 AI Review Flow:

Specification
      ↓
Implementation
      ↓
AI Review
      ↓
Automated Verification
      ↓
Human Review
      ↓
Decision

AI 就不只是幫我們:

寫更多 Code。

而是幫我們:

更快發現錯誤。

更早修正錯誤。

把人類從低價值的重複檢查中解放出來。

讓工程師把時間放在真正重要的架構、商業邏輯與決策上。

這才是我認為 AI 真正進入 Software Engineering 之後,最值得建立的開發模式。


AI Review Flow 簡易 Specification Template

如果要把這套方法真正放進日常開發,可以從一份非常簡單的 Specification 開始:

## 功能名稱
[功能名稱]

## 1. 功能目的
- 

## 2. Data Model
- 欄位:
- Nullable:
- Default:

## 3. Business Rules
- 建立條件:
- 修改條件:
- 拒絕條件:

## 4. Permission
- 可見:
- 可修改:
- 可刪除:

## 5. API Behavior
- 回傳內容:
- 不可回傳:

## 6. Edge Cases
- 停用:
- 刪除:
- 無資料:
- 多語系:
- 其他:

接著讓 Reviewer AI 執行:

請根據以下 Specification,
對目前的實作程式碼進行 Gap Analysis。

重點檢查:

1. 是否完整實現所有 Business Rules
2. Edge Cases 是否正確處理
3. 權限與資料暴露是否符合規格
4. 是否存在資料一致性問題
5. 是否存在安全性問題
6. 是否可能破壞既有功能
7. 是否存在不必要的行為

請明確列出:

- Specification 有要求,但 Implementation 缺失的項目
- Implementation 與 Specification 不一致的項目
- 潛在的 Security / Data Integrity 問題
- 建議修改方式

不要只評論 Coding Style,
優先檢查「行為是否正確」。

當這個流程開始固定下來之後,AI 就不再只是 IDE 裡面的一個「自動補全工具」。

它會逐漸成為整個 Software Engineering Workflow 裡的一個正式角色。

而這可能才是 AI Coding 真正成熟之後,工程團隊最大的改變。

不是 AI 取代工程師。

而是:

工程師開始設計一套能夠駕馭 AI 的工程系統。

2026年8月8日 星期六

Python 這麼熱門,為什麼我還是選 Laravel + Filament?

 

—— 從快速開發、Admin、權限管理到企業 CMS 的技術選型比較

近幾年 Python 的熱度非常高。

尤其 AI、Machine Learning、Data Science、LLM 與自動化工具快速發展之後,Python 幾乎成為許多工程師的第一選擇。

因此很自然會出現一個問題:

既然大家都在使用 Python,那麼 Web 後台、CMS、企業管理系統,是不是也應該全面改用 Python?

我的答案是:

不一定。

這不是因為 Python 不夠強。

恰恰相反,Python 在 AI、資料科學與 API Service 領域非常強。

真正需要比較的是:

Django / FastAPI 生態,與 Laravel + Filament,在特定類型的 Web 系統上,誰能用更低的成本完成需求並長期維護?

因此,這篇文章不討論「哪個語言比較好」,而是討論一個更實際的問題:

不同類型的專案,應該選擇什麼樣的 Web 技術棧?


一、先釐清:Python 並不是只有 Django

談 Python Web,最常見的兩條路線大概是:

Python
│
├── Django
│   └── Full-stack + ORM + Admin
│
└── FastAPI
    └── API-first + Type Hint + OpenAPI

兩者其實解決的是不同問題。

Django

Django 是完整的 Web Framework。

它包含:

  • ORM

  • Authentication

  • Authorization

  • Admin

  • Form

  • Routing

  • Middleware

  • Template

  • Migration

  • Cache

  • Session

其中 Django Admin 是它非常重要的一部分。

Django 官方本身就將 Admin 定位為可以快速建立模型管理介面的工具,而不是單純的「資料庫 CRUD 頁面」。(Django Admin)


FastAPI

FastAPI 的核心則更加偏向:

API
+
Type Hint
+
Validation
+
OpenAPI
+
Async

它非常適合:

  • REST API

  • Microservice

  • AI Service

  • Backend Service

  • API-first Architecture

FastAPI 的 Security / OAuth2 Scope 也可以與 OpenAPI 文件整合,這對 API-first 系統非常方便。(FastAPI Security)

因此,不能簡單把:

Django
FastAPI
Laravel

當成三個完全相同定位的 Framework。


二、Django Admin 其實比很多人想像的強

這點值得特別強調。

如果有人說:

「Django Admin 只能做簡單 CRUD。」

這個說法其實已經過時。

Django Admin 本身就支援:

  • List Display

  • Search

  • Filter

  • Ordering

  • Inline

  • Custom Action

  • Permission

  • Custom Form

  • Custom View

  • Custom Template

而且 Django 本身有 User / Group / Permission 的完整授權機制。

基本 Permission 可以對應:

add
change
delete
view

再搭配 Group:

Content Editor
Content Manager
Administrator

就能建立基本的 RBAC。

更重要的是,Django 生態還有大量成熟套件可以進一步補足企業需求。

例如:

django-admin-interface
django-import-export
django-guardian
django-simple-history

可以分別補足:

Admin UI
Import / Export
Object-level Permission
History / Audit

因此比較正確的說法應該是:

Django Admin 是一個非常成熟的 Admin Framework,而且可以透過生態系擴充成相當完整的企業後台。

而不是:

Django 只能做基本 CRUD。


三、那為什麼還要談 Laravel + Filament?

因為問題不在於:

「Django 能不能做到?」

Django 當然能做到。

真正的問題是:

需要多少組裝?

這是 Laravel + Filament 與 Django 的核心差異之一。


四、Filament 的核心優勢:高度整合

Laravel 本身提供:

Routing
ORM
Migration
Validation
Authentication
Authorization
Queue
Event
Notification
Mail
Storage
Cache
Scheduler
API

再加上 Filament:

Admin
Resource
Form
Table
Action
Widget
Dashboard
Relation Manager
Import
Export
File Upload
Rich Editor

因此可以形成:

Laravel
   ↓
Filament
   ↓
企業 Admin / CMS

這種架構的最大優勢不是「功能比較多」。

而是:

這些功能本來就是設計成一起工作的。


五、快速開發真正比較的是「需要自己組多少東西」

假設今天要建立:

Product

包含:

name
price
category
status
image
published_at

在 Laravel + Filament 中,可以透過 Resource 建立:

Product
├── List
├── Create
├── Edit
├── View
├── Form
├── Table
├── Filter
└── Action

Filament 4 也提供 Resource / Schema 等抽象,讓 Form、Table 與 Action 可以使用宣告式方式組合。(Filament Resources)


六、Django 其實也可以非常快

如果使用 Django:

Model
   ↓
ModelAdmin
   ↓
Admin

同樣可以快速得到:

List
Search
Filter
Create
Edit
Delete

而且 Django Admin 已經非常成熟。

因此,如果比較:

「誰能快速做 CRUD?」

不能說 Laravel + Filament 一定勝出。

Django 完全有資格競爭。


七、真正的差異開始出現在複雜後台

當需求從:

CRUD

開始變成:

CMS
+
Permission
+
Workflow
+
Form Builder
+
Rich Editor
+
File Upload
+
Relation
+
Import / Export
+
Dashboard
+
Custom Action
+
Page Builder

比較就開始變得有趣。

因為此時工程師需要思考:

誰負責 Form?
誰負責 Table?
誰負責 Permission?
誰負責 Role?
誰負責 File?
誰負責 Audit?
誰負責 Import?
誰負責 Export?
誰負責 UI?

Django 可以透過套件解決。

FastAPI 也可以透過套件解決。

Laravel 也可以透過套件解決。

真正不同的是:

框架本身與這些元件的整合程度。


八、FastAPI 的優勢其實非常明顯

這裡也不能忽略 FastAPI。

FastAPI 生態近年也逐漸補足 Admin 的需求。

例如:

FastAPI
+
SQLAlchemy
+
SQLAdmin

可以建立相當完整的 Admin。

另外也有:

fastapi-admin
SQLModel
其他 Admin Framework

等方案。

因此:

「FastAPI 沒有 Admin。」

這個說法也是不準確的。

更正確的說法是:

FastAPI 本身不是以 Admin 為核心,而它的生態提供了多種 Admin 解決方案。


九、而 FastAPI + Vue / React 其實是一條非常乾淨的路

如果團隊本來就採用:

Frontend
Vue / React
      ↓
FastAPI
      ↓
Database

那麼這種架構其實非常合理。

尤其是:

Mobile App
SPA
Microservice
AI Service
External API

都需要同一套 API 的情況。

這時候:

FastAPI
+
Vue / React

反而可能比:

Laravel
+
Filament
+
另外一套前端

更符合團隊需求。

所以不能說:

FastAPI 做 Admin 不好。

而應該說:

FastAPI 更適合 API-first 的架構,而 Filament 更適合快速建立 Business Application / Admin / CMS。


十、權限管理才是真正值得比較的地方

企業系統最容易低估的就是 Permission。

簡單系統可能只有:

Admin
User

但大型 CMS 往往會變成:

User
 ↓
Role
 ↓
Permission
 ↓
Resource
 ↓
Action
 ↓
Record

例如:

Project
├── View
├── Create
├── Update
├── Delete
└── Publish

甚至:

Project
├── Manage Content
├── Manage Structure
└── Manage Publish

再進一步可能還要判斷:

使用者可以修改這個 Project 嗎?

而不是只有:

使用者可以修改 Project 嗎?

這就是 Model-level 與 Record-level Authorization 的差別。


十一、Django 在權限這方面其實很完整

Django 原生提供:

User
Group
Permission

並且 Admin 會使用這些 Permission。

另外還可以使用:

django-guardian

處理 Object-level Permission。

因此可以做到:

User A
→ 可以修改 Project 1

User B
→ 可以修改 Project 2

這代表 Django 完全有能力處理企業級權限。

所以這裡不應該寫成:

Django 權限不如 Laravel。

比較精確的說法是:

Django 的權限能力很完整,但 Laravel 的 Policy + Gate + Filament Authorization 整合,在 Laravel + Filament 的企業 Admin 場景中非常自然。


十二、Laravel + Policy + Filament 的優勢

Laravel 原生提供:

Gate
Policy
Authorization

其中 Policy 特別適合 Model / Resource 授權。

例如:

public function update(
    User $user,
    Project $project
): bool {
    return $user->id === $project->owner_id;
}

接著 Filament Resource / Action 可以使用同一套 Authorization 邏輯。

因此形成:

Laravel Policy
      ↓
Filament Resource
      ↓
Action Authorization
      ↓
UI Button

也就是:

後端授權規則可以直接影響 Admin UI。

這種整合對 CMS 非常重要。


十三、Filament 也不是沒有缺點

如果文章只說 Filament 很快,卻不談它的限制,就會變成推銷文。

Filament 非常適合:

Admin
CMS
CRUD
Dashboard
Form
Table
Internal Tool

但不是所有 UI 都應該使用 Filament。


1. 極端複雜的表格互動

例如:

大量即時計算
跨欄位即時更新
拖曳排序
大量資料同步操作
跨 Resource 狀態互動

這種需求如果已經超過 Filament 的抽象範圍,就可能需要:

Custom Livewire
Custom JavaScript
Vue
React

甚至直接建立獨立前端。


2. 即時協作

例如:

多人同時編輯
即時 Presence
WebSocket
Live Collaboration
即時游標
即時狀態同步

Livewire 當然可以整合即時功能。

但如果產品本身就是:

「像 Google Docs 一樣多人即時協作。」

那麼專業的前端架構通常會更適合。


3. 超大型資料量

例如:

10 萬筆
100 萬筆
500 萬筆

這時候問題就不只是 Filament。

而是:

Database Index
Query
Pagination
Search
Caching
Virtualization
Data Loading

甚至可能需要:

Elasticsearch
OpenSearch
專用 Search Service

Filament 可以處理大型資料,但不能期待:

「把幾百萬筆資料丟進 Table,Framework 自動解決所有效能問題。」

這在任何 Framework 都不成立。


十四、因此「快速開發」不等於「什麼都不用自己做」

這是非常重要的觀念。

Filament 可以大幅降低:

CRUD UI
Form
Table
Validation
Admin

的開發成本。

但當需求超出 Framework 抽象範圍:

Complex UI
Real-time
Huge Dataset
Custom Interaction
Special Workflow

依然需要工程師介入。

所以真正好的使用方式是:

Standard Requirement
        ↓
Filament

Complex Requirement
        ↓
Custom Component / Livewire / Vue / React

而不是:

Everything
   ↓
Filament

十五、人才成本其實也是技術選型的一部分

這是很多技術比較文章忽略的地方。

假設公司已經有:

20 位 Python Engineer

其中:

10 位 Data Engineer
5 位 AI Engineer
5 位 Backend Engineer

這時候如果突然決定:

「我們要全面改 Laravel。」

技術上可能完全可行。

但是:

Training Cost
Hiring Cost
Migration Cost
Productivity Loss
Knowledge Transfer
Maintenance

都是真實成本。

反過來也一樣。

如果團隊已經有:

Laravel
PHP
Vue
Filament

的成熟經驗,那麼為了「大家都在用 Python」而改成 Django / FastAPI,也可能是一個非常昂貴的決策。

所以:

技術選型不能只看 Framework 能力,也要看團隊已經擁有什麼能力。


十六、三年維護成本比第一天開發速度更重要

一個專案第一天可以做到:

Python
Laravel
Node
Go

其實都不難。

真正困難的是三年後。

你需要面對:

新功能
Bug
Security
Dependency Upgrade
Database Migration
Performance
新人加入
技術債
權限需求
商業規則變更

因此真正值得問的是:

三年後誰來維護?


十七、Python 生態的優勢也可能成為成本

Python 的優點是生態非常龐大。

但另一面是:

很多套件
很多選擇
很多組合

例如:

FastAPI
+
SQLAlchemy
+
Pydantic
+
SQLAdmin
+
Auth Library
+
Permission Library
+
Frontend
+
Storage
+
Background Worker

每一個元件都可能非常優秀。

但工程師也必須自己決定:

Architecture
Integration
Version Compatibility
Error Handling
Authorization Boundary

因此:

自由度越高,架構責任通常也越高。


十八、Laravel 的優勢就是 Convention

Laravel 的哲學相對比較接近:

提供一套有意見的完整解決方案。

例如:

Routing
ORM
Migration
Validation
Authentication
Authorization
Queue
Event
Notification
Mail
Storage
Cache
Scheduler

再搭配:

Filament
Livewire
Spatie

可以快速形成企業應用。

這種模式最大的優勢不是:

「Laravel 比 Python 強。」

而是:

很多常見問題已經有明確的解法。


十九、所以兩邊其實是不同的工程哲學

可以簡化成:

FastAPI

給我自由度
讓我自己組架構

Django

給我完整 Web Framework
讓我快速建立網站與 Admin

Laravel + Filament

給我完整 Web Framework
再給我高度整合的 Business Admin UI
讓我快速建立企業系統

沒有哪個一定比較好。

只是適合的問題不同。


二十、真正合理的架構甚至不是二選一

如果公司同時需要:

CMS
Admin
AI
Recommendation
Image Processing
LLM
Data Analysis

最合理的答案可能根本不是:

Laravel OR Python

而是:

                    Frontend
                       │
                       ▼
                Laravel API
                       │
              ┌────────┴────────┐
              │                 │
          Filament          Python Service
              │                 │
          CMS / Admin        AI / ML
              │                 │
              └────────┬────────┘
                       │
                    Database

例如:

Laravel

負責:

User
CMS
Permission
Admin
Business Logic
Order
Workflow
API

Python

負責:

AI
LLM
Recommendation
Image Processing
Data Analysis
Machine Learning

這種架構完全合理。


二十一、那到底該怎麼選?

可以用下面這張表快速判斷:

需求建議
AI / MLPython
Data SciencePython
LLM / AI ServicePython
API-firstFastAPI
MicroserviceFastAPI / 依需求選型
傳統 Full-stack WebDjango / Laravel
Django 原生 AdminDjango
企業 CMSLaravel + Filament / Django
大量 CRUDLaravel + Filament / Django
Admin + Form + TableLaravel + Filament
CMS + Page BuilderLaravel + Filament
細粒度 CMS 權限Laravel + Filament / Django
高度客製前台Vue / React / Astro 等
AI + CMSLaravel + Python

二十二、最後不要問「Python 還是 Laravel」

我認為真正成熟的技術選型問題應該是:

這個專案的核心問題是什麼?

誰會開發?

誰會維護?

團隊已經會什麼?

三年後系統會變成什麼?

哪個架構可以降低長期總成本?

而不是:

現在大家都用什麼?

結論

Python 非常強。

尤其:

AI
Machine Learning
Data Science
LLM
Automation
API Service

這些領域,Python 有非常明顯的優勢。

Django 也不是只能做簡單 CRUD。

透過 Django Admin 加上成熟套件生態,它完全可以建立相當完整的企業後台。

FastAPI 也不是沒有 Admin。

透過 SQLAdmin、fastapi-admin 或前後端分離架構,同樣可以建立企業級系統。

所以這篇文章真正想說的並不是:

Laravel 比 Python 好。

而是:

不要因為 Python 現在很熱門,就認為所有 Web 專案都應該使用 Python。

如果:

核心是 AI

→ Python 優先。

如果:

核心是 API / Microservice

→ FastAPI 非常值得考慮。

如果:

核心是 Web + Admin

→ Django 是成熟選擇。

如果:

核心是企業 CMS
+
大量 CRUD
+
Admin
+
Permission
+
Workflow
+
Form
+
Table
+
Page Builder

→ Laravel + Filament 依然是目前非常有競爭力的選擇之一。

而如果同時存在:

CMS
+
AI

那麼最合理的答案甚至可能是:

Laravel + Filament
        +
Python

而不是強迫整個系統只使用一種語言。


最後,我認為真正值得記住的一句話

好的工程師不是選現在最紅的技術,而是選最適合問題、團隊與未來三年維護成本的技術。

技術選型的目標從來不是證明:

「我的語言比較強。」

而是:

用最合理的成本,把系統長期做好。

AI 沒有取代工程師,但正在淘汰「只會寫程式的人」:談 AI 時代下的軟體工程價值轉移

AI 沒有取代工程師,但正在淘汰「只會寫程式的人」:談 AI 時代下的軟體工程價值轉移 摘要 :當 Claude Code、Cursor 與 Copilot 等 Agent 級 AI 工具能在一分鐘內生成千行程式碼時,軟體開發的瓶頸已從「程式碼產出速度」轉移至「系統認知與驗證能力...