AI Agent 开发的本质
开发 AI Agent 的核心是将已验证的知识和流程固化成可执行的规则和指令。
具体来说:
- 知识固化 - 把专家经验、最佳实践、业务规则编码成 Agent 可以遵循的指令
- 流程自动化 - 将重复性的决策流程转化为确定性的执行步骤
- 质量保障 - 通过固化的规则确保每次执行的一致性,避免人为疏忽
- 迭代优化 - 每次发现新问题或更好的做法,就更新这些"固化的知识",Agent 的能力随之提升
本质上是把隐性知识显性化,把经验驱动变成规则驱动。
这也意味着 Agent 的质量上限取决于你固化进去的知识质量。垃圾进,垃圾出;好的经验进,稳定的高质量输出。
为什么需要固化知识
LLM 的知识覆盖面极广,解决同一个问题可能有多条路径,但其中只有少部分是最佳实践。具体输出什么内容,很大程度上取决于提示词的质量。
把已验证的解决方案固化到 Agent 里,能让 Agent 在特定领域有更稳定、更优质的表现——相当于给 LLM 划定了一条"黄金路径",避免它在众多可能性中随机游走。
常用技术栈
- 编程语言
- Python(主流,生态丰富)
- JavaScript/TypeScript(Web/Node.js Agent)
- Go、Java(高性能/企业级)
- 大语言模型与 API
- OpenAI GPT-4/3.5、Claude、Llama
- Hugging Face Transformers
- LangChain、LlamaIndex(Agent 框架)
- Web 框架与服务
- FastAPI、Flask(Python)
- Express.js(Node.js)
- Django
- 数据存储
- Redis、MongoDB、PostgreSQL、SQLite
- 向量数据库:Milvus、Pinecone、Weaviate
- 消息队列与异步任务
- Celery、RabbitMQ、Kafka
- 容器与部署
- Docker、Kubernetes
- 云服务:AWS、Azure、GCP
- 前端交互
- React、Vue.js
- WebSocket、RESTful API
- 其他
- Prompt 工程、工具插件系统
- OAuth2、JWT(安全认证)
- 日志与监控:Prometheus、Grafana
Python 调用模型方式
AI Agent 用 Python 开发时,可以调用本地模型或云端模型:
- 本地模型:如 Llama、GPT、transformers,可用 Hugging Face Transformers、llama.cpp 等库加载。
- 云端模型:如 OpenAI、Azure、百度文心、阿里通义,通过 HTTP API 或官方 SDK 远程调用。
选择本地或云端,取决于算力、数据安全、成本和功能需求。两者都支持 Python 调用,代码实现也很方便。
AI Agent 外层代码与模型调用说明
AI Agent 通常用一种编程语言(如 Python、JavaScript、Go 等)编写外层逻辑代码,负责任务编排、数据处理、接口交互等。 最终核心智能部分是通过调用大语言模型(本地或云端)来实现推理、生成、理解等能力。
外层代码负责"连接"和"控制",模型负责"智能"。两者结合,才能实现完整的 AI Agent。
A2A 协议(Agent-to-Agent Protocol)
A2A 协议是一种用于实现 AI Agent 之间通信和协作的标准化协议。它定义了不同 Agent 系统之间如何交换信息、协调任务和共享资源。
核心特性
- 标准化通信:定义统一的消息格式和交互规范,使不同平台、不同语言开发的 Agent 能够互相通信
- 任务协调:支持 Agent 之间的任务分配、委托和结果汇总
- 能力发现:Agent 可以查询和发现其他 Agent 的能力和服务
- 安全认证:提供身份验证和授权机制,确保通信安全
主要应用场景
- 多 Agent 协作:多个专业 Agent 协同完成复杂任务
- Agent 编排:构建 Agent 工作流,实现任务的自动化分发和执行
- 跨平台集成:连接不同厂商、不同技术栈的 Agent 系统
- 分布式智能:在分布式环境中实现 Agent 的协同决策
相关技术标准
- MCP (Model Context Protocol):用于 Agent 与工具/数据源的连接
- OpenAI Agents API:OpenAI 提供的 Agent 通信接口
- LangGraph:支持多 Agent 协作的编排框架
A2A 协议使得构建大规模、可扩展的多 Agent 系统成为可能,是 AI Agent 生态系统中的重要基础设施。
专题文章
本文是 AI Agent 开发的总览。细节按主题拆到下列文章:
| 主题 | 文章 |
|---|---|
| Token 分层路由(本地匹配 / 缓存 / 模型) | Agent Token Routing |
| VSCode 扩展桥接 Copilot 模型 | VSCode Copilot Model Bridge |
| 意图识别与槽位填充 | Intent Recognition and Slot Filling |
| Function Calling | Function Calling |
| ReAct 与其它工具调用方式 | Tool Calling Patterns |
| 思维链 CoT | Chain of Thought (CoT) |
| 输出约束 | Output Constraint |
| LangChain | LangChain |
| LlamaIndex | LlamaIndex |
相关概念总览另见 AI Agent;实践 tip 见 AI Agent Tips。
术语与缩写对照表
核心概念
| 术语/缩写 | 全称 | 中文释义 | 说明 |
|---|---|---|---|
| AI Agent | Artificial Intelligence Agent | 人工智能代理 | 能够感知环境、做出决策并执行动作的智能系统 |
| LLM | Large Language Model | 大语言模型 | 在海量文本数据上训练的深度学习模型,如 GPT、Claude |
| NLU | Natural Language Understanding | 自然语言理解 | 使计算机理解人类语言含义、意图和上下文的技术 |
| NLP | Natural Language Processing | 自然语言处理 | 处理和分析人类语言的计算机技术领域 |
协议与标准
| 术语/缩写 | 全称 | 中文释义 | 说明 |
|---|---|---|---|
| A2A | Agent-to-Agent Protocol | 代理间通信协议 | AI Agent 之间通信和协作的标准化协议 |
| MCP | Model Context Protocol | 模型上下文协议 | Agent 与工具/数据源连接的标准协议 |
| LSP | Language Server Protocol | 语言服务器协议 | 编辑器与语言服务器之间的通信协议 |
| JSON-RPC | JSON Remote Procedure Call | JSON 远程过程调用 | 基于 JSON 的远程过程调用协议 |
AI Agent 技术
| 术语/缩写 | 全称 | 中文释义 | 说明 |
|---|---|---|---|
| RAG | Retrieval-Augmented Generation | 检索增强生成 | 结合检索和生成的 AI 技术,提高答案准确性 |
| Function Calling | - | 函数调用 | LLM 识别意图并调用外部函数/工具的能力 |
| Tool Use | - | 工具使用 | Agent 调用外部工具完成特定任务的能力 |
| Slot Filling | - | 槽位填充 | 从用户输入中提取特定参数的过程 |
| Intent Recognition | - | 意图识别 | 识别用户输入意图并分类的过程 |
开发框架与工具
| 术语/缩写 | 全称 | 中文释义 | 说明 |
|---|---|---|---|
| SDK | Software Development Kit | 软件开发工具包 | 用于开发特定软件的工具集合 |
| API | Application Programming Interface | 应用程序接口 | 不同软件组件之间交互的接口 |
| WebSocket | - | 网络套接字 | 支持双向实时通信的网络协议 |
| SSE | Server-Sent Events | 服务器推送事件 | 服务器向客户端推送数据的技术 |
| REST | Representational State Transfer | 表述性状态转移 | 一种 Web 服务架构风格 |
认证与安全
| 术语/缩写 | 全称 | 中文释义 | 说明 |
|---|---|---|---|
| OAuth2 | Open Authorization 2.0 | 开放授权 2.0 | 开放的授权标准,允许第三方应用访问资源 |
| JWT | JSON Web Token | JSON Web 令牌 | 用于身份验证和信息交换的开放标准 |
| API Key | - | API 密钥 | 用于验证 API 调用者身份的密钥 |
数据与存储
| 术语/缩写 | 全称 | 中文释义 | 说明 |
|---|---|---|---|
| Vector DB | Vector Database | 向量数据库 | 专门存储和检索向量嵌入的数据库 |
| Embedding | - | 嵌入/向量化 | 将文本转换为数值向量的过程 |
| NoSQL | Not Only SQL | 非关系型数据库 | 非传统关系型数据库的统称 |
部署与运维
| 术语/缩写 | 全称 | 中文释义 | 说明 |
|---|---|---|---|
| CI/CD | Continuous Integration/Continuous Deployment | 持续集成/持续部署 | 自动化软件开发和部署流程 |
| K8s | Kubernetes | - | 容器编排平台(8 代表中间省略的 8 个字母) |
| Container | - | 容器 | 轻量级、可移植的软件运行环境 |
常见场景术语
| 术语 | 中文释义 | 说明 |
|---|---|---|
| Prompt Engineering | 提示词工程 | 设计和优化 LLM 输入提示的技术 |
| Context Window | 上下文窗口 | LLM 能够处理的最大输入文本长度 |
| Token | 词元/标记 | LLM 处理文本的基本单位 |
| Temperature | 温度参数 | 控制 LLM 输出随机性的参数 |
| Streaming | 流式输出 | 逐步返回结果而非一次性返回 |
| Multi-turn Conversation | 多轮对话 | 支持上下文连续的对话交互 |
AI Agent 的上下文丢失问题
AI Agent 在工作过程中确实存在**上下文丢失(Context Loss)**的问题,这是当前 Agent 系统的核心挑战之一。
问题来源
1. 上下文窗口有限
LLM 的上下文窗口(Context Window)有上限(如 Claude 约 200K tokens、GPT-4 约 128K tokens)。当任务执行时间长、对话轮数多,较早的信息会被截断丢弃。
2. 长任务执行中的信息衰减
Agent 执行多步骤任务时,早期的决策依据、工具返回结果、用户原始意图可能随着上下文滚动被挤出,导致后续步骤「忘记」前提条件。
3. 多 Agent 协作中的信息传递损耗
在 A2A 场景下,Agent 之间传递信息时往往只传摘要或部分结果,细节会丢失。
4. 模型本身的注意力衰减
即使信息仍在上下文窗口内,LLM 对较远位置的内容注意力权重也会降低,导致「虽然没丢但实际上忽略了」的情况。
常见应对策略
| 策略 | 说明 |
|---|---|
| Memory 系统 | 显式维护短期/长期记忆,将重要信息存到外部存储(如文件、数据库) |
| RAG(检索增强) | 按需从向量数据库检索相关历史,而非全量塞入上下文 |
| 上下文压缩/摘要 | 定期将旧上下文摘要化,保留关键信息 |
| 状态外化 | 将任务状态、中间结果写入文件或数据库,不依赖上下文传递 |
| Checkpoint | 长任务分阶段保存进度,失败可从断点恢复 |
| 结构化指令 | 用强格式(JSON/YAML)规范输出,减少歧义和遗漏 |
实际影响与实践建议
这个问题在实践中非常普遍,尤其是以下场景:
- 大型代码库重构:跨文件的修改依赖早期分析结论
- 长文档处理:文档前后的信息需要关联理解
- 多步骤工作流:后续步骤依赖前序步骤的上下文
实践建议:
- 显式记录关键决策:将重要的中间结论写入文件,不依赖模型记住
- 任务粒度拆分:将复杂任务拆成小任务,每个任务都携带必要的上下文
- 规则文件外置:把知识和约束写成
AGENTS.md、SKILL.md等文件,每次任务都注入 - 使用 Memory 工具:利用
/memories/等持久化存储跨会话记忆关键信息
这也是为什么优秀的 Agent 工作流需要显式的规则文件和 Memory 系统——把关键知识「外置」,而不是依赖模型的上下文窗口记忆。
维护记录
| 时间 | 修改内容 | 原因 |
|---|---|---|
| 2026-07-23 | 拆分为 hub + 多篇专题;删除重复技术栈草稿段;增加专题索引 | 原文过长、多主题混杂,便于独立检索与维护 |