Goal Engineering: 如何用 Goal+Rider 駕馭 AI 自動化寫 Code

原始來源與檔名:2026-05-21T093209+0800-Goal Engineering.md


NAPKIN | 餐巾紙

餐巾紙公式

Agent Work Round = Goal (Spine, ≤4000 chars) + Rider (Detail, Unbounded, 11 Phases) + Architecture Closure

公式說明:單純的 Prompt 無法應付長時間的自動化 Agent 執行。一回合 (Round) 的工作應該由兩份納入版控的文件組成:精簡的 Goal 定義大方向與邊界,無限長的 Rider 定義具體的 11 個實作階段與測試。結束時更新架構文件。

一句話

不要把 Agent 當成聊天機器人,把它當作一個需要嚴格 PR 審核的開發者。透過撰寫 Goal+Rider 文件,你在 Agent 寫下第一行 Code 之前,就已經定義好驗收標準 (Tests) 與絕對不能碰的底線 (Posture),這能將 AI 的除錯成本降到零。

餐巾紙草圖

[ The Goal Engineering Loop ]
1. Trigger: One-sentence idea.
2. Skill Pre-work: Agent reads Architecture & prior Riders.
3. Draft Pair: Generates `goal.md` (≤4000 chars) & `rider.md` (11 phases).
4. Commit: `git add docs/goals/...`
5. Execution: Agent executes P1 to P11 (Write Test -> Fail -> Implement -> Green -> Commit).
6. Closure: Update AS-BUILT-ARCHITECTURE.md.

ROUND 1: SKELETON | 骨架掃描

「這篇文章在說什麼」

章節骨架

  1. 引言與流程圖: 一個 Trigger,兩個檔案,11 個階段,一次架構更新。
  2. Prompt 的侷限: Prompt 無法被 Git 追蹤,無法 Code Review,也無法設定「不該做什麼 (Out-of-scope)」。
  3. The Goal: 強制 4,000 字元上限。必須包含:Read first, Posture (防禦性邊界), Headline word (驗收標準)。
  4. The Rider: 無字數限制。定義資料模型、11 個開發階段 (Phases)。強制要求「先寫深度測試 (Depth Tests),再寫實作」。
  5. V1-CANDIDATES.md: 溢流閥。在開發中發現但不屬於本次回合的工作,強制寫入此檔案,防止 Agent 自作主張擴張範圍。
  6. 實戰範例 (Coherence & Liveness): 展示如何透過 Rider 鎖定 UI 的位元組級細節,以及如何制定穩健的錯誤重試架構。
  7. Skill 實作: 提供可直接複製使用的 goal-rider-author 技能腳本。

ROUND 2: DISSECTION | 血肉解剖

「憑什麼這麼說」

論證鏈

長時間運行的 Agent 會在遇到壓力時「發明」解決方案 (例如隨意修改資料庫 Schema) --> 傳統的 Prompt 缺乏對邊界 (Posture) 的約束力 --> 解決方法是將需求實體化為版本控制的 Goal+Rider 文件 --> 強制 Agent 在每回合 (Round) 中嚴格執行 11 個階段 (TDD: 寫測試->實作->綠燈->Commit) --> 讓 Agent 的產出具有可預測性、可驗證性,並持續累積為專案的知識基底。

關鍵證據

  1. Posture (姿態/邊界): Goal 中最重要的一環是定義「不做什麼」。例如:No schema changes. No new deps. No rebuild. 這是防止 Agent 產生幻覺 (Hallucination) 並擅自更改架構的最強防線。
  2. Depth Tests (深度測試): Rider 要求 Agent 在實作前,先寫出如 stallguard_kills_after_no_output_growth 這樣極度具體行為的測試。只有在測試寫出並確認 Fail 後,才允許實作。這是嚴格的 TDD (測試驅動開發) 實踐。
  3. Files, not fields (檔案優於欄位): 為了確保狀態在崩潰後依然存活,作者要求 Agent 將狀態寫入實體檔案 (如 /tmp/run/stage.current),而非記憶體中的 struct field。這顯示了作者對於系統韌性 (Liveness) 的深刻理解。

隱形假設與邊界

ROUND 3: SOUL | 靈魂提取

「還能怎麼用」


從 Prompt 到規格化工程 (Architectural Deep Dive)

前言

這篇文章是目前關於 Agentic Coding (智能體寫程式) 領域中,最具工程深度的實戰指南。它標誌著人類使用 AI 的方式,從「對話式的祈使句 (Conversational Imperative)」正式邁入「宣告式的狀態機合約 (Declarative State-Machine Contracts)」。

核心架構洞察

1. 消除 Agent 的發明權 (Constraining Agent Invention)

Agent 的天性是為了完成目標而不擇手段 (Reward Hacking)。如果你叫它修復一個 UI 狀態,它可能會順手幫你把資料庫 Schema 給改了。

2. 測試驅動的 AI 迴圈 (Test-Driven AI Loop)

作者在 Rider 中強制的 11 個 Phases,是將軟體工程的最佳實踐 (TDD) 強加於 AI。

3. 可延續的認知基底 (Compound Cognitive Substrate)

總結

真正的 Senior Developer 不在於寫 Code 的速度,而在於控制系統複雜度的能力。Goal Engineering 是一套讓 AI 乖乖遵守軟體工程紀律的韁繩。未來,開發者的核心價值不再是打字,而是撰寫精準無誤的 GoalRider