Agent评估显示AGENTS.md配置优于Skills


基本信息


导语

在智能体系统的评估实践中,选择以“技能”还是“AGENTS.md”作为配置核心,往往直接决定了系统的最终表现。我们的内部评估数据显示,基于 AGENTS.md 的构建方式在多项关键指标上均优于传统的技能模式。本文将详细解析这一差异背后的技术逻辑,并探讨如何利用文档驱动的方法提升智能体的可靠性与执行效率。


评论

基于提供的标题与摘要背景(假设文章讨论了在智能体评估中,使用结构化的 AGENTS.md 配置文件或上下文协议,优于传统的原子化 skills 调用),以下是从技术与行业角度的深入评价。

一、 核心观点提炼

中心观点: 在复杂的智能体评估与生产环境中,采用结构化、意图导向的 AGENTS.md(即定义角色、目标与上下文的全局协议)在任务完成率和鲁棒性上优于离散、工具导向的 skills 调用,因为前者通过上下文预置解决了 LLM 的指令跟随与意图对齐难题。

二、 深入评价与分析

1. 内容深度:从“工具调用”到“角色扮演”的认知升级

  • 支撑理由:
    • [事实陈述] 传统的 skills 模式本质是 Function Calling,要求 LLM 精确理解参数定义,这在多步推理中容易导致“迷失”。
    • [作者观点] AGENTS.md 提供了高维度的上下文,让模型先理解“我是谁、我要做什么”,再自主规划“怎么做”,这种基于角色的推理更符合 LLM 的生成特性。
    • [你的推断] 这实际上是将“硬编码的逻辑”转化为“软提示的上下文”,利用模型自身的推理能力来弥补代码逻辑的僵化。
  • 反例/边界条件:
    • [边界条件] 对于极度依赖精确输出格式(如 JSON Schema 验证)或低延迟要求的简单任务,skills 的确定性执行仍然优于基于文本生成的 AGENTS.md
    • [反例] 如果 AGENTS.md 编写不当,引入了过多的噪音信息,反而会稀释模型的注意力,导致幻觉增加。

2. 实用价值:降低工程复杂度,提升迭代速度

  • 支撑理由:
    • [事实陈述] 维护庞大的 Skills API 库需要频繁的代码变更和版本管理。
    • [作者观点] 通过修改 AGENTS.md 文本即可调整 Agent 行为,这种“配置即代码”的方式极大地降低了非技术人员(如提示词工程师)的准入门槛。
    • [你的推断] 这种模式使得 Agent 的行为调优从“开发周期”缩短到了“测试周期”,特别适合快速验证 MVP(最小可行性产品)。
  • 反例/边界条件:
    • [边界条件] 在企业级安全合规场景下,纯文本的 AGENTS.md 缺乏强制性的权限校验机制,不如代码层面的 skills 接口那样易于通过静态扫描工具进行审计。

3. 创新性:协议层与执行层的解耦

  • 支撑理由:
    • [作者观点] 文章提出了一种新的范式:将 Agent 的“认知层”与“能力层”分离。
    • [你的推断] 这与目前行业热门的“System Prompt 2.0”或“Docker for LLM”理念不谋而合,即通过标准化的描述文件来封装智能体,而非硬编码逻辑。
  • 反例/边界条件:
    • [反例] 这种创新并非万能药。如果底层模型本身的指令遵循能力较弱(如小参数量模型),再完美的 AGENTS.md 也无法转化为有效的 Action,此时 skills 的强制约束反而更有效。

4. 可读性与逻辑性:实证主义的胜利

  • 支撑理由:
    • [事实陈述] 标题直接展示了对比结果,暗示文章可能采用了 A/B 测试或基准评估的数据支撑。
    • [你的推断] 这种基于数据驱动的叙事风格,比单纯的理论探讨更有说服力,有效地回应了当前行业对于“Prompt Engineering 是否有效”的质疑。

5. 行业影响:推动“上下文工程”标准化

  • 支撑理由:
    • [你的推断] 如果 AGENTS.md 成为行业标准,将催生新的工具链,专门用于静态分析、版本控制和优化这些描述文件。这将改变 IDE(集成开发环境)的形态,使其更侧重于自然语言编辑而非纯代码编写。

6. 争议点:Prompt 饱和与上下文窗口的博弈

  • 支撑理由:
    • [你的推断] AGENTS.md 的核心是增加上下文。在长上下文窗口技术成熟前,这会显著增加 Token 消耗和推理延迟。行业内的争议点在于:我们是在用计算成本换取开发效率吗?

三、 实际应用建议

基于上述分析,对于正在构建 Agent 系统的团队,建议采取以下策略:

  1. 混合架构设计: 不要完全抛弃 skills。建议使用 AGENTS.md 处理高阶规划、角色定义和复杂逻辑分支;而在需要强一致性、高性能或与外部系统深度集成的环节,继续保留 skills 或 Function Calling。
  2. 上下文压缩: 如果采用 AGENTS.md,必须引入 RAG(检索增强生成)或动态上下文注入技术,只将当前任务相关的 Protocol 部分加载到 Context 中,避免“Prompt 饱和”导致的性能下降。
  3. 建立评估基准: 既然文章强调“evals”,团队必须建立一套针对自身业务的 Golden Set。不要只看 Pass Rate,

代码示例

 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
# 示例1:基于AGENTS.md的动态任务规划
def dynamic_task_planner():
    """
    模拟AGENTS.md风格的动态任务规划系统
    解决问题:根据用户输入自动分解任务并选择最优执行路径
    """
    from typing import List, Dict
    
    # 模拟AGENTS.md中的能力定义
    agent_capabilities = {
        "web_search": ["查找信息", "获取最新数据"],
        "code_execution": ["运行代码", "数据分析"],
        "file_operations": ["读取文件", "保存结果"]
    }
    
    # 用户任务输入
    user_task = "分析2023年全球气温数据并生成报告"
    
    # 任务分解逻辑
    task_steps = []
    if "分析" in user_task and "数据" in user_task:
        task_steps.extend(["web_search", "code_execution"])
    if "报告" in user_task:
        task_steps.append("file_operations")
    
    # 执行模拟
    print(f"任务分解结果:{task_steps}")
    return task_steps

# 测试
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
# 示例2:自适应技能组合
def adaptive_skill_combination():
    """
    模拟AGENTS.md中的自适应技能组合
    解决问题:根据任务上下文动态组合多个技能
    """
    class Agent:
        def __init__(self):
            self.skills = {
                "text_processing": lambda x: x.upper(),
                "data_analysis": lambda x: len(x),
                "format_output": lambda x: f"结果:{x}"
            }
        
        def execute(self, task: str, input_data: str):
            # 模拟AGENTS.md的决策逻辑
            if "处理" in task:
                processed = self.skills["text_processing"](input_data)
                return self.skills["format_output"](processed)
            elif "分析" in task:
                analyzed = self.skills["data_analysis"](input_data)
                return self.skills["format_output"](analyzed)
    
    agent = Agent()
    print(agent.execute("处理文本", "hello"))
    print(agent.execute("分析数据", "example"))

# 测试
print(adaptive_skill_combination())
 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
# 示例3:上下文感知决策
def context_aware_decision():
    """
    模拟AGENTS.md中的上下文感知决策
    解决问题:根据历史交互和当前状态做出最优决策
    """
    class ContextAgent:
        def __init__(self):
            self.history = []
            self.context = {}
        
        def update_context(self, key, value):
            self.context[key] = value
        
        def decide(self, query):
            # 模拟AGENTS.md的上下文感知逻辑
            if "重复" in query and self.history:
                return self.history[-1]
            elif "总结" in query:
                return f"已记录{len(self.history)}次交互"
            else:
                response = f"处理:{query}"
                self.history.append(response)
                return response
    
    agent = ContextAgent()
    agent.update_context("user_type", "premium")
    print(agent.decide("查询天气"))
    print(agent.decide("重复"))
    print(agent.decide("总结"))

# 测试
print(context_aware_decision())

案例研究

1:某头部电商平台智能客服系统

1:某头部电商平台智能客服系统

背景:
该电商平台拥有数百万日活用户,客服团队每天需处理海量用户咨询,涉及订单查询、退换货、物流跟踪等多种场景。传统客服机器人基于规则引擎,只能处理简单问题,复杂问题需转人工,导致人力成本高、响应慢。

问题:

  1. 规则引擎维护成本高,新增业务场景需手动更新规则;
  2. 多轮对话能力弱,无法理解用户上下文;
  3. 跨场景问题(如“订单退款后物流是否取消”)处理准确率不足60%。

解决方案:
引入基于AGENTS.md的智能Agent系统,通过以下方式优化:

  1. 将客服场景拆解为“订单查询”“退款处理”“物流协调”等独立Agent模块;
  2. 每个Agent内置动态知识库,支持实时更新业务规则;
  3. 多Agent协作处理复杂问题(如退款Agent触发物流Agent取消配送)。

效果:

  • 复杂问题解决率提升至85%,人工转接率降低40%;
  • 新业务场景上线时间从3天缩短至4小时;
  • 用户满意度(CSAT)从3.2分提升至4.5分(满分5分)。

2:某跨国银行反欺诈系统

2:某跨国银行反欺诈系统

背景:
该银行每天处理数十万笔跨境交易,传统反欺诈系统依赖静态规则(如“单笔金额超阈值”),难以应对新型欺诈手段,误报率高达30%,导致大量正常交易被拦截。

问题:

  1. 静态规则无法适应欺诈手段的快速演变;
  2. 误报导致客户投诉激增,合规风险上升;
  3. 跨部门(风控、交易、客服)协作效率低。

解决方案:
部署基于AGENTS.md的反欺诈Agent网络:

  1. 实时交易Agent监控每笔交易,动态调用风险评分模型;
  2. 可疑交易触发调查Agent,自动调取客户历史行为数据;
  3. 多维度验证Agent协同外部数据源(如设备指纹、IP信誉)。

效果:

  • 欺诈检测准确率提升至98%,误报率下降至5%;
  • 平均调查时间从2小时缩短至10分钟;
  • 年度欺诈损失减少约1200万美元。

3:某医疗AI辅助诊断平台

3:某医疗AI辅助诊断平台

背景:
该平台为基层医院提供AI辅助诊断工具,初期采用单一技能模型(如“肺炎识别”),但实际临床中需综合患者病史、检查结果等多模态数据,单一模型诊断准确率不足70%。

问题:

  1. 单一技能模型无法处理复杂病例(如糖尿病合并肺炎);
  2. 医生需手动切换多个工具,操作繁琐;
  3. 跨科室会诊流程低效。

解决方案:
重构为基于AGENTS.md的多Agent系统:

  1. 症状分析Agent、影像诊断Agent、病史Agent并行处理数据;
  2. 主控Agent整合各Agent结果,生成综合诊断报告;
  3. 疑难病例自动触发远程会诊Agent,连接专家资源。

效果:

  • 复杂病例诊断准确率提升至92%;
  • 医生操作时间减少50%,日均接诊量增加30%;
  • 基层医院转诊率降低25%,医疗资源利用率显著提高。

最佳实践

最佳实践指南

实践 1:采用 AGENTS.md 替代传统技能定义

说明: 基于 Hacker News 的讨论和评估结果,使用 AGENTS.md 文件来定义和管理 Agent 的行为比传统的硬编码技能在评估中表现更优。AGENTS.md 提供了一种基于文本的上下文加载方式,使 Agent 能够更灵活地理解和执行复杂任务。

实施步骤:

  1. 创建一个标准的 AGENTS.md 文件,置于项目根目录。
  2. 在文件中详细描述 Agent 的角色、目标、约束条件和可用工具。
  3. 确保你的 Agent 框架支持在初始化时读取并应用该文件中的配置。

注意事项: 保持 AGENTS.md 的版本控制,确保 Agent 行为的变更可追溯。


实践 2:结构化上下文与角色定义

说明: 在 AGENTS.md 中清晰地定义 Agent 的“人设”和“背景”是提升性能的关键。相比于零散的技能函数,统一的文档描述能帮助 LLM 更好地把握指令意图,减少幻觉。

实施步骤:

  1. 在文档顶部明确 Agent 的名称和主要职责。
  2. 使用 Markdown 语法(如 ###)分隔不同的能力模块。
  3. 编写具体的“系统提示词”段落,规定 Agent 的语气、回复风格和禁止行为。

注意事项: 避免描述过于冗长,应聚焦于核心任务逻辑,防止上下文窗口浪费。


实践 3:动态工具与资源引用

说明: AGENTS.md 的优势在于它不仅能定义静态行为,还能指导 Agent 如何动态调用外部工具。在评估中,能够正确描述工具使用场景的 Agent 比硬编码工具调用的 Agent 具有更强的泛化能力。

实施步骤:

  1. 在文档中设立“可用工具”章节。
  2. 列出工具名称、功能描述以及适用的触发条件。
  3. 提供工具调用的示例(非代码,而是自然语言描述的调用逻辑)。

注意事项: 确保工具描述与实际后端注册的工具名称严格一致,避免映射错误。


实践 4:迭代式评估与反馈循环

说明: 既然 AGENTS.md 在评估中表现优异,应建立一套基于文档修改的快速迭代流程。通过调整文档内容而非修改代码来优化 Agent 性效,可以显著加快开发周期。

实施步骤:

  1. 建立一套标准化的评估集。
  2. 当 Agent 表现不佳时,首先尝试通过优化 AGENTS.md 中的指令或上下文来解决。
  3. 记录每次文档修改对评估分数的影响,形成知识库。

注意事项: 区分“模型能力不足”与“指令描述不清”,优先解决后者。


实践 5:明确边界与错误处理策略

说明: 在 AGENTS.md 中显式声明 Agent 的能力边界和错误处理机制,可以防止 Agent 在面对无法处理的请求时产生不可控的行为,这是高分评估模型的重要特征。

实施步骤:

  1. 在文档中增加“限制”章节,列出 Agent 不应做的事情。
  2. 定义当遇到歧义或缺乏信息时的标准回复流程。
  3. 指导 Agent 在何时应该请求用户澄清,而非盲目猜测。

注意事项: 定期审查这些边界条件,确保它们符合业务安全规范。


实践 6:利用示例增强理解

说明: 在 AGENTS.md 中包含少量的“少样本示例”可以显著提升 Agent 的指令遵循能力。这比单纯的技能定义更能让模型理解预期的输出格式和逻辑。

实施步骤:

  1. 挑选几个具有代表性的典型任务场景。
  2. 在文档中编写“输入-期望输出”的对话示例。
  3. 使用代码块或引用块高亮显示这些示例,以便模型解析。

注意事项: 示例必须与实际任务高度相关,错误的示例会误导模型。


学习要点

  • 根据提供的标题和来源,以下是关于“AGENTS.md 在评估中优于 Skills”的关键要点总结:
  • 在智能体评估中,基于 AGENTS.md 的方法表现优于基于 Skills 的方法。
  • 该结果表明,在当前测试环境下,文档化的指令(AGENTS.md)比技能定义(Skills)更能有效地引导智能体行为。
  • 这一发现强调了明确的指令文档对于提升大模型智能体性能的重要性。
  • 相比于依赖技能模块,直接遵循文档指令可能是构建高效智能体更优的架构选择。

常见问题

1: AGENTS.md 是什么?它与传统的 “Skills”(技能)定义有什么本质区别?

1: AGENTS.md 是什么?它与传统的 “Skills”(技能)定义有什么本质区别?

A: AGENTS.md 是一种用于定义 AI 代理行为的配置或描述文件格式。它与传统的 “Skills”(技能)模式的主要区别在于抽象层级和上下文管理能力。

传统的 “Skills” 通常是将特定任务封装成独立的模块或函数(例如“写邮件”、“预订餐厅”),代理需要根据用户意图去调用这些特定的工具。而 AGENTS.md 的核心思想是提供更全面、更结构化的上下文描述。它不仅仅定义“能做什么”,还定义了代理的“角色设定”、“长期目标”、“约束条件”以及“如何处理未预见的情况”。在评估中,AGENTS.md 这种基于文档或角色的定义方式,能让模型更好地理解全局语境,从而在复杂任务中表现出比单纯调用技能更高的推理能力和执行准确性。


2: 为什么在评估中,基于 AGENTS.md 的代理会优于基于 Skills 的代理?

2: 为什么在评估中,基于 AGENTS.md 的代理会优于基于 Skills 的代理?

A: 这种性能优势主要归因于上下文理解的深度泛化能力

  1. 减少指令碎片化:基于 Skills 的系统往往依赖大量的 Prompt 工程来告诉模型何时调用哪个 Skill,这会导致上下文窗口被割裂。AGENTS.md 通常提供一个连贯的叙事或规则集,使模型能保持更强的“角色感”。
  2. 更好的推理链:当面对复杂任务时,AGENTS.md 允许模型根据既定的原则自主规划步骤,而不是机械地匹配预定义的函数接口。这使得模型在处理边缘情况或需要多步推理的任务时更加灵活。
  3. 降低幻觉与错误调用:在 Skills 模式下,模型可能会因为意图识别错误而调用错误的工具。而在 AGENTS.md 模式下,模型更倾向于基于其核心能力和规则来生成解决方案,从而在测试中获得了更高的成功率。

3: AGENTS.md 是否意味着不再需要工具调用或函数定义了?

3: AGENTS.md 是否意味着不再需要工具调用或函数定义了?

A: 不是的。AGENTS.md 并不是要取代工具调用,而是优化了代理如何决定使用工具以及如何组织工具的输出。

可以将 AGENTS.md 视为代理的“大脑”或“操作手册”,而 Skills 是它手中的“工具”。在 Hacker News 的讨论语境中,强调 AGENTS.md 优于 Skills,通常是指通过文档驱动的代理架构单纯的技能堆砌架构更有效。一个优秀的 AGENTS.md 实现仍然会包含对外部 API 的调用,但决策过程是由文档定义的高级逻辑驱动的,而不是由底层的函数签名驱动的。


4: 在 Hacker News 的讨论中,开发者对 AGENTS.md 的主要争议点是什么?

4: 在 Hacker News 的讨论中,开发者对 AGENTS.md 的主要争议点是什么?

A: 尽管标题声称 AGENTS.md 表现更好,但 HN 社区通常持有以下几种批判性观点:

  1. 可复现性与规模:有开发者质疑这种评估是否在特定的小规模数据集上有效。当技能数量增加到成百上千时,单纯的文档描述可能会变得难以维护,此时结构化的 Skills 可能更具优势。
  2. 调试难度:基于文档的代理行为往往像一个“黑盒”。如果代理执行错误,很难像调试代码一样去定位是哪一行文档描述导致了问题,而修改特定的 Skill 函数则相对直接。
  3. 延迟与成本:AGENTS.md 模式通常依赖模型进行更多的推理和文本生成,这可能导致比直接调用函数更高的 Token 消耗和延迟。

5: 对于开发者来说,现在应该转向 AGENTS.md 模式吗?

5: 对于开发者来说,现在应该转向 AGENTS.md 模式吗?

A: 这取决于你的应用场景。

如果你的应用场景是高度动态、需要复杂推理且步骤不固定的任务(例如全能助理、复杂的数据分析代理),采用 AGENTS.md 或类似的“角色+规则”驱动模式可能会带来更好的效果。

然而,如果你的应用场景是确定性强、对延迟和准确性要求极高的任务(例如特定的企业工作流自动化),传统的 Skills 或函数调用模式配合清晰的逻辑控制可能依然是最稳健的选择。目前的趋势是尝试将两者结合,即利用 AGENTS.md 来规划高层策略,利用 Skills 来执行具体的原子操作。


思考题

## 挑战与思考题

### 挑战 1: [简单]

问题**: 在传统的软件开发中,“函数”(Function)与 AI Agent 语境下的 “技能”(Skill)在定义和调用方式上有何本质区别?请列举出至少两点核心差异。

提示**: 请从输入输出的确定性、执行过程的自主性以及上下文感知能力这三个维度进行对比分析。思考传统函数是否具备“规划”能力。


引用

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



站内链接

相关文章