前幾篇一路寫下來,我們把一些原本由 User 自己完成的事情,慢慢交給了 AI。
Day 1,我們開始讓 System 理解 User。
Day 2,User 不一定需要自己走完整條 Journey,部分流程可以交給 Agent。
Day 3,再往下拆:User 說的一句「人話」,會被理解成 Intent、取得 Context、轉成 System 需要的結構,再透過 Action 真正執行。
寫到這裡,很容易得到一個結論:
「既然 AI 都知道我要什麼了,那就全部幫我做完啊。」
但我覺得,真正困難的產品問題反而從這裡才開始。
PM 接下來要決定的不只是:
「AI 能不能做?」
而是:
「AI 可以自己做到哪裡?什麼時候一定要停下來問 User?」
這就是今天想聊的 Human-in-the-loop。
以前做外賣 Buyer Side,有一個看起來很小、但做錯很麻煩的問題:
怎麼避免 User 選錯配送地址?
想像一個很常見的情境。
User 平常中午在公司點外賣,所以 App 上一次使用的配送地址是公司。
晚上回到家,他又打開 App 點晚餐,一路選店、選商品、結帳,卻沒注意到:
配送地址還是公司。
等發現時,餐廳可能已經做好餐,騎手可能已經取餐,而 User 正在幾十公里外等著。
最後可能牽涉客服、退款甚至重新配送。
所以地址當然是一個:
值得 User 確認的重要資訊。
最簡單的解法,就是每次結帳都跳:
⚠️ 請確認配送地址
新竹市 XX 路 XX 號
[修改地址][地址正確]
看起來很安全。
但如果 User 一整週都在同一個辦公室呢?
星期一問、星期二問、星期三還問。
久了之後,User 根本不會確認地址,只會:
看到 Popup → Confirm
看到 Popup → Confirm
看到 Popup → Confirm
形式上做了 Human-in-the-loop,實際上卻沒有真的讓 Human 做任何判斷。
我們只是多製造了一個 Click。
真正該問的不是「要不要確認」,而是:
什麼時候值得打斷 User?
假設現在是平日中午 12 點,User 定位就在公司附近,過去 20 次午餐也都送公司。
那可能根本不需要問。
但如果現在是晚上 8 點,User 定位在台北,配送地址卻還是新竹公司,而且過去晚上通常都送家裡。
這時候再提醒:
⚠️ 你目前似乎不在配送地址附近
配送地址:新竹市 XX 路
目前位置:台北市是否仍要配送至這個地址?
[修改地址][仍送這裡]
這個 Confirm 才真的有意義。
因為 System 不是機械式地問:
「你確定嗎?」
而是在發現:
「這次好像有點不對勁。」
的時候,才把決策權交回 User。
最近使用美團的小美 AI 助手,我又遇到另一個很有感的例子。
我想買一杯美式咖啡,小美找到某一家店剛好有優惠券。
但要使用這張優惠券,有一個條件:
必須先成為這家店的會員。
如果按照傳統 App Journey,我可能需要:
看到優惠券
↓
發現「會員限定」
↓
進入會員頁
↓
註冊會員
↓
回到優惠券
↓
領券
↓
回到商品
↓
繼續下單
但小美沒有叫我重新走完這串流程。
它直接問:
「要幫你註冊會員嗎?」
我確認之後,後面的操作就交給 Agent。
這個體驗讓我重新理解 Human-in-the-loop:
把真正需要「人的判斷」留下來,而不是把所有「System 操作」都留給人。
它沒有把 App 裡每一個 Button 都變成:
「要幫你註冊嗎?」
「要幫你領券嗎?」
「要幫你套優惠嗎?」
「要幫你加入購物車嗎?」
不然我可能自己操作還比較快。
好的 Agent 不是把 10 個 Click 變成 10 次 Confirm。
而是把 10 個操作裡,真正需要 User 決定的那一個留下來。
如果我是 PM,我現在會從四個角度判斷。
「幫我整理一篇文章」,做不好可以重來。
但「幫我轉帳 50,000 元」,做錯的成本完全不同。
Risk 越高,越值得讓 User 介入。
User 就在公司、時間也是午餐時間、過去紀錄都送公司,System 的判斷相對有把握。
但如果 User 人在台北,地址卻在新竹,就是值得重新確認的 Signal。
有時候 Confirm 不是因為事情本身危險,而是:
AI 沒有足夠把握。
AI 把商品加入購物車,錯了刪掉就好。
但外賣已送出、Email 已寄出、錢已轉出去,Undo Cost 就很高。
越難回頭的 Action,越值得在執行前設 Checkpoint。
這就是小美會員案例很有意思的地方。
AI 可能 100% 確定:
「加入會員可以省 10 元。」
但它仍然不應該自己決定:
「那我就幫你加入會員。」
因為這不是 AI 判斷準不準的問題,而是:
User 願不願意。
加入會員、訂閱服務、同意條款、授權資料,這些都涉及 User 的 Consent。
AI 知道怎麼做,不代表它有權替 User 決定。
把四個判斷放在一起,我會這樣想:
Agent 準備執行 Action
↓
Risk × Uncertainty ×
Reversibility × Authorization
↓
需要 User 介入嗎?
↙ ↘
不需要 需要
↓ ↓
Agent Execute User Confirm
↓ ↓
└──→ Execute
不同 Action 的 Gate 不一定一樣。
查詢資料,可以比較寬鬆。
加入購物車,可以比較寬鬆。
付款,可能需要明確 Confirm。
註冊會員,需要 User 授權。
偵測到異常地址,也值得再確認。
所以 Human-in-the-loop 不是一個統一的「確認按鈕」。
而是一套:
什麼時候把控制權交回 User 的產品策略。
如果真的需要 User Confirm,也不應該只丟一句:
Are you sure?
好的 Confirmation 至少應該讓 User 知道三件事:
1. AI 準備做什麼?
幫你註冊 XX 咖啡會員。
2. 為什麼現在需要你決定?
註冊後可以使用優惠券,這筆訂單可以省 10 元。
3. User 可以怎麼選?
[先不要] [註冊並使用優惠]
地址也是一樣。
與其只寫:
「請確認地址。」
不如告訴 User:
「你目前距離配送地址 80 公里,仍要送到這裡嗎?」
Human-in-the-loop 不只是讓 User 按 Confirm。
而是:
在真正需要判斷的地方,提供足夠的 Context,讓 User 做決定。
寫到第四天,我開始覺得 Agent Product 有一個很有意思的矛盾。
我們希望 AI:
懂我、幫我找、幫我填、幫我做,最好什麼都不要問。
但同時又希望它:
不要自作主張。
所以好的 Agent,不是「自動化程度越高越好」,也不是「每一步都問 User 最安全」。
PM 真正要畫的,是中間那條線:
哪些只是操作,可以交給 AI?
哪些是真正的決策,應該留給人?
好的 Agent,不是把 10 個 Click 變成 10 次 Confirm,而是把 10 個操作濃縮成 1 個真正需要人的決策。
這也是我現在理解的 Human-in-the-loop:
不是讓人留在每一步,而是在真正需要人的地方,把控制權還給人。
當 Agent 能做的事情越來越多,「什麼時候 AI 可以繼續往下做,什麼時候應該停下來問我」,可能會成為 AI Product 裡非常重要的一條線。