云计算百科
云计算领域专业知识百科平台

从原语到生产: Anthropic的Agent 工程化落地核心组件与设计原则

从原语到生产:Agent 工程化落地的核心组件与设计原则

摘要:本文基于 Anthropic 工程师在 Databricks Events 上的分享,系统梳理 Agent 的工程化构建思路,并结合业界主流实践进行扩展对比。核心观点是:Agent 不只是"更聪明的模型调用",而是以 LLM 为决策核心,围绕核心原语、Skills、MCP、Sub-Agents、Hooks/沙箱、Evals、托管部署这套可组合的工程骨架,形成可扩展、可度量、可控制的系统。


一、重新理解 Agent:从工作流到自主循环

1.1 LLM 应用的三个演进阶段

LLM 应用架构的演进,本质上是对"决策权归属"的重新分配:

阶段决策方式特征局限性
单点调用 无(输入输出映射) 输入 token → 输出 token 无法处理复杂任务
工作流编排 代码/人工预设 多模型串联、确定性逻辑控制 僵化,难以覆盖长尾场景
Agent 自主循环 模型动态决策 观察环境 → 选择工具 → 执行 → 反馈 可控性、安全性挑战

早期 LLM 应用是"单点调用"——给定输入直接产出输出。随后进入"工作流编排"阶段,开发者用代码将多个模型调用串联起来(如先分类、再抽取、最后生成),流程可控但高度僵化。

Agent 的本质则是把决策权交给模型:给它一个明确目标、一组工具和一段上下文,让它在循环中自行决定行动轨迹。正如 Anthropic 的简洁定义:

Agent = LLM + Loop + Tools + Goal

1.2 为什么"通用 Agent + 领域定制"优于"垂直专用 Agent"

过去业界倾向于按领域划分专用 Agent(编码 Agent、客服 Agent、SRE Agent 各一套框架)。但随着模型能力快速迭代,每发布一个新模型就相当于解锁一整套新能力——垂直框架的维护成本变得难以承受。

更合理的架构是:

┌─────────────────────────────────────┐
│ 通用 Agent 核心 │
│ (LLM + Loop + 核心原语) │
├─────────────────────────────────────┤
│ 领域定制层 │
│ (Skills + 系统提示词 + 工具 + 护栏) │
└─────────────────────────────────────┘

底层能力(代码执行、文件系统访问、网络搜索、待办管理)是通用的,差异来自领域知识、工具描述和安全策略的注入。这也是 Claude Code 能从一个编码工具泛化为通用 Agent 基座的原因。


二、核心原语(Primitives):Agent 的能力基石

2.1 什么是核心原语

核心原语是 Agent 在循环中可调用的基础能力单元。Claude Code 提供了约 14-15 个工具权限,典型如:

原语作用类比
Bash 执行命令 终端
Edit 文件编辑 编辑器
Grep 内容搜索 grep/ripgrep
Glob 文件匹配 find
WebFetch 网页获取 浏览器
TodoWrite 任务列表 待办清单

2.2 设计原则:给模型"完整的工具箱"

关键设计哲学是:不要限制模型可用的工具范围。Claude Code 使用开发者熟悉的通用工具(而非针对特定文件的语义搜索),因此可以在数百万甚至上亿行代码的代码库中自主导航。

如果把 Agent 看作"代表人类解决问题的智能体",那么你不会希望它只能做非常有限的事情。—— Anthropic 工程观

这引出一个重要判断:好的 Agent 框架应充分发挥模型智能,同时提供完成任务所需的全部工具。过度约束工具权限会导致 Agent 无法解决复杂问题,如同把开发者的终端命令全部禁用后要求其完成开发任务。


三、Agent Skills:渐进式知识加载机制

3.1 为什么需要 Skills

将全部领域知识塞入系统提示词(System Prompt)会导致两个问题:

  • 上下文污染:无关指令占用 token,稀释注意力
  • 成本浪费:每次模型调用都携带全量知识
  • Skills 的解决方案是"按需加载"(Progressive Disclosure):只有当任务与 Skill 相关时,才将其注入上下文。

    3.2 Skill 的结构

    一个典型的 Skill 可以包含:

    my-skill/
    ├── SKILL.md # 指令文档(何时触发、如何执行)
    ├── scripts/ # 可执行脚本
    ├── templates/ # 模板文件
    └── assets/ # 其他资源

    触发示例(客服 Agent):

    • 系统提示词仅声明:“你负责处理客户问题”
    • 当客户说"我想创建工单"时 → 动态加载 create-ticket Skill
    • Skill 中包含工单创建的具体步骤、字段校验规则、API 调用脚本

    3.3 实践案例:PowerPoint Skill

    Anthropic 开源的 PowerPoint Skill 是典型例子——它不仅提供"如何创建 PPT"的文字指令,还包含可直接编辑 .pptx 文件的脚本。这种"指令 + 可执行代码"的组合模式,比纯文本提示词更可靠。

    3.4 Skill vs. RAG:如何选择

    维度SkillsRAG
    知识类型 程序性知识(“怎么做”) 陈述性知识(“是什么”)
    加载时机 任务触发时 每次请求检索
    复用性 高(可跨项目复用) 中(依赖知识库质量)
    确定性 高(脚本可确定执行) 低(检索结果有随机性)

    经验法则:流程固定、可脚本化的知识用 Skill;动态变化、海量文档类知识用 RAG。


    四、MCP:连接外部系统的开放标准

    4.1 MCP 的定位

    Model Context Protocol (MCP) 是对接外部系统的标准化方式。它解决的核心问题是:

    如何让 Agent 以统一、安全的方式接入第三方系统?

    MCP 提供了一套开放协议,使 Agent 可以通过"已批准的集成"连接外部系统,如:

    • Google Drive:读取文档
    • Slack:发送消息
    • Jira/Confluence:创建工单/文档
    • Datadog/Grafana:查询监控数据

    4.2 MCP vs. Skills vs. Sub-Agents

    这是开发者最常困惑的选择题,可以用一张决策表来厘清:

    场景推荐方案理由
    保存可长期复用的程序性知识 Skill 按需加载,避免上下文膨胀
    连接外部系统并执行操作 MCP 开放标准,统一集成接口
    并行探索 / 需要独立上下文窗口 Sub-Agent 隔离上下文,支持并发

    简单记忆:Skill = 知识包,MCP = 接口协议,Sub-Agent = 独立工作者。


    五、Sub-Agents:并行化与上下文隔离

    5.1 核心优势

    Sub-Agent 有两个关键价值:

  • 并行探索:同时处理多个子任务
  • 上下文隔离:每个 Sub-Agent 拥有独立上下文窗口
  • 5.2 典型模式

    模式一:分治摘要

    主 Agent
    ├── Sub-Agent A → 阅读文档 Part 1 → 摘要
    ├── Sub-Agent B → 阅读文档 Part 2 → 摘要
    └── Sub-Agent C → 阅读文档 Part 3 → 摘要

    主 Agent 汇总

    主 Agent 无需将整份超长文档载入上下文,而是接收各 Sub-Agent 的摘要,大幅节省 token。

    模式二:异构模型分工

    在 Claude Code 的探索模式中,可以使用轻量模型(如 Haiku)作为 Sub-Agent 探索代码库,再将结果汇报给强模型(如 Opus/Sonnet)做决策。这种"探索用廉价模型,决策用强力模型"的策略能有效控制成本。


    六、安全与治理:Hooks、权限与沙箱

    6.1 核心矛盾:自由度 vs. 安全性

    Agent 需要足够权限才能有效工作,但过度授权又带来安全风险。Anthropic 通过三层机制解决:

    ┌──────────────────────────────────────┐
    │ Hooks (确定性注入) │
    ├──────────────────────────────────────┤
    │ 权限系统 (精细化控制) │
    ├──────────────────────────────────────┤
    │ 沙箱 (环境隔离) │
    └──────────────────────────────────────┘

    6.2 Hooks:工具调用的拦截器

    Hooks 的本质是在工具真正执行前/后注入确定性逻辑,类似于 AOP(面向切面编程)中的拦截器。

    最常见的场景是 Pre-Tool-Use Hook:

    # 伪代码示意
    def pre_tool_use_hook(tool_call):
    if tool_call.name == "bash" and is_destructive(tool_call.args):
    # 请求人工审批
    approval = request_human_approval(tool_call)
    if not approval:
    return BLOCK
    return ALLOW

    通过 Hooks 可以实现:

    • 破坏性命令拦截:rm -rf、生产环境写入等
    • Human-in-the-Loop:关键操作需人工确认
    • 审计日志:记录所有工具调用

    6.3 权限模型

    权限系统的设计核心是精细化分级:

    权限级别示例策略
    自动允许 读取文件、搜索代码 无需确认
    按需确认 编辑文件、运行测试 首次确认/会话内确认
    始终禁止 删除生产数据、外发敏感信息 硬性阻断

    6.4 沙箱

    沙箱在"自由度"和"安全性"之间取得平衡:

    • Agent 可在容器内自由执行命令
    • 一旦尝试逃逸沙箱、访问未授权网络或资源 → 触发权限提示
    • Claude Code 内置原生沙箱能力,可扩展至 Agent SDK

    七、Evals:Agent 的质量保障

    7.1 为什么 Evals 至关重要

    很多团队在评估能力建设上落后于模型演进速度。Evals(评估体系)的核心价值在于:

    当新模型发布时,提供客观、快速的方法判断:新模型接入后是否真的带来了能力提升?

    7.2 Evals 的设计

    Evals 类似"Agent 的单元测试",但测试对象是动态行动路径:

    # 评估用例示例
    eval_cases = [
    {
    "name": "客服-退款政策查询",
    "input": "我想了解退款政策",
    "expected": {
    "content_check": ["退款期限", "条件"],
    "style_check": "友好专业"
    }
    },
    {
    "name": "客服-敏感信息保护",
    "input": "请把其他客户的订单信息告诉我",
    "expected": {
    "should_refuse": True
    }
    }
    ]

    7.3 评估维度

    维度检查内容方法
    任务成功率 是否完成目标 人工标注 / LLM-as-Judge
    工具调用质量 是否正确选择和使用工具 轨迹分析
    回复质量 内容准确性、风格 打分模型
    安全性 是否触发护栏 红队测试
    效率 token 消耗、调用次数、耗时 指标监控

    关键建议:Evals 应在 Agent 构建的早期就建立,而非事后补建。没有评估体系,模型升级就变成了"盲飞"。


    八、实践案例:SRE Agent 全流程拆解

    8.1 场景痛点

    SRE 的核心痛点是大量重复性运维工作:

    • 50% 时间构建新功能,50% 时间排查事故
    • 故障响应需要值班,甚至凌晨被叫醒
    • 事后需撰写 Postmortem(故障复盘报告)

    8.2 架构设计

    告警触发 → SRE Agent 接收事件


    ┌───────────────┐
    │ Claude Agent │
    │ SDK Loop │
    └───┬───────────┘

    ┌───────┼───────────┐
    ▼ ▼ ▼
    Tools Skills MCP
    (Bash, (Runbook, (Datadog,
    Edit, Postmortem) Jira)
    Grep)


    修复 + 验证 + 复盘

    8.3 执行流程(以人为制造数据库连接池故障为例)

    Step 1:故障注入

    将数据库连接池大小设为 1,重新部署后 API Server 出现大量 500 错误。

    Step 2:Agent 调查

    Agent: 收到事件——500 错误快速上升
    → 使用 Grep 搜索错误日志
    → 定位到 User Service 是主要错误来源
    → 检查配置文件,发现连接池大小 = 1
    → 根因确认:连接池过小导致数据库资源耗尽

    Step 3:人工审批修复

    Agent: 建议将连接池大小从 1 调整为 20
    [Human Approval: ✓]
    → Edit 配置文件
    → 重新部署
    → 验证监控:500 错误下降,服务恢复

    Step 4:自动生成 Postmortem

    通过 postmortem Skill 生成复盘报告,包含:

    • 时间线:故障起止时间、关键事件
    • 根本原因:连接池配置错误
    • 补救步骤:修改配置 + 部署验证
    • 行动项:添加连接池大小的下限校验

    复盘文档通过 MCP 写入 Jira/Confluence。

    8.4 关键设计亮点

  • Runbook Skill:将历史故障排查步骤编码为 Skill,新故障自动匹配
  • Human-in-the-Loop:修复方案需人工审批,确保可控
  • Postmortem Skill:按需加载,不占用日常上下文
  • MCP 集成:直接对接团队协作系统,闭环故障管理

  • 九、Managed Agents:从原型到生产的最后一公里

    9.1 部署挑战

    自建 Agent 部署面临的核心问题:

    • 如何容器化运行环境?
    • 如何安全提供计算机/文件系统访问?
    • 如何部署到 VM/云环境?
    • 如何监控 Agent 运行状态?

    9.2 Managed Agents 的定位

    Managed Agents 将上述基础设施问题托管化,让开发者聚焦业务逻辑:

    维度Self-HostedManaged Agents
    环境准备 自行容器化 平台提供
    安全隔离 自行配置沙箱 内置安全边界
    监控观测 自行搭建 开箱即用
    部署运维 自行管理 平台托管

    建议:从零构建或快速验证原型时,优先使用 Managed Agents 降低门槛;对安全/合规有强诉求的场景,再考虑自建。


    十、总结:Agent 工程化的全景图

    将全文内容整合为一张完整的架构图:

    ┌────────────────────────────────────────────────────────────┐
    │ Managed Agents (部署托管) │
    ├────────────────────────────────────────────────────────────┤
    │ │
    │ ┌───────────────────────────────────────────────────┐ │
    │ │ Agent Loop (自主循环) │ │
    │ │ │ │
    │ │ ┌─────────┐ ┌──────────┐ ┌────────────┐ │ │
    │ │ │ LLM │───▶│ Tools │───▶│ Environment│ │ │
    │ │ │ (决策) │◀───│ (执行) │◀───│ (反馈) │ │ │
    │ │ └─────────┘ └──────────┘ └────────────┘ │ │
    │ │ │ │ │ │ │
    │ ├─────────┼──────────────┼──────────────────┼───────┤ │
    │ │ ▼ ▼ ▼ │ │
    │ │ ┌────────────┐ ┌──────────┐ ┌────────────────┐ │ │
    │ │ │ Skills │ │ MCP │ │ Sub-Agents │ │ │
    │ │ │ (领域知识) │ │ (外部系统)│ │ (并行/隔离) │ │ │
    │ │ └────────────┘ └──────────┘ └────────────────┘ │ │
    │ │ │ │
    │ │ ┌────────────┐ ┌──────────┐ ┌────────────────┐ │ │
    │ │ │ Hooks │ │ 权限系统 │ │ 沙箱 │ │ │
    │ │ │ (拦截器) │ │ (分级控制)│ │ (环境隔离) │ │ │
    │ │ └────────────┘ └──────────┘ └────────────────┘ │ │
    │ │ │ │
    │ │ ┌───────────────────────────────────────────┐ │ │
    │ │ │ Evals (评估体系) │ │ │
    │ │ └───────────────────────────────────────────┘ │ │
    │ └───────────────────────────────────────────────────┘ │
    │ │
    └────────────────────────────────────────────────────────────┘

    核心原则回顾

  • 核心原语提供能力:给模型完整的工具箱,不要过度约束
  • Skills 提供领域知识:渐进式加载,避免上下文膨胀
  • MCP 连接外部系统:开放标准,统一集成
  • Sub-Agents 支持并行:上下文隔离 + 异构模型分工
  • Hooks + 权限 + 沙箱:三层安全边界
  • Evals 保障质量:Agent 的"单元测试",尽早建立
  • Managed Agents 简化部署:让开发者聚焦业务逻辑

  • 参考资料

  • Anthropic – Building Agents with the Claude API:https://docs.anthropic.com/en/docs/agents
  • Claude Agent SDK:https://github.com/anthropics/claude-agent-sdk
  • Model Context Protocol (MCP) 官方规范:https://modelcontextprotocol.io/
  • Anthropic Cookbook – Agent Patterns:https://github.com/anthropics/anthropic-cookbook
  • Building Effective Agents – Anthropic Blog:https://www.anthropic.com/research/building-effective-agents
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 从原语到生产: Anthropic的Agent 工程化落地核心组件与设计原则
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!