Doramagic 项目包 · 项目说明书

agent-squad 项目

灵活且强大的框架,用于管理多个 AI 智能体并处理复杂对话

项目概览

Agent Squad(原名 Multi-Agent Orchestrator)是一个用于管理多个 AI Agent 并处理复杂对话的灵活框架。该框架能够根据上下文和内容将查询动态路由到最合适的 Agent,同时跨多个 Agent 维护对话上下文以保证交互的连贯性 [README.md:1-100]()。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 3.1 Agent 类型与提供商

继续阅读本节完整说明和来源证据。

章节 3.2 BedrockLLMAgent 与推理能力

继续阅读本节完整说明和来源证据。

章节 3.3 BedrockInlineAgent 与工具处理

继续阅读本节完整说明和来源证据。

一、项目定位与核心价值

Agent Squad(原名 Multi-Agent Orchestrator)是一个用于管理多个 AI Agent 并处理复杂对话的灵活框架。该框架能够根据上下文和内容将查询动态路由到最合适的 Agent,同时跨多个 Agent 维护对话上下文以保证交互的连贯性 README.md:1-100

项目的核心价值体现在以下几个方面:

  • 智能意图分类:通过 Classifier 组件分析用户输入,并结合 Agent 特征与历史对话选择最合适的处理单元 README.md:80-100
  • 双语言实现:框架同时提供 Python 与 TypeScript 两种实现,便于不同技术栈的团队集成 README.md:60-80
  • 灵活的响应模式:支持流式(streaming)和非流式(non-streaming)两种响应方式 README.md:60-80
  • 可扩展架构:允许用户轻松集成新 Agent 或自定义现有 Agent,并提供多种预构建组件 README.md:60-80
  • 通用部署能力:可运行于 AWS Lambda、本地环境或任何云平台 README.md:60-80

该项目适用于从简单聊天机器人到复杂 AI 系统的多种应用场景。

二、高层架构与处理流程

Agent Squad 的核心处理流程由四个步骤组成,如下 Mermaid 图所示:

flowchart TD
    A[用户输入] --> B[Classifier 分类器]
    B --> C{选择最合适的 Agent}
    C --> D[目标 Agent 处理]
    D --> E[更新对话历史]
    E --> F[返回响应给用户]
    B -.使用.-> G[Agent 特征]
    B -.使用.-> H[对话历史]
  1. 用户输入首先由 Classifier 进行分析 README.md:80-100
  2. Classifier 利用 Agent 特征(Agents' Characteristics)和历史对话(Agents' Conversation history)选择最合适的 Agent README.md:80-100
  3. 被选中的 Agent 处理用户输入 README.md:80-100
  4. 编排器(Orchestrator)保存对话、更新历史,然后将响应返回给用户 README.md:80-100

在 TypeScript 端,分类器提示模板要求模型提取意图、关键实体、置信度以及是否属于后续对话(Is Followup)等结构化字段 typescript/src/classifiers/classifier.ts:1-50。当用户输入简短回答(如"yes""ok")时,会被视为后续对话并保持上一次的 Agent 选择 typescript/src/classifiers/classifier.ts:40-50

三、核心组件与扩展能力

3.1 Agent 类型与提供商

项目内置了多种 Agent 实现,Python 端通过 AgentTypesAgentProviderType 等枚举统一抽象了不同模型提供商的接入方式 python/src/agent_squad/types/__init__.py:1-30。预置模型常量包括:

模型常量说明
BEDROCK_MODEL_ID_CLAUDE_3_HAIKUBedrock 上的 Claude 3 Haiku
BEDROCK_MODEL_ID_CLAUDE_3_SONNETBedrock 上的 Claude 3 Sonnet
BEDROCK_MODEL_ID_CLAUDE_3_5_SONNETBedrock 上的 Claude 3.5 Sonnet
BEDROCK_MODEL_ID_LLAMA_3_70BBedrock 上的 Llama 3 70B
OPENAI_MODEL_ID_GPT_O_MINIOpenAI GPT-o-mini
ANTHROPIC_MODEL_ID_CLAUDE_3_5_SONNETAnthropic Claude 3.5 Sonnet

资料来源:python/src/agent_squad/types/__init__.py:3-15

3.2 BedrockLLMAgent 与推理能力

BedrockLLMAgent 是其中一个核心实现,它支持流式响应并在响应块中区分 textreasoningContent(推理内容)python/src/agent_squad/agents/bedrock_llm_agent.py:1-50。当检测到 reasoningContent 中的文本时,会通过 AgentStreamResponse(thinking=...) 单独输出思考过程,便于上层应用展示链式推理 python/src/agent_squad/agents/bedrock_llm_agent.py:10-30。同时它还支持工具调用(toolUse)的解析与多轮执行 python/src/agent_squad/agents/bedrock_llm_agent.py:40-60

3.3 BedrockInlineAgent 与工具处理

BedrockInlineAgent 允许在运行时通过 inline_agent_creation 工具动态创建子 Agent。其处理器 inline_agent_tool_handler 会解析 action_group_namesknowledge_basesdescriptionuser_request 等参数 python/src/agent_squad/agents/bedrock_inline_agent.py:1-40。这与社区中 #339 提出的"为 Anthropic 和 Bedrock 增加 think 工具"的需求相呼应——通过 reasoningContent 字段已能提供结构化思考空间 python/src/agent_squad/agents/bedrock_llm_agent.py:15-30

3.4 内容过滤与检索器

TypeScript 端提供了 ComprehendFilterAgent,使用 Amazon Comprehend 进行情感分析、PII 检测和毒性检测,可通过 sentimentThresholdtoxicityThreshold 等阈值进行调优 typescript/src/agents/comprehendFilterAgent.ts:1-40。此外,框架定义了抽象的 Retriever 基类,子类必须实现 retrieveAndGenerate(text) 方法 typescript/src/retrievers/retriever.ts:1-20

四、典型应用场景与社区关注点

4.1 电商与结构化输出示例

电商支持模拟器(ecommerce-support-simulator)展示了三个核心 Agent:订单管理(Claude 3 Sonnet + 订单查询/物流跟踪/退货处理工具)、产品信息(Claude 3 Haiku + 知识库检索)以及人工坐席(基于 SQS)examples/ecommerce-support-simulator/README.md:1-60text-2-structured-output 示例则演示了如何将自然语言转换为结构化 JSON 用于产品搜索 examples/text-2-structured-output/README.md:1-30

4.2 可观测性集成

社区在 #152 中提出了将追踪数据发送到 Langfuse 等可观测性框架的需求。langfuse-demo 示例给出了完整方案:追踪整个用户对话、为每个 Agent 交互创建 Span,并记录分类决策、置信度、Token 使用和响应时间 examples/langfuse-demo/readme.md:1-30。这表明框架本身已具备基础可观测性扩展点。

4.3 模型上下文协议(MCP)

社区在 #299 中询问 MCP 支持情况,目前仓库尚未正式集成 MCP Server,但 BedrockInlineAgent 的工具处理机制为后续接入 MCP 提供了天然的扩展点——只需在工具处理器中分发到 MCP 客户端即可 python/src/agent_squad/agents/bedrock_inline_agent.py:15-40

See Also

  • examples/README.md — 全部示例应用索引
  • CONTRIBUTING.md — 贡献与 Issue-First 策略
  • LICENSE — Apache 2.0 许可证

资料来源:python/src/agent_squad/types/__init__.py:3-15

Src 模块

Src 模块是 Agent Squad(曾用名 Multi-Agent Orchestrator)框架的核心源代码目录,分别以 Python 和 TypeScript 双语言实现。该模块承载了整个多代理编排系统的核心抽象,包括代理(Agent)实现、分类器(Classifier)、检索器(Retriever)以及共享类型定义。根据项目仓库根目录 README.md 描述,框...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 BedrockLLMAgent

继续阅读本节完整说明和来源证据。

章节 BedrockInlineAgent

继续阅读本节完整说明和来源证据。

章节 BedrockTranslatorAgent

继续阅读本节完整说明和来源证据。

概述

Src 模块是 Agent Squad(曾用名 Multi-Agent Orchestrator)框架的核心源代码目录,分别以 PythonTypeScript 双语言实现。该模块承载了整个多代理编排系统的核心抽象,包括代理(Agent)实现、分类器(Classifier)、检索器(Retriever)以及共享类型定义。根据项目仓库根目录 README.md 描述,框架采用「分类器选取代理 → 代理处理 → 会话存储」的流程,所有这些能力均由 src/ 下的源码提供。

框架源码采用分层组织方式:

语言主要子目录职责
Pythonpython/src/agent_squad/agents/各类 Agent 实现(Bedrock、Anthropic、Inline、Translator 等)
Pythonpython/src/agent_squad/types/共享数据类型与会话消息结构
TypeScripttypescript/src/agents/与 Python 对应的 Agent 实现
TypeScripttypescript/src/classifiers/意图分类器抽象与实现
TypeScripttypescript/src/retrievers/知识库检索抽象

Python 端 Agent 实现

python/src/agent_squad/agents/ 目录提供了多种预构建 Agent,所有类均继承自基类 Agent,并实现统一的对话接口。

BedrockLLMAgent

bedrock_llm_agent.py 是最常用的代理实现,负责调用 AWS Bedrock 上的 Claude、Llama 等大模型。它通过 converse 流式接口处理工具调用(Tool Use),并将模型返回的 reasoningContent 抽取为 thinking 字段单独暴露,便于上层做链式思考渲染。资料来源:python/src/agent_squad/agents/bedrock_llm_agent.pyelif "reasoningContent" in delta: 段落实现了对 Anthropic 思考内容的区分。该能力与社区 #339 「Add "think" tool capability」诉求契合——框架已原生支持 thinking 字段透出。

BedrockInlineAgent

bedrock_inline_agent.py 实现了对 Bedrock Inline Agent 能力的封装,允许 Agent 在运行时动态创建子代理。该文件在初始化时构建 prompt_template,将 knowledge_bases 与动作组(Action Group)注入到系统提示中,并在 inline_agent_tool_handler 中拦截 inline_agent_creation 工具调用,从而递归派生子代理。资料来源:python/src/agent_squad/agents/bedrock_inline_agent.pyif tool_use_name == "inline_agent_creation": 分支展示了工具委派流程。该模块的 enableTrace 标志位为后续接入 Langfuse 等可观测性平台提供了切入点(社区 #152 长期关注此方向)。

BedrockTranslatorAgent

bedrock_translator_agent.py 是一个轻量级、面向单一任务(翻译)的代理示例。它通过强制工具选择(toolChoice.tool.name = "Translate")让模型把结果以结构化 JSON 输出,从而保证翻译结果的可解析性。资料来源:python/src/agent_squad/agents/bedrock_translator_agent.py'toolChoice': {"tool": {"name": "Translate"}} 段落表明该代理使用了「强制工具调用」模式。

TypeScript 端实现

TypeScript 版本与 Python 保持 API 语义对齐,便于跨语言迁移。

Bedrock LLM Agent(TS)

typescript/src/agents/bedrockLLMAgent.ts 中的 formatTools 方法负责把框架内部的 AgentTools 数据结构映射成 Bedrock toolSpec 格式;getToolNamegetToolId 则提供对工具调用块的解析能力。资料来源:typescript/src/agents/bedrockLLMAgent.tsprivate formatTools(tools: AgentTools) 方法实现了 Bedrock 工具规范的格式化逻辑。

Classifier 抽象

typescript/src/classifiers/classifier.ts 定义了分类器的提示词模板,要求模型输出 selected_agentconfidenceIs Followup 等结构化字段,并对简短回复(如「yes」「ok」)统一视作追问,保持会话连续性。资料来源:typescript/src/classifiers/classifier.tsFor short responses like "yes", "ok"... 段落说明了追问处理规则。

Retriever 抽象

typescript/src/retrievers/retriever.ts 是一个抽象基类,定义了 retrieveAndGenerate(text) 接口,所有具体的 Knowledge Base 检索器(如 AmazonKnowledgeBasesRetriever)必须实现该方法。资料来源:typescript/src/retrievers/retriever.tsabstract retrieveAndGenerate(text: any): Promise<any>; 表明这是所有检索器的统一契约。

类型系统与会话消息

python/src/agent_squad/types/__init__.py 集中导出了框架的公共类型,包括:

  • ConversationMessage:对话消息
  • ParticipantRole:参与方角色(USER / ASSISTANT / SYSTEM / TOOL)
  • TimestampedMessage:带时间戳的消息
  • AgentTypes:代理类型枚举
  • AgentSquadConfigAgentProviderType:编排器配置
  • 多个模型 ID 常量(如 BEDROCK_MODEL_ID_CLAUDE_3_5_SONNETOPENAI_MODEL_ID_GPT_O_MINIANTHROPIC_MODEL_ID_CLAUDE_3_5_SONNET

资料来源:python/src/agent_squad/types/__init__.py__all__ 列表完整暴露了上述公共 API。

整体数据流

下图展示了从用户输入到代理响应的完整数据流:

sequenceDiagram
    participant U as 用户
    participant C as Classifier
    participant A as Agent
    participant T as Tool/KB
    U->>C: 提交消息 + 历史
    C-->>U: 返回 selected_agent + confidence
    U->>A: 转发至选定 Agent
    A->>T: 可选调用 Tool / retrieveAndGenerate
    T-->>A: 返回工具结果或检索结果
    A-->>U: 流式输出(含 thinking / text)

参见

资料来源:python/src/agent_squad/types/__init__.py__all__ 列表完整暴露了上述公共 API。

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

medium 可能修改宿主 AI 配置

安装可能改变本机 AI 工具行为,用户需要知道写入位置和回滚方法。

medium 能力判断依赖假设

假设不成立时,用户拿不到承诺的能力。

medium 维护活跃度未知

新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。

medium 存在评分风险

风险会影响是否适合普通用户安装。

Pitfall Log / 踩坑日志

项目:2FastLabs/agent-squad

摘要:发现 7 个潜在踩坑项,其中 0 个为 high/blocking;最高优先级:配置坑 - 可能修改宿主 AI 配置。

1. 配置坑 · 可能修改宿主 AI 配置

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主,或安装命令涉及用户配置目录。
  • 对用户的影响:安装可能改变本机 AI 工具行为,用户需要知道写入位置和回滚方法。
  • 证据:capability.host_targets | https://github.com/2FastLabs/agent-squad | host_targets=claude

2. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 证据:capability.assumptions | https://github.com/2FastLabs/agent-squad | README/documentation is current enough for a first validation pass.

3. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 证据:evidence.maintainer_signals | https://github.com/2FastLabs/agent-squad | last_activity_observed missing
  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 证据:downstream_validation.risk_items | https://github.com/2FastLabs/agent-squad | no_demo; severity=medium

5. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 证据:risks.scoring_risks | https://github.com/2FastLabs/agent-squad | no_demo; severity=medium

6. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 证据:evidence.maintainer_signals | https://github.com/2FastLabs/agent-squad | issue_or_pr_quality=unknown

7. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 证据:evidence.maintainer_signals | https://github.com/2FastLabs/agent-squad | release_recency=unknown

来源:Doramagic 发现、验证与编译记录