昨天替 AI Agent 加入了 Memory。
現在 Agent 已經慢慢具備:
Chat Model → 理解問題
Tools → 執行任務
Memory → 記住對話上下文
例如:
「我的專案叫 AI Automation。」
下一句只要說:
「幫我把剛剛那個專案記錄下來。」
Agent 就有機會利用前面的對話資訊,再透過 Google Sheets Tool 執行任務。
不過目前還有一個問題。
這個 Agent 幾乎都只能在 n8n 裡面測試。
如果未來想做自己的網頁、APP,甚至讓其他系統把問題傳給 Agent,總不能每次都先打開 n8n。
所以今天要把之前學過的 Webhook 再拿回來。
讓外部系統也能把訊息送進 AI Agent。
今天的目標是建立:
外部程式 / 使用者
↓
Webhook
↓
AI Agent
↙ ↘
Memory Tools
↓
Response
例如外部送進:
{
"message": "請用一句話介紹 AI 自動化"
}
Webhook 收到後,把 message 傳給 AI Agent。
Agent 處理完成,再把結果回傳出去。
這樣 n8n 就開始有點像:
自己的 AI 後端服務。
📷 這裡放今天完整 Workflow
圖 1 Webhook 串接 AI Agent 的完整 Workflow(自行截圖)
Webhook 在 Day 10 已經使用過。
當時的概念是:
讓外部資料可以進入 n8n。
所以今天新增一個 Webhook,讓它當作 AI Agent 的入口。
流程先建立成:
Webhook
↓
AI Agent
Webhook 可以接收外部送進來的資料。
例如:
{
"message": "什麼是 AI Agent?"
}

圖 2 使用 Webhook 作為 AI Agent 的外部資料入口
接下來先測試 Webhook。
送入:
{
"message": "請介紹 AI 自動化"
}
如果接收成功,就可以在 Webhook 的 Output 中找到這筆資料。
實際的資料結構可能會像:
body
└── message
所以在後面的 Agent 中,可能會使用類似:
{{ $json.body.message }}
來取得使用者輸入。
不過這裡還是要以自己 Webhook 實際收到的 JSON 結構為準。

圖 3 Webhook 成功接收到外部傳入的 message
接著讓 AI Agent 使用 Webhook 傳進來的 message。
概念:
{
"message": "請介紹 AI 自動化"
}
↓
Webhook
↓
取得 message
↓
AI Agent
這次 Agent 的問題不再是我直接在 AI Agent 裡輸入。
而是:
從外部 Request 傳進來。
這個差別非常重要。
因為只要其他系統可以送 HTTP Request,就有機會跟這個 Workflow 溝通。
AI Agent 還是需要 Chat Model。
所以現在 Workflow 大概會變成:
Webhook
↓
AI Agent
│
Chat Model
接著測試:
{
"message": "請用一句話解釋什麼是 API"
}
如果設定正確,Agent 應該就可以讀到:
「請用一句話解釋什麼是 API」
然後交給 Chat Model 處理。

圖 4 AI Agent 成功處理 Webhook 傳入的訊息
更有趣的是:
換成 Webhook 之後,Agent 原本的 Tool 不一定要拿掉。
例如之前已經有 Google Sheets Tool。
那外部系統就可以傳:
{
"message": "幫我記錄:姓名 Student,主題 AI Automation,狀態 Learning"
}
Agent 收到之後:
Webhook
↓
AI Agent
↓
理解「幫我記錄」
↓
Google Sheets Tool
↓
新增資料
也就是:
外部系統不需要自己知道 Google Sheets 怎麼操作。
它只需要把使用者的需求傳給 Agent。
至於需不需要使用 Google Sheets,則由 Agent 根據任務和可用 Tools 判斷。
到這裡還少最後一步。
外部系統把資料送進來後,最後也需要收到結果。
所以概念上完整流程是:
外部系統
↓
Webhook
↓
AI Agent
↓
處理問題 / 使用 Tool
↓
回傳結果
↓
外部系統
例如外部傳入:
{
"message": "請用一句話介紹 n8n"
}
最後可以回傳類似:
{
"reply": "n8n 是一個可以串接不同服務並建立自動化流程的工具。"
}
這樣外部程式就可以取得 Agent 的回答。
依照 Webhook 的回應設定方式,可以使用 Webhook 本身的回應機制,或在需要控制回傳內容時使用對應的 Response 節點。

圖 5 外部 Request 成功取得 AI Agent 回傳結果
使用 Webhook 時,我覺得這個地方很容易搞混。
測試 Workflow 時,通常會有測試用的 Webhook URL。
它比較適合:
開發、測試、確認資料有沒有進來。
真正希望外部服務長期呼叫時,則需要使用正式運作時對應的 Webhook URL,並讓 Workflow 處於可接收正式請求的狀態。
所以不能只是:
測試成功 → 複製測試網址 → 永遠拿來用
正式串接時還是要確認自己使用的是正確的 Webhook URL 與 Workflow 狀態。
這也是之前 Day 10 第一次使用 Webhook 時還沒有特別注意到的地方。
昨天剛學 Memory,所以今天會出現一個很重要的問題。
假設外部第一次送:
{
"message": "我的專案叫 AI Automation"
}
第二次送:
{
"message": "我的專案叫什麼?"
}
如果希望 Agent 知道這兩個 Request 是同一段對話,就不能只考慮 message。
還需要有方法區分:
這是誰的對話?
概念上可以多帶一個:
{
"sessionId": "user001",
"message": "我的專案叫 AI Automation"
}
下一次:
{
"sessionId": "user001",
"message": "我的專案叫什麼?"
}
這樣 Memory 才比較有辦法把相關訊息放在同一個對話脈絡中。
至於實際 Session ID 如何設定,會依目前使用的 Memory、Trigger 與 n8n 版本而不同。
今天先理解:
外部聊天不只有 message,還需要考慮 Session。
就很夠了。
假設同時有兩個使用者:
使用者 A
我的專案叫 Project A
使用者 B
我的專案叫 Project B
如果 Memory 沒有正確區分不同對話,就可能造成上下文混亂。
所以理想概念是:
User A
↓
Session A
↓
Memory A
User B
↓
Session B
↓
Memory B
這讓我發現:
做自己的 AI Agent,不只是把 AI 接上去就結束了。
還要處理使用者、Session、Memory 和資料安全。
做到今天之後,Webhook 的用途突然變得很明顯。
未來可以想像:
網頁
↓
Webhook
↓
AI Agent
也可以:
APP
↓
Webhook
↓
AI Agent
甚至其他系統:
其他服務
↓
HTTP Request
↓
n8n Webhook
↓
AI Agent
↓
Tools
也就是說,AI Agent 不一定只能存在於 n8n 的操作畫面中。
n8n 可以放在後面負責:
接收資料
AI 處理
呼叫 Tools
執行 Workflow
回傳結果
而前面可以是其他使用者介面。
今天可以做三組測試。
測試 1:普通問答
傳入:
{
"message": "什麼是 AI Agent?"
}
確認:
Webhook → Agent → 回傳回答
測試 2:使用 Tool
傳入:
{
"message": "幫我記錄:姓名 Student,主題 AI Automation,狀態 Learning"
}
確認:
Agent 有沒有呼叫 Google Sheets Tool。
測試 3:連續對話
使用相同 Session 概念傳入:
第一句:
我的專案叫 AI Automation
第二句:
我的專案叫什麼?
確認 Memory 是否能正確取得前面的對話。
這三個測試都成功的話,今天的 Agent 就已經有:
外部輸入 + AI + Tool + Memory + 外部輸出
的基本架構了。
Day 25 讓 Agent 可以:
真的操作 Google Sheets。
Day 26 加入:
Memory。
而今天加入 Webhook 之後,我覺得整個架構才開始比較像真正可以被其他程式使用的系統。
從:
我在 n8n 裡測試 Agent
慢慢變成:
外部系統
↓
n8n
↓
AI Agent
↓
Memory + Tools
↓
回傳結果
這也讓我開始理解,前面 20 多天學的東西其實不是分開的。
Webhook、JSON、API、Authentication、AI、Google Sheets、Memory……
現在開始慢慢組在一起了。
今天把 Webhook 接到 AI Agent,讓外部 Request 也可以把訊息傳進 Agent。
完整概念:
外部系統
↓
Webhook
↓
AI Agent
↙ ↓ ↘
Memory Chat Model Tools
↓
Google Sheets
↓
Response
現在這個 Agent 已經開始有「可以給外部系統使用」的感覺。
不過還有一個很現實的問題:
如果任何人知道 Webhook URL,都可以一直傳 Request 怎麼辦?
前面 Day 21 才學過 Authentication,現在剛好可以真正把它用回來。