解锁AI智能体标准化流程:Strands Agent SOPs技术详解

本文介绍了AWS开源的Agent SOPs框架,这是一种用于定义AI智能体工作流的标准化Markdown格式。它通过自然语言指令结合RFC 2119约束,在代码定义的控制性与模型驱动的灵活性之间找到了平衡点,实现可靠且可复用的自动化流程。

引言 Strands Agent SOPs – AI智能体的自然语言工作流

现代AI可以编写代码、创作交响乐并解决复杂的推理问题。那么,为什么让它们可靠地执行你期望的任务仍然如此困难? 构建能够持续执行复杂任务的可靠AI智能体仍然充满挑战。虽然现代语言模型擅长推理和解决问题,但将这种能力转化为可预测的工作流通常需要复杂的状态机来协调智能体的行为。代码定义的工作流能最大程度地控制智能体的行为,但改变系统需要编写数百行代码来适应新的行为。这代表了开发智能体时控制-灵活性范围的一个极端。

在这个范围的另一端,模型驱动型智能体则完全摒弃了代码定义的行为,转而执行自己的协调。我们赋予智能体自主决定解决问题路径的能力,取代了数千行定义工作流的代码。模型驱动型智能体能够应对意外输入——其非确定性的本质使其能够灵活适应任何情况。然而,这种灵活性是有代价的:很难以可靠的方式引导智能体持续实现目标。

是否存在一种两全其美的方法呢?

认识 Agent SOPs

这便是Agent SOPs(标准操作程序):一种用于以自然语言定义AI智能体工作流的标准化Markdown格式,它充当了灵活性与控制之间的强大中间地带。这些自然语言指令集将复杂流程转化为可复用、可共享的工作流,适用于不同的AI系统和团队。通过结合结构化指导与赋予AI智能体强大能力的灵活性,Agent SOPs使团队能够将经过验证的工作流编码为可复用的模板,并在任何需要智能自动化的地方一致地应用它们。这一概念源自亚马逊内部构建者社区的创新,并因其引导智能体行为的潜力而在公司内迅速传播。

从内部创新到开源

在亚马逊,我们拥有一个由数万名构建者组成的充满活力的社区,他们积极尝试并在日常工作中创新AI的应用。这个社区涵盖了AWS服务团队、亚马逊零售运营、物流和研究团队,他们都秉持着围绕AI驱动开发工具进行快速实验和知识共享的文化。

当内部首次推出智能体化AI编码助手时,我们的构建者立即开始突破可能的界限。团队开始利用它们来自动化各种任务,从代码审查和文档生成到事件响应和系统监控。但随着采用规模的扩大,我们遇到了多个问题:

不一致的行为可能是最令人沮丧的挑战。同一个在开发过程中表现出色的智能体,在处理真实场景时却产生了截然不同的结果。没有结构化的指导,智能体在工具使用、任务优先级排序和输出格式方面做出不同的决策,导致不可预测的结果,削弱了信心并让用户感到沮丧。

提示词工程的复杂性构成了采用的另一个障碍。为复杂工作流制作有效的提示词需要深厚的领域知识和语言模型行为专长。团队花费数周时间完善复杂任务的提示词,结果却发现他们的指令无法很好地迁移到不同的模型或用例。开发者变得不愿意更新提示词,因为他们无法预测更改会如何影响输出,导致任何修改在(人工)评估完成前都需要经历漫长的延迟。

当意识到我们需要一种达到“准确定性”最佳平衡点的东西时,我们取得了突破:它既要有足够的结构以确保一致的结果,又要足够灵活以利用使AI智能体有价值的情报。这一见解引导我们的社区开发了Agent SOPs,这是一种用于定义AI智能体工作流的标准化Markdown格式,在可靠性与适应性之间取得了平衡。

我们的社区迅速采纳了这一概念,因为它解决了每个团队都面临的实际问题。团队发现,无需任何提示词工程专业知识,他们就能在几分钟内生成初始的自动化流程,创建出立即有用、易于理解且易于共享的工作流。这种结构化方法极大地减少了提示词开发的试错过程,同时保留了使AI自动化有价值的情报。团队可以更有信心地迭代SOP的特定行为而不破坏现有功能,使改进更快、更可预测。

如今,亚马逊团队在各种不同的用例中使用了数千个SOP,从代码审查和文档生成到事件响应和系统监控。一致的格式使得在团队之间共享成功方法变得容易,同时可以根据不同的环境和需求进行调整。最初作为解决提示词工程问题的简单方案,已成为在我们整个组织中普及AI专业知识的强大方式。

现在我们正在将Agent SOPs作为开源项目提供,因为我们相信这种方法可以使更广泛的AI开发社区受益。通过分享概念和实用示例,我们希望加速可靠AI工作流在整个行业的采用。

什么是 Agent SOPs?

Agent SOPs 使用具有以下关键特性的标准化 Markdown 格式,以实现来自 AI 智能体的可重复且可理解的行为:

  • 具有 RFC 2119 约束的结构化步骤 – 每个工作流步骤使用 RFC 2119 关键词,如 MUST、SHOULD 和 MAY,以在不使用刚性脚本的情况下提供对智能体行为的精确控制,确保可靠执行同时保留智能体的推理能力。
  • 参数化输入 – SOPs 接受参数来为不同的项目、团队或需求定制行为,而不是硬编码特定值。这将单次使用的提示词转变为灵活的模板,可以在广泛范围内应用,同时保持一致性。
  • 通过 AI 辅助实现轻松创作 – 团队可以在几分钟内创建新的 SOPs。编码智能体可以阅读 SOP 格式规范,并根据自然语言描述生成新的工作流,使得创作过程对任何人来说都是可访问的,无论其提示词工程专业知识如何。
  • 进度跟踪和可恢复性 – Agent SOPs 可以指示智能体在工作时记录其进度,从而易于理解正在发生的情况并在出现问题时恢复。这种透明度对于调试提示词和建立开发者对 AI 自动化的信任至关重要。

该格式简单但高度通用,适用于任何接受自然语言指令的地方。像 Strands 这样的智能体框架可以将 SOPs 嵌入为系统提示词,像 Kiro 和 Cursor 这样的开发工具可以使用它们来实现结构化工作流,而像 Claude 和 GPT-4 这样的 AI 模型可以直接执行它们。虽然不同模型在精确遵循指令的能力上可能有所不同,但标准化格式为工作流自动化提供了一致的基础。

演练:运行代码库摘要 SOP

让我们通过运行 codebase-summary SOP 来演练 Agent SOPs 的实际工作方式。在这个例子中,我们将使用 Kiro CLI,但你可以在任何支持模型上下文协议 (MCP) 服务器的 AI 智能体中尝试此演练。

首先,安装 strands-agents-sops Python 包:

1
pip install strands-agents-sops

接下来,更新你的 MCP 服务器配置以包含 strands-agents-sops MCP 服务器:

1
2
3
4
5
6
7
8
{
  "mcpServers" : {
    "strands-agents-sops" : {
      "command" : "strands-agents-sops",
      "args" : []
    }
  }
}

这个 MCP 服务器使 SOPs 作为 MCP 提示词可用,可以被你的 AI 助手调用。在 Kiro CLI 中,我们可以确认预打包的 Agent SOPs 现在可以通过 /prompts 命令使用:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[strands-agents-sop] > /prompts


Usage: You can use a prompt by typing '@<prompt name> [...args]'


Prompt                               Description                              Arguments (* = required)
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
strands-agents-sop (MCP):
- code-assist                        This sop guides the implementation of... user_input
- code-task-generator                This sop generates structured code ta... user_input
- codebase-summary                   This sop analyzes a codebase and gene... user_input
- pdd                                This sop guides you through the proce... user_input

接下来,我们调用 codebase-summary SOP:

1
@codebase-summary

Kiro CLI 读取 SOP 并询问必需和可选参数:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
> I'll help you run the codebase summary SOP. Let me gather the required parameters first.

Please provide the following parameters for the codebase analysis:

Required Parameters:
• **codebase_path**: Path to the codebase to analyze (default: current directory)

Optional Parameters:
• **output_dir**: Directory where documentation will be stored (default: ".sop/summary")
• **consolidate**: Whether to create a consolidated documentation file (default: false)

• **consolidate_prompt**: Description of how to structure the consolidated content
• **check_consistency**: Whether to check for inconsistencies across documents (default: true)
• **check_completeness**: Whether to identify areas lacking sufficient detail (default: true)
• **update_mode**: Whether to update existing documentation based on recent commits (default: false)

You can provide these parameters in any of these ways:
• Direct input in your response
• File path containing the configuration
• Just specify what you want to change from defaults

What parameters would you like to use for this codebase analysis?

我们以自然语言提供请求的参数。在这个例子中,我们将在 strands-agents-sop 的 Python 源代码上运行这个 SOP:

1
2
[strands-agents-sop] > codebase_path: ~/github/agent-sop/python
consolidate: true

智能体然后遵循 SOP 的结构化步骤,从设置目录结构开始。你可以看到智能体验证代码库路径是否存在,因为 SOP 约束规定智能体必须在继续之前验证路径存在:

1
2
3
4
5
6
7
## Step 1: Setup and Directory Structure

...

> ✅ Validated codebase path exists and is accessible
✅ Created directory .summary/
✅ Full analysis will be performed (not in update mode)
 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
## Step 6: Summary and Next Steps

## Summary

 Documentation generation complete!

### What Was Accomplished

 **Analyzed** Python package with 4 core modules and 5 SOP files
 **Generated** comprehensive documentation ecosystem in .summary/ directory:
   index.md: Knowledge base index with AI assistant instructions
   codebase_info.md: Project overview and structure
   architecture.md: System design and patterns
   components.md: Module responsibilities and functionality
   interfaces.md: APIs, CLI, and integration points
   data_models.md: SOP format and data structures
   workflows.md: Build process and operational procedures
   dependencies.md: External requirements and usage
   review_notes.md: Quality assessment and recommendations

 **Identified** system as modular CLI tool with MCP server capabilities

### Key Findings

 **Architecture**: Clean modular design with dynamic SOP loading
 **Integration**: Multiple interfaces (Python imports, MCP protocol, CLI, Anthropic skills)
 **Content Management**: File-based SOP storage with build-time synchronization
 **Dependencies**: Minimal external requirements (only MCP library)
 **Extensibility**: Easy to add new SOPs without code changes

<summary continues...>

使用这个 SOP,通过调用一个提示词,我们的智能体无需额外的人工交互就能生成全面的代码库文档。SOP 的约束确保了结构的一致性和完整性,而智能体的情报则使内容适应了特定代码库的特性。

SOP 链式调用:构建完整的开发工作流

SOP 链式调用使智能体能够通过将专注的 SOPs 连接成智能序列来执行复杂的多阶段工作流。初始的 SOP 仓库包含一个完整的开发工作流链,展示了 SOPs 如何协同工作,带你从理解现有代码库到实现新功能:

  • codebase-summary 分析代码库并生成全面的文档,帮助人类和 AI 智能体理解系统架构、组件和工作流。这个 SOP 通常作为基础,为后续的自动化提供上下文。
  • pdd 实现了“提示驱动开发”方法(Kiro 的规范驱动开发的内部前身),将用户从粗略的想法带入系统的研究、需求澄清、解决方案设计和实施规划。在理解你的代码库后,使用它来处理复杂的功能规划。
  • code-task-generator 将高级需求分解为可操作的开发任务,展示了 SOPs 如何处理需要理解上下文并就范围和优先级做出明智决策的创造性和分析性工作。可以将其作为独立工具使用,或与 pdd SOP 的输出结合使用。
  • code-assist 实现了测试驱动开发工作流,引导智能体通过结构化的探索、规划、编码和提交阶段进行功能实现。这个 SOP 展示了如何平衡自动化执行与人工监督。

SOP 链式调用通过工件交接实现:codebase-summary 创建 pdd 在设计功能时引用的文档文件,pdd 产生 code-task-generator 用来创建任务列表的规范,而 code-assist 则基于先前建立的架构和需求完整认知来实现这些任务。每个 SOP 将其发现浓缩为专注的输出,这些输出成为下一步的简化输入。

这种链式方法实现了远超单个智能体处理能力的工作流。与其用一个智能体处理整个开发生命周期——导致其失去重点并偏离预期行为——你可以将复杂问题分解为可管理的部分。在开发 Agent SOPs 时,这种模块化方法使你能够独立构建和测试每个组件,然后将它们链接成复杂的工作流。顺序结构消除了冗余工作(无需重复的代码库分析或信息收集),同时保持了使智能体有价值的智能适应性,最终实现自动化规模,这对于整体式方法来说是难以企及的。

Agent SOPs 集成

Agent SOPs 并不局限于特定的智能体产品,可以在许多环境中工作:

Strands Agents Agent SOPs 可以用作你的 Strands 智能体的系统提示词。只需安装 PyPI 包,然后将一个 SOP 导入为智能体的系统提示词。这里有一个 code-assist CLI 智能体的例子:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from strands import Agent
from strands_tools import editor, shell
from strands_agents_sops import code_assist

agent = Agent(
  system_prompt=code_assist,
  tools=[editor, shell]
)

agent("Start code-assist sop")

while(True):
  agent(input("\nInput: "))

执行这个 Python 脚本后,你可能会看到类似这样的输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
I'll help you implement a code task using the test-driven development workflow. Let me gather the required parameters to get started.

Please provide the following information:

**Required:**
- **task_description**: What would you like to implement? (You can provide a detailed specification, requirements, acceptance criteria, or even a rough idea that we'll refine together. You can also provide a file path or URL if the description is in a document)

**Optional:**
- **additional_context**: Any supplementary information that would help with understanding the implementation context (can also be a file path or URL)
- **documentation_dir**: Directory for planning documents (default: ".sop/planning")
- **repo_root**: Root directory of the repository (default: current working directory)
- **task_name**: A short, descriptive name for the task (I'll generate one if not provided)
- **mode**: Interaction mode:
  - "interactive" (default): I'll collaborate with you and ask for confirmation at each step
  - "auto": I'll execute autonomously after setup with no further interaction required

Please provide these details so we can begin the implementation process.

基于前面的 codebase-summary 示例,你可以创建一个 Strands 智能体来自动保持你的文档更新:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from strands import Agent
from strands_tools import editor, shell, git
from strands_agents_sops import codebase_summary

doc_agent = Agent(
 system_prompt=codebase_summary,
 tools=[editor, shell, git]
)

# Run in update mode to refresh docs based on recent commits
doc_agent("Run codebase-summary with update_mode: true")

这使得文档维护无需人工干预即可持续进行,随着新的更改自动更新你的代码库摘要。

Claude Skills Agent SOPs 与 Claude 的 Skills 系统完全兼容,允许你向 Claude 传授可以跨对话和项目复用的专业化工作流。

每个 Agent SOP 都可以自动转换为 Anthropic 的 Skills 格式:

1
2
3
4
5
# Generate Skills format from SOPs
strands-agents-sops skills

# Or specify custom output directory
strands-agents-sops skills --output-dir my-skills

这将创建单独的技能目录:

1
2
3
4
5
6
7
8
9
skills/
├── code-assist/
│   └── SKILL.md
├── codebase-summary/
│   └── SKILL.md
├── code-task-generator/
│   └── SKILL.md
└── pdd/
    └── SKILL.md

然后,你可以遵循 Anthropic 的文档开始将这些 SOPs 作为技能使用。

其他产品集成 Agent SOPs 适用于各种 AI 开发环境。虽然不同的 LLMs 在指令遵循能力上可能有所不同,但标准化格式在不同平台上提供了一致的结果。以下是团队使用 Agent SOPs 的其他方式:

  • Kiro IDE 引导文件和钩子 – SOPs 可以集成到 Kiro IDE 的工作流系统中,为特定的开发任务提供结构化指导。
  • Claude Code 和 Cursor 中的自定义命令 – SOPs 可以作为很好的自定义命令,为常见的开发工作流调用特定的 SOPs。
  • Python 模块 – 通过编程方式访问,可以集成到自定义应用程序和更大的自动化系统中。

创作 Agent SOPs

Agent SOPs 最强大的方面之一是通过对话式创作来创建它们是多么容易。我们提供了一个 Agent SOP 格式规则,可以引导 AI 模型捕捉你的自然工作流描述并将其转换为标准化格式。让我们通过创作一个用于处理会议记录的简单 SOP 来说明。

根据你使用的 AI 应用程序,你可以将 Agent SOP 格式作为引导文件或规则安装。但是,出于本次演练的目的,我们让 Kiro CLI 直接读取 Agent SOP 规则:

1
2
3
4
[strands-agents-sop] > Run `strands-agents-sops rule`
...
> The command executed successfully and displayed the Agent SOP format specification.
...

现在 Kiro CLI 理解了 Agent SOP 格式,我们只需以自然语言向我们的 AI 助手描述我们想要什么:

1
[strands-agents-sop] > I want to create an Agent SOP that takes meeting notes and generates action items, decisions made, and follow-up tasks with assigned owners and deadlines.

可以访问 SOP 格式规范的 AI 助手在几秒钟内生成第一版 Agent SOP。它创建了适当的参数,将工作流构建成逻辑步骤,并添加了 RFC 2119 约束以使 SOP 可靠且可重复。

由于它是用自然语言编写的,Agent SOP 易于阅读。我们可以在单独的会话中尝试运行它,然后回来与我们的智能体聊天,迭代改进 SOP。例如,我们可以改进这个 SOP,使用特定的文件夹结构,在会议记录文件夹和待办事项文件夹中记录行动项,并将做出的决定添加到项目特定的决策日志中。

同样的方法适用于任何你想要自动化的工作流。只需用自然语言描述流程,然后让 AI 辅助处理 SOP 创作的技术细节。请注意,如果你希望你的 SOP 使用特定的 MCP 工具,你需要在创作 SOP 时加载这些 MCP 服务器。

结论

Agent SOPs 解决了限制 AI 自动化采用的根本矛盾——可靠性与灵活性之间的张力。通过结合结构化指导和智能推理,它们使团队能够快速捕获专业知识,并在不同的 AI 系统和环境中一致地应用这些知识。使 Agent SOPs 在亚马逊取得成功的“半确定性”最佳平衡点现已提供给全球客户,用于构建更可靠、能力更强的 AI 系统。

准备开始了吗?

  • 访问 Agent SOPs GitHub 仓库 获取完整文档和示例
  • 安装包:pip install strands-agents-sops
  • 启动 MCP 服务器:strands-agents-sops
  • 在你的下一个项目上尝试 codebase-summary SOP
  • 将 SOPs 链接起来以实现复杂的开发工作流

我们期待看到客户如何使用 Agent SOPs 解决他们独特的自动化挑战,以及更广泛的社区会产生哪些创新工作流。

作者介绍

James Hood James 是一名首席软件工程师,拥有 16 年亚马逊经验,在 AWS 和商店业务方面均有涉猎。他创立了亚马逊内部 AI “超级用户”社区,现在作为亚马逊软件构建者体验组织的一部分,专注于将 AI 集成到内部构建者工具中。James 热衷于通过文化转型和智能工具的结合来加速生产力。

Nicholas Clegg Nick 是 AWS 智能体 AI 团队的高级软件工程师,负责开发 Strands Agents SDK。他将构建智能体编码产品的经验与赋能开发者创建下一代 AI 智能体应用程序的重点相结合。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计