2026年9月6日 星期日

2026 年,怎麼真正用 AI 加速開發工作

 

現在是 2026 年 9 月。AI 寫 code 已經不是新鮮事,幾乎每個開發者都會用。
但真正拉開差距的,不是「會不會用 AI」,而是怎麼把 AI 嵌進工作流,讓它穩定加速,而不是製造更多返工。

這篇文章整理我實際在 Laravel 專案中使用 AI(以 Trae 為例)的經驗,核心是 SDD(Spec-Driven Development)+ 可控實作。


一、先建立正確心態

AI 是加速器,不是代理人。

  • 你負責:判斷、取捨、架構決策、風險把關、最終品質
  • AI 負責:重複勞動、初稿產出、搜尋整理、小範圍實作、格式與檢查

把它當成「能力很強、但需要明確指令的 Junior」,而不是可以全權外包的 Senior。


二、核心方法:Spec-Driven Development(SDD)

SDD 的精神很簡單:

先把「要做什麼」寫清楚(Spec / Plan),確認無誤後,再讓 AI 去實作。

而不是直接喊「幫我做登入」,然後看 AI 自由發揮。

推薦工作流

text
需求澄清
  ↓
產出 Spec / Plan(可用 AI 輔助)
  ↓
人工確認 Spec(這步不能省)
  ↓
AI 依 Spec 最小實作(用 Skill 約束)
  ↓
Review + 測試驗證

沒有經過確認的 Spec,AI 實作越快,後面修正成本通常越高。
「先對齊,再動手」是 SDD 的核心。


三、Rules 與 Skills 的差別

項目Rules(規則)Skills(技能)
本質行為約束、常駐規範特定任務的操作手冊
載入時機幾乎一直生效符合條件才觸發
適合內容禁止事項、安全底線、命名慣例完整工作流(依 Spec 實作、Code Review 等)
Token 成本每次對話都可能帶上按需載入,較省
  • Rules = 公司制度(永遠要遵守)
  • Skills = 標準作業程序 SOP(做特定工作才拿出來)

建議:

  • Rules 只放真正不能破的底線
  • Skills 放「依 Spec 實作」這類完整流程

四、配合 SDD 的實作 Skill 範例

當 Spec 已確認後,用以下精神約束 AI:

text
You are a Senior Laravel Developer. Implement only from confirmed Spec / Plan.

Rules:
1. Confirm Spec first. If Spec ≠ actual code, stop and report — do not expand scope.
2. Read relevant existing code before modifying.
3. Make the smallest correct change. Prefer existing Model / Service / Policy / Helper / Schema.
4. KISS + Minimal Change. No unnecessary refactoring or new abstraction.
5. Do not change DB schema, API contracts, or permission architecture unless explicitly in the Spec.

After implementation:
- Syntax check
- Relevant tests
- DB / Permission verification if applicable
- Regression check

Output:
- Changed Files
- Changes
- Verification
- Test Result
- Remaining Risk

這個 Skill 的目的不是讓 AI 更聰明,而是讓它嚴格依照已確認的 Spec 做事,避免 scope creep。


五、真正能加速的習慣

  1. 先產出並確認 Spec,再進入實作
  2. 強制最小變更(不要重構、不要加新 abstraction)
  3. 要求固定輸出格式,方便快速 Review
  4. 把有效的 Spec 模板與 Skill 沉澱下來
  5. 保留人類檢查點(權限、金錢、資料安全相關一定要人工過)

六、常見踩坑

  • 沒有 Spec 就直接叫 AI 寫 → 結果不可控
  • Spec 寫得模糊,卻期待 AI 一次做對
  • 讓 AI 一次做太大功能 → scope 失控
  • 從不 Review 就合併 → 技術債快速累積
  • 規則寫太長太雜 → token 貴,重點被稀釋

七、總結

2026 年用 AI 加速開發,核心可以收斂成兩句話:

  1. 用 SDD:先把 Spec 寫清楚並確認,再實作。
  2. 用 AI 加速「已經確定要做的事」,而不是用 AI 決定「該做什麼事」。

工具已經夠強,真正拉開差距的是工作流是否可控:
先對齊 Spec → 用 Skills 約束實作 → 用 Rules 守住底線 → 保留人工檢查點。

AI 不會取代會用 AI 的開發者,但會快速淘汰那些「只會喊 AI、卻無法控管結果」的人。


需要我再幫你調成更口語、或加上實際 Spec 範例的版本嗎?

2026年9月5日 星期六

Astro + Vue 3 的 AI 開發標準:Docs MCP、Project Rules 與 Skills

前言:AI 會寫 Vue,不代表 AI 真的懂你的 Astro + Vue 3 專案

這幾年 AI Coding Agent 發展非常快。

從最早的:

「幫我寫一個 Vue Component。」

逐漸進化成:

「幫我修改這個頁面。」

再到現在:

「分析整個專案,幫我完成這個功能。」

AI 已經不只是 Code Generator,而開始扮演 Junior Engineer 的角色。

但是問題也跟著出現。

AI 越能直接修改專案,Context 是否正確就越重要。

尤其是 Astro + Vue 3 專案。

因為這類專案通常不是單純的 Vue SPA,而是:

text
Astro
│
├── Pages
├── Layouts
├── Components
├── SSR / SSG
├── Routing
├── SEO
├── API
│
└── Vue 3
      ├── Interactive Components
      ├── State
      ├── Forms
      └── Client-side Logic

如果 AI 不理解 Astro 與 Vue 3 的責任邊界,很容易出現一個常見問題:

AI 把所有東西都 Vue 化。

這不一定是正確的做法。

Astro 的核心價值之一,就是讓頁面預設保持輕量,只有真正需要互動的部分才交給 JavaScript Framework。

因此,對 Astro + Vue 3 專案而言,真正重要的不是:

「AI 能不能寫 Vue?」

而是:

「AI 是否理解什麼時候該使用 Astro,什麼時候才應該使用 Vue 3?」

這就是 Astro + Vue 3 AI Development 真正值得討論的地方。


一、Astro + Vue 3 的 AI 開發問題

傳統 AI Coding 的流程通常是:

text
需求
 ↓
AI
 ↓
產生 Code
 ↓
完成

這個流程在小型專案可能沒有問題。

但是當專案開始變大,就會遇到:

text
AI 不知道目前 Astro 版本
        ↓
AI 使用過時 API

AI 不知道專案架構
        ↓
AI 新增重複 Component

AI 不知道 Astro / Vue 分工
        ↓
AI 把 Astro Component 改成 Vue

AI 不知道 API 架構
        ↓
AI 自己新增 fetch / axios

AI 不知道命名規則
        ↓
專案開始出現不同風格

AI 不知道既有 State 管理方式
        ↓
又新增一套 State

最後不是 AI 不會寫 Code。

而是:

AI 寫出了「可以運作」但不符合專案架構的 Code。

這才是 AI Coding 真正需要解決的問題。


二、Astro 官方正在建立自己的 AI 開發工具鏈

Astro 現在已經不是完全依賴一般 AI 模型自己理解框架。

Astro 官方提供了:

  • Astro Docs MCP
  • Astro Agent Skills
  • AI 開發指南
  • Project Rules / Coding Standards 的整合方式
  • 與各種 AI Coding Agent 的整合

其中最重要的就是:

Astro Docs MCP

它可以讓 AI Agent 在需要時直接查詢 Astro 官方文件,而不是完全依賴模型本身的訓練資料。

官方也特別指出,AI Coding 工具可能使用過時的 Astro API,因此建議讓 Agent 存取最新 Astro Documentation。

這個概念非常重要。

因為:

text
AI Model
   ↓
「我記得 Astro 是這樣寫」

跟:

text
AI Agent
   ↓
Astro Docs MCP
   ↓
最新官方文件
   ↓
確認 API

是完全不同的開發方式。


三、Astro Docs MCP:讓 AI 查詢最新 Astro 文件

Astro 官方提供 Docs MCP Server:

text
https://mcp.docs.astro.build/mcp

它的角色不是幫你寫 Code。

而是:

提供 AI 正確的 Astro 知識。

可以把它理解成:

text
AI Agent
                  │
                  ↓
           Astro Docs MCP
                  │
                  ↓
          Astro Official Docs
                  │
                  ↓
        最新 Astro API / Guide

因此當 AI 遇到 Content Collections、Routing、Actions、Middleware、SSR、Islands、Integrations、Image 等問題時,可以先取得官方資訊,再開始修改程式碼。


四、但是只有 Astro Docs MCP 還不夠

這是最容易被誤解的地方。

Astro Docs MCP 解決的是:

「Astro 官方怎麼使用?」

但它不知道:

「你的專案怎麼使用 Astro?」

例如官方文件可能告訴 AI:

text
Astro 可以使用 Vue Component。

但你的專案可能規定:

text
只有互動功能才使用 Vue。
純展示內容必須使用 Astro Component。
不要為了方便而把 Astro Component 改成 Vue Component。

這兩個資訊並不衝突。

一個是 Framework Knowledge,另一個是 Project Knowledge。

因此還需要:

Project Rules


五、Project Rules:讓 AI 知道「我們怎麼開發」

這是 Astro + Vue 3 AI 開發真正重要的一層。

例如:

text
.ai/
└── rules/
    ├── index.md
    ├── architecture.md
    ├── astro.md
    ├── vue.md
    ├── api.md
    └── performance.md

可以定義:

text
Astro 負責:
- Page
- Layout
- SEO
- SSR / SSG
- Server-side Data
- Static Content

Vue 3 負責:
- Interactive UI
- Client-side State
- Form Interaction
- Complex UI
- Browser Events

這樣 AI 在修改專案時,就不會只考慮「哪一種寫法最快」,而會考慮「哪一種寫法符合這個專案的架構」。


六、Astro 與 Vue 3 的責任邊界

這是 Astro + Vue 3 專案最值得寫進 AI Rules 的規則。

可以簡化成:

text
Astro
 ↓
負責頁面結構與 Server / Static 工作

Vue 3
 ↓
負責需要互動的 UI

例如:

text
首頁
│
├── Header              → Astro
├── Hero                → Astro
├── Article List        → Astro
├── Product Filter      → Vue 3
├── Shopping Cart       → Vue 3
└── Footer              → Astro

這就是 Astro Islands 思維。

不是整個網站都用 Vue,而是:

text
Astro Page
│
├── Static Content
│
├── Static Content
│
└── Vue Island
       ↓
    Interactive UI

這個架構如果沒有明確告訴 AI,AI 很容易為了方便,把大量內容全部轉成 Vue。


七、AI 最容易犯的錯:過度 Vue 化

例如原本:

astro
<ProductCard product={product} />

如果只是展示資料,根本不需要 Vue。

但是 AI 可能會說:

「Product Card 未來可能需要互動,所以改成 Vue Component。」

這就是典型的 AI 過度工程。

比較好的 Rule 應該是:

text
優先使用 Astro Component。

只有當 Component 需要 Client-side JavaScript
或真正的使用者互動時,才使用 Vue 3。

禁止為了方便、元件重用或預期未來需求,
將純展示型 Astro Component 改成 Vue。

這種 Rule 對 AI 的約束,往往比多裝幾個 MCP 更重要。


八、Vue 3 AI Skills

Astro 不是唯一需要 Context 的部分。

如果專案使用 Vue 3,那 AI 同樣需要知道:

  • Vue 3 Composition API
  • <script setup>
  • Reactivity
  • Props / Emits
  • Composables
  • Component Design
  • State Management
  • Vue Router
  • Pinia
  • TypeScript

因此可以進一步加入 Vue AI Skills。

它的定位比較接近:

讓 AI 更熟悉 Vue 3 的開發方式與最佳實務。

形成:

text
Astro Docs MCP
        +
Vue AI Skills
        ↓
Astro + Vue 3 Knowledge

九、MCP 與 Skills 其實解決不同問題

這兩個概念很容易混在一起。

可以簡單理解:

MCP

「AI 可以取得什麼資訊?」

text
Astro Docs MCP
    ↓
取得官方文件

Skills

「AI 遇到某種工作時應該怎麼做?」

text
Vue Component Skill
    ↓
如何建立一個符合 Vue 3 最佳實務的 Component

因此:

text
MCP → Knowledge
Skills → Workflow / Expertise

兩者搭配使用,比單獨使用其中一個更有價值。


十、再加入 Browser / DevTools Context

如果只讓 AI 看 Source Code,還是有一個問題:

AI 不知道瀏覽器裡實際發生什麼事。

例如 Source Code 看起來完全正常,但實際執行卻出現 Console Error、Network Error、Hydration Error 或 Component State Error。

這時候如果 AI 能取得 Browser Context,就可以從「猜問題」變成「看問題」。

text
TRAE
 │
 ├── Project Files
 │
 ├── Astro Docs MCP
 │
 ├── Vue Skills
 │
 └── Browser / DevTools
          │
          ├── Console
          ├── Network
          ├── DOM
          └── Runtime State

這才是真正接近「AI Debugging」。


十一、完整的 Astro + Vue 3 AI 架構

把所有東西整合起來:

text
TRAE
                           │
                     AI Coding Agent
                           │
          ┌────────────────┼────────────────┐
          ↓                ↓                ↓
   Astro Docs MCP      Vue Skills      Project Rules
          │                │                │
          ↓                ↓                ↓
    Astro Knowledge   Vue Knowledge    Project Knowledge
          │                │                │
          └────────────────┼────────────────┘
                           ↓
                    Browser / DevTools
                           │
                           ↓
                     Runtime Context
                           │
                           ↓
                    Astro + Vue 3

這時候 AI 得到的不是單一資訊,而是四種 Context:

  1. Framework Context
  2. Vue Context
  3. Project Context
  4. Runtime Context

這才是真正成熟的 AI Coding Environment。


十二、Astro + Vue 3 + Laravel

如果你的完整架構是 Laravel + Astro + Vue 3,那麼 AI 開發環境可以進一步變成:

text
TRAE
                         │
           ┌─────────────┼─────────────┐
           ↓             ↓             ↓
    Laravel Boost    Astro MCP    Vue Skills
           │             │             │
           ↓             ↓             ↓
      Laravel Context Astro Context Vue Context
           │             │             │
           └─────────────┼─────────────┘
                         ↓
                  Project Rules
                         ↓
                  Browser Context
                         ↓
                  整個 Fullstack

這個架構就非常有意思。

因為 AI 不再只懂 Laravel 或 Vue,而是開始理解:

text
Backend
   ↕
API
   ↕
Astro
   ↕
Vue

整個系統。


十三、AI Coding Workflow 應該怎麼改?

傳統方式:

text
需求 → AI → Code

我會建議改成:

text
需求
 ↓
Inspect
 ↓
Project Rules
 ↓
Framework Docs
 ↓
分析現有架構
 ↓
Plan
 ↓
Code
 ↓
Build
 ↓
Browser Test
 ↓
Verify

也就是:

Think → Inspect → Plan → Implement → Verify

而不是:

Prompt → Generate


十四、不要讓 AI 一開始就修改 Code

例如你要求:

「把商品篩選功能改成 Vue 3。」

比較好的 Agent Workflow:

  1. 確認目前 Product Filter 是 Astro 還是 Vue
  2. 確認目前資料來源
  3. 確認 API Client
  4. 確認 State Management
  5. 確認 Astro / Vue Component 邊界
  6. 查詢目前 Vue 3 / Astro 官方文件
  7. 提出修改方案
  8. 只修改必要檔案
  9. 執行 Build
  10. 使用 Browser 驗證

這樣 AI 才比較像 Junior Engineer,而不是 Code Generator。


十五、Project Rules 最值得規定的事情

如果我要建立一個 Astro + Vue 3 專案的 AI Rules,我會優先規定以下內容:

  1. Astro / Vue 邊界
    預設使用 Astro Component。只有需要 Client-side Interaction 時才使用 Vue。
  2. API
    優先使用既有 API Client。禁止在 Component 中自行建立新的 API abstraction。
  3. State
    先檢查既有 State Management。禁止建立重複的 global state。
  4. Component
    修改前先搜尋是否已有相同功能的 Component。禁止建立重複 Component。
  5. TypeScript
    優先使用現有 Type / Interface。禁止為相同資料建立第二套 Type。
  6. Styling
    優先使用現有 CSS / Utility / Design System。
  7. Performance
    避免不必要的 client-side JavaScript。避免將純展示 Component Vue 化。

這些規則會直接影響 AI 最終產生的 Code 品質。


十六、AI 的真正問題不是能力,而是 Context

這是整篇文章最核心的觀念。

很多人使用 AI Coding 時會想:

「我要怎麼讓 AI 寫得更好?」

但更值得問的是:

「我要怎麼讓 AI 在寫之前知道更多正確資訊?」

text
AI
│
├── Framework Docs
│
├── Project Rules
│
├── Existing Code
│
├── Runtime State
│
└── Tests
        │
        ↓
   Correct Context
        │
        ↓
   Better Decision
        │
        ↓
   Better Code

所以 AI Coding 的品質,很大程度上取決於 Context Quality,而不是單純 Model Size。


十七、Astro + Vue 3 的 AI 開發標準

如果今天我要建立一個新的 Astro + Vue 3 專案,我會把 AI 開發環境標準化成:

text
Astro + Vue 3 AI Development Standard

必備
────────────────────
✓ Astro Docs MCP
✓ Project Rules
✓ TypeScript
✓ Git
✓ Build Verification

建議
────────────────────
✓ Astro Agent Skills
✓ Vue AI Skills
✓ Browser / Playwright
✓ Vue DevTools Context

Fullstack
────────────────────
✓ Laravel Boost
✓ Laravel Documentation Context
✓ API Context

而不是「裝很多 MCP,希望 AI 變聰明」。

真正有效的方式是:

text
正確 Context
      ↓
正確 Rules
      ↓
正確 Tools
      ↓
AI 分析
      ↓
AI 實作
      ↓
自動驗證

十八、Astro + Vue 3 與 Laravel Boost 的差異

Laravel Boost 的核心概念是:

text
Laravel Project
      ↓
Laravel Boost
      ↓
AI

Astro + Vue 3 目前比較接近:

text
Astro Project
      │
      ├── Astro Docs MCP
      ├── Astro Skills
      ├── Vue Skills
      └── Project Rules
             ↓
            AI

也就是:

  • Laravel 生態比較集中在 Boost
  • Astro + Vue 3 目前則是由多個官方與 AI 工具能力組合成完整的 AI Development Stack

因此不要期待一定要找到一個「Astro Boost」才能完成同樣的事情。真正重要的是把這些能力組合起來。


十九、最終架構

最後,我認為一個成熟的 Astro + Vue 3 AI 專案,可以整理成:

text
AI Agent
                            │
                         TRAE
                            │
       ┌────────────────────┼────────────────────┐
       │                    │                    │
       ↓                    ↓                    ↓
 Framework Context    Project Context     Runtime Context
       │                    │                    │
       ↓                    ↓                    ↓
 Astro Docs MCP       Project Rules       Browser / DevTools
       │                    │                    │
       ↓                    ↓                    ↓
 Astro Knowledge      Project Standards    Actual Behavior
       │                    │                    │
       └────────────────────┼────────────────────┘
                            │
                            ↓
                       Vue 3 Skills
                            │
                            ↓
                    Astro + Vue 3 Project
                            │
                            ↓
                     Build / Test / Verify

這時候 AI 才真正從「幫我寫程式」進化成「理解我的專案後,幫我完成工程工作」。


結語:AI Coding 的下一步,是 Context Engineering

Astro + Vue 3 的 AI 開發,真正值得關注的不是「哪一個 AI Model 最強」,也不是「我要裝多少 MCP」,而是:

「我要提供多少正確 Context 給 AI?」

  • Astro Docs MCP 解決:AI 是否知道最新 Astro?
  • Vue Skills 解決:AI 是否知道正確的 Vue 3 開發方式?
  • Project Rules 解決:AI 是否知道這個專案怎麼開發?
  • Browser / DevTools 解決:AI 是否知道程式實際執行的狀況?

最後再透過 Build、Test、Verify 確認 AI 的修改真的正確。

因此,一個成熟的 Astro + Vue 3 AI Development Workflow 應該是:

text
Context First
                     ↓
              Think Before Code
                     ↓
                  Inspect
                     ↓
                   Plan
                     ↓
                 Implement
                     ↓
                  Verify

而不是:

text
Prompt → Generate → Hope

AI Coding 真正的下一個階段,不是讓 AI 寫更多 Code,而是讓 AI 在寫 Code 之前,先理解你的 Framework、你的專案、你的架構,以及你的規則。

這才是 Astro + Vue 3 AI Development 真正值得投入的方向。

Laravel Boost:從 Code Generator 進化成真正理解專案的 AI Agent

Laravel Boost 與 Laravel MCP 技術分享
讓 AI 真正進入你的 Laravel 專案,而不是只會猜

以前使用 AI 寫 Laravel,我最常遇到的問題不是 AI 不會寫 PHP,而是:

AI 根本不知道我的專案。

它不知道 Laravel 版本、不知道目前用了哪些套件、不知道資料庫 Schema、不知道既有的架構規則,也不知道某個問題其實已經有現成的 Service、Policy 或 Helper。

於是很容易出現這種情況:

AI:建議新增一個 Service。
實際上:專案裡已經有同功能的 Service。

或者:

AI:這是 Filament 3 的寫法。
實際上:專案使用的是 Filament 4。

甚至:

AI:新增一個 Permission。
實際上:專案早就有完整的 Gate + Policy + Shield + 自訂權限 Resolver。

這也是我開始關注 Laravel Boost 的原因。

Laravel Boost 是 Laravel 官方團隊提供的 AI 開發工具,核心目的就是讓 AI Coding Agent 取得 Laravel 專案真正需要的 Context、Tools、Guidelines 與 Skills。官方目前將它定位為:

Laravel-focused MCP server for augmenting your AI powered local development experience.


一、Laravel Boost 到底是什麼?

如果要用一句話解釋:

Laravel Boost 就是 Laravel 與 AI Coding Agent 之間的一座橋。

傳統 AI Coding 大概是:

text
開發者
   ↓
AI
   ↓
看你提供的程式碼
   ↓
猜測專案架構
   ↓
產生程式碼

加入 Laravel Boost 之後:

text
AI Coding Agent
                       │
                 Laravel Boost
                       │
        ┌──────────────┼──────────────┐
        ↓              ↓              ↓
     MCP Tools      Guidelines      Skills
        │              │              │
        └──────────────┼──────────────┘
                       ↓
                Laravel Application
                       │
          ┌────────────┼────────────┐
          ↓            ↓            ↓
        Code         MySQL        Logs

AI 不再只能依賴模型記憶,它可以透過 Boost:

  • 了解 Laravel / PHP 版本
  • 了解安裝了哪些 Laravel 生態套件
  • 查看 Eloquent Models
  • 查看 Database Schema
  • 執行 Database Query
  • 查看 Laravel Log
  • 查看 Browser Logs
  • 取得最後一次錯誤
  • 搜尋 Laravel / 套件官方文件

目前官方列出的 Boost MCP 工具包含 Application Info、Database Schema、Database Query、Browser Logs、Last Error、Read Log Entries、Search Docs 等。

這個差異非常大。


二、Laravel Boost 和 Laravel MCP 不一樣

這也是我覺得最容易搞混的地方。

Laravel 現在有兩個相關套件:

  • laravel/mcp
  • laravel/boost

但用途完全不同。

Laravel MCP
主要是讓你建立自己的 MCP Server。

text
你的 Laravel Application
        ↓
自訂 MCP Server
        ↓
AI / 外部系統

你可以自己設計 Tool、Resource、Prompt,把業務能力暴露給任何 MCP Client。

Laravel Boost
則是讓 AI Coding Agent 更了解你的 Laravel 專案。

text
TRAE / Cursor / Claude Code
            ↓
       Laravel Boost
            ↓
     你的 Laravel 專案

所以如果你的目的只是:

「我要讓 TRAE / Cursor 更懂我的 Laravel 專案,幫我寫得更準。」

那麼你真正需要研究的是 Laravel Boost。

而 Laravel Boost 本身就是建立在 Laravel MCP 之上的——它提供的那些開發工具,全部都是 MCP Tools。


三、安裝 Laravel Boost

安裝非常簡單:

Bash
composer require laravel/boost --dev
php artisan boost:install

Boost 會偵測你的開發環境與 AI Agent,並產生對應的 MCP、Guidelines、Skills 等資源。

安裝之後,你會開始看到類似:

  • .mcp.json
  • .ai/
  • 不同 Agent 所需要的設定檔

這些東西的目的不是取代你的 Laravel 程式碼,而是:

把你的 Laravel 專案變成 AI 更容易理解的開發環境。

核心啟動指令:

Bash
php artisan boost:mcp

如果 IDE 需要手動註冊 MCP,官方提供的設定方式是:

JSON
{
    "mcpServers": {
        "laravel-boost": {
            "command": "php",
            "args": ["artisan", "boost:mcp"]
        }
    }
}

四、Boost 最重要的 MCP Tools

1. Application Info

AI 先了解你的環境。

假設專案是 PHP 8.2 + Laravel 11 + Filament 4 + Livewire + Spatie Media Library。
Boost 可以直接提供這些資訊,AI 不用再靠猜。

2. Database Schema

這個對企業 Laravel 專案非常重要。

很多 Bug 根本不是 PHP 語法問題,而是 Model ≠ Database。
AI 可以直接確認 table、column、type、relationship,再開始改 Code。

3. Database Query

AI 可以直接驗證資料。

以前要手動開 Tinker 查詢再貼給 AI,現在 Agent 可以自己查,工作流程變成真正的 Debugging。

4. Logs(Last Error、Read Log Entries、Browser Logs)

這是我認為 Boost 最實用的功能之一。

從「請貼錯誤訊息」變成 AI 自己去看 Log,Debug 效率明顯提升。

5. Search Docs

避免 AI 使用錯版本 API。

Boost 的 Documentation API 有超過 17,000 筆 Laravel 生態系資訊,並根據專案實際安裝的套件版本提供對應文件(支援 Laravel 10~13、Filament 2~5、Livewire 1~4 等)。


五、Boost 不只是 MCP

如果只把 Laravel Boost 理解成「一個 Laravel MCP Server」,其實低估它了。

Boost 現在還提供:

  • Guidelines:AI 啟動時就應該知道的通用規則(Laravel、Livewire、Pest、Tailwind 等)
  • Skills:需要時才載入的專業知識(例如 Livewire Development、Pest Testing)
  • Project Rules:真正適合企業專案的關鍵

Guidelines 是廣泛、基礎的規範;Skills 則是針對特定工作領域、需要時才啟用。

而 Project Rules 才是教 AI「你的公司系統怎麼寫」的地方。

例如:

  • 所有 Permission 使用既有命名規則
  • 不要自行新增 Repository
  • 修改權限之前必須檢查 Policy / Gate / Shield / Permission Resolver
  • 優先使用既有 Service
  • 不要重複建立 Helper
  • 修改資料庫之前必須先確認 migration

Boost 使用 .ai/rules/ 與 index.md,透過 glob 對應檔案範圍,讓 Agent 只讀取相關規則,而不是一次塞全部 Context。

甚至可以直接跟 Agent 說「記住:所有金額都使用 integer cents 儲存」,Boost 會透過 record-rule 工具把規則寫入 Project Rules。


六、對我來說,Boost 最大的價值

很多人看到 AI Coding 工具,第一個想法是「可以幫我寫 Code,所以會變快」。

但實際上,我認為更大的提升是:

減少 AI 與開發者之間反覆傳遞 Context 的時間。

沒有 Boost:

text
你:這是 Model。
AI:請給 migration。
你:這是 migration。
AI:請給 Service。
你:這是 Service。
AI:請給錯誤 Log。
你:這是 Log。

有 Boost:

text
你:找出這個問題並修正。
AI → Application Info → Database Schema → Code → Logs → Documentation → 修改

真正被加速的其實是 Context Gathering。


七、我自己的 AI 開發流程

如果是 Laravel 專案,我會要求 AI 遵循:

text
Think → Inspect → Understand → Plan → Modify → Verify

而不是:

text
Prompt → Generate Code

具體流程:

  1. 先理解需求
  2. 查看現有實作
  3. 查看 Database Schema
  4. 查看相關 Permission / Policy
  5. 查官方文件
  6. 提出最小修改方案
  7. 修改
  8. 查看 Log / Error
  9. 測試
  10. 檢查 Git Diff

Laravel Boost 剛好可以把其中很多 Context Gathering 的工作交給 Agent。


八、安全性提醒

Boost 能讓 AI 查 Database、執行 Query、讀 Logs,這不代表應該讓 AI 在 Production 隨便操作。

我會建議:

  • Development → 完整 Boost
  • Production → 嚴格限制

尤其是 UPDATE、DELETE、敏感資料、Payment、Authentication 都應該非常謹慎。

AI 工具越強,權限控管反而越重要。

另外,Boost 不是取代你的架構。我會在 Project Rules 明確寫:

  • 不要過度設計
  • 優先使用既有架構
  • 修改前先搜尋現有實作
  • 如果已有相同功能,禁止重新建立
  • 只修改完成需求所必要的檔案
  • 不要進行與需求無關的重構

九、結語:AI Coding 的下一步不是更大的模型,而是更好的 Context

使用 AI 一段時間後,我越來越覺得:

AI Coding 的瓶頸不一定是模型能力,而是 Context。

模型再強,如果它不知道你的 Laravel 版本、資料庫、套件、架構、權限、Log、Coding Convention,它還是可能寫出一段「看起來正確,但不適合你的專案」的 Code。

Laravel Boost 解決的,正是這個問題。

它把 Laravel + MCP + Documentation + Guidelines + Skills + Project Rules 組合起來,最後形成:

text
AI Agent
                       │
                  Laravel Boost
                       │
       ┌───────────────┼────────────────┐
       ↓               ↓                ↓
      MCP         Guidelines          Skills
       │               │                │
       └───────────────┼────────────────┘
                       ↓
                Laravel Application
                       │
        ┌──────────────┼───────────────┐
        ↓              ↓               ↓
      Code           Database         Logs

對我來說,Laravel Boost 最有價值的地方不是「讓 AI 幫我多寫幾行 Code」,而是:

讓 AI 從一個只會產生程式碼的工具,變成真正可以在 Laravel 專案裡工作的開發 Agent。

而這也讓 AI 開發的思維開始從:

text
Prompt → Code

慢慢變成:

text
Context → Understand → Plan → Code → Verify

這才是我認為 Laravel Boost 真正值得導入 Laravel 專案的原因。

2026年9月3日 星期四

AI-First Coding:如何讓 AI 更有效率地幫你寫 Code

AI-First Software Engineering:從 AI Coding 到 Agent Coding 的工程方法

前言:AI Coding 已經不是「幫我寫一段 Code」

過去談 AI Coding,通常是在討論:

AI 能不能幫我產生一段程式碼?

但現在的開發工具已經逐漸從「Code Completion」走向「Agent」。

Agent 不只是產生 Code,而是可以自行:

  • 搜尋專案
  • 閱讀檔案
  • 分析依賴
  • 修改程式
  • 執行測試
  • 查看錯誤
  • 再次修改
  • 重複驗證

因此,軟體工程面對的問題也發生了變化。

以前我們關心:

「這段 Code 寫得好不好?」

現在還必須增加一個問題:

「Agent 能不能在有限的 Context 與 Tool Call 下,找到正確的位置,完成正確的修改,而且不要擴大影響範圍?」

這就是我認為 AI-First Software Engineering 真正值得討論的地方。

它不是「讓 AI 多寫 Code」。

而是:

讓系統更容易被 Agent 定位、理解、修改與驗證。


一、從 AI Coding 進入 Agent Coding

傳統 AI Coding 的流程很簡單:

Developer
    ↓
Prompt
    ↓
AI
    ↓
Code

Agent Coding 則更接近:

Developer
    ↓
Goal
    ↓
Agent
    ├── Search
    ├── Read
    ├── Analyze
    ├── Modify
    ├── Test
    ├── Inspect Error
    └── Retry

最大的差異在於:

Agent 開始自己決定「下一步要看什麼、改什麼、測什麼」。

因此,工程師控制的已經不只是 Prompt。

還包括:

  • Agent 可以搜尋什麼
  • Agent 可以讀多少
  • Agent 可以修改什麼
  • Agent 可以呼叫哪些工具
  • Agent 什麼時候應該停止
  • Agent 發現問題後能不能自行擴大 Scope

這也是為什麼單純討論 Prompt Engineering 已經不夠。


二、Agent 時代,Token 問題不只是 Prompt 長度

很多人談 Token Optimization 時,第一個想到的是:

Prompt 寫短一點。

這確實有幫助,但在 Agent 模式下,通常不是主要問題。

因為真正進入 Context 的內容可能包括:

Initial Prompt
+
Repository Search Results
+
File Contents
+
Tool Outputs
+
Test Results
+
Error Logs
+
Previous Reasoning Context
+
Repeated Context

因此可以用一個簡化模型理解:

Agent Cost
≈
Context Size
×
Tool Calls
×
Iteration Count

這不是嚴格的計費公式,而是一個工程上的思考模型。

例如一個原本只需要修改 10 行的需求:

修改 B12 標題長度

理想流程可能是:

Search B12
↓
Locate b12Steps()
↓
Read relevant code
↓
Modify
↓
Test

但如果 Agent 開始:

Search B12
↓
Read Schema
↓
Read Registry
↓
Read SharedFields
↓
Read Block Service
↓
Read Permission
↓
Read API Resource
↓
Read Model
↓
Run full test suite
↓
Test failure
↓
Read more code
↓
Modify unrelated code

真正浪費的就不是「Code 多少」。

而是:

Agent 為了一個局部需求建立了過大的 Context。

所以 AI-First 的第一個核心原則不是:

Write Less Code

而是:

Understand Only What Is Necessary.


三、Context 是 Agent 的工程資源

在人類工程師的世界裡,我們會管理:

  • CPU
  • Memory
  • Database Connection
  • Network
  • Build Time

Agent 時代,我認為還應該把:

Context

視為一種工程資源。

因為 Context 越大,不代表 Agent 一定越聰明。

反而可能增加:

  • 無關資訊干擾
  • 推理成本
  • 工具輸出成本
  • 錯誤判斷
  • 修改範圍
  • Token 消耗

所以好的 Agent Workflow 應該遵循:

Search
→ Locate
→ Read Relevant Context
→ Decide
→ Modify

而不是:

Read Everything
→ Understand Everything
→ Modify

這個差異非常重要。


四、不要追求「最少檔案」,要追求「可定位性」

這是 AI-First 架構很容易被誤解的地方。

有人會說:

「既然 Agent 不喜歡跨檔案,那是不是所有東西都放在同一個檔案?」

不是。

大型系統如果過度集中,同樣會造成:

  • 高耦合
  • 高認知負擔
  • 修改風險
  • Merge Conflict
  • 測試困難

所以真正值得優化的不是:

File Count

而是:

Navigation Cost

例如:

protected static function b12Steps(): Block
{
    // ...
}

這種明確的方法命名,本身就是一個 Navigation Point。

當需求是:

修改 B12 的步驟標題限制

Agent 可以透過:

B12
→ b12Steps()
→ title
→ maxLength()

快速定位。

相反地,如果整個 CMS 都依賴:

buildBlock($type, $config)

再由多層 Registry、Factory、Resolver、Provider 動態組裝,

雖然架構可能很抽象,但 Agent 必須追蹤更多執行路徑。

因此:

AI-Friendly Architecture 並不代表少抽象,而是抽象必須具有可追蹤性。


五、命名在 Agent 時代變得更加重要

人類工程師可以透過 IDE、經驗與上下文理解:

handle()
process()
build()
resolve()
transform()

到底在做什麼。

Agent 也能理解,但需要更多 Context。

相比之下:

buildInvestorBlocks()
resolvePageBlockPermission()
exportAgeFriendlyTranslations()
syncProjectProgressItems()

這些名稱本身就提供了更多語意。

所以在 Agent Coding 裡:

Good Naming 不只是可讀性問題,也是 Context Compression。

一個好的名稱可以減少 Agent 為了理解「這個方法到底在做什麼」而需要讀取的 Code。


六、真正要避免的是 Hidden Convention

大型 Laravel 專案通常存在大量 Convention:

Permission Naming
Resource Naming
Translation Handling
File Storage
API Response
Model Traits
Shared Fields
Import / Export
Cache

對熟悉專案的人來說,這些規則可能是「常識」。

但對 Agent 來說,如果規則只存在於:

  • 某個資深工程師的腦中
  • 過去 PR
  • 某個不明顯的 Trait
  • 一個歷史遺留的寫法

Agent 就很容易自行推測。

而 AI 最危險的地方之一就是:

它通常可以提出一個看起來合理、但不符合你專案既有規則的答案。

例如專案已經有:

SharedFields
FeaturePermissionService
HasTranslatable
BaseTranslationService
BlockRegistry

Agent 卻另外建立:

NewHelper
NewService
NewTrait
NewRepository

從單一檔案來看可能沒有問題。

但從整個系統來看,這是在增加第二套 Convention。

因此:

Reuse Before Create

應該成為 Agent Coding 的基本規則。


七、Agent 不應該自行發明 Architecture

Agent 很容易出現一種行為:

需求:

修正一個欄位驗證。

Agent:

「為了提高可維護性,我建議建立 ValidationService。」

這就是典型的:

Speculative Architecture

它不是一定錯。

問題是:

目前需求真的需要嗎?

如果現有程式碼已經可以:

->maxLength(12)

完成需求,那麼建立:

ValidationService
ValidationInterface
ValidationResolver
ValidationFactory

就可能只是增加系統複雜度。

所以 Agent 應該遵循:

Existing Pattern
      ↓
Can it solve the problem?
      ↓
Yes → Reuse
      ↓
No
      ↓
Consider New Abstraction

而不是:

New Requirement
      ↓
New Class
      ↓
New Service
      ↓
New Abstraction

八、Minimal Diff 比「漂亮重構」更重要

Agent 最容易做的一件事就是:

順便幫你整理。

例如:

需求:
修改 B12 標題長度

理想 Diff:

- ->maxLength(10)
+ ->maxLength(12)

但 Agent 可能變成:

- 重構 B12
- 抽 Helper
- 調整命名
- 整理 imports
- 修改其他 Block
- 調整 Registry
- 修改測試

最後得到:

+80
-120

這時候即使 Code 本身沒有明顯問題,Review 成本也大幅增加。

更重要的是:

你已經很難快速確認「真正的需求修改」在哪裡。

所以:

Minimal Diff Principle

不是追求 Diff 數字越小越好。

而是:

Diff 應該與需求的必要變更高度相關。


九、Small Diff 的真正價值是縮小 Regression Scope

假設:

修改 A

只影響:

A

那測試範圍可能就是:

Test A

但如果 Agent 順便修改:

A
B
C
Shared Helper
Base Service

測試範圍就可能變成:

A
B
C
所有使用 Shared Helper 的功能
所有使用 Base Service 的功能

因此:

Small Diff
    ↓
Small Dependency Change
    ↓
Small Regression Scope
    ↓
Faster Verification

這是 Agent Coding 很重要的工程價值。


十、Agent 最大的風險之一:Scope Creep

Agent 很容易從:

Fix A

變成:

Fix A
→ 發現 B 不漂亮
→ 修 B
→ 發現 C 可以重構
→ 修 C
→ 發現 D 架構問題
→ 修 D

最後:

原本一個 Bug Fix 變成 Architecture Refactoring。

因此我認為 Agent 必須明確區分:

Observation

Agent 發現了一個問題。

與:

Authorization

Agent 被允許修改這個問題。

兩者完全不同。

例如:

Agent 發現:
SharedFields 有歷史技術債。

正確行為:

報告:
發現 SharedFields 存在另一個問題,
但此問題不在本次 Scope。

而不是:

順手重構 SharedFields。

這是一個非常重要的 Agent Governance 概念:

發現問題 ≠ 獲得修改問題的授權。


十一、Agent 必須有 Stop Condition

傳統程式:

while (...)

如果沒有終止條件,就是 Bug。

Agent Workflow 其實也是一樣。

如果只告訴 Agent:

「直到問題解決為止。」

Agent 理論上可以:

Search
→ Modify
→ Test
→ Error
→ Modify
→ Test
→ Error
→ Search
→ Modify
→ Test

一直循環。

所以 Agent Task 應該有明確的 Stop Condition。

例如:

1. 已找到 Entry Point
2. 已確認 Root Cause
3. 已確認既有 Convention
4. 已完成最小修改
5. Diff 沒有無關變更
6. 相關測試通過

如果無法達成:

停止並報告,而不是無限嘗試。

這其實比「讓 Agent 更自主」更重要。


十二、Agent 的探索也應該是 Bounded Exploration

我不認為 Agent 應該完全禁止探索。

因為大型系統裡,真正的問題可能跨越:

Controller
→ Service
→ Model
→ Trait

所以正確方式不是:

不准讀其他檔案。

而是:

允許擴大 Context,但必須有理由。

例如:

Level 0
需求直接相關檔案

Level 1
直接 Dependency

Level 2
必要 Convention

Level 3
測試或錯誤相關程式碼

只有當目前 Context 無法做出正確決策時,才進入下一層。

這可以稱為:

Bounded Exploration

不是限制 Agent 的能力。

而是限制 Agent 的無目的探索。


十三、Tool Output 也是 Context

這是實際使用 Agent 時很容易忽略的問題。

很多人會控制:

「不要讀太多 Code。」

但忽略:

Search Result
Test Output
Log
Stack Trace
CLI Output
Git Diff

全部也可能進入 Agent Context。

例如:

grep "Project" .

可能得到數百筆結果。

如果 Agent 全部讀取,這些搜尋結果本身就成為 Context。

所以 Agent Tool 使用也需要控制:

Search → Narrow
Read → Relevant Range
Test → Targeted
Logs → Relevant Error
Diff → Current Change

換句話說:

Tool 不只是能力,也是 Context Generator。


十四、測試策略也必須 Agent-Friendly

AI 很容易被教成:

修改完 → 跑全部測試。

但大型專案這未必是最有效率的方法。

例如:

修改單一 Filament Block

第一階段可以:

Static Check
↓
Targeted Test
↓
Relevant Feature Test

如果涉及:

Shared Service

再擴大:

Related Test Suite

最後才考慮:

Full Test Suite

這不是說永遠不要跑完整測試。

而是:

驗證範圍應該與變更風險一起成長。


十五、Error Recovery 是 Agent Token 成本的大來源

Agent 真正容易浪費 Token 的地方,往往不是第一次修改。

而是:

第一次修改錯了之後怎麼辦?

例如:

Modify
↓
Test
↓
Error
↓
Read more
↓
Guess
↓
Modify
↓
Test
↓
Error

如果沒有控制,Agent 很容易進入:

Error → Guess → Modify → Error

的循環。

比較好的流程應該是:

Test Failure
↓
Identify Root Cause
↓
Locate Relevant Code
↓
Minimal Fix
↓
Retest

如果 Root Cause 無法確認:

Stop
↓
Report

而不是:

Guess another fix

這會同時降低:

  • Token
  • Diff
  • Regression
  • Debugging Cost

十六、因此 AI Coding Prompt 應該從「命令」變成「Contract」

好的 Agent Prompt 不只是:

幫我修這個 Bug。

而應該包含:

Goal
Scope
Constraints
Reuse Rules
Exploration Rules
Verification Rules
Stop Conditions
Output Format

例如:

AI Coding Task

Goal
[描述需求]

Scope
只允許修改:
- [File]
- [Class]
- [Method]

Before Modify
1. 先確認 Root Cause。
2. 找出 Entry Point。
3. 搜尋現有可重用實作。
4. 確認專案既有 Convention。

Constraints
- 不修改 Scope 以外的 Code
- 不新增檔案,除非確實必要
- 不新增 Service / Helper / Trait / Repository
- 不修改 DB / API / Architecture
- 不進行額外重構
- 不重新命名無關程式碼

Context Rules
- 優先 Search → Locate → Read
- 只讀取完成需求所必要的 Dependency
- 不要讀取無關檔案
- Tool Output 避免大量無關內容

Modification
- 使用最小必要 Diff
- 保留既有 Code Style
- 優先修改現有實作

Verification
- 檢查 Diff
- 執行最小必要測試
- 測試失敗時先確認 Root Cause
- 不因測試失敗而任意擴大 Scope

Stop Conditions
- 找不到 Root Cause
- 需要修改 Scope 外架構
- 需要新增重大抽象
- 無法確認需求
→ 停止並報告,不要猜測。

Output
- Root Cause
- Modified Files
- Modified Methods
- What Changed
- Impact
- Test Scope

這已經不是單純 Prompt。

比較接近:

Agent Coding Contract。


十七、專案本身也需要提供 Agent Context

不能所有事情都丟給 Prompt。

一個成熟的 AI-First 專案,應該把重要規則顯式化。

例如:

AI-CODING-RULES.md
ARCHITECTURE.md
CONTRIBUTING.md

或者更實際一點:

docs/
├── architecture/
├── conventions/
├── api/
└── development/

內容不需要寫成一本書。

重點是讓 Agent 可以快速知道:

這個專案怎麼做?

例如:

Authentication
→ 使用既有 Permission Convention

Translation
→ 使用 HasTranslatable

API Response
→ 使用既有 Response Wrapper

File Storage
→ 使用既有 FileUrlCast

CMS Blocks
→ 使用既有 Block Registry

這些規則如果被明確記錄:

Agent 就不需要從 Code 猜 Convention。


十八、但 Documentation 也不能無限制增加

這裡又有另一個陷阱。

為了讓 Agent 理解專案,開始建立:

50 個 Markdown
300 頁 Architecture Documentation

結果 Agent 每次又要讀大量文件。

這同樣會造成 Context 問題。

所以 Documentation 本身也應該遵循:

High Signal / Low Noise

好的文件應該回答:

這個專案有哪些不可違反的規則?
這個功能應該從哪裡開始找?
有哪些既有實作可以重用?
哪些事情禁止自行修改?

而不是把整個 Repository 再用 Markdown 描述一次。


十九、AI-First 不代表拋棄傳統 Software Engineering

這一點非常重要。

AI-First 不是:

AI > Architecture

也不是:

AI > Tests

更不是:

AI > Human Review

真正的關係應該是:

Software Engineering Principles
            +
Agent-aware Workflow
            ↓
AI-First Engineering

依然需要:

  • Cohesion
  • Coupling Control
  • Encapsulation
  • Testing
  • Security
  • Observability
  • Code Review
  • Domain Boundaries

只是現在又多了一個使用者:

Agent

所以架構除了服務 Runtime 與 Developer,也開始需要考慮:

Agent 如何理解這個系統。


二十、Human-readable 與 AI-navigable 並不是二選一

真正成熟的架構不是:

Human-readable
vs
AI-readable

而是:

Human-readable
+
Machine-readable
+
Agent-navigable

好的程式碼依然需要讓人理解。

只是現在又增加一個要求:

Agent 能不能透過搜尋、命名、結構與 Convention 快速找到它?

因此我比較傾向使用:

AI-Navigable Architecture

而不是:

AI-Optimized Architecture

因為後者很容易讓人誤解成:

為了 AI 而犧牲正常的軟體工程。

真正的目標應該是:

讓人與 Agent 都能有效率地導航系統。


二十一、AI-First 的核心不是「少寫 Code」

如果把前面的概念全部整理起來,可以得到一個比較完整的模型:

Requirement
    ↓
Scope
    ↓
Search
    ↓
Locate
    ↓
Minimal Context
    ↓
Existing Convention
    ↓
Minimal Change
    ↓
Minimal Diff
    ↓
Targeted Verification
    ↓
Stop

其中任何一個環節失控,都可能增加成本。

例如:

Context 太大
→ Token 增加

Search 太廣
→ Tool Output 增加

Dependency 太深
→ 理解成本增加

Scope 太大
→ Diff 增加

Diff 太大
→ Regression 增加

Test 太廣
→ Verification 成本增加

Error Recovery 沒有控制
→ Agent Loop 增加

所以真正需要優化的是:

Change Path

而不只是:

Code Generation


二十二、我認為 AI-First 可以濃縮成六個原則

1. Locate Before Modify

先找到真正負責需求的 Entry Point。

不要沒有定位就開始寫 Code。


2. Reuse Before Create

先搜尋既有:

  • Helper
  • Service
  • Trait
  • Component
  • Convention
  • Enum
  • Transformer

確認真的沒有,再考慮新增。


3. Context Before Complexity

不要讓 Agent 為了完成一個小需求理解整個系統。

必要時才擴大 Context。


4. Change Before Refactor

先完成需求。

不要把每一次 Bug Fix 都變成 Architecture Refactoring。


5. Verify Before Expand

先驗證目前修改。

測試失敗時先找 Root Cause。

不要因為錯誤就無限制擴大修改範圍。


6. Stop Before Guess

當需求、架構或 Root Cause 無法確認時:

停止。

比猜一個看起來合理的答案更專業。


二十三、最後重新定義「AI 開發效率」

如果只是:

AI 每分鐘產生多少行 Code?

這個指標其實沒有太大意義。

更有價值的應該是:

從 Requirement
到 Verified Change

中間需要多少:

  • Context
  • Tool Calls
  • Agent Iterations
  • Diff
  • Regression Tests

因此可以用一個工程上的簡化模型:

Agent Efficiency
=
Correctness
×
Navigation Efficiency
×
Context Efficiency
×
Change Precision
×
Verification Efficiency

而不是:

Agent Efficiency
=
Lines of Code / Minute

因為:

寫出 1000 行錯誤 Code,比寫出 10 行正確 Code 沒有價值。


結語:AI-First 真正改變的是「變更成本」

我認為 AI Coding 真正帶來的變化,不是:

「以後工程師不用寫 Code 了。」

而是:

Code Generation 的成本下降之後,Context Management、Change Control 與 Verification 反而變得更加重要。

Agent 可以幫我們:

Search
Read
Write
Test
Fix

但 Agent 越自主,工程師越需要控制:

Scope
Context
Dependencies
Tool Calls
Diff
Regression
Stop Conditions

所以真正成熟的 AI-First Development,不是讓 Agent 擁有最大的自由度。

而是:

給 Agent 足夠的自由完成工作,同時給它清楚的邊界,避免它為了完成一個小需求而理解整個系統、修改整個架構、跑完整個測試套件。

最終可以把這套方法濃縮成一句話:

Don't optimize how much code the Agent can write. Optimize how little context the Agent needs to make one correct change.

而這也會逐漸改變我們對「好架構」的定義。

過去我們主要問:

人類工程師能不能理解這個系統?

現在還需要問:

Agent 能不能快速找到正確的位置、理解必要的 Context、做出最小變更,並且知道什麼時候應該停止?

這不是把 Software Engineering 交給 AI。

而是:

把 Agent 納入 Software Engineering 的設計範圍。

這才是我認為從 AI Coding 走向 Agent Coding 之後,真正值得討論的 AI-First Software Engineering。

2026年9月1日 星期二

AI-Assisted Software Engineering 從 SDD、AI Workflow 到 Architecture Governance

 

AI-Assisted Software Engineering

從 SDD、AI Workflow 到 Architecture Governance

AI 負責速度,工程師負責方向;Spec 負責約束,Architecture 負責品質。


一、背景:AI Coding 解決了什麼,又帶來了什麼問題?

生成式 AI 出現之後,軟體開發效率有了非常明顯的提升。

現在透過 AI,可以快速完成:

  • Controller

  • Service

  • Model

  • Migration

  • API

  • Vue Component

  • Filament Resource

  • Validation

  • Test

  • Refactoring

  • Debugging

以前可能需要幾個小時完成的工作,現在幾十分鐘甚至幾分鐘就能完成。

但當 AI 開始大量參與實際專案開發後,我發現一個很重要的問題:

AI 最大的風險不是寫不出 Code,而是寫太多「看起來合理」的 Code。

例如:

  • 已經存在的 Service,AI 又建立一個新的

  • 原本應該放在 Service 的邏輯被塞進 Controller

  • 為了修一個問題順便重構整個模組

  • 新增一套與既有 API 不一致的 Response Format

  • 修改功能時忽略 Permission

  • 為了符合 AI 自己熟悉的 Pattern,改變原本專案架構

  • 解決 A 問題後,引入 B、C、D 問題

  • 每次修改都合理,但長期造成 Architecture Fragmentation

所以我開始重新思考:

如果 AI 已經可以高速產生 Code,那工程師真正需要控制的是什麼?

我的答案是:

Specification、Workflow、Architecture。

因此,我逐漸建立了一套自己的 AI 輔助軟體工程流程:

                    AI-Assisted
                 Software Engineering
                         │
        ┌────────────────┼────────────────┐
        ↓                ↓                ↓
       SDD          AI Workflow     Architecture
        │                │                │
     定義問題          約束 AI           驗證結果
        │                │                │
        └────────────────┼────────────────┘
                         ↓
                  Controlled AI
                   Development

二、核心理念:我不把 AI 當 Senior Developer

我的 AI 開發方式有一個非常明確的定位:

我把 AI 當成一個速度非常快的 Junior Engineer。

AI 可以負責:

  • 搜尋

  • 分析

  • 撰寫 Code

  • Debug

  • Refactoring

  • Test

  • 文件整理

但不應該自行決定:

  • 核心 Architecture

  • Business Rule

  • Database Model

  • 大型 Refactoring

  • 技術選型

  • 需求邊界

原因很簡單。

AI 很擅長回答:

「這段 Code 怎麼寫?」

但工程師真正需要回答的是:

「這段 Code 應該放在哪裡?」

以及:

「我們真的需要這段 Code 嗎?」

這兩個問題,本質上是不同的。


三、SDD:Spec Before Code

我將第一個核心概念定義為:

Spec Before Code

也就是在讓 AI 修改 Code 之前,先把問題定義清楚。

傳統 AI Coding 通常是:

需求
 ↓
Prompt
 ↓
AI 寫 Code
 ↓
發現問題
 ↓
再叫 AI 修改
 ↓
繼續累積修改

而我的流程是:

需求
 ↓
Specification
 ↓
Existing Architecture Analysis
 ↓
Call Chain
 ↓
Data Flow
 ↓
Constraints
 ↓
Implementation Plan
 ↓
Implementation
 ↓
Verification

四、我的 SDD Template

我會讓 Specification 至少包含以下區塊。

1. Goal

這次需求真正要解決什麼問題?

不是只描述「我要新增一個功能」,而是要說明:

為什麼需要這個功能?


2. Scope

明確定義這次修改的範圍。

例如:

  • Backend

  • API

  • Database

  • Frontend

  • Permission

  • Cache

  • Queue

同時標示哪些模組受到影響。


3. Non-goals

這是我認為非常重要、而且很容易被忽略的一部分。

除了告訴 AI:

「這次要做什麼。」

也必須告訴 AI:

「這次不要做什麼。」

例如:

## Non-goals

本次需求不包含:

- 不重構現有 Service 架構
- 不修改既有 API Response Format
- 不新增 Repository Layer
- 不修改既有 Permission Naming
- 不處理無關的 Technical Debt
- 不進行 Frontend Component 重構
- 不修改其他既有模組

這可以有效降低 AI 的過度設計。

因為 AI 很容易看到一個問題後順手說:

「既然這裡可以改善,我一起重構。」

但在實際專案中:

「可以改善」不代表「現在應該改善」。


五、Existing Architecture:先理解,再修改

AI 最常見的問題之一,是直接假設架構。

例如:

「這個專案應該使用 Repository Pattern。」

然後 AI 開始新增:

Controller
 ↓
Service
 ↓
Repository
 ↓
Model

但實際專案可能根本沒有 Repository Layer。

這時候 AI 雖然寫出來的 Code 沒有錯,但它已經開始改變 Architecture。

所以我要求 AI:

先找現有架構,不要自己假設架構。

例如 Laravel 專案:

Route
 ↓
Controller
 ↓
Service
 ↓
Model
 ↓
Database

如果既有架構就是這樣,就優先延續既有模式。


六、Call Chain:不要猜,直接追

在大型專案中,我非常重視 Call Chain。

例如一個 API:

POST /api/quest/select
        ↓
QuestController
        ↓
checkEligibility()
        ↓
QuestService
        ↓
Business Rule
        ↓
Database

如果直接看到 Controller 就開始修改,很容易判斷錯誤。

因此我會要求 AI:

1. 找 Route
2. 找 Controller
3. 找實際呼叫的方法
4. 追 Service
5. 找 Model
6. 找 Database
7. 找相關 Permission
8. 找 Frontend 呼叫位置
9. 找 Test

先回答:

「這個功能實際上是怎麼運作的?」

再開始 Coding。


七、Data Flow:確認資料怎麼流動

除了 Call Chain,我也會確認 Data Flow。

例如:

Frontend
   ↓
Request
   ↓
Validation
   ↓
Controller
   ↓
Service
   ↓
Model
   ↓
Database
   ↓
Resource / Transformer
   ↓
API Response
   ↓
Frontend

這可以避免只修改 Backend,卻忘記:

  • API Response

  • Frontend Payload

  • Validation

  • Transformer

  • Database

  • Cache

等相關位置。

因此 SDD 不只是「需求文件」,它其實也是:

AI 修改系統前的 Context Boundary。


八、Constraints:告訴 AI 哪些事情不能做

AI 如果沒有約束,很容易產生過度設計。

所以我會明確設定:

Constraints

- 優先使用既有 Service
- 不建立重複功能
- 不進行無關重構
- 不修改既有 API Contract
- 不改變既有 Business Rule
- 保持既有 Permission Naming
- 修改範圍保持最小
- 如果現有架構不足,先提出方案,不直接重構

這裡的核心原則是:

AI 可以提出方案,但不能默認擴大 Scope。


九、AI Workflow:把開發流程標準化

建立 SDD 後,我再將 AI 的工作分成幾個階段。

Phase 1:Understand

AI 只負責理解。

Search
 ↓
Read
 ↓
Trace
 ↓
Understand

這個階段不修改 Code。


Phase 2:Analyze

分析:

Current Architecture
        ↓
Problem
        ↓
Root Cause
        ↓
Impact
        ↓
Possible Solutions

重點是找 Root Cause,而不是只處理表面症狀。


Phase 3:Propose

AI 提出方案。

例如:

Option A

修改既有 Service。

Option B

建立新的 Service。

Option C

重構整個模組。

然後由工程師判斷哪個方案適合目前 Architecture。


Phase 4:Implement

方案確認後,才讓 AI 實作。

此時 AI 就可以發揮最大的效率:

  • Generate Code

  • Generate Test

  • Modify Files

  • Refactor

  • Debug


Phase 5:Verify

完成後再次檢查:

Functional
 ↓
Regression
 ↓
API
 ↓
Database
 ↓
Permission
 ↓
Performance

最後才算完成。


十、最小修改原則

AI 開發中,我非常重視:

Minimal Change

例如今天只是修正一個 Business Rule。

理想情況:

Controller
 ↓
Existing Service
 ↓
修正 Business Rule

而不是:

Controller
 ↓
重構 Service
 ↓
新增 Repository
 ↓
修改 Model
 ↓
修改 API
 ↓
重寫 Frontend

即使後者「架構看起來更漂亮」,也不代表它是正確的工程決策。

因為每增加一個修改點,就增加一個 Regression Risk。

所以我的原則是:

先解決問題,再考慮重構。


十一、Architecture Check:AI 寫完不代表完成

我認為 AI Coding 最大的缺口之一,就是:

AI 可以確認 Code 能跑,但不一定能確認 Architecture 是否健康。

因此我會另外做 Architecture Check。


十二、Level 1:Daily Architecture Checklist

每次 AI Coding 完成後,可以快速檢查:

#Check問題
1Scope是否只修改需求必要範圍?
2Duplication是否新增了既有功能的第二套實作?
3ResponsibilityController / Service / Model 職責是否清楚?
4Call Chain是否確認實際呼叫鏈後才修改?
5Data FlowRequest → API → DB → Response 是否一致?
6Permission新功能是否同步檢查權限?
7Performance是否引入 N+1、重複 Query 或大量資料載入?
8Regression是否確認既有功能沒有受到影響?

這個 Checklist 的目的不是取代 Code Review。

而是建立一個最低限度的:

Architecture Quality Gate


十三、Level 2:Module Architecture Review

當修改的是重要模組,就不只做快速 Check。

會完整追:

API
 ↓
Controller
 ↓
Service
 ↓
Model
 ↓
Database

再確認:

Frontend
Permission
Cache
Queue
Test

例如一個新的 API,不只是確認 Controller 是否正確,而是確認:

Request
 ↓
Validation
 ↓
Business Logic
 ↓
Database
 ↓
Transformer
 ↓
Response
 ↓
Frontend

整條鏈是否一致。


十四、Level 3:Full Architecture Audit

大型專案或累積大量 AI 修改後,可以進行完整架構健檢。

我會將它分成:

                Architecture Audit
                       │
       ┌───────────────┼───────────────┐
       ↓               ↓               ↓
      API              DB              Auth
       │               │               │
       ↓               ↓               ↓
   Frontend       Performance       Permission
       │               │               │
       └───────────────┼───────────────┘
                       ↓
                 Technical Debt

最後不是單純列出「有問題」。

而是進一步分類:

Critical

可能影響資料正確性、安全性或核心功能。

High

可能造成重大維護成本或效能問題。

Medium

可以改善,但短期不一定需要處理。

Low

Code Quality 或未來可優化項目。

這可以避免 Architecture Review 最後變成:

「看到什麼就全部重構。」


十五、實際案例一:AI 建立重複 Service

Problem

需求是新增一個翻譯匯入功能。

AI 分析後提出:

建立新的 TranslationService

程式本身沒有明顯錯誤。

甚至測試也可以通過。

但進行 Architecture Check 後發現:

Existing TranslationService
        +
New TranslationService
        ↓
相同責任開始分散

問題不在 Code 能不能執行。

問題在:

系統開始出現兩個相同責任的入口。


修正

重新追蹤既有架構後,發現原本的 Translation Service 已經負責相關流程。

因此最後改成:

需求
 ↓
尋找 Existing Service
 ↓
確認既有責任
 ↓
擴充 Existing Service
 ↓
維持單一責任入口

這個案例讓我更加確定:

AI 產生的方案不一定是錯的,但不一定適合既有 Architecture。


十六、實際案例二:修問題前先追 Call Chain

另一類常見問題是:

表面看到的錯誤位置,不一定是真正的問題位置。

例如 API:

POST /api/xxx
 ↓
Controller
 ↓
checkEligibility()
 ↓
Service
 ↓
Business Rule

如果直接看到 Controller 就修改,很容易把 Business Logic 放到錯誤的位置。

因此我會先追完整 Call Chain。

最後可能發現:

Controller
    ↓
只負責 Request / Response

Service
    ↓
真正負責 Business Rule

所以正確的修改方式不是:

「Controller 有問題 → 修改 Controller」

而是:

「找到真正的責任邊界 → 在正確的 Layer 修改。」

這也是我在 AI Coding 中非常重視的觀念。


十七、這套流程帶來的改變

建立這套方法後,我認為 AI Coding 的工作模式產生了一個很大的變化。

以前:

工程師
 ↓
寫 Code

現在:

工程師
 ↓
定義問題
 ↓
定義 Architecture
 ↓
制定 Constraints
 ↓
指揮 AI
 ↓
Review
 ↓
Verification

工程師花在「手寫 Code」的比例下降。

但花在:

  • Requirement Analysis

  • Architecture

  • Debugging

  • Code Review

  • System Design

  • Quality Control

的比例反而提高。

我認為這並不是工程師價值下降。

反而是工程師的工作開始往更高層次移動。


十八、我對 AI Engineering 的理解

我認為 AI 時代的工程能力,可以分成三層。

第一層:AI Coding

知道怎麼讓 AI 寫 Code。

Prompt
 ↓
Code

這是最基本的能力。


第二層:AI-Assisted Development

知道怎麼把 AI 放進日常開發流程。

Requirement
 ↓
AI Analysis
 ↓
Implementation
 ↓
Test
 ↓
Review

效率會比單純 Coding 高很多。


第三層:AI Engineering

建立一套可以控制 AI 的工程方法。

Specification
       ↓
AI Workflow
       ↓
Implementation
       ↓
Verification
       ↓
Architecture Governance

這時候 AI 已經不是單純的 Coding Tool。

而是:

Software Engineering 的一部分。


十九、我的三層方法論

最後,我把整套方法濃縮成三個核心。

① SDD — Define

回答:

我們到底要做什麼?

透過:

  • Goal

  • Scope

  • Non-goals

  • Existing Architecture

  • Call Chain

  • Data Flow

  • Constraints

  • Acceptance Criteria

定義問題。


② AI Workflow — Control

回答:

AI 應該怎麼做?

透過:

Understand
 ↓
Analyze
 ↓
Propose
 ↓
Implement
 ↓
Verify

控制 AI 的行為。


③ Architecture Check — Govern

回答:

AI 做完之後,系統還健康嗎?

透過:

Daily Check
 ↓
Module Review
 ↓
Full Architecture Audit

持續控制 Architecture Quality。


二十、結語

我認為 AI Coding 真正帶來的改變,不是:

「工程師不用寫 Code 了。」

而是:

「工程師需要把更多注意力放在 Code 以外的工程問題。」

AI 可以讓 Code 產生速度提高十倍。

但如果沒有 Specification、Workflow 與 Architecture Governance,

那麼 Technical Debt 也可能累積得更快。

所以我現在對 AI 輔助開發的核心理念是:

Think Before Code.

Spec Before AI.

Minimal Change Before Refactoring.

Architecture Before Scale.

AI 負責速度。

SDD 負責方向。

Workflow 負責控制。

Architecture Check 負責品質。

而工程師真正的價值,是把這四件事情串起來,讓 AI 不只是「會寫 Code」,而是能夠在既有軟體工程規範下,持續產生正確、可維護、可演進的系統。

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

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