Skip to content

Agent 设计模式

本文档整理主流 Agent 设计模式,帮助选择合适的架构。

核心模式概览

模式核心思想适用场景复杂度
ReAct推理 + 行动循环工具调用、信息检索
Reflexion自我反思改进复杂任务、代码生成
Plan-and-Execute先规划后执行多步骤任务
Tool Use专注工具调用API 集成、数据处理
Multi-Agent多 Agent 协作大型复杂系统

模式 1:ReAct(Reasoning + Acting)

核心思想

将推理(Reasoning)和行动(Acting)交替进行,通过"思考-行动-观察"循环解决问题。

工作流程

txt
┌─────────────────────────────────────────────────────┐
│                    ReAct 循环                        │
├─────────────────────────────────────────────────────┤
│                                                     │
│  ┌─────────┐    ┌─────────┐    ┌─────────┐         │
│  │ 思考    │ →  │ 行动    │ →  │ 观察    │         │
│  │ Thought │    │ Action  │    │Observe  │         │
│  └─────────┘    └─────────┘    └─────────┘         │
│       ↑                               │             │
│       └───────────────────────────────┘             │
│                                                     │
└─────────────────────────────────────────────────────┘

实现示例

python
class ReActAgent:
    def __init__(self, model, tools):
        self.model = model
        self.tools = tools
        self.max_iterations = 10

    def run(self, question: str) -> str:
        context = f"Question: {question}\n"

        for i in range(self.max_iterations):
            # 1. 思考阶段
            thought = self.model.generate(
                context + "\nThought:",
                stop=["Action:"]
            )
            context += f"\nThought: {thought}"

            # 2. 判断是否需要行动
            if "I know the answer" in thought or "Final Answer:" in thought:
                return self._extract_answer(thought)

            # 3. 行动阶段
            action = self.model.generate(
                context + "\nAction:",
                stop=["Observation:"]
            )
            context += f"\nAction: {action}"

            # 4. 执行工具
            observation = self._execute_action(action)
            context += f"\nObservation: {observation}"

        return "Max iterations reached without answer"

    def _execute_action(self, action: str) -> str:
        """执行工具调用"""
        tool_name, tool_input = self._parse_action(action)
        if tool_name in self.tools:
            return self.tools[tool_name].run(tool_input)
        return f"Unknown tool: {tool_name}"

    def _extract_answer(self, text: str) -> str:
        """提取最终答案"""
        if "Final Answer:" in text:
            return text.split("Final Answer:")[-1].strip()
        return text

最佳实践

yaml
ReAct 配置建议:
  最大迭代次数: 5-10
  思考引导:
    - 我需要先了解...
    - 让我搜索一下...
    - 根据观察结果...
    - 我现在可以回答了...

  工具设计:
    - 每个工具只做一件事
    - 输出格式清晰
    - 包含错误处理

  停止条件:
    - 找到最终答案
    - 达到最大迭代次数
    - 连续失败 3 次

适用场景

  • ✅ 需要外部信息检索的任务
  • ✅ 需要多步推理的任务
  • ✅ 工具调用场景
  • ❌ 简单问答(过度设计)
  • ❌ 实时性要求极高的场景

模式 2:Reflexion(自我反思)

核心思想

让 Agent 在执行后进行自我反思,根据反思结果改进后续尝试。

工作流程

txt
┌─────────────────────────────────────────────────────┐
│                  Reflexion 循环                      │
├─────────────────────────────────────────────────────┤
│                                                     │
│  ┌─────────┐    ┌─────────┐    ┌─────────┐         │
│  │ 执行    │ →  │ 反思    │ →  │ 改进    │         │
│  │ Execute │    │Reflect  │    │ Improve │         │
│  └─────────┘    └─────────┘    └─────────┘         │
│       ↑              │             │                │
│       └──────────────┴─────────────┘                │
│                                                     │
└─────────────────────────────────────────────────────┘

实现示例

python
class ReflexionAgent:
    def __init__(self, model, max_attempts=3):
        self.model = model
        self.max_attempts = max_attempts

    def run(self, task: str) -> tuple[str, list]:
        memory = []

        for attempt in range(self.max_attempts):
            # 1. 执行任务
            result = self._execute(task, memory)

            # 2. 评估结果
            evaluation = self._evaluate(task, result)

            if evaluation["success"]:
                return result, memory

            # 3. 反思失败原因
            reflection = self._reflect(task, result, evaluation)
            memory.append({
                "attempt": attempt + 1,
                "result": result,
                "evaluation": evaluation,
                "reflection": reflection
            })

        return result, memory

    def _execute(self, task: str, memory: list) -> str:
        """基于历史反思执行任务"""
        context = f"Task: {task}\n"

        if memory:
            context += "\nPrevious attempts and reflections:\n"
            for m in memory:
                context += f"Attempt {m['attempt']}:\n"
                context += f"Result: {m['result']}\n"
                context += f"Issue: {m['evaluation']['issue']}\n"
                context += f"Reflection: {m['reflection']}\n"

        context += "\nNew attempt:"
        return self.model.generate(context)

    def _evaluate(self, task: str, result: str) -> dict:
        """评估执行结果"""
        prompt = f"""
        Task: {task}
        Result: {result}

        Evaluate the result:
        1. Is the task completed successfully? (yes/no)
        2. What is the main issue if not successful?
        3. What score would you give? (0-10)

        Output in JSON format.
        """
        return self.model.generate_json(prompt)

    def _reflect(self, task: str, result: str, evaluation: dict) -> str:
        """反思失败原因"""
        prompt = f"""
        Task: {task}
        Result: {result}
        Evaluation: {evaluation}

        Reflect on why this attempt failed and what could be improved:
        1. What was the root cause of the failure?
        2. What assumptions were wrong?
        3. What should be done differently next time?
        """
        return self.model.generate(prompt)

最佳实践

yaml
Reflexion 配置建议:
  最大尝试次数: 3-5
  反思提示:
    - 为什么这次失败了?
    - 哪些假设是错误的?
    - 下次应该怎么做?

  记忆管理:
    - 只保留失败的反思
    - 限制记忆条数(最近 5 次)
    - 总结共同模式

  适用任务:
    - 代码生成
    - 数学推理
    - 复杂规划

适用场景

  • ✅ 代码生成和调试
  • ✅ 数学问题求解
  • ✅ 复杂推理任务
  • ✅ 需要迭代的创作任务
  • ❌ 简单分类任务
  • ❌ 实时性要求高的场景

模式 3:Plan-and-Execute

核心思想

将复杂任务分解为计划阶段和执行阶段,先制定完整计划,再逐步执行。

工作流程

txt
┌─────────────────────────────────────────────────────┐
│              Plan-and-Execute 流程                   │
├─────────────────────────────────────────────────────┤
│                                                     │
│  阶段 1:规划                                        │
│  ┌─────────────────────────────────────┐           │
│  │ 任务 → 分析 → 分解 → 计划            │           │
│  └─────────────────────────────────────┘           │
│                       ↓                             │
│  阶段 2:执行                                        │
│  ┌─────────────────────────────────────┐           │
│  │ 步骤1 → 步骤2 → 步骤3 → ... → 完成   │           │
│  └─────────────────────────────────────┘           │
│                       ↓                             │
│  阶段 3:验证                                        │
│  ┌─────────────────────────────────────┐           │
│  │ 检查结果 → 必要时重新规划             │           │
│  └─────────────────────────────────────┘           │
│                                                     │
└─────────────────────────────────────────────────────┘

实现示例

python
class PlanAndExecuteAgent:
    def __init__(self, planner, executor, verifier):
        self.planner = planner
        self.executor = executor
        self.verifier = verifier

    def run(self, task: str) -> dict:
        # 1. 规划阶段
        plan = self._create_plan(task)

        # 2. 执行阶段
        results = []
        for step in plan["steps"]:
            result = self._execute_step(step, results)
            results.append(result)

            # 检查是否需要重新规划
            if result.get("needs_replanning"):
                plan = self._replan(task, results)

        # 3. 验证阶段
        verification = self._verify(task, results)

        return {
            "plan": plan,
            "results": results,
            "verification": verification
        }

    def _create_plan(self, task: str) -> dict:
        """创建执行计划"""
        prompt = f"""
        Task: {task}

        Create a step-by-step plan to complete this task.
        Each step should be:
        1. Atomic (can be executed independently)
        2. Verifiable (can check if completed)
        3. Ordered (clear sequence)

        Output as JSON with format:
        {{
            "steps": [
                {{"id": 1, "description": "...", "tools": [...]}},
                ...
            ],
            "estimated_complexity": "low|medium|high",
            "dependencies": [[1, 2], [2, 3], ...]
        }}
        """
        return self.planner.generate_json(prompt)

    def _execute_step(self, step: dict, previous_results: list) -> dict:
        """执行单个步骤"""
        context = {
            "step": step,
            "previous_results": previous_results
        }
        return self.executor.execute(context)

    def _verify(self, task: str, results: list) -> dict:
        """验证最终结果"""
        return self.verifier.verify(task, results)

    def _replan(self, task: str, results: list) -> dict:
        """重新规划"""
        prompt = f"""
        Task: {task}
        Completed steps: {results}

        The plan needs to be adjusted. Create a new plan for the remaining work.
        """
        return self.planner.generate_json(prompt)

最佳实践

yaml
Plan-and-Execute 配置建议:
  计划粒度:
    - 每个步骤可独立验证
    - 单个步骤不超过 10 分钟
    - 步骤之间依赖关系明确

  执行策略:
    - 串行执行:依赖关系复杂时
    - 并行执行:独立步骤可并行
    - 条件执行:根据上一步结果决定

  验证检查点:
    - 每个步骤完成后验证
    - 关键步骤增加额外检查
    - 最终结果整体验证

  重规划触发:
    - 步骤执行失败
    - 发现新依赖
    - 环境变化

适用场景

  • ✅ 多步骤工作流
  • ✅ 项目规划
  • ✅ 研究任务
  • ✅ 复杂推理
  • ❌ 简单单步任务
  • ❌ 需要实时反馈的任务

模式 4:Tool Use(工具调用)

核心思想

专注于工具调用的模式,让 Agent 能够使用外部工具扩展能力。

工作流程

txt
┌─────────────────────────────────────────────────────┐
│                  Tool Use 流程                       │
├─────────────────────────────────────────────────────┤
│                                                     │
│  ┌─────────┐                                        │
│  │ 用户请求 │                                        │
│  └────┬────┘                                        │
│       ↓                                             │
│  ┌─────────────┐                                    │
│  │ 解析意图    │                                    │
│  └────┬────────┘                                    │
│       ↓                                             │
│  ┌─────────────┐    ┌─────────────┐                │
│  │ 选择工具    │ ←→ │ 工具注册表  │                │
│  └────┬────────┘    └─────────────┘                │
│       ↓                                             │
│  ┌─────────────┐                                    │
│  │ 执行工具    │                                    │
│  └────┬────────┘                                    │
│       ↓                                             │
│  ┌─────────────┐                                    │
│  │ 格式化响应  │                                    │
│  └────┬────────┘                                    │
│       ↓                                             │
│  ┌─────────┐                                        │
│  │ 返回结果 │                                        │
│  └─────────┘                                        │
│                                                     │
└─────────────────────────────────────────────────────┘

实现示例

python
from dataclasses import dataclass
from typing import Callable, Any
import json

@dataclass
class Tool:
    name: str
    description: str
    parameters: dict
    execute: Callable

class ToolUseAgent:
    def __init__(self, model):
        self.model = model
        self.tools: dict[str, Tool] = {}

    def register_tool(self, tool: Tool):
        """注册工具"""
        self.tools[tool.name] = tool

    def run(self, query: str) -> str:
        """处理用户请求"""
        # 1. 获取工具描述
        tools_desc = self._get_tools_description()

        # 2. 让模型决定调用哪个工具
        prompt = f"""
        Available tools:
        {tools_desc}

        User query: {query}

        Decide which tool to use and with what parameters.
        Output in JSON format:
        {{
            "tool": "tool_name",
            "parameters": {{...}},
            "reasoning": "why this tool"
        }}

        If no tool is needed, output:
        {{"tool": "none", "response": "direct response"}}
        """

        decision = self.model.generate_json(prompt)

        # 3. 执行工具或直接响应
        if decision["tool"] == "none":
            return decision["response"]

        return self._execute_tool(decision["tool"], decision["parameters"])

    def _get_tools_description(self) -> str:
        """生成工具描述"""
        descriptions = []
        for name, tool in self.tools.items():
            desc = f"""
            Tool: {name}
            Description: {tool.description}
            Parameters: {json.dumps(tool.parameters, indent=2)}
            """
            descriptions.append(desc)
        return "\n".join(descriptions)

    def _execute_tool(self, tool_name: str, parameters: dict) -> str:
        """执行工具"""
        if tool_name not in self.tools:
            return f"Error: Unknown tool '{tool_name}'"

        tool = self.tools[tool_name]

        # 参数验证
        validation = self._validate_parameters(tool.parameters, parameters)
        if not validation["valid"]:
            return f"Parameter error: {validation['error']}"

        # 执行工具
        try:
            result = tool.execute(**parameters)
            return self._format_result(result)
        except Exception as e:
            return f"Execution error: {str(e)}"

    def _validate_parameters(self, schema: dict, params: dict) -> dict:
        """验证参数"""
        required = schema.get("required", [])
        properties = schema.get("properties", {})

        # 检查必需参数
        for param in required:
            if param not in params:
                return {"valid": False, "error": f"Missing required parameter: {param}"}

        # 检查参数类型
        for param, value in params.items():
            if param in properties:
                expected_type = properties[param].get("type")
                # 简化类型检查
                # 实际应用中应使用完整的 JSON Schema 验证

        return {"valid": True}

    def _format_result(self, result: Any) -> str:
        """格式化结果"""
        if isinstance(result, str):
            return result
        return json.dumps(result, indent=2, ensure_ascii=False)

工具设计最佳实践

yaml
工具设计原则:
  单一职责:
    - 每个工具只做一件事
    - 功能边界清晰
    - 命名直观

  输入输出:
    - 输入参数使用 JSON Schema
    - 输出格式一致
    - 包含错误信息

  错误处理:
    - 不暴露内部实现
    - 提供可操作的错误信息
    - 支持重试场景

  安全考虑:
    - 参数验证
    - 权限检查
    - 敏感数据脱敏
    - 超时控制

工具注册示例:
  - name: search_web
    description: 搜索网络获取信息
    parameters:
      type: object
      properties:
        query:
          type: string
          description: 搜索关键词
        limit:
          type: integer
          description: 返回结果数量
          default: 5
      required:
        - query

  - name: read_file
    description: 读取本地文件内容
    parameters:
      type: object
      properties:
        path:
          type: string
          description: 文件路径
        encoding:
          type: string
          description: 文件编码
          default: utf-8
      required:
        - path

适用场景

  • ✅ API 集成
  • ✅ 数据处理
  • ✅ 文件操作
  • ✅ 外部系统交互
  • ❌ 纯文本生成任务
  • ❌ 不需要外部能力的任务

模式 5:Multi-Agent(多 Agent 协作)

核心思想

多个 Agent 协作完成任务,每个 Agent 有特定角色和职责。

协作模式

txt
┌─────────────────────────────────────────────────────┐
│                Multi-Agent 架构                      │
├─────────────────────────────────────────────────────┤
│                                                     │
│               ┌─────────────┐                       │
│               │  协调者     │                       │
│               │ Coordinator │                       │
│               └──────┬──────┘                       │
│                      │                              │
│       ┌──────────────┼──────────────┐              │
│       ↓              ↓              ↓              │
│  ┌─────────┐   ┌─────────┐   ┌─────────┐          │
│  │ Agent A │   │ Agent B │   │ Agent C │          │
│  │ 研究员  │   │ 写作者  │   │ 审核员  │          │
│  └─────────┘   └─────────┘   └─────────┘          │
│       │              │              │              │
│       └──────────────┼──────────────┘              │
│                      ↓                              │
│               ┌─────────────┐                       │
│               │  共享记忆   │                       │
│               │ Shared Mem  │                       │
│               └─────────────┘                       │
│                                                     │
└─────────────────────────────────────────────────────┘

实现示例

python
from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import Any
import queue

@dataclass
class Message:
    sender: str
    receiver: str
    content: Any
    message_type: str

class Agent(ABC):
    def __init__(self, name: str, role: str):
        self.name = name
        self.role = role
        self.inbox = queue.Queue()

    @abstractmethod
    def process(self, message: Message) -> list[Message]:
        """处理消息并生成响应"""
        pass

    def receive(self, message: Message):
        """接收消息"""
        self.inbox.put(message)

class Coordinator(Agent):
    def __init__(self, agents: dict[str, Agent]):
        super().__init__("coordinator", "协调者")
        self.agents = agents
        self.task_state = {}

    def process(self, message: Message) -> list[Message]:
        if message.message_type == "task":
            return self._decompose_task(message.content)
        elif message.message_type == "result":
            return self._aggregate_results(message)
        return []

    def _decompose_task(self, task: str) -> list[Message]:
        """分解任务"""
        # 使用 LLM 分解任务
        decomposition = self._llm_decompose(task)

        messages = []
        for subtask in decomposition["subtasks"]:
            agent_name = subtask["assigned_agent"]
            if agent_name in self.agents:
                messages.append(Message(
                    sender=self.name,
                    receiver=agent_name,
                    content=subtask,
                    message_type="subtask"
                ))
        return messages

    def _aggregate_results(self, message: Message) -> list[Message]:
        """聚合结果"""
        self.task_state[message.sender] = message.content

        # 检查是否所有结果都收集完毕
        if len(self.task_state) == len(self.agents):
            final_result = self._llm_aggregate(self.task_state)
            return [Message(
                sender=self.name,
                receiver="user",
                content=final_result,
                message_type="final_result"
            )]
        return []

class ResearcherAgent(Agent):
    def __init__(self):
        super().__init__("researcher", "研究员")

    def process(self, message: Message) -> list[Message]:
        # 执行研究任务
        result = self._research(message.content)
        return [Message(
            sender=self.name,
            receiver="coordinator",
            content=result,
            message_type="result"
        )]

    def _research(self, subtask: dict) -> dict:
        """执行研究"""
        # 实现研究逻辑
        return {"findings": "..."}

class WriterAgent(Agent):
    def __init__(self):
        super().__init__("writer", "写作者")

    def process(self, message: Message) -> list[Message]:
        # 执行写作任务
        result = self._write(message.content)
        return [Message(
            sender=self.name,
            receiver="coordinator",
            content=result,
            message_type="result"
        )]

    def _write(self, subtask: dict) -> dict:
        """执行写作"""
        # 实现写作逻辑
        return {"content": "..."}

class MultiAgentSystem:
    def __init__(self):
        self.agents = {
            "researcher": ResearcherAgent(),
            "writer": WriterAgent(),
        }
        self.coordinator = Coordinator(self.agents)
        self.agents["coordinator"] = self.coordinator

    def run(self, task: str) -> str:
        """运行多 Agent 系统"""
        # 初始任务消息
        initial_message = Message(
            sender="user",
            receiver="coordinator",
            content=task,
            message_type="task"
        )

        # 消息队列
        message_queue = [initial_message]

        while message_queue:
            message = message_queue.pop(0)
            receiver = self.agents.get(message.receiver)

            if receiver:
                responses = receiver.process(message)
                message_queue.extend(responses)

                if message.message_type == "final_result":
                    return message.content

        return "Task completed without final result"

最佳实践

yaml
Multi-Agent 设计原则:
  角色定义:
    - 每个角色有明确职责
    - 角色之间不重叠
    - 角色命名直观

  协调机制:
    - 中央协调者:适合简单流程
    - 对等协作:适合复杂交互
    - 层级结构:适合大型系统

  通信设计:
    - 消息格式标准化
    - 通信通道可靠
    - 消息队列管理

  共享状态:
    - 最小化共享状态
    - 状态一致性保证
    - 冲突解决机制

常见角色分配:
  研究类任务:
    - 研究员:收集信息
    - 分析师:分析数据
    - 写作者:撰写报告
    - 审核员:质量检查

  开发类任务:
    - 架构师:设计系统
    - 开发者:编写代码
    - 测试员:测试代码
    - 审查员:代码审查

  创作类任务:
    - 策划者:创意构思
    - 创作者:内容创作
    - 编辑者:内容优化
    - 校对者:最终检查

适用场景

  • ✅ 复杂工作流
  • ✅ 需要多角色协作的任务
  • ✅ 大规模系统
  • ✅ 需要并行处理的任务
  • ❌ 简单任务(过度设计)
  • ❌ 资源受限环境

模式选择指南

按任务复杂度选择

txt
简单任务(单步、低复杂度)
└── Tool Use
    └── 直接工具调用

中等任务(多步、中复杂度)
├── ReAct
│   └── 需要推理 + 工具调用
└── Plan-and-Execute
    └── 需要规划 + 执行

复杂任务(高复杂度、需要迭代)
├── Reflexion
│   └── 需要自我改进
└── Multi-Agent
    └── 需要多角色协作

按任务类型选择

任务类型推荐模式原因
信息检索ReAct + Tool Use需要搜索和推理
代码生成Reflexion需要迭代改进
研究报告Multi-Agent需要多角色协作
项目规划Plan-and-Execute需要结构化规划
数据处理Tool Use工具调用为主
复杂推理ReAct + Reflexion推理 + 反思

混合模式

实际应用中,常常需要组合多个模式:

yaml
复杂研究任务:
  阶段1: Plan-and-Execute
    - 制定研究计划
    - 分配任务给不同 Agent

  阶段2: Multi-Agent
    - 研究员收集信息
    - 分析师分析数据
    - 写作者撰写报告

  阶段3: Reflexion
    - 审核员检查质量
    - 反思改进建议
    - 迭代优化报告

代码生成任务:
  阶段1: Plan-and-Execute
    - 分析需求
    - 设计架构
    - 规划实现步骤

  阶段2: ReAct
    - 编写代码
    - 运行测试
    - 修复问题

  阶段3: Reflexion
    - 代码审查
    - 性能优化
    - 重构改进

最新 Agent 框架 (2026)

主流开源框架

框架描述Stars链接
OpenClaw开源 AI Agent 框架,多渠道消息、cron 调度、内存系统、MCP 集成🌟GitHub
CrewAI多角色协作 Agent 框架,角色扮演、自主 AI Agent🌟🌟GitHub
AutoGen微软多 Agent 框架,支持下一代 LLM 应用🌟🌟🌟GitHub
AG2AutoGen 创作者新框架,开源 AI Agent 编程框架,支持多 Agent 协作🌟🌟GitHub
LangGraphLangChain 的 Agent 图框架,构建有状态、多 Agent 应用🌟🌟GitHub
MetaGPT多 Agent 元编程框架,一行需求返回 PRD、设计、代码🌟🌟GitHub
OpenHandsAI 驱动的软件开发平台(原 OpenDevin)🌟🌟GitHub
e2bAI Agent 沙盒执行环境,构建和部署虚拟开发者 Agent🌟🌟GitHub
SwarmOpenAI 教育性多 Agent 编排框架🌟GitHub
MastraTypeScript AI 应用框架,快速构建 AI 功能🌟🌟GitHub
Swarms企业级多 Agent 编排框架🌟GitHub
Strands Agents模型驱动的 Agent SDK,几行代码构建 AI Agent🌟GitHub
AgentUp安全、可扩展的 Agent 框架,配置驱动、插件生态🌟GitHub
VoltAgentTypeScript Agent 框架,内置 LLM 可观测性🌟GitHub
PraisonAI生产级多 Agent 框架,自反思、MCP 集成、100+ LLM 支持🌟GitHub
Ailoy全面 Agent 框架,本地 AI 和 WASM 支持🌟GitHub
Hive目标驱动自进化 Agent 框架,自然语言定义任务、100+ 内置工具🌟GitHub
FIM AgentPython async 框架,动态 DAG 规划、ReAct agent、MCP 客户端、RAG🌟GitHub
NeuroLinkTypeScript Agent 框架,多步 agentic loops、持久化内存、HITL 工作流🌟GitHub

Agent 开发工具

工具描述链接
Steel Browser开源浏览器自动化平台,专为 AI Agent 设计,支持无头浏览、智能等待GitHub
VibeGridAI 编码代理终端管理器,多代理网格布局、任务队列、工作流自动化GitHub
Dorothy桌面应用,同时编排多个 AI CLI agents (Claude Code, Codex, Gemini)GitHub
GreywallAI Agent 安全沙箱,deny-by-default 权限控制、受限文件系统访问GitHub
hcomAI Agent 跨终端通信,Claude Code、Gemini CLI、Codex、OpenCodeGitHub
nanobotHKUDS 超轻量级个人 AI 助手框架 (~4K 行 Python),MCP、9+ 聊天通道GitHub
Voice Lab语音 Agent 测试评估框架,跨 LLM、提示、角色测试GitHub
Arize-PhoenixAgent 测试、评估、可观测性开源库GitHub
ManifestAgent 实时成本可观测性平台,28+ LLM 模型、本地仪表板GitHub

Agent 模板资源

资源描述链接
Awesome OpenClaw Agents100+ 生产级 SOUL.md Agent 模板,覆盖生产力、开发、营销GitHub

参考来源