
一文搞懂 AI Agent 核心支柱從 Tools 到 MCP從 Skills 到 Loop摘要2025 年是 AI Agent 的爆發(fā)年但很多開發(fā)者分不清 Function Call、MCP、Skills 和 Loop 的區(qū)別。本文將從“手”、“接口”、“手藝”和“大腦運行”四個維度結(jié)合 Python 代碼與實踐架構(gòu)徹底拆解這四大核心概念并手把手教你如何將它們串聯(lián)成一個可用的 Agent 系統(tǒng)。前言為什么你的 AI 總在“一本正經(jīng)地胡說八道”傳統(tǒng)的 LLM大語言模型像是一個博學(xué)的“植物人”——腦子里有無窮知識但無法觸碰現(xiàn)實世界。它不會查實時天氣不會操作數(shù)據(jù)庫更不會自己寫代碼并運行。為了讓 AI “活” 過來業(yè)界在短短兩年內(nèi)構(gòu)建了一套完整的技術(shù)棧。這套技術(shù)棧的四個基石就是Tools工具、MCP協(xié)議、Skills技能和Loop循環(huán)。很多新手容易把它們混為一談其實它們的職責(zé)邊界非常清晰Tools解決“能干啥”原子能力MCP解決“怎么接進(jìn)來”統(tǒng)一接口Skills解決“怎么干好”流程編排Loop解決“怎么干完”自主迭代下面我們逐一深入。一、Tools工具LLM 的“手腳”——最底層的原子能力1.1 什么是 Tools在 OpenAI 提出 Function Calling 之前想讓 LLM 調(diào)用外部函數(shù)你得用繁瑣的提示詞工程如 ReAct 風(fēng)格的文本解析。現(xiàn)在Tools通過標(biāo)準(zhǔn)的 JSON Schema 描述函數(shù)簽名讓 LLM 能夠“感知”外部世界。說白了Tools 就是一個個封裝好的函數(shù)Function比如get_weather(city)、search_web(query)、execute_python(code)。1.2 代碼實戰(zhàn)標(biāo)準(zhǔn) Tools 定義Python在最新的 OpenAI SDK 或 LangChain 中Tool 的定義長這樣fromtypingimportLiteralfrompydanticimportBaseModel# 1. 定義輸入?yún)?shù)的 SchemaclassWeatherInput(BaseModel):city:strunit:Literal[celsius,fahrenheit]celsius# 2. 定義工具的具體執(zhí)行邏輯defget_weather(params:WeatherInput)-str:# 模擬真實 API 調(diào)用returnf{params.city}當(dāng)前氣溫 22°天氣晴朗。# 3. 生成 Tool 描述傳給 LLM 的 JSONtool_definition{type:function,function:{name:get_weather,description:獲取指定城市的實時天氣信息,parameters:WeatherInput.model_json_schema(),}}關(guān)鍵點Tools 必須是**無狀態(tài)Stateless且原子性Atomic**的一個 Tool 只專注做一件事。二、MCP模型上下文協(xié)議AI 界的“USB-C 萬能接口”2.1 Tools 的痛點碎片化嚴(yán)重假設(shè)你給 ChatGPT 寫了一套基于openai格式的 Tools想遷移到 Claude 或本地開源的 Llama 上發(fā)現(xiàn)它們的 Tool Calling 格式完全不同有的要求 XML有的要求特定 JSON。每接一個新模型就要重寫所有工具適配層——極其痛苦。2.2 MCP 的誕生MCPModel Context Protocol由 Anthropic 在 2024 年底開源。它定義了一套標(biāo)準(zhǔn)化的 Client-Server 架構(gòu)MCP Server暴露工具、資源Resource和提示詞Prompt比如一個“本地文件系統(tǒng) Server”或“GitHub Server”。MCP ClientAI 應(yīng)用如 Claude Desktop、Cursor、VS Code 插件。只要 Client 和 Server 都遵循 MCP 協(xié)議基于 JSON-RPC 2.0AI 就能動態(tài)發(fā)現(xiàn)并即插即用所有工具。2.3 MCP 通信流程精簡版// Client 發(fā)送初始化請求發(fā)現(xiàn)可用工具{jsonrpc:2.0,id:1,method:tools/list,params:{}}// Server 返回可用工具列表{jsonrpc:2.0,id:1,result:{tools:[{name:read_file,description:讀取本地文件,inputSchema:{type:object,properties:{path:{type:string}}}}]}}CSDN 劃重點MCP 讓 AI 應(yīng)用從“單機(jī)寫死工具”進(jìn)化到了“動態(tài)插拔生態(tài)”。未來MCP Server 會像 npm 包一樣豐富開發(fā)者只需要維護(hù)一個 MCP Client就能調(diào)用全世界的工具生態(tài)。三、Skills技能把“工具”變成“手藝”有了 Tools錘子、釘子和 MCP能夠到任何工具箱AI 就能干好活了嗎不能。因為干好一項復(fù)雜任務(wù)需要的是流程而不是孤立的 API。3.1 Tools vs SkillsTools“打開文件”、“寫入代碼”、“執(zhí)行終端命令”。Skills“創(chuàng)建一個 Spring Boot 博客系統(tǒng)” —— 它內(nèi)部封裝了檢查環(huán)境 - 創(chuàng)建項目結(jié)構(gòu) - 寫入依賴文件 - 生成 Entity/Controller - 編譯運行 - 若報錯則修復(fù)這一整套工作流。3.2 Skills 的核心特征漸進(jìn)式披露Progressive DisclosureSkills 和 Tools 最大的工程區(qū)別在于上下文占用。Tools 的定義必須始終塞進(jìn) System Prompt占滿上下文窗口Context Window。Skills 采用按需加載。系統(tǒng)先給 LLM 一個極簡的 Skill 列表只包含名稱和一句話描述。當(dāng) LLM 決定調(diào)用某個 Skill 時系統(tǒng)才把該 Skill 的詳細(xì)指令Prompt和依賴的子工具注入上下文。Skills 文件結(jié)構(gòu)示例參考開源項目 anthropic/skillsmy-blog-generator/ ├── SKILL.md # 主指令定義角色、流程、約束條件 ├── scripts/ # 關(guān)聯(lián)的 Python/Shell 腳本 ├── references/ # 參考文檔如 API 文檔、架構(gòu)圖 └── assets/ # 模板文件如 HTML 模板四、Loop反饋循環(huán)Agent 的“永動機(jī)”LLM 是一次性推理InferenceAgent 是循環(huán)推理Iterative Reasoning。Loop 就是 Agent 的靈魂。它模擬了人類的思考模式思考Think→ 行動Act→ 觀察Observe→ 再思考Re-think。這就是著名的ReActReason Act范式。4.1 一個極簡的 Agent Loop 核心代碼importjsonfromtypingimportList,DictclassSimpleAgent:def__init__(self,llm,tools:List[Dict]):self.llmllm self.toolstools self.messages[]self.max_iterations10defrun(self,user_goal:str):self.messages.append({role:user,content:user_goal})forstepinrange(self.max_iterations):# 1. 思考調(diào)用 LLM 獲取下一步動作responseself.llm.chat(messagesself.messages,toolsself.tools,# 傳入可用工具tool_choiceauto)# 2. 判斷LLM 是否想調(diào)用工具ifresponse.tool_calls:fortool_callinresponse.tool_calls:# 3. 行動執(zhí)行工具tool_nametool_call.function.name tool_argsjson.loads(tool_call.function.arguments)resultself._execute_tool(tool_name,tool_args)# 4. 觀察將結(jié)果喂回給 LLMself.messages.append({role:tool,tool_call_id:tool_call.id,content:result})print(f[Step{step}] 調(diào)用{tool_name}返回:{result[:50]}...)else:# 如果沒有工具調(diào)用說明任務(wù)完成返回最終答案returnresponse.contentreturn達(dá)到最大迭代次數(shù)任務(wù)終止。4.2 工業(yè)級 Loop 的“六塊積木”一個能上生產(chǎn)環(huán)境的 Loop遠(yuǎn)不止上面幾行代碼。它需要Automations觸發(fā)器支持定時或 Webhook 自動喚醒 Loop。Worktrees隔離環(huán)境每一次新任務(wù)運行在獨立的 Git Worktree 或 Docker 容器中互不污染。Sub-agents多智能體協(xié)作分解任務(wù)比如“代碼編寫員”負(fù)責(zé)寫代碼“代碼審查員”負(fù)責(zé)挑錯由主 Loop 協(xié)調(diào)。Memory記憶系統(tǒng)使用向量數(shù)據(jù)庫如 Milvus或 Redis將長期記憶存儲在模型外部支持跨會話回憶。五、一圖流四大概念的協(xié)作關(guān)系CSDN 讀者最愛為了方便大家記憶我將它們整理為一張邏輯拓?fù)鋱D文字版用戶輸入“幫我部署一個個人網(wǎng)站” │ ▼ ┌───────────────────────────────────────┐ │ Agent Core (大腦運行機(jī)制 - Loop) │ ← 在這里進(jìn)行 Plan→Execute→Observe └───────────────────────────────────────┘ │ 拆解任務(wù) ▼ ┌───────────────────────────────────────┐ │ 技能層 (Skills - 流程封裝) │ │ “部署網(wǎng)站 Skill” │ ← 漸進(jìn)式加載節(jié)省 Token └───────────────────────────────────────┘ │ 調(diào)用底層基礎(chǔ)能力 ▼ ┌───────────────────────────────────────┐ │ 協(xié)議層 (MCP - 統(tǒng)一接口) │ ← USB-C 接口連接萬物的橋梁 └───────────────────────────────────────┘ │ │ │ │ ▼ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ 文件工具 │ │ 終端工具 │ │ 云端API │ ← 原子能力 (Tools) └──────────┘ └──────────┘ └──────────┘六、總結(jié)與最佳實踐建議干貨如果你是初學(xué)者請按以下順序?qū)W習(xí)先死磕Tools熟練使用 OpenAI / DashScope 的 Function Calling這是地基。再理解MCP試著跑通 Claude Desktop 的本地 MCP Server比如 Filesystem感受“即插即用”的魅力。接著模仿Loop自己用 Python 寫一個 50 行的while循環(huán) ReAct Agent你會有茅塞頓開的感覺。最后封裝Skills把你經(jīng)常做的一套流程比如“周報生成器”、“代碼單元測試生成器”封裝成 Skill 目錄結(jié)構(gòu)沉淀為自己的數(shù)字資產(chǎn)。最后一句忠告不要把所有的邏輯都塞進(jìn) System Prompt善用 Tools 抽離計算邏輯善用 MCP 解耦外部依賴善用 Skills 管理復(fù)雜流程善用 Loop 處理不確定性。這四者配合才是未來 AI 應(yīng)用開發(fā)的正確范式。 歡迎在評論區(qū)留言討論你在接入 MCP 或封裝 Skills 時遇到的坑如果本文對你有幫助請點贊收藏后續(xù)我會出一期《手寫一個支持 MCP 協(xié)議的輕量級 Agent 框架》