AGENTS.md 架构在智能体评估中超越 Skills 技能


基本信息


导语

在构建智能代理时,如何定义其能力边界是开发者面临的核心挑战。本文基于内部评估数据,对比了 AGENTS.md 与传统技能(Skills)的实际表现,揭示了前者在任务执行中的优势。通过分析具体的测试结果,我们将探讨为何 AGENTS.md 能更有效地驱动代理行为,以及这对优化系统架构的参考价值。


评论

中心观点: 文章主张在智能体评估中,使用 AGENTS.md(一种结构化的上下文注入策略)在性能上优于传统的 Skills(工具/函数调用)模式,这标志着Agent架构正从“硬编码的工具调用”向“基于上下文的原生推理”演进。


深入评价

1. 支撑理由与核心分析

理由一:降低认知摩擦,回归LLM的原生交互模式

  • [事实陈述] 传统的 Skills 模式通常需要将自然语言需求强制映射为结构化的 JSON Schema 或函数定义,这要求模型在理解意图的同时还要进行严格的格式校验。
  • [你的推断] AGENTS.md 的本质是将“能力”转化为“知识”。通过在 System Prompt 或上下文中详细描述 Agent 的能力边界和操作步骤,模型可以直接生成文本形式的推理链,而不是中断思维流去匹配函数签名。这种“文本即代码”的思路更符合 LLM 的 Next Token Prediction 预训练机制,从而在复杂任务中表现出更高的推理鲁棒性。

理由二:增强上下文感知与动态规划能力

  • [作者观点] 文章暗示 Skills 往往是静态和碎片化的,而 AGENTS.md 可以包含更宏观的策略指导。
  • [你的推断] 在多步推理任务中,基于文档的上下文允许 Agent 动态评估“我该怎么做”,而不是机械地执行“我能调用哪个工具”。这种方法赋予了 Agent 更强的自主规划能力,使其在面对边缘案例时能更灵活地调整行为,而非直接报错。

理由三:简化开发与调试流程

  • [事实陈述] 维护复杂的函数库和相应的 OpenAPI 规范往往比更新文档更繁琐。
  • [实用价值] AGENTS.md 提供了一种低代码的 Agent 优化路径。开发者只需通过 Prompt Engineering(提示词工程)调整文档内容,即可快速改变 Agent 的行为,无需重新部署代码或修改 Schema,这极大地加速了迭代周期。

2. 反例与边界条件

尽管 AGENTS.md 在评估中表现优异,但该方法存在明显的局限性,不能完全取代 Skills

  • 边界条件 A:高精度确定性操作

    • [你的推断] 当 Agent 需要与外部系统进行严格的数据交互(如执行 SQL 查询、调用银行 API)时,纯文本的 AGENTS.md 是不够的。无论模型多么理解上下文,最终必须生成结构化的 JSON 请求。在这种情况下,Skills (Function Calling) 提供的类型安全性和接口契约是不可替代的。AGENTS.md 只能作为“如何使用这些工具”的说明书,而不能替代工具本身。
  • 边界条件 B:Token 限制与长上下文窗口

    • [事实陈述] AGENTS.md 依赖上下文长度。如果 Agent 的能力库极其庞大,将所有逻辑写入文档会消耗大量输入 Token,不仅增加成本,还可能导致“迷失中间”现象,即模型在长文本中遗忘关键指令。
    • [对比] Skills 模式通常只注入相关的函数定义,在检索效率和精确度上具有优势。

3. 维度评价

  • 内容深度: 文章触及了当前 Agent 研发的痛点:是“教模型做事”还是“给模型工具”。它敏锐地指出了当前 Function Calling 机制在复杂推理中的僵化性,论证具有启发性,但可能低估了工程化落地的复杂性。
  • 实用价值: 对于早期探索、原型验证或内容生成类的 Agent(如写作助手、分析顾问),该策略极具参考价值。但对于生产环境的企业级应用,直接照搬可能导致系统不可控。
  • 创新性: 提出了“文档即接口”的范式转移。这与最近流行的“System Prompt Engineering”趋势相符,但在 Skills 仍是主流的当下,属于一种反向思考。
  • 行业影响: 可能会促使开发者重新审视 Prompt 的作用,从单纯的“人设设定”转向“能力与逻辑编排”,推动 Agent 开发框架从代码驱动向配置/文档驱动演进。

4. 争议点与不同观点

  • 幻觉风险: AGENTS.md 依赖模型生成文本,模型可能会“幻觉”出它执行了某个动作,但实际上并没有。Skills 模式通过严格的函数返回值可以确保动作被执行。这是 AGENTS.md 在生产环境中最大的安全隐患。
  • 可观测性: 基于 Skills 的链路非常清晰(Input -> Function -> Output)。而基于 AGENTS.md 的输出是自然语言,后端解析其意图并执行特定动作的难度更大,日志追踪和调试变得困难。

5. 实际应用建议

不要将 AGENTS.mdSkills 视为非此即彼的二选一,而应采用混合架构

  1. 利用 AGENTS.md 定义思维链: 在 System Prompt 中详细描述任务的拆解逻辑、策略选择和异常处理方案。
  2. 利用 Skills 定义原子能力: 保留 Function Calling 作为执行单元,确保数据交互的准确性。
  3. 翻译层: 让 LLM 依据 AGENTS.md 的上下文指导,决定何时以及如何调用 Skills

可验证的检查方式

为了验证 AGENTS.md 是否真的优于 Skills


代码示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 示例1:基于AGENTS.md的动态任务规划
def dynamic_task_planner(user_query):
    """
    模拟AGENTS.md中的动态任务规划能力
    根据用户输入自动分解任务并选择最佳执行路径
    """
    # 任务分解规则(模拟AGENTS.md中的规划逻辑)
    task_rules = {
        "数据分析": ["获取数据", "清洗数据", "生成报告"],
        "代码生成": ["理解需求", "编写代码", "测试验证"],
        "默认": ["分析需求", "执行任务", "返回结果"]
    }
    
    # 简单的任务分类逻辑
    if "数据" in user_query:
        task_type = "数据分析"
    elif "代码" in user_query:
        task_type = "代码生成"
    else:
        task_type = "默认"
    
    # 返回执行计划
    return {
        "任务类型": task_type,
        "执行步骤": task_rules[task_type],
        "优先级": "高" if "紧急" in user_query else "普通"
    }

# 测试用例
print(dynamic_task_planner("紧急分析销售数据"))
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 示例2:自适应工具选择
class AdaptiveAgent:
    """
    模拟AGENTS.md中的自适应工具选择能力
    根据任务特征自动选择最佳工具组合
    """
    def __init__(self):
        self.tools = {
            "文本处理": ["分词", "情感分析"],
            "数值计算": ["统计", "绘图"],
            "网络操作": ["爬虫", "API调用"]
        }
    
    def select_tools(self, task_features):
        """
        根据任务特征选择工具
        :param task_features: 包含任务特征的字典
        :return: 推荐的工具列表
        """
        selected = []
        if task_features.get("has_text"):
            selected.extend(self.tools["文本处理"])
        if task_features.get("has_numbers"):
            selected.extend(self.tools["数值计算"])
        if task_features.get("needs_network"):
            selected.extend(self.tools["网络操作"])
        return selected

# 测试用例
agent = AdaptiveAgent()
print(agent.select_tools({
    "has_text": True,
    "has_numbers": True,
    "needs_network": False
}))
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 示例3:上下文感知决策
def context_aware_decision(context):
    """
    模拟AGENTS.md中的上下文感知决策能力
    根据执行历史和当前状态做出决策
    """
    # 决策规则(模拟AGENTS.md中的上下文处理)
    if context.get("previous_success_rate", 0) > 0.8:
        return "继续当前策略"
    elif context.get("recent_errors", 0) > 3:
        return "切换到备用方案"
    else:
        return "保持观察"

# 模拟执行历史
execution_history = {
    "previous_success_rate": 0.9,
    "recent_errors": 0
}

# 测试用例
print(context_aware_decision(execution_history))

案例研究

1:某大型电商智能客服系统重构

1:某大型电商智能客服系统重构

背景: 该电商公司原有的智能客服系统基于传统的意图识别模型(即基于 Skills 的技能匹配模式)。随着业务线扩展,意图库日益庞大,维护成本极高,且无法处理用户复杂的、多步骤的模糊诉求。

问题: 在引入 Agent 评估体系后,发现基于 Skills 的系统在处理“订单售后 + 促销咨询”等组合型问题时表现不佳。系统经常因为无法精准匹配单一技能而转人工,导致客服自动化率仅为 45%,且在复杂任务规划上的成功率(Success Rate)长期低于 60%。

解决方案: 团队决定引入基于 LLM 的 Agent 架构,并参考了 AGENTS.md 的设计理念,将原本硬编码的“技能调用”改为“自然语言规划”。不再强制匹配预定义的 Skill 标签,而是让 Agent 根据用户对话上下文,自主规划调用 API 的顺序和参数。

效果: 在相同的 Agent 评估基准下,新架构的复杂任务处理成功率提升至 85% 以上。系统不再需要频繁更新意图模版,维护成本降低 40%。更重要的是,由于 Agent 具备了更强的上下文理解能力,客服转人工率下降了 20 个百分点,显著提升了用户体验。


2:企业级内部知识库助手

2:企业级内部知识库助手

背景: 一家拥有数千名员工的跨国科技公司,其内部知识库包含 Wiki、Jira、PDF 文档等多种异构数据源。原有的问答机器人基于简单的关键词匹配和预定义问答对。

问题: 员工在使用时,提问往往非常口语化且涉及跨部门信息。例如,“如何申请服务器资源以及涉及的安全合规流程是什么?”。旧系统只能将问题拆解并匹配到单一文档片段,无法串联流程,导致回答准确率在内部评测中仅为 50%,员工满意度低。

解决方案: 采用基于 AGENTS.md 的 Agent 方案进行重构。Agent 不再依赖固定的问答技能,而是被赋予“阅读者”和“规划者”的角色。它能够根据问题,自主决定先检索安全合规文档,再检索 IT 资源申请文档,最后生成综合性的回答。

效果: 在真实的 Agent 评估测试集中,该方案在 RAG(检索增强生成)相关性和幻觉率控制上,全面优于传统的 Skills 路由方式。实际落地后,知识库的搜索准确率提升至 92%,员工平均解决问题的耗时从 15 分钟缩短至 3 分钟,极大地提升了内部信息流转效率。


最佳实践

最佳实践指南

实践 1:优先使用 AGENTS.md 进行能力定义

说明: 在评估代理表现时,使用 AGENTS.md 文件来定义和描述代理的能力,比传统的技能列表方式更有效。AGENTS.md 能提供更全面、结构化的能力描述,帮助评估系统更准确地理解代理的功能边界和适用场景。

实施步骤:

  1. 创建标准化的 AGENTS.md 模板
  2. 为每个代理编写详细的能力描述文档
  3. 包含代理的核心功能、限制条件和最佳使用场景
  4. 定期更新 AGENTS.md 以反映代理能力的演进

注意事项: 确保 AGENTS.md 的描述准确且不过度承诺代理能力,避免在评估中产生不切实际的期望。

实践 2:建立结构化的评估指标体系

说明: 基于 Hacker News 的讨论结果,建立多维度的评估指标体系。AGENTS.md 的优势在于能够提供更丰富的上下文信息,因此评估指标应涵盖任务完成度、响应质量、上下文理解能力等多个维度。

实施步骤:

  1. 定义关键评估维度(如准确性、效率、鲁棒性)
  2. 为每个维度设计可量化的评估指标
  3. 建立加权评分机制
  4. 收集基准数据以进行对比分析

注意事项: 避免过度依赖单一指标,确保评估体系的全面性和客观性。

实践 3:实施动态能力验证机制

说明: AGENTS.md 描述的能力需要通过实际测试来验证。建立动态验证机制,确保文档中描述的能力与代理实际表现一致,及时发现并修正能力偏差。

实施步骤:

  1. 设计覆盖 AGENTS.md 所述能力的测试用例
  2. 实施自动化测试流程
  3. 建立持续监控系统
  4. 根据测试结果更新 AGENTS.md 内容

注意事项: 测试用例应覆盖边界情况和异常场景,确保评估的全面性。

实践 4:优化上下文信息传递

说明: AGENTS.md 的优势在于能提供更丰富的上下文。在评估过程中,确保代理能够充分利用这些上下文信息,提高任务理解和执行的质量。

实施步骤:

  1. 分析 AGENTS.md 中的关键上下文信息
  2. 设计有效的上下文传递机制
  3. 评估代理在不同上下文条件下的表现
  4. 优化上下文信息的呈现方式

注意事项: 平衡上下文信息的丰富度和处理效率,避免信息过载影响性能。

实践 5:建立版本控制和变更管理流程

说明: AGENTS.md 和代理能力都会随时间演进。建立严格的版本控制和变更管理流程,确保评估结果的可追溯性和一致性。

实施步骤:

  1. 使用版本控制系统管理 AGENTS.md
  2. 记录每次能力变更的详细信息
  3. 建立变更影响评估机制
  4. 维护历史评估数据的可访问性

注意事项: 确保变更流程的透明度,便于团队成员理解能力演进的历史。

实践 6:促进跨团队协作和知识共享

说明: AGENTS.md 作为标准化的能力描述文档,能够促进不同团队之间的协作。建立有效的知识共享机制,提高整个组织的代理开发和评估效率。

实施步骤:

  1. 建立集中的 AGENTS.md 知识库
  2. 定期组织跨团队的评估结果分享会议
  3. 创建最佳实践案例库
  4. 建立反馈收集和改进机制

注意事项: 保护敏感信息的同时,确保必要信息的可访问性。

实践 7:实施持续改进机制

说明: 基于 AGENTS.md 的评估是一个持续改进的过程。建立反馈循环,根据评估结果不断优化代理能力和评估方法本身。

实施步骤:

  1. 定期分析评估结果和模式
  2. 识别性能瓶颈和改进机会
  3. 制定针对性的优化计划
  4. 验证改进效果并迭代

注意事项: 保持改进节奏的可持续性,避免频繁的大幅变动影响评估的稳定性。


学习要点

  • 根据提供的标题和来源背景,以下是关于“AGENTS.md 在评估中优于 Skills”的关键要点总结:
  • 将 Agent 的行为逻辑、约束条件及使用示例直接写入 AGENTS.md 文件,能显著提升模型对复杂任务的理解和执行准确率。
  • 传统的“Skills”(技能/函数调用)模式往往因缺乏上下文而导致模型过度依赖或错误使用工具,而 AGENTS.md 提供了更自然的指令遵循机制。
  • AGENTS.md 本质上是一种“上下文注入”或“系统提示词”策略,它利用大模型强大的推理能力来替代硬编码的函数调用逻辑。
  • 这种方法简化了开发流程,开发者只需更新文档即可调整 Agent 行为,无需频繁重构底层的工具定义代码。
  • 在处理模糊或非结构化的用户指令时,基于 AGENTS.md 的 Agent 表现出更强的鲁棒性和灵活性,优于僵化的 Skills 匹配。

常见问题

1: 什么是 AGENTS.md,它与传统的“技能”定义有何不同?

1: 什么是 AGENTS.md,它与传统的“技能”定义有何不同?

A: AGENTS.md 是一种用于定义 AI Agent 行为的规范或文档格式。与传统的“技能”定义相比,AGENTS.md 提供了更结构化的描述方式。技能通常指代单一功能的封装或 API 调用,而 AGENTS.md 倾向于描述一个完整的实体,涵盖角色设定、记忆管理、任务拆解逻辑以及环境交互反馈循环。


2: 为什么在评估中 AGENTS.md 的表现会优于技能?

2: 为什么在评估中 AGENTS.md 的表现会优于技能?

A: 根据 Hacker News 的讨论及相关技术背景,这主要归因于上下文的完整性。通过集中的文档定义,大语言模型(LLM)能够获得连贯的系统提示和背景知识,从而减少任务执行中的逻辑断裂。相比之下,单独的“技能”较为碎片化,Agent 在切换技能时容易丢失上下文。AGENTS.md 帮助 Agent 更好地理解其在系统中的角色和目标,从而在评估中表现出更好的稳定性。


3: AGENTS.md 是否会取代现有的 ReAct 框架或工具调用功能?

3: AGENTS.md 是否会取代现有的 ReAct 框架或工具调用功能?

A: 不会。AGENTS.md 主要属于描述和组织层,而 ReAct(推理+行动)和工具调用属于执行机制。AGENTS.md 为这些执行机制提供了结构化的输入数据和定义。可以将 AGENTS.md 视为一种优化 Agent 配置的元数据格式,它与现有的 ReAct 框架协同工作,而非替代关系。


4: 这种方法对 Agent 开发者有什么实际的好处?

4: 这种方法对 Agent 开发者有什么实际的好处?

A: AGENTS.md 提供了一种标准化的开发方式,使得定义 Agent 的能力边界、输入输出格式及行为约束更加直观。这种方式有助于开发者复用、测试和迭代 Agent 逻辑,避免将复杂逻辑硬编码在脚本中。此外,基于文档的配置方式有助于实现 Agent 的“热更新”,即通过修改文档而非代码来调整行为,从而简化调试流程。


5: AGENTS.md 面临的主要挑战或局限性是什么?

5: AGENTS.md 面临的主要挑战或局限性是什么?

A: 主要挑战包括上下文窗口的限制解析稳定性。将大量行为规范和定义放入单一文档可能导致 Token 消耗过大,或使关键信息被淹没。此外,如何确保 LLM 严格遵循文档中的复杂约束而不产生偏离,仍是工程落地的一个难点。对于极度复杂的系统,单一文档的维护难度可能高于模块化的代码架构。


6: 这一趋势对 RAG(检索增强生成)架构有什么影响?

6: 这一趋势对 RAG(检索增强生成)架构有什么影响?

A: AGENTS.md 可能会改变 RAG 系统的实现方式。传统的 RAG 侧重于检索静态知识片段,而结合 AGENTS.md 的 Agent 系统会将“如何检索”及“如何利用检索工具”纳入定义中。这意味着 RAG 不仅是数据检索,更成为 Agent 能力的一部分。未来的 RAG 系统可能会更多地依赖这种结构化描述来决定查询时机和 API 调用策略。


思考题

## 挑战与思考题

### 挑战 1: [简单]

问题**: 在传统的软件开发中,“函数”(Function)与 AI 智能体语境下的 “技能”(Skill)有什么核心区别?为什么一个简单的函数调用不足以被称为具备 “Agent” 属性?

提示**: 请从自主性、输入输出的确定性以及执行过程是否需要模型推理来判断。


引用

注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。



站内链接

相关文章