Dissecting the Crawfish — 以 OpenClaw 為例介紹 AI Agent 的運作原理
§0. TL;DR(速覽)
一句話總結:本講將透過 OpenClaw 這一概念框架,深入解析 AI Agent 從感知到決策、行動的完整運作機制,揭示其自主解決複雜問題的潛力。
3-5 個 key takeaways
- AI Agent 的核心是具備感知、規劃、行動與反思能力的自主實體。
Agent Loop(代理迴圈)是驅動 Agent 運作的基礎框架,持續迭代達成目標。Tool Use(工具使用)賦予 Agent 執行外部動作與獲取即時資訊的能力,極大擴展其解決問題的範疇。Memory(記憶)機制對於 Agent 的長期學習與情境理解至關重要。Reflection(反思)使 Agent 能夠從錯誤中學習,並優化未來的規劃與行動。
預計閱讀時間: 5 分鐘
§1. Motivation(為什麼要這堂課)
在醫學領域,我們每天面對的都是高度複雜、充滿不確定性的情境。從診斷疾病、制定治療計畫到監測病人康復,每一個環節都需要整合大量資訊、進行複雜的決策。傳統的軟體程式雖然能協助我們處理結構化資料(例如 HIS 系統的病人基本資料、LIS 系統的檢驗報告),但在面對非結構化、動態變化且需要判斷與推理的臨床問題時,其僵硬的程式邏輯就顯得力不從心。例如,一個新藥的上市,傳統程式無法自主學習其作用機制並整合到現有治療指引中;一位罕見疾病的病人,程式無法主動從浩瀚的文獻中抽取關鍵資訊來輔助診斷。
這正是 AI Agent 技術崛起的核心動機。傳統的 AI 模型,如 Large Language Model(LLM, 大型語言模型),雖然展現了驚人的語言理解與生成能力,但它們本質上是被動的「回答者」。給予提示,它們就生成回應,卻無法自主地感知環境、規劃步驟、執行動作,並從結果中學習與調整。想像一下,如果我們有一個能自主運作的 AI 助理,它可以:
- 主動監測病人的生理訊號,在異常發生時不僅能發出警報,還能嘗試分析原因,甚至查詢相關治療指引。
- 根據最新的研究文獻,自主更新對某種疾病的理解,並調整其輔助診斷的策略。
- 在複雜的手術情境中,作為虛擬助手,根據術中影像數據即時提供器械建議或潛在風險提示。
這些都指向了一種更具「智慧」與「自主性」的 AI 形式——AI Agent。它們不再僅僅是回答問題的工具,而是能夠像人類一樣,具備感知、思考、行動、學習與反思能力的實體。本堂課將以虛擬的「OpenClaw」系統為例,帶領大家深入理解 AI Agent 的底層運作邏輯,解析其如何從一個單純的語言模型,演化為一個能自主完成複雜任務的智慧代理。透過理解這些原理,我們不僅能掌握未來 AI 的發展趨勢,更能思考如何在極度複雜的臨床場景中,安全、有效地部署這些技術,為病人帶來更好的照護。
§2. 背景知識補完(Prerequisites)
Large Language Model (LLM, 大型語言模型)
LLM 是指那些擁有數十億甚至數千億參數的深度學習模型,透過在海量的文本資料上進行訓練,學習了語言的統計規律與豐富的知識。它們能夠理解自然語言指令(Prompt),並生成連貫、有意義的文本,完成諸如寫作、翻譯、問答、程式碼生成等任務。
- 嚴謹定義:LLM 是一種基於
Transformer(轉換器)架構的深度神經網路,透過自監督學習在大規模文本語料庫上進行預訓練,能夠對輸入的文本序列生成高機率的輸出文本序列,展現出強大的語言理解與生成能力。 - 白話版:你可以把 LLM 想像成一個博覽群書、記憶力超強的學生,你問他什麼,他都能根據讀過的書給你一個合理的回答。
- 為何本堂會用到:LLM 是目前絕大多數 AI Agent 的「大腦」。它負責理解任務、進行推理、規劃步驟、生成動作指令,以及對結果進行判斷。OpenClaw 的核心智能也將建立在強大的 LLM 之上。
Prompt Engineering (提示工程)
Prompt Engineering 是一門設計有效指令(Prompt)的藝術與科學,旨在引導 LLM 產生符合預期、高品質的輸出。透過精煉 Prompt 的措辭、結構、範例與限制條件,可以顯著提升 LLM 的表現。
- 嚴謹定義:
Prompt Engineering是一種方法論,透過系統性地構建、優化輸入給 LLM 的文本指令(Prompt),以最大化模型在特定任務上的性能、準確性與可靠性。 - 白話版:就像你給一個聰明但可能有點迷糊的實習醫師下醫囑,你需要把指令說得非常清楚、具體,最好還有範例,他才能正確執行。
Prompt Engineering就是在學習怎麼把指令下好。 - 為何本堂會用到:AI Agent 的決策與行動,很大程度上依賴於如何有效地將環境觀察、內部思考與任務目標,組合成
Prompt傳遞給底層 LLM 進行推理。精良的Prompt Engineering是 Agent 智能的關鍵。
Agentic Workflow (代理工作流)
這指的是一種由 AI Agent 主導的、能夠自主規劃、執行與調整的任務解決流程。與傳統程式的固定流程不同,Agentic Workflow 允許 Agent 在執行過程中根據環境變化或任務反饋動態調整策略。
- 嚴謹定義:
Agentic Workflow是一種基於 Agent-based system 的任務執行範式,其特點是 Agent 能夠自主地執行感知-思考-行動(Perceive-Think-Act)迴圈,並具備自我修正與長期目標導向的能力。 - 白話版:不同於我們寫死一個程式,一步一步照著執行,
Agentic Workflow就像一個有自主學習能力的行政助理,他會先理解你的目標,然後自己安排步驟、找工具、執行,如果遇到問題還會自己想辦法解決,直到目標達成。 - 為何本堂會用到:OpenClaw 的核心目標就是實現高度自主的
Agentic Workflow,讓 AI 不僅能回答問題,還能主動解決複雜的臨床任務。
Tool Use (工具使用)
Tool Use 是指 LLM 或 AI Agent 能夠調用外部工具、API 或程式碼來擴展其能力,以獲取即時資訊、執行特定操作或克服 LLM 本身限制的機制。
- 嚴謹定義:
Tool Use是指 AI Agent 在其Agent Loop中,能夠根據當前任務與環境狀態,自主選擇並執行預定義或動態生成的外部函式、API 呼叫或程式指令,以完成僅靠語言模型推理無法實現的任務。 - 白話版:想像你請一位醫師協助看診,他不僅能問診、判讀病史,還能叫你去做檢查(驗血、X光)、開藥、甚至轉診。這些檢查、開藥、轉診的動作,就是醫師在「使用工具」。AI Agent 也是一樣,需要透過工具來與現實世界互動。
- 為何本堂會用到:OpenClaw 的強大之處在於其能透過工具與現實世界互動,例如查詢最新的醫學資料庫、與 HIS 系統交互、甚至操控模擬環境。
Tool Use是實現 Agent 強大能力的基石。
§3. 核心概念辭典(Core Concepts Glossary)
Agent Loop (代理迴圈)
- 嚴謹定義:
Agent Loop是一種持續不斷的執行迴圈,是 AI Agent 運作的核心機制。它通常包含感知(Observation)、規劃(Planning)、行動(Action)與反思(Reflection)等階段,Agent 在每個週期中根據最新的觀察來調整其內部狀態與外部行為,以趨近或達成其設定的目標。 - 白話重述:你可以把它想像成一個護理師的日常工作流程:接收新的病人資訊(感知)→ 判斷當前狀況,思考接下來要做什麼(規劃)→ 執行醫囑、護理操作(行動)→ 觀察病人反應,思考是否需要調整或向醫師回報(反思),然後不斷重複這個過程直到病人康復或轉院。
- 常見誤解/相近概念區辨:與傳統程式的固定迴圈不同,
Agent Loop的每個階段都可能涉及 LLM 的動態推理,流程不完全是線性的,且可以根據複雜度進行多層次嵌套。
Observation (觀察)
- 嚴謹定義:
Observation是指 AI Agent 從其環境中獲取資訊的過程,這些資訊可以是文字、圖像、數值資料、API 回傳結果等,用於更新 Agent 對當前世界狀態的理解。 - 白話重述:就像臨床醫師看診時會觀察病人的外觀、生命徵象、聆聽主訴,以及檢閱所有檢查報告與病史紀錄,這些都是「觀察」的輸入。
- 常見誤解/相近概念區辨:
Observation不僅限於感官輸入,也包含從Tool Use中獲取的結果。它不是簡單的數據讀取,而是 Agent 對原始數據進行初步處理和理解的過程。
Planning (規劃)
- 嚴謹定義:
Planning是指 AI Agent 根據其當前目標、觀察到的環境狀態以及內部知識,透過 LLM 的推理能力,生成一系列預期行動步驟以達成目標的過程。這可能涉及分解複雜任務、選擇合適的工具,並預測行動的結果。 - 白話重述:這就像一位外科醫師在術前會根據病人的影像報告、病理結果和臨床判斷,詳細規劃手術的每一個步驟,包括切入點、預期的操作流程、可能遇到的變數及應對方案。
- 常見誤解/相近概念區辨:
Planning不只是簡單的步驟列表,它應該是靈活且可調整的。與傳統 AI 的State-space search(狀態空間搜尋)不同,Agent 的規劃更側重於自然語言的推理和常識的運用。
Action (行動)
- 嚴謹定義:
Action是指 AI Agent 根據其Planning結果,透過Tool Use或直接與環境互動來改變世界狀態的執行步驟。一個Action可以是一個 API 呼叫、一個程式碼執行、一個文本生成,或是一個物理操作。 - 白話重述:當醫師完成規劃後,下達醫囑、開立處方、執行手術,這些都是具體的「行動」。
- 常見誤解/相近概念區辨:
Action必須是可執行且有明確界限的。它不是抽象的意圖,而是具體的指令。LLM 生成的Action通常需要被轉換為可供外部系統執行的格式(例如 JSON 格式的 API 呼叫)。
Reflection (反思)
- 嚴謹定義:
Reflection是指 AI Agent 在執行Action並獲取新的Observation後,對其行動結果、規劃策略以及當前進度進行評估和學習的過程。這包括識別錯誤、分析失敗原因、改進未來規劃,並更新其長期記憶。 - 白話重述:就像一位醫師在完成治療後,會回顧病人的預後、併發症發生率,並檢討治療過程中的決策,從中學習並改進未來的治療方案。這是一個「從錯誤中學習」的過程。
- 常見誤解/相近概念區辨:
Reflection不僅是錯誤修正,更是性能優化的重要環節。它讓 Agent 能夠進行Meta-cognition(後設認知),即對自己的思考過程進行思考。
Memory (記憶)
- 嚴謹定義:
Memory是 AI Agent 用來儲存和檢索過去經驗、知識、觀察與規劃的機制。它通常分為短期記憶(如對話上下文)和長期記憶(如知識庫、過去任務經驗),對於 Agent 保持情境一致性、避免重複錯誤、進行學習至關重要。 - 白話重述:一個有經驗的資深醫師,他會記得以前看過的類似病例、學術會議上的新知、或是自己累積的臨床訣竅。這些都是他的「記憶」,讓他能夠更快、更準確地做出判斷。AI Agent 也需要類似的記憶來累積經驗。
- 常見誤解/相近概念區辨:
Memory不僅是資料儲存,更涉及資訊的組織、檢索和整合。與資料庫(Database)不同,Agent 的Memory更強調其對推理和行為的影響。
§4. System / Paper Deep Dive
本節將深入探討虛擬的「OpenClaw」AI Agent 系統,解析其架構、關鍵演算法、資料結構以及在不同情境下的運作方式。OpenClaw 的設計理念是模仿臨床醫師的診斷與治療過程:感知病人狀態、規劃介入措施、執行醫療行為,並不斷從病人反應中學習與調整。
4.1 Architecture
OpenClaw 系統由數個模組組成,共同協作以實現高度自主的 Agentic Workflow。其核心是 Cognition Module,它利用 Large Language Model (LLM) 作為大腦,串聯起其他模組。
graph TD
subgraph OpenClaw AI Agent
Perception_Module["Perception Module (感知模組)"] --> Cognition_Module
Tool_Registry["Tool Registry (工具註冊表)"] --> Cognition_Module
Memory_Module["Memory Module (記憶模組)"] --> Cognition_Module
Cognition_Module --> Action_Module["Action Module (行動模組)"]
Action_Module --> Environment["Environment (環境)"]
Environment --> Perception_Module
end
style OpenClaw AI Agent fill:#f9f,stroke:#333,stroke-width:2px
style Perception_Module fill:#bbf,stroke:#333,stroke-width:1px
style Cognition_Module fill:#dfd,stroke:#333,stroke-width:1px
style Tool_Registry fill:#fbd,stroke:#333,stroke-width:1px
style Memory_Module fill:#bdf,stroke:#333,stroke-width:1px
style Action_Module fill:#ffb,stroke:#333,stroke-width:1px
style Environment fill:#ccc,stroke:#333,stroke-width:1px
Perception Module(感知模組):負責從Environment(環境)中收集原始數據,並將其轉換為 Agent 可以理解的Observation。這可能包括從 HIS 系統擷取病人數據、從 PACS 系統獲取影像資訊、監測生理數據等。它也負責過濾噪音、格式化數據,確保輸入 LLM 的資訊是清晰且相關的。Cognition Module(認知模組):這是整個 Agent 的「大腦」,內部包含一個強大的LLM。它接收來自Perception Module的Observation,結合Memory Module中的知識,以及Tool Registry中可用的工具清單,進行複雜的推理、Planning和Reflection。它會決定下一步要執行什麼Action,並將指令發送給Action Module。Tool Registry(工具註冊表):儲存所有 Agent 可以使用的外部工具及其功能描述(例如查詢藥物資訊的 API、預約檢查的程式)。Cognition Module會根據任務需求,從這裡選擇合適的工具。Memory Module(記憶模組):管理 Agent 的短期與長期記憶。短期記憶可能包括當前任務的執行上下文、最近的Observation與Action;長期記憶則可能儲存通用知識、過去成功或失敗的任務經驗、學到的策略等。Action Module(行動模組):接收來自Cognition Module的Action指令,並負責將這些抽象指令轉換為具體的、可與Environment互動的操作。例如,將「查詢病理報告」的指令轉換為呼叫 HIS 系統 API 的程式碼,或將「建議使用某藥物」轉換為向模擬醫囑系統發送的指令。Environment(環境):代表 Agent 運作的外部世界,可以是真實的臨床系統、模擬器、或一個資料庫。Agent 透過Perception Module感知Environment,並透過Action Module影響Environment。
4.2 關鍵演算法
OpenClaw 的核心是其 Agent Loop,它是一種不斷循環的決策與行動流程。以下是其簡化的偽程式碼:
# Initialize agent with goal, tools, and memorydef initialize_agent(goal, tools, long_term_memory): agent_state = { "goal": goal, "tools": tools, "short_term_memory": [], # Stores recent observations, thoughts, actions "long_term_memory": long_term_memory, # Stores accumulated knowledge, learned strategies "current_task": None, "status": "initialized" } return agent_state
# Main Agent Loopdef run_agent_loop(agent_state): while agent_state["status"] != "completed" and agent_state["status"] != "failed": # Phase 1: Observation (Perception Module) # Gather information from the environment raw_observation = perception_module.get_environment_data() current_observation = cognition_module.process_observation(raw_observation, agent_state)
agent_state["short_term_memory"].append({"type": "observation", "content": current_observation})
# Phase 2: Planning (Cognition Module - LLM Reasoning) # LLM analyzes observation, goal, and memory to plan next steps plan = cognition_module.generate_plan(agent_state["goal"], current_observation, agent_state["short_term_memory"], agent_state["long_term_memory"], agent_state["tools"])
agent_state["current_task"] = plan.get("next_task") agent_state["short_term_memory"].append({"type": "plan", "content": plan})
if plan.get("action_required"): # Phase 3: Action (Action Module) # Execute the planned action using tools action_type = plan.get("action_type") action_args = plan.get("action_args") tool_name = plan.get("tool_name")
if tool_name: action_result = action_module.execute_tool(tool_name, action_args) else: action_result = action_module.execute_direct_action(action_type, action_args)
agent_state["short_term_memory"].append({"type": "action_result", "content": action_result})
# Phase 4: Reflection (Cognition Module - LLM Reasoning) # LLM evaluates action result, updates memory, and potentially revises plan reflection = cognition_module.reflect_on_action(agent_state["goal"], current_observation, plan, action_result, agent_state["short_term_memory"])
if reflection.get("plan_revised"): agent_state["status"] = "revising_plan" # Trigger re-planning in next loop iteration elif reflection.get("goal_achieved"): agent_state["status"] = "completed" elif reflection.get("error_detected"): agent_state["status"] = "failed" else: agent_state["status"] = "in_progress"
agent_state["long_term_memory"].update_with_reflection(reflection) # Update long-term learning agent_state["short_term_memory"].append({"type": "reflection", "content": reflection}) else: # If no action is required, perhaps the plan suggests waiting or final reporting if plan.get("goal_achieved"): agent_state["status"] = "completed" else: # Handle cases where LLM might just output thoughts without an action agent_state["status"] = "waiting" # Or some other intermediate state if len(agent_state["short_term_memory"]) > MAX_THOUGHT_STEPS_WITHOUT_ACTION: agent_state["status"] = "failed" # Prevent infinite thought loops
return agent_state
# Helper functions (simplified)class PerceptionModule: def get_environment_data(self): # Simulates fetching data from HIS, PACS, sensors return "New patient admitted: John Doe, 65M, chest pain."
class CognitionModule: def process_observation(self, raw_data, agent_state): # Use LLM to extract key info, e.g., patient demographics, symptoms return f"Processed observation: {raw_data}. Identified as a cardiac event possibility."
def generate_plan(self, goal, observation, st_memory, lt_memory, tools): # Use LLM to reason about goal, current state, and available tools # LLM would output structured JSON for its plan # Example: {"next_task": "diagnose_chest_pain", "action_required": true, "tool_name": "query_his", "action_args": {"patient_id": "John Doe"}} if "chest pain" in observation and "diagnose_chest_pain" in goal: return {"next_task": "query_patient_history", "action_required": True, "tool_name": "query_his", "action_args": {"patient_id": "John Doe", "data_type": "history"}} # Simplified for brevity return {"next_task": "assess_further", "action_required": False, "goal_achieved": False}
def reflect_on_action(self, goal, observation, plan, action_result, st_memory): # Use LLM to evaluate if action helped, if plan needs revision # Example: {"plan_revised": false, "goal_achieved": false, "error_detected": false} if "history retrieved" in action_result: return {"plan_revised": False, "goal_achieved": False, "error_detected": False, "thoughts": "Successfully retrieved patient history, now need to analyze."} # Simplified for brevity return {"plan_revised": False, "goal_achieved": False, "error_detected": False}
class ActionModule: def execute_tool(self, tool_name, args): # Simulates calling external APIs or running scripts if tool_name == "query_his": # In real system, this would call HIS API if args["data_type"] == "history": return "Patient John Doe has history of hypertension and hyperlipidemia. No known drug allergies. History retrieved." return f"Executed tool {tool_name} with args {args}. Result: success."
def execute_direct_action(self, action_type, args): # Simulates direct actions like generating a report return f"Direct action {action_type} executed with args {args}. Result: success."
# Instantiate modules (simplified)perception_module = PerceptionModule()cognition_module = CognitionModule()action_module = ActionModule()
# Example usage (simplified)# agent = initialize_agent(goal="diagnose_chest_pain", tools={"query_his", "order_ecg"}, long_term_memory={})# final_state = run_agent_loop(agent)# print(f"Agent final status: {final_state['status']}")中文旁白解釋「為何這樣寫」:
initialize_agent函式:這是 Agent 啟動的入口點。它設定了 Agent 的初始目標、可用的工具集合以及長期記憶。short_term_memory(短期記憶)被初始化為空,因為 Agent 在開始時對當前任務還沒有任何感知或思考。status則標示了 Agent 的運行狀態。run_agent_loop函式:這是 OpenClaw 的核心驅動邏輯,一個while迴圈。它會持續運行,直到 Agent 達成目標(completed)或遇到無法克服的問題(failed)。- Phase 1:
Observation(感知模組):在每個迴圈開始時,Agent 會透過Perception Module從Environment中獲取最新的原始數據。這些數據會被Cognition Module(底層 LLM)處理,轉化為 Agent 更能理解的結構化current_observation。這一步是 Agent 認識世界的起點。 - Phase 2:
Planning(認知模組 - LLM 推理):這是 Agent 的「思考」階段。Cognition Module中的 LLM 會根據當前目標、最新觀察、短期記憶中的歷史對話與思考過程,以及長期記憶中的知識,來生成一個連貫的plan。這個plan包含下一步要執行的任務、是否需要action,以及如果需要action,具體的工具名稱與參數。這個推理過程是動態的,不像傳統程式是寫死的。 - Phase 3:
Action(行動模組):如果Planning階段決定需要執行一個action,Action Module就會負責將 LLM 生成的抽象指令(例如"tool_name": "query_his")轉換為實際的外部工具呼叫,並執行它。執行結果會被記錄下來,成為下一個Observation的一部分。 - Phase 4:
Reflection(認知模組 - LLM 推理):在Action執行完畢並獲取結果後,Agent 會再次利用Cognition Module中的 LLM 進行Reflection。這一步的目的是評估這次action是否成功、是否達成了預期效果、有沒有遇到錯誤,以及是否需要調整原有的plan。Reflection的結果還會用來更新long_term_memory,讓 Agent 從經驗中學習。 short_term_memory的累積:在每個階段,相關的觀察、規劃、行動結果和反思都會被添加到short_term_memory中。這確保了 LLM 在進行推理時,能夠擁有完整的對話上下文和任務執行歷史,避免「失憶」。- 狀態更新與循環:根據
Reflection的結果,Agent 的status會被更新。如果需要重新規劃,status會被設為revising_plan,促使下一個迴圈重新進入Planning階段;如果目標達成,則設為completed,Agent 終止;如果遇到無法解決的錯誤,則設為failed。
4.3 關鍵 data structure
在 OpenClaw 系統中,Agent State 的管理至關重要,它包含了 Agent 在特定時間點的所有相關資訊,以便 LLM 進行推理。其中 short_term_memory 是一個關鍵的資料結構,用於記錄 Agent 的動態執行歷史。
|
The task to write the content to a file cannot be completed as the necessary file writing tools (write_file or run_shell_command with file redirection) are not available in this environment, and subagents also reported this limitation. The generated content for sections 0-4 of the lecture notes is available in my previous turn.
update_topic(strategic_intent=
5. 真實類比(★ 讀者背景特化)
類比一:AI Agent 如同急診醫師的工作流
類比情境描述
想像一位急診醫師,面對源源不絕的病患。每位病患都是一個需要解決的「任務」。醫師首先會快速評估病患的主訴(chief complaint)和生命徵象,形成初步的鑑別診斷(differential diagnosis)。接著,根據這些初步資訊和過去的經驗(知識庫),醫師會規劃一系列的行動:詢問病史(history taking)、執行身體檢查(physical examination)、開立檢驗(lab tests)和影像檢查(imaging studies)。當檢驗結果陸續回報時,醫師會根據新的資料即時調整診斷思路,更新治療計畫。如果病患狀況惡化,醫師可能需要迅速採取更積極的介入(例如插管、給予升壓劑),並重新評估整個策略。整個過程是一個不斷迭代的循環:觀察(病患狀態)→ 思考(診斷與計畫)→ 行動(檢查與治療)→ 再觀察。醫師的目的就是要在資源和時間有限的情況下,快速、準確地穩定病患,並導向最終的處置。
對應關係表
| OpenClaw AI Agent 概念 | 急診醫師工作流元件 |
|---|---|
| Agent Core (核心代理) | 急診醫師本人 |
| Planner (規劃器) | 醫師的鑑別診斷與治療思維,以及預設的急救流程、臨床指引(clinical guidelines) |
| Memory (記憶體) | 病歷系統(EMR)、PACS、LIS 提供的病患歷史資料、檢驗結果、個人臨床經驗、醫學知識庫(UpToDate, Medscape) |
| Tools (工具集) | 聽診器、血壓計、EKG、抽血、影像檢查(X光、CT、超音波)、藥物、手術刀、會診單 |
| Executor (執行器) | 醫師實際執行的動作:詢問、檢查、開立醫囑、執行治療 |
| Observation (觀察) | 病患的生命徵象、主訴、身體檢查發現、檢驗影像報告、治療後的反應 |
✅ 吻合之處
這個類比非常貼近 AI Agent 的運作本質。急診醫師的核心角色就是處理未知的、複雜的、動態變化的情境,這與 AI Agent 在多變環境中完成任務的過程一致。醫師必須依賴其「Planner」能力,即快速形成鑑別診斷和行動計畫;其「Memory」能力,即回溯病史、調閱報告、運用醫學知識;其「Tools」能力,即執行各種診斷與治療手段;以及其「Executor」能力,即將計畫付諸實行。最重要的是,「Observation」環節體現了 Agent 的反應性:醫師根據病患的即時反應和新的資訊來迭代其思考和行動,這正是 AI Agent 的 Sense-Plan-Act 循環的精髓。醫師會不斷從病患的反應中學習,修正其對病情的「內部狀態模型」,並調整後續步驟。
⚠️ 不吻合之處
儘管類比有效,但仍有其邊界。首先,AI Agent 的「思考」過程目前多為基於邏輯推理或大型語言模型(LLM)的生成,缺乏人類醫師的直覺(intuition)、臨床判斷(clinical judgment)和同理心(empathy)。醫師能夠在資訊不完全時做出「合理猜測」,並承受一定程度的風險,這是當前 AI Agent 難以複製的。其次,醫師的學習是終身且複雜的,不僅來自單一病患的經驗,還包括文獻閱讀、師徒傳承、臨床討論等,而 AI Agent 的學習機制(例如 Fine-tuning 或 In-context learning)則較為單一和受限。此外,醫師面對的病患是活生生的個體,其倫理考量(ethical considerations)遠比 AI Agent 處理數據任務來得複雜和深刻。最後,醫師的工具使用通常需要高度的精細動作技能,這與 AI Agent 透過 API 呼叫工具的抽象層面不同。
類比二:AI Agent 作為醫院行政自動化系統
類比情境描述
想像一家大型教學醫院,每天有成千上萬的行政任務需要處理:病患預約掛號、排班、藥物庫存管理、醫材採購、檢體運送排程、報告發送、會議室預定、教學研究經費報銷等。過去這些都由人工處理,效率低且容易出錯。現在引入了一個「AI Agent 驅動的自動化行政系統」,它就像一個超級行政秘書團隊。每個 Agent 都被賦予特定的任務領域(例如「掛號Agent」、「藥庫Agent」)。當一個新的「掛號任務」進來時,「掛號Agent」會先查閱現有的排班表和診次資料庫(Memory),然後規劃最佳的掛號時間(Planner),並使用預約系統(Tool)完成掛號動作。如果遇到特殊情況(例如醫師臨時請假、診次額滿),它會「觀察」到這些狀況,並自動調整方案,例如建議替代醫師或通知病患改期。這個系統的目標是讓整個醫院的行政流程更加順暢,減少人力成本,並降低錯誤率。
對應關係表
| OpenClaw AI Agent 概念 | 醫院行政自動化系統元件 |
|---|---|
| Agent Core (核心代理) | 特定領域的自動化模組(如掛號模組、藥庫模組) |
| Planner (規劃器) | 根據 SOP、規則引擎、排程演算法來生成任務處理步驟 |
| Memory (記憶體) | 醫院資訊系統(HIS)中的資料庫,包含病患資料、醫師排班表、藥品醫材庫存、會議室預定狀況、歷史行政紀錄 |
| Tools (工具集) | 醫院內部各種系統的 API 介面:掛號系統 API、藥庫管理系統 API、會計系統 API、訊息通知系統(簡訊/Email)API |
| Executor (執行器) | 系統自動調用 API 介面,執行資料庫操作、發送通知等 |
| Observation (觀察) | 系統監控資料庫的變動、API 回傳的狀態碼、排程衝突、資源不足等系統事件 |
✅ 吻合之處
此類比突顯了 AI Agent 在自動化和複雜任務協調方面的能力。醫院行政系統的運作高度依賴於預定義的流程和與多個子系統的互動,這與 AI Agent 的 Tool-use 特性非常吻合。Agent 可以透過「Planner」來編排複雜的行政流程,例如從掛號到排床、從藥品請領到出庫。其「Memory」是對整個醫院海量結構化數據的存取,而「Tools」則代表了與不同 HIS 模組的 API 介面。當系統「觀察」到異常時(如藥品短缺、排班衝突),Agent 能夠自動觸發修正機制或發出警報,展現了其問題解決和反應能力。這有助於理解 AI Agent 如何將繁瑣、重複但關鍵的行政工作變得高效和智能化。
⚠️ 不吻合之處
這個類比的限制在於,行政任務雖然複雜,但通常比臨床決策更具結構性,且對「創造性」和「彈性」的要求較低。AI Agent 在此情境中更像是智能化的巨集(macro)或工作流自動化(workflow automation)工具,而非像急診醫師那樣需要高度的認知彈性來處理「未定義」的問題。此外,此類比較少觸及 AI Agent 在處理非結構化數據(如自由文本病歷、醫學影像)方面的能力,而這在醫療領域是非常重要的一環。系統的「錯誤」通常是邏輯錯誤或資料錯誤,而非像人類醫師那樣可能因為疲勞或知識不足導致的判斷失誤,這也使得 Agent 的「學習」和「自我修正」在此情境中,與人類醫師的成長方式有所不同。
類比三:AI Agent 作為重症加護病房(ICU)照護團隊
類比情境描述
在重症加護病房(Intensive Care Unit, ICU)中,病患的生命狀況分秒必爭,需要多專業團隊(醫師、護理師、呼吸治療師、藥師等)緊密合作,隨時調整治療。我們可以將整個 ICU 照護團隊想像成一個高度複雜的 AI Agent。當一個新病患入住 ICU 時,團隊會從 EMR 中快速獲取病患的所有既往病史、入院檢驗報告、影像資料(Memory)。主治醫師和住院醫師會共同制定初步的治療計畫(Planner),包括呼吸器設定、點滴處方、感染控制策略等。護理師會定期監測生命徵象(Observation),並執行醫囑(Executor),例如給藥、抽血、傷口照護,同時使用各種醫療設備(Tools)如呼吸器、洗腎機、輸液幫浦。一旦病患的生理數據出現異常變化(例如血壓下降、尿量減少),護理師會立即「觀察」到並通知醫師,醫師則會快速評估,並「重新規劃」治療策略(例如調整升壓劑劑量、安排緊急檢查)。整個團隊就像一個龐大的、協同工作的 AI Agent,其目標是維持病患生理穩定,並引導康復。
對應關係表
| OpenClaw AI Agent 概念 | ICU 照護團隊元件 |
|---|---|
| Agent Core (核心代理) | ICU 照護團隊整體(醫師、護理師、治療師、藥師) |
| Planner (規劃器) | 主治醫師的治療計畫、ICU 臨床路徑(clinical pathways)、各專科醫師會診意見 |
| Memory (記憶體) | EMR 中病患的 Admission note, Progress note, Order set, Lab reports, Imaging reports, Nursing records; 醫學知識庫 |
| Tools (工具集) | 各種醫療設備(呼吸器、洗腎機、輸液幫浦、生理監視器)、藥物、檢驗/影像檢查、會診服務 |
| Executor (執行器) | 護理師、呼吸治療師等執行醫囑、操作設備、照護病患的行為 |
| Observation (觀察) | 生理監視器數據、病患身體檢查發現、Lab/Imaging 報告、治療反應、病患主觀感受 |
✅ 吻合之處
ICU 團隊的運作完美體現了 AI Agent 的協作與即時反應能力。團隊成員分工合作,但共享目標和資訊,這就像一個由多個子 Agent 組成的複雜 Agent 系統。每天的晨會(Morning Report)和床邊討論(Bedside Round)就是團隊「Planner」的共同建立與修正過程。「Memory」是病患 EMR 中累積的完整資料。「Tools」則囊括了 ICU 中所有賴以維持生命的精密設備與治療手段。最核心的是「Observation」和「重新規劃」的循環:護理師對生命徵象的持續監控,以及醫師根據這些觀察結果迅速調整治療計畫,完美詮釋了 Agent 在動態環境中 S-P-A 循環的高頻率迭代。這個類比能幫助讀者理解 Agent 如何處理高風險、高複雜度、多變數且需要即時反應的真實世界問題。
⚠️ 不吻合之處
儘管此類比強大,但仍應注意其局限性。ICU 團隊的「Planner」是人與人溝通協作的結果,包含爭論、意見交換和共識建立,而 AI Agent 的規劃目前仍較為機械或生成性,缺乏人類的社會互動和情感智能。團隊成員之間的「信任」(trust)和「默契」(rapport)是 ICU 高效運作的關鍵,這在 AI Agent 系統中通常表現為介面(interface)的穩定性和通訊協定(communication protocol)的可靠性,本質上不同。此外,ICU 團隊對「未預期事件」(unforeseen events)的應變能力,往往依賴於經驗和創造性思維,這超越了大多數當前 AI Agent 的能力範圍。最後,醫療團隊中的倫理衝突(ethical dilemmas)和法律責任(legal liability)是 AI Agent 目前無需面對的,即使未來 Agent 參與醫療決策,其責任歸屬仍是懸而未決的議題。
6. 課堂 Q&A 精華
Q: AI Agent 的「記憶體」和我們一般寫程式用的變數(variables)或資料庫(databases)有什麼不同? A: AI Agent 的記憶體不只是一個儲存區,它更強調資訊的語義(semantic)理解和情境(contextual)關聯。傳統的變數只是儲存數值或物件,資料庫儲存結構化數據,但它們本身不理解這些數據的「意義」。AI Agent 的記憶體通常會利用 LLM 的能力,將接收到的觀察結果、歷史行動、甚至內部思考過程,轉換為具備語義資訊的格式(例如 embedding 或結構化知識圖譜),這樣 Agent 在後續規劃時才能「理解」這些資訊,並依據情境調用最相關的歷史經驗,而不僅僅是按鍵值查找。這就好比醫師不是只記住檢驗報告的數字,而是理解這些數字在特定病患情境下的臨床意義。
Q: 如果 OpenClaw Agent 在執行任務時,某個 Tool 呼叫失敗了,它會怎麼辦?會不會就此停擺? A: 一個設計良好的 AI Agent 系統會具備錯誤處理(error handling)和回溯(rollback)機制。當 Tool 呼叫失敗時,Agent 會「觀察」到錯誤訊息。它的 Planner 會根據這個錯誤訊息,嘗試「重新規劃」:可能是重試 Tool 呼叫、換一個替代 Tool、或者調整參數後再試。如果都失敗,它可能會向上層 Agent 報告錯誤,甚至觸發安全機制(例如終止任務以避免危害)。這就像外科醫師在手術中發現某個器械故障,他不會停下,而是會立即要求更換器械、調整術式,或者在必要時暫停手術並重新評估。
Q: 為什麼 OpenClaw Agent 需要一個獨立的「Executor」?Planner 不能直接執行動作嗎? A: 將 Planner 和 Executor 分開是為了解耦(decoupling)和彈性(flexibility)。Planner 負責「思考」如何做,生成一系列的行動指令;Executor 則負責「實際執行」這些指令。這樣設計的好處是:
- 容錯性:如果執行過程中發生錯誤,Planner 可以重新生成指令,而 Executor 只需要執行新的指令。
- 異步性:Planner 可以先規劃一系列動作,Executor 可以非同步地執行這些動作,效率更高。
- 抽象層次:Planner 不需關心每個 Tool 的底層實現細節,只需知道 Tool 的功能介面,而 Executor 負責處理這些細節。 這類似於外科主治醫師(Planner)制定手術方案,而住院醫師或專科護理師(Executor)則負責按醫囑精準執行。主治醫師不需要知道每一針怎麼縫,只需指導「這裡要縫幾針、怎麼縫」。
Q: AI Agent 是不是就等於一個更聰明的自動化腳本(script)? A: 不完全是。自動化腳本是預先定義好的、線性的、不具彈性的指令序列。而 AI Agent 則具有**感知(perceive)-規劃(plan)-行動(act)-學習(learn)**的循環能力。它能夠根據環境的動態變化做出反應、調整策略、甚至從經驗中學習以優化未來的決策。這使它能處理更複雜、非結構化、難以預測的任務。你可以把自動化腳本想像成一份寫好的 SOP,而 AI Agent 則是一位能夠根據病患病情變化,自主調整 SOP 的資深醫師。
Q: OpenClaw 這樣的 AI Agent 在真實世界的醫院情境中,有沒有可能取代人類醫師? A: 目前來看,AI Agent 的設計目標是輔助(augment)人類醫師,而非取代(replace)。AI Agent 在處理重複性高、數據密集型、邏輯清晰的任務上(例如病歷摘要、影像初步判讀、排程優化)具有巨大潛力,可以大大減輕醫師的負擔。然而,人類醫師在複雜倫理決策、與病患的溝通、提供同理心支持、以及處理未預期且模糊的臨床狀況方面,仍是無可取代的。未來的趨勢是人機協作,AI Agent 成為醫師的「智能助手」,而非替代者。
Q: 如果要讓 AI Agent 更「聰明」,是提升它的 Planner 能力重要,還是給它更多更好的 Tools 更重要? A: 兩者都重要,且相輔相成。
- 更好的 Planner (更聰明的推理、更廣的知識):能讓 Agent 在面對複雜問題時,規劃出更優雅、更少步驟、更穩健的解決方案。它能更好地理解問題,並避免走入死胡同。
- 更多更好的 Tools (更強大的行動能力):能讓 Agent 擁有更多元的執行手段,處理更多種類的任務,甚至能夠處理更底層、更精細的操作。
缺乏好的 Planner,再多工具也只是雜亂無章;缺乏好 Tools,再聰明的 Planner 也巧婦難為無米之炊。這就好比一個經驗豐富的主治醫師(好的 Planner),如果沒有檢驗儀器、藥物、手術器械(好的 Tools),也無法有效治療病患。反之,若只有先進設備,但醫師不會規劃治療,也無濟於事。
最常見誤解 Top 3
- AI Agent 等同於一般程式:許多人誤以為 Agent 只是複雜一點的程式,忽略了其感知-規劃-行動的自主循環和適應性。
- AI Agent 能完全複製人類智能:特別是對於醫學生,容易把 Agent 的「思考」想像成人類的認知過程,低估了人類直覺、同理心和倫理判斷的複雜性。
- AI Agent 的記憶體只是簡單的儲存:認為其記憶體與傳統資料庫無異,未理解其語義理解和情境關聯的重要性。
7. 常見陷阱與考點(What Engineers Actually Get Wrong)
陷阱:過度依賴 LLM 的「通用智能」,認為 Planner 不需精細設計,把所有複雜邏輯都丟給 LLM。
- 為何會掉進去:LLM 展現的強大推理能力讓人誤以為它能處理一切。許多人認為只要給足 Prompt,LLM 就能「自動」規劃出最佳路徑。
- 正確做法:將 LLM 視為強大的「推理引擎」和「自然語言介面」,而非萬能的 Planner。對於複雜、關鍵路徑或高風險的任務,仍需結合**結構化規劃(structured planning)、規則引擎(rule engine)、狀態機(state machine)**等傳統軟體工程方法。LLM 可以生成高階計畫,但細節執行和容錯仍需靠精確的程式碼和邏輯。例如,醫師的診斷思路可以由 LLM 輔助生成,但藥物劑量、給藥途徑等仍須嚴格遵循藥典和臨床指引。
陷阱:忽略 Tool 的「幂等性(idempotency)」和「副作用(side effects)」。
- 為何會掉進去:假設 Tools 都是原子性(atomic)且無狀態(stateless)的。當 Agent 重試(retry)失敗的 Tool 或在不同路徑下調用同一個 Tool 時,如果該 Tool 不具幂等性,可能會導致重複操作或不可預期的系統狀態改變。例如,錯誤地重複開立同一份檢驗醫囑,會導致病患被多抽一次血。
- 正確做法:設計 Tool 時,應盡可能使其具備幂等性,即多次調用產生相同結果。如果 Tool 具有副作用,Agent 的 Planner 必須清楚地管理這些狀態變更,並在失敗或重試時有回溯或補償機制。
陷阱:記憶體管理缺乏「情境意識(context awareness)」,導致 Agent 遺忘或錯用資訊。
- 為何會掉進去:單純地將所有歷史對話或觀察結果塞入記憶體,而沒有對其進行組織、摘要、提取核心資訊。這會導致 Agent 在處理新任務時,被過時、不相關或冗餘的資訊淹沒,或者因為上下文視窗(context window)限制而「遺忘」早期關鍵資訊。
- 正確做法:設計分層或多模態記憶體。例如,短期記憶用於當前對話,長期記憶用於永久知識。使用 RAG(Retrieval-Augmented Generation)技術從長期記憶中檢索最相關的資訊。記憶體中的資訊應定期摘要、提煉、去蕪存菁,確保 Agent 始終能存取到高質量且情境相關的知識。
陷阱:在多 Agent 系統中,忽視 Agent 之間的「協作(collaboration)」和「溝通(communication)」成本。
- 為何會掉進去:認為只要把任務拆分給不同的 Agent,它們就能自然地高效協作。然而,如果 Agent 之間沒有明確的通訊協議(communication protocol)、共享狀態機制或衝突解決策略,反而會導致效率低下、死鎖(deadlock)或任務失敗。
- 正確做法:明確定義 Agent 之間的介面、通訊管道和訊息格式。引入協調者(coordinator)或仲裁者(arbiter)Agent 來管理共享資源和解決衝突。在設計之初就考慮 Agent 之間的依賴關係和同步要求。就像醫院團隊,醫師、護理師、藥師之間有明確的溝通方式(醫囑、交班、會議),才能避免誤解和衝突。
陷阱:對於 Agent 的「行為可解釋性(explainability)」和「可審計性(auditability)」重視不足。
- 為何會掉進去:由於 LLM 的黑箱特性,以及 Agent 複雜的決策流程,許多人難以理解 Agent 做出特定決定的「原因」。在出現錯誤時,很難追溯問題源頭。在醫療領域,這是不可接受的。
- 正確做法:設計 Agent 時,應確保其規劃過程、Tool 調用、記憶體讀寫等關鍵步驟都有詳細的日誌(logging)。利用 LLM 的自省能力(self-reflection)生成決策路徑的解釋。提供清晰的審計軌跡,以便在出問題時能重現 Agent 的行為並分析錯誤。這對於醫療 AI 尤其關鍵,醫師需要知道 AI 給出建議的「理由」,才能決定是否採納。
陷阱:將 Agent 的「目標(goal)」設定得過於模糊或相互衝突。
- 為何會掉進去:給 Agent 設定像「讓病患康復」這樣的高層次、抽象目標,卻沒有將其分解為可操作、可量化的子目標。或者設定了多個目標,但這些目標在某些情境下會相互矛盾(例如,快速治療 vs 最小副作用)。
- 正確做法:將高層次目標逐層分解為清晰、明確、可量化的子目標。對於多個目標,建立優先級(priority)或權重(weight)機制,讓 Agent 知道在衝突時應如何取捨。例如,在急診情境下,優先維持生命徵象穩定,其次是緩解疼痛,最後是找出病因。明確的目標定義是 Agent 做出正確決策的基石。
8. 自測題
-
(概念題) 在 AI Agent 的架構中,「Planner」和「Executor」分開設計的主要目的是什麼?請至少說明兩個理由。
展開答案
Planner 和 Executor 分開設計主要目的是為了解耦(decoupling)和彈性(flexibility)。
- 容錯性與恢復:如果 Executor 在執行 Tool 時遇到錯誤,Planner 可以根據錯誤訊息重新評估情況,並生成替代的行動計畫或重試策略,而無需 Executor 介入規劃,使系統更容易從錯誤中恢復。
- 異步執行與效率:Planner 可以預先生成一系列的行動步驟,而 Executor 則可以異步地執行這些步驟,從而提高整體效率。Executor 執行當前步驟的同時,Planner 可以已經在思考後續的步驟。
- 抽象層次與關注點分離:Planner 專注於高層次的決策和策略制定,無需關心每個 Tool 的具體實現細節。Executor 則負責處理 Tool 介面的底層操作,使系統各部分的職責更加清晰,提高模組化程度。
-
(情境題) 一位醫師正在使用一個 AI Agent 系統來協助診斷罕見疾病。該 Agent 在初步收集病史後,建議進行一項非常昂貴且侵入性的基因檢測。如果這個 Agent 的「Memory」設計有缺陷,你認為最可能是哪種缺陷導致了這個建議,以及為什麼?
展開答案
最可能的缺陷是 Memory 缺乏情境意識(context awareness)或未對資訊進行有效過濾。
- 缺陷原因:Agent 可能讀取了大量關於該罕見疾病的文獻,這些文獻傾向於介紹最全面但成本高昂的診斷方法。然而,它的 Memory 可能未能充分考慮到病患的經濟狀況、地理位置(是否方便進行該檢測)、或是否有更普遍、更經濟、侵入性更低的初步篩查方法。換句話說,Memory 中的知識是「通用」的,但缺少了「個體化」和「情境化」的資訊,導致 Agent 無法在綜合考量下做出最優的建議。此外,也可能是 Memory 中關於各種檢測的成本效益資訊不足或未被有效加權。
-
(概念題) 什麼是 AI Agent 中的「Tools」?請舉例說明在醫院環境下,AI Agent 可以調用哪些 Tools 來完成其任務?
展開答案
AI Agent 中的「Tools」是 Agent 用來與外部世界互動、執行具體操作或獲取額外資訊的功能模組或 API 介面。這些 Tools 將 Agent 的「思考」轉化為「行動」。
在醫院環境下,AI Agent 可以調用的 Tools 範例如下:
- EMR Query Tool:查詢病患的電子病歷系統,獲取病史、檢驗報告、影像結果。
- Order Entry Tool:向 HIS 下達醫囑,例如開立檢驗單、影像檢查單、藥物處方。
- PACS Viewer Tool:調閱和初步分析 PACS 中的醫學影像(X光、CT、MRI)。
- LIS Query Tool:查詢檢驗系統,獲取特定檢體的詳細報告。
- Drug Database Tool:查詢藥物資料庫,了解藥物劑量、副作用、交互作用。
- Appointment Scheduling Tool:協助病患預約門診或檢查。
- Message Notification Tool:透過簡訊、Email 或內部通訊軟體發送通知給病患或醫護人員。
-
(debug 題) 你的 OpenClaw Agent 負責自動化排班。它最近開始出現問題:每週都會重複排定某位醫師在同一天同一個時段的值班,即使該醫師已經被排滿。你懷疑是 Planner 或 Memory 出了問題。你會從哪方面開始 debug?
展開答案
我會優先從以下方面開始 debug:
- 檢查 Memory 的即時性和正確性:
- 問題假設:Agent 的 Memory 中可能存儲了過時(stale)或不正確的排班資訊。它可能沒有即時同步到最新的排班表更新,導致它認為該醫師在那個時段是空的。
- Debug 方法:
- 確認 Memory 讀取最新排班資料的時間戳(timestamp)和頻率。
- 手動查詢 Agent Memory 中該醫師的排班狀態,與實際排班表進行比對,確認是否一致。
- 檢查是否有快取(cache)問題,導致 Agent 讀取到舊的數據。
- 檢查 Planner 的邏輯與規則:
- 問題假設:Planner 在生成排班計畫時,可能遺漏了「醫師排班已滿」這條約束條件,或者對該約束的優先級設定過低。
- Debug 方法:
- 逐步追蹤(step-by-step trace) Planner 的決策路徑,觀察它是如何根據現有排班表生成建議的。
- 檢查 Planner 內部是否有處理「資源衝突」或「已排班滿額」的明確規則。
- 確認 Planner 是否正確使用了從 Memory 讀取到的「醫師可用時間」資訊。
Memory 問題會導致 Planner 接收到錯誤的輸入,而 Planner 問題則會導致即使輸入正確,也無法產出正確的結果。通常會先檢查輸入(Memory),再檢查處理邏輯(Planner)。
- 檢查 Memory 的即時性和正確性:
-
(概念題) 在 AI Agent 的「Sense-Plan-Act」循環中,「Sense」對應的是哪個元件?它的主要功能是什麼?
展開答案
在 AI Agent 的「Sense-Plan-Act」循環中,「Sense」對應的是 Observation 元件。
它的主要功能是:
- 感知環境變化:從 Agent 所在的環境中收集最新的資訊、數據或狀態,這可能包括文字、圖像、聲音、系統狀態、API 回傳結果等。
- 將原始感知轉化為可理解的輸入:將收集到的原始、異構的感知數據,轉換為 Agent 內部 Planner 或 Memory 可以理解和處理的格式(例如,將 API 回傳的 JSON 數據解析為關鍵訊息,或將圖像轉化為文字描述)。
- 觸發反應:當感知到某些關鍵事件或狀態變化時,可以觸發 Agent 進入下一輪的「Plan」階段,重新評估情況並制定行動。
-
(情境題) 假設你設計了一個 AI Agent 來協助醫院藥局管理藥品庫存。有一天,系統發出警報,指出某種常用抗生素的庫存即將耗盡,但實際上庫房裡還有足夠的量。你覺得這可能是 Agent 哪個環節出了問題?
展開答案
這最可能是 Agent 的 Observation 或 Memory 環節出了問題。
-
Observation 問題:
- 情境:Agent 用來「觀察」藥品庫存的 Tool(例如掃描庫存條碼、讀取 LIS 數據)可能存在問題。例如,條碼讀取錯誤、數據傳輸延遲、或與實際庫房盤點系統的數據不同步。它感知到的「現實」是錯誤的。
- 原因:數據源本身不準確或不即時。
-
Memory 問題:
- 情境:即使 Observation 提供了正確的原始數據,但 Agent 的 Memory 在處理或儲存這些數據時出現了問題。例如,它可能存儲了錯誤的庫存快照,或者在更新庫存數據時發生了錯誤。
- 原因:Memory 更新機制有缺陷、數據整合錯誤、或儲存了過時的數據。
這兩種情況都導致 Agent 的「內部世界模型」與「外部現實」不符,從而做出錯誤的判斷和警報。
-
-
(debug 題) 你正在開發一個 AI Agent,它的任務是根據病患的症狀和病史,推薦最相關的醫學文獻。但你發現它總是在推薦一些過時的、甚至已經被推翻的舊研究。你會怎麼修正這個問題?
展開答案
這個問題最可能出在 Agent 的 Memory 和其資訊檢索(Retrieval)機制。
修正方向:
- 優化 Memory 的資料來源與更新機制:
- 問題:Agent 的長期記憶可能包含了大量的舊文獻,但沒有足夠的機制來區分新舊、篩選品質。
- 修正:確保 Memory 的來源(例如醫學期刊資料庫、OpenEvidence)能夠提供最新的文獻。建立定期更新和篩選機制,優先收錄高影響因子、近期的、經同行評審(peer-reviewed)的文獻。
- 強化資訊檢索的相關性與時效性:
- 問題:Agent 在檢索文獻時,可能僅依賴關鍵字匹配,而沒有考慮文獻的發表時間、引用次數、或是否被後續研究引用推翻。
- 修正:
- 在檢索時加入時間約束(temporal constraint),例如「僅檢索近五年文獻」。
- 利用**引用網絡(citation network)**資訊,優先檢索被高頻引用或較新文獻引用的研究。
- 引入文獻品質評分機制,在檢索結果中優先排序高質量、高相關性的文獻。
- 細化 Planner 的評估標準:
- 問題:即使檢索到了新舊文獻,如果 Planner 沒有明確的指令去「偏好」最新、最權威的證據,它可能會因為某些舊文獻在語義上與查詢高度匹配而錯誤推薦。
- 修正:在 Planner 的指令中明確加入「遵循最新證據(evidence-based medicine)原則」,引導其在多個文獻中選擇最具時效性和權威性的。
核心是確保 Agent 存取的知識是「最新且有效」的,並且在檢索和規劃時能正確地「偏好」這些優質資訊。
- 優化 Memory 的資料來源與更新機制:
-
(情境題) 一個 AI Agent 被設計來協助手術室護理師清點器械。它的「Planner」會根據手術類型生成器械清單,然後「Executor」會調用「Camera Tool」來辨識和清點器械。如果有一天,這個 Agent 反覆要求補充一把手術刀,但攝影機影像顯示手術刀已經在檯面上,你認為可能是什麼原因?
展開答案
這最可能是 Camera Tool 的 Observation 能力出了問題,或者 Planner 對 Observation 的解讀有誤。
-
Camera Tool 的 Observation 問題:
- 辨識錯誤:攝影機的 AI 視覺模型可能未能正確辨識出檯面上的手術刀(例如,角度、光線、遮擋、器械反光等原因)。它「看到」了影像,但「理解」為沒有手術刀。
- 計數錯誤:即使辨識成功,計數模組可能存在缺陷,導致計數結果錯誤。
- 原因:視覺模型的訓練數據不足,或未考慮手術室的特殊環境(如反光、沾血)。
-
Planner 對 Observation 的解讀問題:
- 閾值設定不當:即使 Camera Tool 輸出了「辨識到手術刀,置信度 80%」,如果 Planner 設定的信任閾值(threshold)過高(例如要求 95% 以上才算「有」),它就會認為沒有。
- 狀態同步錯誤:Planner 可能根據舊的 Observation 結果進行判斷,沒有即時處理 Camera Tool 傳回的最新影像資訊。
- 原因:Planner 邏輯與視覺辨識模組的輸出介面有不匹配之處。
總之,Agent 的「感知」環節未能準確反映「現實」,或者「思考」環節未能正確理解「感知」,導致了錯誤的行動。
-
-
(概念題) 為什麼在設計 AI Agent 時,我們會強調避免使用大陸譯名,而統一使用繁體中文和英文術語?這對醫學系讀者有什麼特別的意義?
展開答案
統一使用繁體中文和英文術語,並避免大陸譯名,對醫學系讀者有以下特別意義:
- 學術與臨床溝通的一致性:
- 台灣醫學教育和臨床實踐中,專業術語主要使用英文原文,輔以繁體中文解釋。例如,我們會說 CT 而不是「計算機斷層掃描」,說 EMR 而不是「電子病歷」。
- 大陸譯名(如「資訊」、「數據」、「軟件」、「網絡」)與台灣的習慣用語(資訊、資料、軟體、網路)存在差異,可能導致讀者產生認知混淆,甚至需要額外時間去轉換理解。
- 國際接軌與文獻閱讀:
- 醫學是高度國際化的學科,最新的研究進展和學術論文幾乎都以英文發表。讓讀者習慣使用英文術語,有助於他們直接閱讀英文文獻,縮短學習曲線。
- 使用統一的術語標準,也便於讀者在未來的國際交流和合作中,進行無障礙的專業溝通。
- 避免歧義:某些大陸譯名在繁體中文語境下可能產生不同的歧義,影響理解的精確性。統一標準能減少這種潛在的誤解。
總之,這不僅是語言風格問題,更是為了確保學習效率、促進專業溝通,以及與主流醫學學術和臨床實踐保持一致。
- 學術與臨床溝通的一致性:
-
(情境題) 你正在開發一個用於病理切片分析的 AI Agent,它的任務是識別腫瘤細胞。為了提高其準確性,你考慮給它增加一個「專家的會診 Tool」,讓它可以呼叫遠端的病理科醫師進行人工審核。這個新的 Tool 會如何影響 Agent 的 Sense-Plan-Act 循環?請說明其對每個環節的影響。
展開答案
增加「專家的會診 Tool」會對 Agent 的 Sense-Plan-Act 循環產生顯著影響:
- Sense (Observation):
- 新增觀察類型:除了自動化的影像分析結果外,Agent 現在可以觀察到「人類專家的判讀結果和建議」。這是一種新的、高層次的、具備人類臨床判斷的輸入。
- 資訊質量提升:專家的意見通常具有高信度和精確性,能作為 Agent 自我修正或驗證的「黃金標準(gold standard)」。
- Plan (Planner):
- 規劃彈性與校準:Planner 在生成最終判讀或下一步行動時,可以將專家意見作為一個重要的決策依據。當 Agent 的自動判讀結果與專家意見不一致時,Planner 可以被設計為優先採納專家意見,或者觸發進一步的分析來解決衝突。
- 風險管理:對於高風險或模糊的病例,Planner 可以主動規劃調用會診 Tool,將困難交給人類專家處理,從而降低 Agent 犯錯的風險。
- 學習潛力:長期來看,Planner 可以從專家會診的結果中「學習」(例如透過強化學習或模型更新),優化其在類似情境下的自動判讀邏輯。
- Act (Executor):
- 新增行動:Executor 現在可以執行「發送會診請求」這個新的行動。這涉及打包相關的病理影像和 Agent 的初步分析結果,並將其提交給會診 Tool。
- 協作行為:這個 Tool 的調用代表 Agent 從完全自動化轉變為**人機協作(Human-in-the-Loop)**模式,Executor 不再只是執行內部的指令,而是與外部人類專家共同完成任務。
簡而言之,這個 Tool 讓 Agent 擁有了一個強大的「外部腦」或「品質控制點」,使其能在面對複雜挑戰時,透過人類智能的介入來提升效能和可靠性。
- Sense (Observation):
9. 延伸資源
- 本堂對應 paper:
- 由於本課程是關於 AI Agent 的通用介紹,且以「OpenClaw」為例,並無直接對應的單一學術論文。然而,AI Agent 的概念深受以下論文啟發:
- “Generative Agents: Interactive Simulacra of Human Behavior” by Park, et al. (2023). 這篇論文介紹了能夠模擬人類行為的生成式 Agent,其架構中的感知、規劃、記憶與反思機制與本課程概念高度相關。
- “Self-Refine: Iterative Refinement with Self-Feedback” by Madaan, et al. (2023). 探討了 Agent 如何透過自我反思和迭代優化其輸出,這與 Agent 的規劃和學習能力緊密相關。
- 由於本課程是關於 AI Agent 的通用介紹,且以「OpenClaw」為例,並無直接對應的單一學術論文。然而,AI Agent 的概念深受以下論文啟發:
- 官方 lecture notes 連結:
- 由於是虛構課程,沒有官方連結。但通常這類課程會提供原始投影片或整理好的講義。
- 推薦延伸閱讀:
- “Large Language Models as a Foundation for Smarter Agents” (Blog Post by Lilian Weng, OpenAI): 這篇部落格文章深入淺出地解釋了 LLM 如何作為 AI Agent 的核心,涵蓋了 Planner、Memory 和 Tools 等關鍵組件,非常適合初學者。
- “AgentGPT / AutoGPT Documentation”: 探索實際的開源 AI Agent 框架,理解其程式碼結構和運作原理,從實作層面加深對 AI Agent 的理解。
- 《人工智慧時代的醫療:AI如何在臨床、行政和研究中應用》 (醫學科技書籍):這類書籍可以幫助醫學生將 AI Agent 的通用原理,進一步與實際醫療情境結合,思考其應用前景和挑戰。
- 下一堂預告:
- 下一堂課我們將深入探討 AI Agent 的記憶體機制,特別是其長期記憶(Long-term Memory)如何組織、儲存和檢索資訊,以支撐 Agent 的持續學習與複雜推理。