
Tools、Workflow、Agent 三層架構詳解從最小能力單元到編排框架1. 三者的核心誤區很多人把 Tools、Workflow、Agent 當成三個并列的競爭方案認為做項目時需要在三者中選一個。這個理解是錯的。三者不是同一維度的東西而是粒度不同、可以相互嵌套的三層結構。Tools 是最小的能力單元Agent 是一個完整的決策系統Workflow 是更上層的編排框架。在實際項目中三者通常同時存在扮演不同角色。三者最核心的區別一句話Tools 不做決策只執行Agent 自己做決策Workflow 是開發者替所有節點把決策提前寫好。2. 第一層Tools——最小能力單元2.1 核心定義Tools 是整個體系里最底層的概念就是一個封裝好的函數有明確的輸入參數、明確的輸出結果。你給 LLM 配備的每一個能力比如查天氣“搜索網頁”“執行 Python 代碼”“往數據庫寫一條記錄”本質上都是一個函數。Tools 和普通函數唯一的區別是需要額外寫一份說明書告訴 LLM 這個工具叫什么名字、能做什么事、需要傳哪些參數這樣 LLM 才知道自己有哪些能力可以調用。一個工具定義的結構示例{name:search_web,description:搜索互聯網并返回結果,parameters:{type:object,properties:{query:{type:string,description:搜索關鍵詞}},required:[query]}}2.2 技術特征零決策能力工具本身沒有任何決策能力它甚至不知道自己應該在什么時候被使用被動等待調用由外部Agent 或 Workflow觸發不會主動執行高確定性輸入固定則輸出固定行為可預測2.3 邊界與局限Tools 的使命就是把一個具體能力封裝好、隨時待命至于什么時候該用它那是別人的事。Tools 只負責執行不負責判斷什么時候該用需要組合才能完成復雜任務。3. 第二層Agent——拿著工具自己做決定3.1 核心定義Agent 是一個完整的決策系統內部用 LLM 做大腦自己判斷什么時候調哪個工具、要不要繼續、什么時候結束。給 Agent 一個目標比如調研一下最近競品的動態它不會直接給一個答案而是開始自己思考第一步應該搜索什么關鍵詞搜索結果里有沒有需要的信息需不需要多搜幾次什么時候才算調研完了這一系列要不要、用哪個、夠不夠、停不停的判斷全部由 Agent 內部的 LLM 做決策。3.2 運行機制思考-行動-觀察循環Agent 的運行方式是一個反復循環的過程Thought想清楚→ Action行動→ Observation看結果→ 再 Thought → 再 Action → ...直到 LLM 判斷任務完成為止這個循環才結束。用 Go 代碼表示這個循環funcRunAgent(taskstring)string{for{thought:llm.Think(task,context)// 思考下一步做什么ifthought.IsDone{// 判斷是否完成returnthought.FinalAnswer}result:callTool(thought.ToolName,thought.Args)// 執行工具調用context.AddObservation(thought.ToolName,result)// 記錄觀察結果}}關鍵點這個 for 循環會跑幾次開發者完全不知道也不需要知道。這正是 Agent 和普通代碼最不一樣的地方——普通代碼的每一步都是開發者預先寫好的但 Agent 的執行路徑是 LLM 實時決定的。3.3 關鍵特征主動決策Agent 自己決定執行路徑靈活性高能應對預料之外的復雜情況完成事先無法預測路徑的任務行為不確定同樣的任務今天跑和明天跑可能調了不同的工具、走了不同的路徑。這是因為 LLM 本質上是概率模型每次生成都帶有隨機性靈活性和不確定性是一對孿生兄弟。有 Agent 的靈活就必然伴隨著一定程度的不可預測。3.4 邊界與局限行為不可預測線上排查困難成本不可控LLM 調用輪次可能超出預期調試難度大執行路徑不確定無法打斷點逐步追蹤4. 第三層Workflow——確定性編排框架4.1 核心定義Workflow 把整個執行流程的骨架寫在代碼里LLM、Agent、Tools 都只是這個流程里的節點每個節點負責完成自己那一步。但整體走哪條路、下一步去哪里全由開發者的代碼決定不是任何節點自己說了算。4.2 技術特征一個客服系統的 Workflow 示例defcustomer_service(user_input):# 第一步意圖分類intentllm.classify(user_input)# 第二步根據意圖走不同分支ifintentrefund:order_infosearch_order(user_input)resultgenerate_refund_response(order_info)elifintentcomplaint:complaint_infoanalyze_complaint(user_input)resulttransfer_human_service(complaint_info)else:knowledgesearch_knowledge_base(user_input)resultllm.generate_answer(knowledge)returnresult關鍵點LLM 在這里出現了兩次一次是做意圖分類一次是生成回答但它只是流程里的兩個工位。接下來去哪這件事完全由 if/elif 這些普通代碼控制。開發者預先寫死執行路徑if/elif/else 控制流程高確定性代碼看到什么就做什么不會有驚喜易調試可以打斷點逐步追蹤精確定位是哪個節點出了故障4.3 與 Agent 的核心區別誰在做下一步去哪的決策維度AgentWorkflow決策者LLM 實時決定開發者代碼寫死行為不確定路徑動態變化確定完全可預測調試難執行路徑不確定易鏈路清晰可追蹤4.4 邊界與局限流程提前寫死難以動態調整無法窮舉所有情況遇到預料之外輸入容易失敗或給出很差結果5. 三者對比總結維度ToolsAgentWorkflow決策能力無只執行不決策有LLM 自主動態決策無開發者在代碼里寫死執行方式被動等待被調用主動自主循環直到完成按開發者定義的順序執行確定性高輸入固定則輸出固定低同輸入可能走不同路徑高行為完全可預測靈活性只做一件事高能應對預料之外的情況低流程提前寫死調試難度容易單一函數難執行路徑不確定容易鏈路清晰可逐步追蹤適用場景封裝單一具體能力路徑未知的復雜任務流程相對固定的業務系統6. Agentic Workflow生產環境的主流組合模式完全靠 Agent 自主決策的系統其實很少在生產環境出現原因行為太難控制一旦出問題很難排查成本也容易失控LLM 調太多輪。完全靠 Workflow 寫死的系統又太脆弱沒法把所有情況都窮舉到代碼里遇到預料之外的輸入就容易失敗。Agentic Workflow 的核心思想用 Workflow 固定主流程的骨架在需要靈活判斷的節點嵌入 Agent其余固定節點直接用 LLM 或 Tools。Workflow 骨架確定性 ├── 節點 1固定邏輯LLM 或 Tools ├── 節點 2Agent 子模塊自主決策靈活應對 │ ├── 子工具 A │ ├── 子工具 B │ └── 子工具 C ├── 節點 3固定邏輯LLM 或 Tools └── 節點 4結果聚合骨架是確定的讓你能控制整體行為、便于調試關鍵節點是靈活的讓你能應對各種復雜情況。兩個優點都有兩個缺點都被削弱了。7. 總結Tools、Workflow、Agent 不是三個并列的競爭方案而是不同粒度的三層結構在項目中通常同時存在、相互嵌套Tools 是手負責執行具體操作不做決策Agent 是大腦自主判斷用哪個工具、什么時候結束Workflow 是骨架由開發者預先編排好整體流程生產環境推薦采用 Agentic Workflow 組合模式用 Workflow 固定主流程在需要靈活性的節點嵌入 Agent實現可控與靈活的平衡。