从 ChatGPT 到 Agent:AI 自主决策系统的架构演进与实践

3 阅读7分钟

从 ChatGPT 到 Agent:AI 自主决策系统的架构演进与实践

从"一问一答"到"自主执行",AI 正在经历从工具到伙伴的质变。

引言

2022 年底 ChatGPT 的横空出世,让大语言模型(LLM)走进了大众视野。人们惊叹于它的对话能力,却也很快发现了局限:它只能"说",不能"做"。

想要查天气?它告诉你方法,但不会真的去查。想要整理文件?它给出建议,但不会动手整理。

**Agent(智能体)**的出现,正是为了解决这个"最后一公里"的问题。它让 AI 从"对话者"变成了"执行者",从"顾问"变成了"助手"。

本文将带你回顾从 ChatGPT 到 Agent 的技术演进,深入解析 Agent 的核心架构,并分享实际项目中的实践经验。


一、技术演进:从 LLM 到 Agent

1.1 第一阶段:纯对话式 AI(ChatGPT 早期)

早期的 ChatGPT 本质上是一个文本生成模型。它的工作模式很简单:

用户输入 → 模型推理 → 文本输出

这种模式的优势是通用性强,几乎什么话题都能聊。但致命缺陷也很明显:

  • 知识截止:无法获取实时信息
  • 无法行动:只能给建议,不能执行
  • 无记忆能力:每次对话都是独立的

1.2 第二阶段:工具增强(Function Calling)

2023 年中,OpenAI 推出了 Function Calling 功能,这是一个重要的转折点。

# Function Calling 的基本模式
def get_weather(location: str):
    """获取指定城市的天气"""
    # 调用天气 API
    return {"temperature": 25, "condition": "sunny"}

# 模型可以决定何时调用这个函数
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "北京今天天气怎么样?"}],
    functions=[{
        "name": "get_weather",
        "description": "获取天气信息",
        "parameters": {...}
    }]
)

Function Calling 让模型具备了"使用工具"的能力,但它仍然是被动的——需要用户明确指示,模型才会调用工具。

1.3 第三阶段:自主 Agent(ReAct 范式)

真正的突破来自于 ReAct(Reasoning + Acting) 范式。Agent 不再等待用户指令,而是能够:

  1. 自主规划:将复杂任务拆解为子任务
  2. 自主决策:判断何时使用工具、使用什么工具
  3. 自主执行:调用工具并处理结果
  4. 自主反思:根据执行结果调整策略
┌─────────────────────────────────────┐
│            Agent 循环                │
├─────────────────────────────────────┤
│  1. 感知(Perception)               │
│     └─> 理解用户意图 + 环境状态       │
│                                     │
│  2. 推理(Reasoning)                │
│     └─> 制定计划 + 决策下一步行动     │
│                                     │
│  3. 行动(Action)                   │
│     └─> 调用工具 + 与环境交互         │
│                                     │
│  4. 记忆(Memory)                   │
│     └─> 存储经验 + 学习优化          │
└─────────────────────────────────────┘

二、Agent 核心架构解析

2.1 感知层:理解世界

感知层负责接收输入并理解上下文。这不仅包括用户的自然语言指令,还包括:

  • 环境感知:当前系统状态、文件目录、网络状况
  • 历史感知:之前的对话记录、执行历史
  • 多模态感知:图片、音频、视频等非文本信息
class PerceptionModule:
    def __init__(self):
        self.context_window = []
        self.environment_state = {}
    
    def perceive(self, user_input, env_snapshot=None):
        """综合感知用户意图和环境状态"""
        intent = self.llm.parse_intent(user_input)
        context = self.retrieve_relevant_memory(intent)
        return {
            "intent": intent,
            "context": context,
            "environment": env_snapshot
        }

2.2 推理层:决策大脑

推理层是 Agent 的"大脑",负责:

  • 任务规划:将复杂任务拆解为可执行的步骤
  • 工具选择:决定使用哪些工具、调用顺序
  • 异常处理:当执行出错时调整策略

主流方案对比:

方案特点适用场景
CoT (Chain of Thought)逐步推理,显式思考过程逻辑推理任务
ReAct推理与行动交替进行工具调用场景
Plan-and-Solve先规划再执行复杂多步任务
Reflection执行后自我反思优化需要迭代的任务

2.3 行动层:执行工具

行动层负责与外部世界交互。一个成熟的 Agent 通常需要集成多种工具:

# 典型 Agent 工具集
tools:
  - name: file_system      # 文件操作
    capabilities: [read, write, list, search]
  
  - name: web_search       # 网络搜索
    provider: [bing, google, brave]
  
  - name: code_executor    # 代码执行
    sandbox: docker
    languages: [python, bash, javascript]
  
  - name: database         # 数据库操作
    supported: [mysql, postgres, mongodb]
  
  - name: api_client       # API 调用
    auth: [oauth, api_key, bearer]

2.4 记忆层:经验积累

记忆是 Agent 从"单次执行"进化到"持续学习"的关键。通常分为三层:

┌────────────────────────────────────────┐
│  短期记忆(Short-term Memory)          │
│  └─> 当前对话上下文,随会话结束清空      │
├────────────────────────────────────────┤
│  工作记忆(Working Memory)             │
│  └─> 任务执行中的中间状态,跨会话保留    │
├────────────────────────────────────────┤
│  长期记忆(Long-term Memory)           │
│  └─> 用户偏好、成功经验、失败教训        │
│     存储形式:向量数据库 + 结构化知识库   │
└────────────────────────────────────────┘

三、主流框架对比

3.1 LangChain

定位:LLM 应用开发框架

特点

  • 生态最完善,工具链丰富
  • 抽象层次高,上手快
  • 社区活跃,文档齐全

缺点:过度封装,灵活性受限

3.2 AutoGPT

定位:全自动 Agent

特点

  • 目标驱动,完全自主
  • 可以持续运行,自我迭代
  • 适合探索性任务

缺点:容易陷入循环,成本高

3.3 OpenClaw

定位:个人 AI 助手平台

特点

  • 心跳机制,主动但不打扰
  • 分层记忆系统
  • 丰富的 Skill 生态
  • 支持多平台消息接入

适用:个人效率提升、日常任务自动化

3.4 框架选型建议

场景推荐框架
快速原型验证LangChain
全自动任务执行AutoGPT
个人日常助手OpenClaw
企业级应用自研 + 借鉴各框架优点

四、实践案例:智能开发助手

下面分享一个我们实际落地的 Agent 架构——智能开发助手

4.1 需求场景

开发者需要:

  1. 理解项目结构和代码逻辑
  2. 根据需求生成/修改代码
  3. 自动测试和调试
  4. 提交代码并创建 PR

4.2 架构设计

用户指令
    │
    ▼
┌──────────────────────────────────────┐
│         Intent Parser                │
│  识别意图:代码生成/重构/测试/提交     │
└──────────────────────────────────────┘
    │
    ▼
┌──────────────────────────────────────┐
│         Task Planner                 │
│  生成执行计划,拆解为子任务            │
└──────────────────────────────────────┘
    │
    ▼
┌──────────────────────────────────────┐
│         Tool Executor                │
│  ├─> 代码搜索(grep/ast)             │
│  ├─> 代码生成(LLM + 模板)            │
│  ├─> 测试运行(pytest/jest)           │
│  └─> Git 操作(commit/push/PR)        │
└──────────────────────────────────────┘
    │
    ▼
┌──────────────────────────────────────┐
│         Result Analyzer              │
│  分析执行结果,决定继续或返回给用户    │
└──────────────────────────────────────┘

4.3 关键实现细节

代码上下文获取

async def get_code_context(query: str, project_path: str):
    """智能获取相关代码上下文"""
    # 1. 使用 AST 分析项目结构
    structure = await analyze_project_structure(project_path)
    
    # 2. 语义搜索相关文件
    relevant_files = await semantic_search(
        query=query,
        codebase_index=vector_db,
        top_k=5
    )
    
    # 3. 构建上下文(控制在 token 限制内)
    context = build_context_window(
        files=relevant_files,
        max_tokens=8000,
        priority_rules=[
            "include_imports",
            "include_function_signatures", 
            "summarize_implementations"
        ]
    )
    return context

自适应重试机制

class AdaptiveExecutor:
    async def execute_with_retry(self, task, max_attempts=3):
        for attempt in range(max_attempts):
            try:
                result = await task.execute()
                if result.success:
                    return result
                    
                # 失败时分析原因并调整策略
                analysis = await self.analyze_failure(result.error)
                task = await self.adjust_strategy(task, analysis)
                
            except Exception as e:
                if attempt == max_attempts - 1:
                    raise
                    
        return ExecutionResult(success=False, error="Max retries exceeded")

五、2025 年 Agent 技术趋势

5.1 多 Agent 协作系统

单个 Agent 的能力有限,未来的趋势是多 Agent 协作

  • 规划 Agent:负责拆解任务
  • 执行 Agent:负责具体操作
  • 验证 Agent:负责检查结果
  • 学习 Agent:负责总结经验

5.2 边缘化部署

随着模型小型化和硬件性能提升,Agent 将更多运行在本地:

  • 隐私保护更好
  • 响应速度更快
  • 成本更低

5.3 具身智能(Embodied AI)

Agent 不再局限于数字世界,开始与物理世界交互:

  • 机器人控制
  • 智能家居
  • 自动驾驶

5.4 自我进化能力

下一代 Agent 将具备真正的自我进化能力:

  • 自动发现新工具
  • 自主学习新技能
  • 自我优化策略

六、总结与建议

从 ChatGPT 到 Agent,AI 正在经历从"能说"到"能做"的质变。对于开发者来说,现在正是入场的好时机。

给初学者的建议

  1. 从具体场景入手:不要试图做一个"万能 Agent",先解决一个具体问题
  2. 重视工程能力:Agent 的核心挑战在于工程化,而非算法
  3. 关注用户体验:Agent 的"自主性"是一把双刃剑,要把握好主动与打扰的边界
  4. 建立反馈循环:设计好观察-执行-反馈的闭环,让 Agent 越用越聪明

推荐阅读

  • 《ReAct: Synergizing Reasoning and Acting in Language Models》
  • 《Generative Agents: Interactive Simulacra of Human Behavior》
  • OpenClaw 官方文档:心跳机制与分层记忆设计

💡 思考题:你认为 Agent 的终极形态是什么?是完全自主的数字员工,还是增强人类能力的智能伙伴?欢迎在评论区分享你的观点。


*本文作者长期关注 AI Agent 领域,正在使用 OpenCl