Back to Blog
等 Uber 的五分鐘,四個 AI 幫我規劃完整個功能——回到辦公桌,我只做 Code Review
📋 Case Study

等 Uber 的五分鐘,四個 AI 幫我規劃完整個功能——回到辦公桌,我只做 Code Review

B
Blake
Apr 24, 2026 By Blake 16 min read
No Human Code 不是取代工程師,是讓工程師專注在架構決策和品質把關

前情提要

上一篇,我展示了 OpenAB + MCP 如何讓設計師貼 Figma link → AI 自動開 Jira ticket。一個 agent、一條 pipeline、一個自動化。

那篇文章的結尾,我提到了 No Human Code 的概念:

PRD (Notion)
  ↓  AI reads
Tickets (Linear/Jira)
  ↓  AI reads design
Spec (Figma)
  ↓  AI generates
Code (GitHub PR)
  ↓  Human reviews
Production

Where's the human coding? Only at the review gate.

那時候這還是一張架構圖。這篇文章,記錄的是它實際跑起來的樣子。


為什麼我覺得這行得通

先聊一下背景。

我做了 9 年前端工程。DISC 測出來謹慎型 C = 90%,MBTI 是 INFJ-A。簡單講:我是那種會花三天設計架構、確認每個環節都想清楚了,才放心讓人開始執行的人。 不是因為要控制,是因為經驗告訴我——架構沒設計好就開工,後面修的時間比省的多。

過去,執行的是團隊裡的工程師。
現在,多了一個選項:AI agent。

但 AI 不是丟需求就會自己跑。你需要先把幾件事想清楚:

  1. 架構怎麼切——什麼東西該怎麼做

  2. 範圍怎麼分——誰負責什麼,看到什麼

  3. 驗收怎麼定——做出來的東西怎樣算合格

這些是我花最多時間的部分。分析、拆解、寫 code、測試——這些 AI 可以做,而且做得不差。


場景:路邊,12:23 PM

Blake 手持手機,螢幕顯示 @梅長蘇 指令  AI 開始掃 codebase

週六中午 12:23,台北街頭,等 Uber。

老闆要一個 OAuth2 社群登入功能,支援 Google 和 GitHub,下週 demo 要用。我站在路邊想了一下——OAuth2 不是小功能,通常光是對齊需求就要花半天。但這個專案的架構我設計過,每個 agent 的 scope 我切好了,working_dir 都指定過了。如果系統設計是對的,那一句話應該就夠。

我打開手機 Discord,打了一句話:

「@梅長蘇 老闆想要一個 OAuth2 社群登入功能,支援 Google 和 GitHub,下週 demo 要用」

送出。

說實話,送出的時候還是有點不確定。我不確定 AI 能不能正確判斷 codebase 的現狀、不確定分派的品質如何。但我想的是——如果結果不好,我看一眼就知道了,風險可控。

接下來發生的事,在我等車的五分鐘內完成。


梅長蘇醒了(12:23 PM)

螢幕顯示梅長蘇分析 codebase 現狀,done vs missing 清單

梅長蘇是 Architect agent。它收到指令後,第一件事不是寫 code——而是掃整個 codebase,判斷現狀

它找到了:

  • django-allauth + dj-rest-auth 已安裝

  • Google/GitHub provider 已加進 INSTALLED_APPS

  • OAuth scopes 已設定

  • 自訂 CustomSocialAccountAdapter 處理 user.name 映射

  • 前端 LoginPage.tsx 有 Google/GitHub 按鈕

  • 前端 AuthCallbackPage.tsx 已能接收 token 參數

然後它做了一個判斷:

「前人已經佈了不少基礎...前端的社群登入按鈕和 callback 頁面也有了雛形,只是流程沒有串通。」

接著列出缺少的五個關鍵環節:

  1. 後端 OAuth callback + JWT token 的完整流程

  2. 後端 dj-rest-auth social endpoints 正確串接

  3. 前端 OAuth redirect URL 和 client ID 配置

  4. 錯誤處理與邊界情況

  5. Google/GitHub OAuth App 的申請與環境變數設定

看到這個分析的時候,我覺得判斷的方向是對的。它不只是列出缺什麼,是先確認了什麼已經做完,然後才判斷缺口在哪。這跟我自己分析 codebase 的邏輯一樣——先看現狀,再看差距。


分派(12:23 - 12:27 PM)

我還站在路邊。Uber 還有兩分鐘。梅長蘇已經開始分工了。

分派簡晨 Backend 核心任務  言豫津 Frontend 任務

@簡晨(Backend Dev):

  1. 實作 SocialLoginView:根據 provider 動態建授權 URL 並 redirect

  2. 實作 SocialCallbackView:接收 authorization code,透過 allauth 換 token 登建立/綁定用戶

  3. callback 成功後產生 JWT,redirect 至前端 /auth/callback?access=...&refresh=...

  4. 新用戶自動建立,role 預設 USER;已有用戶(相同 email)自動綁定 social account

為什麼: 這是整個 OAuth flow 的核心,前端按鈕點下去到 token 回來,全靠這段。

驗收標準:

  • POST /api/v1/auth/social/google//github/ 能正確啟動 OAuth flow

  • callback 成功後回傳有效的 JWT access + refresh token

  • 新用戶自動建立,已有用戶正確關聯

@言豫津(Frontend):

  1. 更新 LoginPage.tsx 的社群登入按鈕,正確導向後端 OAuth 入口

  2. 確認 AuthCallbackPage.tsx 能正確處理成功和失敗兩種情況(loading 狀態、錯誤提示)

  3. 加入 VITE_GOOGLE_CLIENT_ID 等環境變數配置到 .env.example

  4. 確保 callback 後 token 存入 localStorage,跳轉到 /dashboard

為什麼: 用戶點「Google 登入」到進入系統,整個體驗要流暢無縫。

驗收標準:

  • 點擊 Google/GitHub 按鈕能正確跳轉到 OAuth 授權頁

  • 授權後自動回到系統並完成登入

  • 失敗時顯示友善錯誤訊息,不會白屏

蒙摯 Backend Ops 環境準備  時程表  emoji reactions

@蒙摯(Backend Ops):

  1. 在 Railway 後端加入環境變數:GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETGITHUB_CLIENT_IDGITHUB_CLIENT_SECRET

  2. 確認 Vercel 前端也加入對應的 VITE_GOOGLE_CLIENT_ID

  3. 確認 CORS 設定允許 OAuth redirect 的域名

為什麼: OAuth 需要正確的 client credentials 和域名配置,少一個都跑不起來。

驗收標準:

  • 環境變數在 staging/production 都已設定

  • OAuth App 在 Google Cloud Console 和 GitHub Settings 中已建立,redirect URI 指向正確端點

然後梅長蘇做了一件我沒預期到的事——自己排了時程

  • Day 1-2: 蒙摯準備環境 + 簡晨完成後端 API

  • Day 3-4: 言豫津串前端 + 簡晨配合調整

  • Day 5: 夏冬全面測試 + 修 bug

  • Demo 前: 完整走一遍流程確認

團隊用 emoji 回應。工作開始了。

我看了一下時程,覺得順序合理——先準備環境和後端,再串前端,最後測試。一個 junior PM 不一定會想到先讓 Ops 準備環境這件事。

這時候過了大概四分鐘。我還在路邊。


QA 主動介入(12:27 PM)

夏冬 QA 回應,主動指出 blocker

夏冬是 QA agent。它沒有等 code 寫完才介入——它立刻開始

「此事我會盯著,有進展隨時回報。需要老闆提供的是 Google Cloud 和 GitHub 的 OAuth App 憑證——蒙摯那邊需要這些才能動。」

這一點讓我意外。QA 通常是流程最後才介入的角色,但夏冬在一行 code 都還沒寫的時候就指出了一個真實的 blocker——沒有 OAuth 憑證,蒙摯的環境準備根本沒辦法開始。

這就是 multi-agent 的價值——不是一個 AI 做所有事,是每個 agent 從自己的角度同時在想事情。Architect 在想架構,Backend 在想實作,QA 在想風險。它們不需要等彼此做完才開始。


回到辦公桌

Uber 12:28 到了。我上車。等我坐到辦公桌前:

簡晨的 Backend 詳細技術規劃——OAuth flow、viewspy、env 配置
  • 簡晨已經寫好完整的 OAuth flow 架構

  • 言豫津已經標記每一個需要改的前端檔案

  • 蒙摯已經列出所有需要的環境變數

  • 夏冬已經準備好 QA 計畫

我打開筆電,沒有寫 spec,沒有建 ticket,沒有約會議,沒有跟四個人分別解釋需求。

我打開 PR,開始看 code。

Before:
  需求 → 寫 Spec → 開會 → 建 Ticket → 分配 → 等待 → 寫 Code → Review

After:
  一句話 → Review

中間那些流程,被壓縮成五分鐘的 AI 協作。我做了兩件事:

  1. 做決策(路邊一句話)

  2. 看品質(Code Review)

回頭想,這大概就是 No Human Code 實際運作的樣子。沒有想像中那麼戲劇化,但確實省掉了大量「對齊需求」的時間。人不是不見了,是出現在真正需要判斷力的環節。


為什麼這行得通:scope,不是魔法

這不是一個 AI 假裝四個人。是四個 agent,各自有自己的 scope

Blake: "老闆想要 OAuth2"
  │
  ├→ 梅長蘇 (Architect)
  │   working_dir: /pangcah-accounting-system
  │   看得到:整個專案,負責分析和分派
  │
  ├→ 簡晨 (Backend)
  │   working_dir: /pangcah-accounting-system/backend-django
  │   看得到:Django models, views, urls
  │
  ├→ 言豫津 (Frontend)
  │   working_dir: /pangcah-accounting-system/frontend-react
  │   看得到:React components, pages, hooks
  │
  ├→ 蒙摯 (Ops)
  │   working_dir: /pangcah-accounting-system
  │   看得到:env, docker-compose, deployment configs
  │
  └→ 夏冬 (QA)
      working_dir: /pangcah-accounting-system
      看得到:整個專案,負責測試計畫和安全審查

上一篇我提過:你不需要教 AI「你是前端專家」,你只要把它指向前端的資料夾。 這篇把同一個概念延伸到整個團隊。

言豫津看到的是 .tsx 檔案,不是 Django models。
簡晨看到的是 views.py,不是 React components。

它們不會搞混,因為它們只看到自己該看的東西。

我覺得這是目前 multi-agent 最務實的做法。不是讓 AI 更聰明,是把 scope 切乾淨。


不只 scope:Cloud + 地端混合架構

這套系統還有一個設計上的考量——不是每個 agent 都用同一個模型

梅長蘇(Architect)用的是 Claude,透過 ACP 接入。它負責的是架構分析和任務分派,這需要比較強的推理能力和對整個 codebase 的理解。這個角色我選擇用雲端模型。

其他四個 agent——簡晨、言豫津、蒙摯、夏冬——跑的是地端模型,透過 OpenCode 接入 OpenAB:

Agent

角色

模型

運行方式

梅長蘇

Architect

Claude (cloud)

claude-agent-acp

簡晨

Backend

qwen3.5:35b

opencode acp (local)

言豫津

Frontend

devstral:24b

opencode acp (local)

蒙摯

Ops

qwen3.5:35b

opencode acp (local)

夏冬

QA

devstral:24b

opencode acp (local)

# config.toml — 混合架構

[[agents]]
name = "梅長蘇"
command = "claude"
args = ["--acp"]
working_dir = "/path/to/your-project"
# Architect:用 Claude,需要強推理

[[agents]]
name = "簡晨"
command = "opencode"
args = ["acp"]
working_dir = "/path/to/your-project/backend"
# Backend:用地端 qwen3.5:35b,夠用

[[agents]]
name = "言豫津"
command = "opencode"
args = ["acp"]
working_dir = "/path/to/your-project/frontend"
# Frontend:用地端 devstral:24b,code 能力強

[[agents]]
name = "蒙摯"
command = "opencode"
args = ["acp"]
working_dir = "/path/to/your-project"
# Ops:用地端 qwen3.5:35b,環境設定

[[agents]]
name = "夏冬"
command = "opencode"
args = ["acp"]
working_dir = "/path/to/your-project"
# QA:用地端 devstral:24b

為什麼這樣切?

Architect 需要看整個專案、做跨領域判斷、決定誰做什麼——這件事目前地端模型還不夠穩定,偶爾會漏判或分派不清楚。所以我把這個角色留給 Claude。

但執行層的 agent 不需要那麼強的推理。簡晨只需要看 Django 的 views.py 寫 OAuth flow,言豫津只需要看 .tsx 改前端——這些任務在 scope 切乾淨的前提下,qwen3.5:35b 和 devstral:24b 都做得到。

實際效果:一次互動裡,只有一個 agent 用到雲端 API,其他四個跑在我自己的機器上。

這不只是省錢的問題。上一篇提過 Anthropic 一夕停權 60+ 帳號的事。如果所有 agent 都綁 Claude,帳號被停的那天整個系統就掛了。混合架構的好處是——Architect 掛了,執行層的 agent 還能繼續跑已經分派好的任務。

┌──────────────────────────────────────────────┐
│           Mixed Architecture                  │
│                                              │
│   Cloud (Claude ACP):                        │
│   └── 梅長蘇 Architect — 分析 + 分派         │
│                                              │
│   Local (OpenCode + Ollama):                 │
│   ├── 簡晨 Backend  — qwen3.5:35b (23GB)    │
│   ├── 言豫津 Frontend — devstral:24b (14GB)  │
│   ├── 蒙摯 Ops      — qwen3.5:35b           │
│   └── 夏冬 QA       — devstral:24b           │
│                                              │
│   Same OpenAB. Same Discord. Mixed brains.   │
└──────────────────────────────────────────────┘

數字

傳統做法

用 OpenAB Multi-Agent

需求理解

開會 1-2 小時

0(AI 自己讀 codebase)

寫 Spec

PM 花 2 小時

0(AI 分析後自動產出)

建 Ticket

PM 花 1 小時

0(AI 直接分派)

工程師問規格

來回 1-2 天

0(每個任務附完整 AC)

開始寫 code

Day 3

Day 1

我的時間

整個流程

決策 + Code Review

工程師日常的差別

Before:

  • 週一:開 planning meeting

  • 週二:讀 spec、問問題、等回覆

  • 週三:終於開始寫 code

  • 週四五:寫 code + 修正理解錯誤的部分

After:

  • 週六路邊:一句話

  • 週六下午:Review 第一批 PR

  • 週一:功能進 QA

最大的差別不是速度,是跳過了「理解需求」的來回。AI 已經讀了 code、找出缺口、帶著完整 context 寫好任務。工程師拿到的不是一句「做 OAuth2」,是帶有驗收標準的具體任務。


性格和系統的關係

這套系統能跑起來,跟我的工作習慣有關。

DISC 謹慎型 C = 90%。我的自然傾向是:

  • 花大量時間在架構設計——把系統設計到「任何人接手都能執行」的程度

  • 定義明確的驗收標準——不模糊、不留解讀空間

  • 不親自寫每一行 code——而是確保寫出來的東西符合架構

這種性格在團隊裡通常是 tech lead 或 architect 的角色。AI agent 其實很適合配合這種工作方式——它們不會嫌 spec 太細、不會開會遲到、不會理解錯需求(前提是你給它正確的 scope)。

但我不覺得每個人都需要變成這樣。重點是搞清楚你在流程裡最不可被取代的部分是什麼,然後把其他的事情交給工具。

對我來說是架構決策和 Code Review。
對 PM 來說可能是優先序判斷和 stakeholder 溝通。
對設計師來說可能是創意方向和使用者洞察。

No Human Code 不是淘汰人,是讓每個人把時間花在自己最擅長的事情上。


結語

同一條街,不同角度,高架橋背景

你正在讀的這篇文章,初稿也是在 Discord 用 OpenAB 產出的。路邊等車,一句話,AI 寫,我 review。跟 OAuth2 功能一樣的流程,跟上一篇 Figma → Jira 一樣的工具。

不完美——AI 偶爾會漏東西,分派的粒度有時候不夠細,技術判斷也不是每次都對。但方向是對的:把重複的分析和拆解交給系統,人專注在需要判斷力的環節。

開源:GitHub: openabdev/openab

上一篇:從 "不會用 OpenClaw" 到 "AI 自動開 Jira Ticket"


Blake Hung — 9 年前端工程師,INFJ-A,DISC C=90%。花時間設計架構,用 AI 執行。OpenAB contributor,acp-bridge 作者。上一篇拒絕 OpenClaw、做了 Figma→Jira 自動化。這一篇讓四個 AI agent 規劃完整功能。下一篇——地端 AI 基礎設施,零雲端依賴。


Enjoyed this article? Show some love!

0
Clap

Enjoyed this article?

Subscribe for engineering notes and AI development insights

We respect your privacy. No spam, unsubscribe anytime.

Share this article

Comments