上週五下午三點,我在重構一個 Spring Boot 專案的認證模組。改了 service 層要跑測試,測試過了要確認覆蓋率,覆蓋率不到 80% 要補測試,補完再跑一次——每一輪我都得按 Enter 讓 Claude 繼續。四輪之後我意識到,我的工作就是一直按 Enter。

這週我用 /goal 做同一件事。打了一行字,站起來泡咖啡,回來的時候 8 個測試檔案已經改好,覆蓋率 84%,Claude 自己停了。


你缺的不是 AI,是一個完成條件

想像你請一個實習生幫你整理會議室。

第一種方式:「把椅子推進去⋯⋯好,現在擦白板⋯⋯好,現在把馬克筆收好⋯⋯好,現在⋯⋯」你每講一句他做一步,你不講他就站在那邊等。

第二種方式:「整理到可以開會的狀態就好。」他自己判斷椅子要推、白板要擦、筆要收、投影機要開。你不用站在旁邊,做完他會跟你說。

Claude Code 以前的工作方式就像第一種。每做完一步,它停下來等你確認。/goal 把它切換成第二種——你給一個「完成長什麼樣子」的描述,它自己決定怎麼到達那裡。

技術上的定義:/goal 設定一個 completion condition,Claude 會持續跨多個 turn 工作,每一輪結束後自我評估是否已經滿足條件,還沒就繼續,滿足了就停。


三十秒上手

在 Claude Code 的互動模式裡,先下 /goal,再給指令:

1
2
3
4
5
6
7
8
# Step 1:設定完成條件
/goal "所有測試通過且覆蓋率達 80%"

# Step 2:給指令
重構 auth 模組的 token 驗證邏輯,用 strategy pattern 取代現有的 if-else

# Claude 開始自己跑——改 code、跑測試、看覆蓋率、補測試、再跑一次⋯⋯
# 直到條件滿足,自動停止

就這樣。沒有額外設定、沒有 config 檔要改。

執行的時候畫面上會出現一個 overlay panel,即時顯示三個數字:

欄位 說明
Elapsed 已經跑了多久
Turns 跑了幾輪
Tokens 消耗了多少 token

你可以隨時看到 Claude 現在在幹嘛、花了多少資源。如果覺得不對勁,Ctrl+C 隨時中斷。


等一下,這跟 Auto Mode 有什麼不同?

Auto Mode 解決的是權限問題——Claude 不用每個操作都來問你「可以嗎」。但它每做完一段,還是會停下來等你的下一個指令。

/goal 解決的是持續性問題——Claude 不只自動執行操作,還自動決定「還要不要繼續做」。它不會在中間停下來問你「接下來呢?」,而是自己判斷目標有沒有達到。

兩者搭配用最自然:Auto Mode 讓 Claude 不用問你「可以跑 npm test 嗎?」,/goal 讓它不用問你「測試過了,接下來做什麼?」。


三種使用模式

/goal 不只能在 terminal 互動模式裡用。

1. Interactive 模式(最常用)

就是前面示範的方式。開著 terminal,設 goal,給指令,看它跑。適合你人在電腦前、想做別的事但偶爾瞄一眼的情境。

2. -p 模式(一行搞定)

1
claude -p "重構 auth 模組" --goal "所有測試通過且覆蓋率達 80%"

連 terminal 互動都省了。適合寫在 shell script 裡,或是搭配其他 CLI 工具串接。

3. Remote Control 模式(手機設定,桌機執行)

這是我覺得最殺手級的組合。用手機透過 Remote Control 連到桌機的 Claude Code session,設定 goal,然後放著讓它跑。你可以出門吃飯,手機上隨時看 overlay panel 的即時狀態。

1
手機設 goal → 桌機的 Claude 開始跑 → 手機看即時進度 → 條件滿足自動停

人不在電腦前,AI 在電腦裡安靜地把事情做完。


寫好 Goal 的訣竅

/goal 的效果完全取決於你怎麼描述完成條件。模糊的 goal 會讓 Claude 不知道什麼時候該停。

好的 goal 是可驗證的。

1
2
3
4
5
6
7
8
9
# ✅ 可驗證
/goal "npm test 全部通過,沒有 skip 的測試"
/goal "eslint 零錯誤零警告"
/goal "docker compose up 後 health check 回傳 200"

# ❌ 模糊不可驗證
/goal "程式碼品質變好"
/goal "效能優化完成"
/goal "大致上沒問題就好"

Claude 需要一個明確的信號來判斷「到了」。測試通過、lint 乾淨、build 成功——這些都是 Claude 可以自己驗證的。「品質變好」不是,因為 Claude 無法客觀判斷什麼是「好」。

你也可以設複合條件

1
/goal "所有測試通過 AND 覆蓋率 >= 80% AND eslint 零警告 AND build 成功"

Claude 會逐一檢查每個子條件,全部滿足才算完成。


跟其他功能的搭配

/goal 本身很簡單,但它跟 Claude Code 生態系裡的其他功能組合起來會產生乘法效果。

/goal + Agent Teams

你有一個大任務,拆成子任務分給多個 agent,每個 agent 有自己的 goal。Leader agent 等所有子 agent 的 goal 都滿足了才算完。

1
2
3
4
Leader goal: "所有模組的測試通過且整合測試通過"
├─ Agent A goal: "auth 模組測試通過"
├─ Agent B goal: "payment 模組測試通過"
└─ Agent C goal: "notification 模組測試通過"

/goal + Routines

Routine 負責「什麼時候跑」,/goal 負責「跑到什麼程度」。

1
2
Routine: 每天凌晨兩點執行
Goal: "所有 dependency 更新到最新 patch version,且測試全部通過"

沒有 /goal 的 Routine,Claude 做完就走。有 /goal 的 Routine,Claude 會反覆驗證直到條件滿足。差別在於,dependency 更新常常會連鎖破壞測試——有 goal 的話 Claude 會自動修到好,不會丟一個半成品給你。


執行中的安全機制

你可能會擔心:讓 Claude 自己跑到完,如果它跑歪了怎麼辦?

幾個內建的保護措施:

  1. Token 上限:如果 token 消耗超過帳號設定的上限,自動停止
  2. Turn 上限:單次 goal 執行的最大 turn 數有上限,防止無限迴圈
  3. 手動中斷Ctrl+C 隨時可以停
  4. Overlay panel:即時看到 Claude 在做什麼,消耗多少

你設的 goal 是上界,不是承諾。Claude 可能在三輪就完成,也可能跑到 turn 上限還沒完成——後者通常代表你的 goal 太難或太模糊,需要拆解。


順帶一提:同期的兩個新功能

五月這一波更新除了 /goal,還有兩個值得知道的:

Agent Viewclaude agents)——在 terminal 裡一覽所有 Claude Code session 的狀態。跑了幾個 agent、哪個在 running、哪個被 blocked、哪個已經 done。搭配 /goal 特別有用,因為你可能同時跑好幾個有 goal 的 session,需要一個 dashboard 來掌握全局。

Plugin URL Loading--plugin-url)——從 URL 直接載入 plugin,不用 git clone 再手動安裝。團隊內分享自訂 plugin 的時候方便很多。


回到那個實習生

文章開頭的那個比喻——請實習生整理會議室。

/goal 本質上就是把你從「每一步都要下指令的人」變成「定義完成標準的人」。這個轉變聽起來微小,但它改變了你跟 AI 的互動模式:你不再是 operator,你是 manager。

而好的 manager 只做兩件事:定義目標,然後驗收結果。

如果你已經熟悉 Claude Code 的基本操作,/goal 是下一個值得學的東西。從簡單的開始——「跑測試跑到全過」——感受一下 Claude 自己跑完整個循環的體驗。然後慢慢嘗試複合條件、搭配 Remote Control、搭配 Agent Teams。

接下來可以學的路線:

  • 還沒用過 Remote Control?先設定好,/goal + Remote Control 是懶人的終極組合
  • 想要排程自動化?Routines 裡面套 /goal 是最穩的模式
  • 多人協作?Agent Teams + /goal 可以把團隊任務拆成有各自完成條件的子任務

打開你的 terminal,試一個最簡單的 goal:

1
/goal "eslint 零錯誤"

然後看它自己跑完。