上周五下午,组里一个平时挺上进的同事跑到我工位旁。
“老大,我那个 Agent 又抽风了。”他挠着头,“调了两天 prompt,换了三版工具定义,还是不行——该查 wiki 的时候去发邮件,该汇总的时候乱搜网页。”
我打开他提交的代码。LangChain 的 createAgent,工具注册、记忆接入,表面看着都没问题。
“跑的时候加 trace 了吗?”我指着终端输出,“你看这一步——模型返回的 tool_calls,下一轮 ReAct 循环里是怎么喂进去的?”
他愣了一下:“……不知道,框架自动处理的吧?”
“那如果模型返回的格式不规范,或者工具返回的结果太长被截断了,你的 Agent 会怎么处理?”
他沉默了两秒,声音小了半截:“还有这种情况?我以为框架都封装好了……”
我拍了拍他肩膀:“框架封装了细节,方便上手,但也埋了坑。今天正好把这块讲透——从底层原理到如何从0手搓一个AI Agent,你搞清楚了,以后就不慌了。”
读完这篇文章,你会得到:
- 底层原理:从 Function Calling → Few-shot/COT → ReAct → Harness Engineering,把 Agent 的认知闭环打通
- 核心组件:Tool & MCP 标准协议、记忆系统、RAG 检索增强,每个都能直接落地
- 实战项目:基于 LangChain 从零构建 Agent,再用 MateChat 快速搭建可视化Agent应用界面
- 前沿拓展:接入个人知识库、Agent Skills 技能系统、OpenCode 工程化实践
不管你是刚接触 Agent,还是像那位同事一样能跑但心里没底,这篇文章都能给你一条从原理到实践的完整路径。
👇 正文开始。
Agent入门基础
Agent是什么?
Anthropic:由大语言模型动态指导自身流程和工具使用情况的系统,它能自主控制完成任务的方式。
Google:AI Agent是是一种能够感知环境、进行决策和执行动作的智能实体。其表现出了推理、规划和记忆能力,并且具有一定的自主性,能够自主学习、适应和做出决定。
Agent 架构中有三个核心组件:模型(model)、工具(tool)、编排层(orchestration)
当然,现在AI圈子有一个更新的概念是 Agent = Model + Harness,该概念最早由LangChain 2026年3月10日在官方博客中提到。
这个公式可以用一个非常贴切的比喻来理解:
- 模型(Model) 是一台性能强悍的发动机,它提供了核心动力(智能)。
- 驾驭层(Harness) 则是底盘、方向盘、刹车、传动系统和车身。
Harness Engineering
Harness Engineering (驾驭工程) 是一套围绕 AI Agent 构建的约束、反馈与控制系统,让 Agent 在人类设定的边界内自主、可靠、可持续地工作——它不优化模型本身,而是优化模型运行的"环境"。
- Prompt Engineering(2023 - 2024)
- Context Engineering(2025)
- Harness Engineering(2026 - )
Function Calling
Function Call 通常指模型主动调用外部工具、API 或自定义函数来获取信息、执行操作或扩展自身能力。Function Call 是大模型从“纯文本生成器”迈向“智能行动者”的关键桥梁。它让 AI 不仅能“说”,还能“做”——通过安全、可控的方式与外部世界互动。
大模型在面对实时性问题、数学计算等问题时可能效果不佳。Function Call 通过引入外部工具,让大模型可以回答原本无法解决的问题。
Few-Shot & COT
这两个概念是大语言模型(LLM)提示工程(Prompt Engineering)中提升模型回答质量的核心技巧。简单来说,**Few-shot是通过“举例”告诉模型怎么做,而 CoT 是教模型“一步步思考”。
Few-Shot, 一种提示(prompting)策略,通过在输入中提供少量示例(通常为3–5个),引导 LLM 完成目标任务, 在 Agent 中的常作为基础提示技术,用于初始化或辅助其他更复杂的 Agent 框架。
COT ,一种提示技术,引导模型通过生成中间推理步骤来分解问题,促使其在最终答案前先列举思考过程,这种框架可以**增强模型解决复杂问题时的准确性**(幻觉问题)。
ReAct 架构
《ReAct: Synergizing Reasoning and Acting in Language Models》
在 ReAct 提出之前,AI 主要流行两种模式,但都有缺陷:
- 仅推理(如 Chain-of-Thought):擅长逻辑推理,但因为不查资料,容易一本正经地胡说八道(幻觉)。
- 仅行动(如早期的任务型对话系统):能调工具,但缺乏灵活的高层规划能力,遇到没预设好的情况就“傻眼”了。
ReAct 将两者结合,既能让 AI 像人一样思考(提高可解释性),又能让它 动手查资料(提高准确性和实时性)。这也成为了后来 LangChain、AutoGPT 等热门框架的底层理论基础。,最早于2022年10月由普林斯顿大学和谷歌研究(Google Research)提出。
- 核心思想:将 推理(Reasoning) 与 行动(Action) 交替进行,形成“思考-行动-观察”循环。 ReAct的巧妙之处在于,它认识到思考与行动是相辅相成的。思考指导行动,而行动的结果又反过来修正思考。为此,ReAct范式通过一种特殊的提示工程来引导模型,使其每一步的输出都遵循一个固定的轨迹:
- Thought (思考): 这是智能体的“内心独白”。它会分析当前情况、分解任务、制定下一步计划,或者反思上一步的结果。
- Action (行动): 这是智能体决定采取的具体动作,通常是调用一个外部工具,例如
Search['华为最新款手机']。 - Observation (观察): 这是执行
Action后从外部工具返回的结果,例如搜索结果的摘要或API的返回值。
ReAct Prompt模板
ReAct执行示例
LangChain ReAct Prompt: smith.langchain.com/hub/hwchase… Qwen ReAct Prompt: github.com/QwenLM/Qwen…
Answer the following questions as best you can. You have access to the following tools:
{tools}
Use the following format:
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
Begin!
Question: {input}
Thought:{agent_scratchpad}
Agent设计模式
核心交互模式
| 模式 | 核心思想 | 适用场景 |
|---|---|---|
| ReAct | 交替进行“推理-行动-观察”循环,每次决策都基于当前状态和环境反馈 | 通用型任务、需要工具调用的场景 |
| 思维链 (CoT) | 通过逐步推理生成中间步骤,增强复杂问题的推理能力 | 数学推理、逻辑分析、多步计算 |
| 反思 (Reflection) | Agent对自身输出进行自我批评和改进,生成更优版本 | 代码生成、内容创作、质量敏感任务 |
| 结构化响应 | 强制模型按预设格式(如JSON)输出,便于后续解析 | 工具调用、系统集成、确定性输出场景 |
规划与推理模式
| 模式 | 核心思想 | 特点 |
|---|---|---|
| Plan-and-Execute | 先规划完整计划,再逐步执行,执行后可根据结果调整 | 结构化、可追溯 |
| ReWOO | 一次性生成完整计划,中途不调整,执行后返回结果 | 减少LLM调用次数,成本更低 |
| LLM Compiler | 将任务构建为有向无环图(DAG),识别可并行执行的子任务 | 最大化并行度,降低延迟 |
| Tree of Thoughts | 将问题展开为多路径搜索树,探索多种思路 | 适合需要多角度探索的问题 |
| LATS | 结合蒙特卡洛树搜索,在复杂空间中进行规划 | 性能最优,但计算量大 |
| Self-Discover | Agent自动为任务设计推理策略,无需人工预设 | 通用性强,可迁移复用 |
工具系统 Tools & MCP
工具(tools)是模型与外部世界之间的桥梁,使得Agent可以访问并处理真实信息。
MCP全称模型上下文协议(Model Context Protocol),该协议旨在为大型语言模型和 AI 助手提供一个统一、标准化的接口,使 AI 模型能够轻松获取玩外部数据源或者操作外部工具并完成更复杂的任务。
mcp server 调试工具
npx -y @modelcontextprotocol/inspector <command> <args>
需要注意的是:Tools和MCP本质上都是通过Function Calling 触发的,在Thought时需要将完整信息传递给LLM,若tools过多,会导致占用过多的上下文,消耗Token。
一个好的Agent不需要过多的工具,Bash是最好的工具,Agent会自己编写code通过Bash执行。
Mcp Server开发实践:gitcode.com/liuguolin/w…
记忆系统
大语言模型本质上是一个“无状态”(Stateless)的函数,所有的“记忆”其实都是通过工程手段(外部存储和拼接)强行赋予它的。
记忆系统是负责为模型提供上下文信息的关键组件,直接影响推理(Thought)的质量与执行效果。它通常被称为上下文工程,核心目标是确保模型在每一步都能获得充分、准确且低干扰的信息。
在ReAct框架中,每一个 Thought 的质量,严重依赖于CoT,而CoT又严重依赖于记忆系统提供的信息是否充足、是否准确、是否干扰最小,也就是* 输入上下文 的信息质量。
在执行过程中,记忆系统负责为 Thought 构建上下文输入。
| 类型 | 说明 | 典型实现 |
|---|---|---|
| 短期记忆(Short-Term Memory) | 当前会话内的上下文,包括用户输入、模型回复、中间推理轨迹、工具调用结果等。 | 由编排层维护对话状态,直接拼接进 Prompt。 |
| 长期记忆(Long-Term Memory) | 跨会话的知识,如用户画像、历史记录、企业文档、领域知识库。 | 通过向量检索(RAG)、知识图谱或数据库查询,在运行时动态召回并注入上下文。 |
RAG
RAG(Retrieval Augmented Generation)即检索增强生成,一般用于 LLM 整合知识库,模糊搜索非结构化数据,找到相似的结构以后,再交给 LLM 去处理,这样会大大增加搜索结果的准确性。
这种技术通过从外部存储中检索相关信息、工具和示例来动态填充模型提示词。
工作原理:
- 文档加载:从本地文件或网页加载文档
- 文本分割:将文档分割为可管理的 chunks
- 向量存储:将 chunks 转换为向量并存储
- 检索:根据用户查询检索相关 chunks
- 生成:基于检索结果生成回复
Build a RAG agent with LangChain: docs.langchain.com/oss/python/…
Agent应用实践
基于 LangChain.js 构建AI智能体
LangChain 是开始构建完全定制的 LLM 驱动的应用程序的简单方式。只需不到 10 行代码,你就能连接到 OpenAI、Anthropic、Google 等 。LangChain 提供预构建的代理架构和模型集成,帮助您快速启动并无缝地将大型语言模型整合到您的代理和应用中。
// First install: npm install langchain @langchain/anthropic
import { z } from "zod";
import { createAgent, tool } from "langchain";
const getWeather = tool(
({ city }) => `It's always sunny in ${city}!`,
{
name: "get_weather",
description: "Get the weather for a given city",
schema: z.object({
city: z.string(),
}),
},
);
const agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools: [getWeather],
});
console.log(
await agent.invoke({
messages: [{ role: "user", content: "What's the weather in Tokyo?" }],
})
);
搭建完Agent后,我们可以基于readline创建一个简单CLI交互程序:
LangChain.js: docs.langchain.com/oss/javascr… 实践仓库:gitcode.com/liuguolin/w…
使用 MateChat 创建Agent应用界面
MateChat 是一套专为智能化场景打造的前端交互解决方案,提供开箱即用的对话组件与高度可定制的交互框架。无论是智能客服、AI 助手,还是多模态交互应用,MateChat 都能帮助开发者在极短时间内构建出体验流畅、风格统一、扩展性强的对话界面。
MateChat: matechat.gitcode.com/
我们可以通过 MateChat Cli 快速创建智能对话应用。
MateChat Web页面接入Agent的简单实践:gitcode.com/liuguolin/w…
在Agent中接入个人Agent
A2A
基于协议的协作架构, Agent2Agent (A2A) Protocol,是一种标准化的通信协议,旨在让不同来源、不同能力、甚至由不同开发者构建的智能体之间能够自主、安全、高效地交互与协作。该协议最初由谷歌(Google)于 2025 年 4 月发布。
核心特点:
- 对等通信:所有智能体地位平等,可主动发起请求或响应。
- 标准化接口:通常基于消息格式(如 JSON-RPC、OpenAPI)、语义协议(如 FIPA ACL)或新兴标准(如 A2A 协议草案)。
- 跨平台互操作性:支持不同框架(LangChain、AutoGen、CrewAI 等)的智能体互通。
- 动态发现与协商:智能体可动态发现其他可用智能体,并协商任务分配、权限、支付(如结合区块链)等。
核心设计思路:
- 用 Agent Card 声明能力
- 用Task 跟踪任务生命周期
- 用Message/Part/Artifact 承载交互内容
Agent Card 示例结构
{
"name": "财务数据采集智能体",
"version": "1.0.0",
"description": "负责从企业 ERP 系统中采集和结构化财务数据",
"url": "https://api.example.com/a2a/finance-collector",
"capabilities": [
"streaming:json",
"notification:webhook"
],
"skills": [
"采集企业 ERP 财务数据",
"结构化处理收支明细"
],
"inputSchema": {
"type": "object",
"properties": {
"timeRange": {"type": "string"},
"dataType": {"type": "string", "enum": ["收入", "支出"]}
},
"required": ["timeRange", "dataType"]
},
"auth": {
"type": "oauth2",
"tokenUrl": "https://auth.example.com/token"
}
}
Agents as Tools
分层编排架构,将其他智能体**封装为工具(Tool)**,由主智能体(Orchestrator)按需调用,类似于函数调用。这是当前主流框架(如 LangChain、LlamaIndex)中常见的模式。
核心特点:
- 主从架构:主智能体控制流程,子智能体作为“黑盒工具”被动执行。
- 单向调用:主智能体决定何时、如何调用子智能体,子智能体不主动发起交互。
- 工具化抽象:子智能体被注册为一个 Tool,具有明确输入/输出 schema。
- 低耦合但弱自治:子智能体失去自主决策权,仅作为功能模块。
eg. 将个人搭建的Agent作为一个mcp tools在IDE Agent中调用的示例:
基于OpenCode的AI工作流实践
当然,对于个人开发者而言,从零手搓一个 Agent 并非明智之举,更推荐直接使用 OpenCode,进行Agent在工程应用上的实践。OpenCode 是一款开源的 AI Coding Agent,内置免费模型,支持连接任意服务商提供的任意模型,配置灵活自由。目前该项目在 GitHub 上已累计获得超过 13.5 万颗星标。
npm install -g opencode-ai
安装完成后,终端输入 opencode 即可启动
Claude Code 核心原理:github.com/ultraworker… 学习Claude Code的提示词技术:gitcode.com/liuguolin/c…
用 JS 接 OpenCode,把 AI 工作流跑成自动化任务。你下班,它干活,24 小时不停。
js接入opencode实现程序自动化AI工作流实践:gitcode.com/liuguolin/w…
Agent Skills 「技能」
Agent Skill 是 于 2025 年确立的开放式 AI 代理构建标准,其本质是将复杂的 Prompt 工程、外部知识库(Reference)与执行逻辑(Script)封装为标准化的本地文件结构(如 SKILL.md)。
简单来说就是:给模型的一份可复用「操作说明书 + 流程模板」, 解决专业场景问题。
渐进式披露机制
确保任何给定时间只有相关内容占据上下文窗口
| 级别 | 加载时间 | 内容 |
|---|---|---|
| 1级:元数据 | 始终(启动时) | 用于判断哪个技能与当前任务相关 |
| 2级:指令 | 触发 Skill 时 | 当 Agent 确定需要某个技能时,才会读取该技能的详细指令 |
| 3级+:资源 | 按需 | 只有在执行过程中确实需要时,才会加载脚本或参考文档等资源。 |
Skills市场:
最后聊 Agent Skills。把它放在最后,不是因为不重要——恰恰相反,它把前面所有概念串起来了,而且是我们团队在企业生产环境中真正拿来提效落地的最佳实践!
接下来我们会持续发布更多关于 Agent 的企业级落地实践, 欢迎关注😀!
感谢贡献者 @liuguolin 提供的优质好文!
参考资料
- AI Agent 白皮书(中文翻译) —— 原 Google Agent 白皮
- Hello Agents 开源项目
- LangChain 官方文档(JavaScript/TypeScript)
- LangChain 提示词社区
- Skills 技能社区
- RAG(检索增强生成)概述 - AWS
- Agent Harness 架构解析 - LangChain 博客
- MateChat 组件库
- ReAct: Synergizing Reasoning and Acting in Language Models(论文)
- Qwen ReAct 示例
- 《5小时整理60页《Google Agent指南》,不懂Agent的包教包会》
- Function Calling 说明 - 阿里云 Model Studio
- Mcp protocol
- A2A 协议
- WorkerAgent 实践仓库