openclaw 搭建多个 Agents,并设置不能的职位性格技能

一级会员 站长
发表于OpenClaw分类

文件结构:

D:\OpenClaw\
├─ api
│   └─ agent_api.py
├─ config
│   ├─ multi-agent-config.yaml          # 主要配置文件
│   └─ agent-profiles.yaml             # 新增:职位性格技能模板库
├─ scripts
│   ├─ agent_manager.py
│   ├─ agent_router.py
│   └─ agent_profiles.py               # 新增:性格技能管理模块
├─ web
│   └─ agent_dashboard.html
└─ templates                           # 新增:模板目录
    └─ agent-templates.yaml           # 标准职位模板

1. 标准职位模板库(推荐位置)

文件位置: D:\OpenClaw\templates\agent-templates.yaml

# 标准 Agent 职位性格技能模板库
agent_templates:

  # 技术支援类模板
  tech_support:
    name: "技术支援专家"
    role: "技术支持工程师"
    personality: "耐心、专业、细致"
    personality_traits:
      耐心度: 9
      技术深度: 8
      沟通清晰度: 9
      问题解决能力: 9
      紧急响应: 7
    skills:
      故障诊断: "高级"
      系统维护: "高级"
      网络调试: "中级"
      硬件知识: "中级"
      文档编写: "中级"
    system_prompt: |
      你是一名专业的技术支持工程师,擅长解决各种技术问题。
      回答问题时需要耐心细致,提供详细的步骤说明。

  # 客户服务类模板
  customer_service:
    name: "客户服务代表"
    role: "客户服务专员"
    personality: "友善、热情、解决问题导向"
    personality_traits:
      友善度: 10
      同理心: 9
      问题解决: 8
      产品知识: 8
      压力处理: 7
    skills:
      客户沟通: "高级"
      冲突解决: "高级"
      产品知识: "中级"
      销售技巧: "中级"
      多任务处理: "中级"
    system_prompt: |
      你是一名专业的客户服务代表,总是以友善热情的态度帮助客户。
      专注于解决客户问题,提供满意的服务体验。

  # 数据分析类模板
  data_analyst:
    name: "数据分析师"
    role: "数据分析专家"
    personality: "严谨、逻辑性强、数据驱动"
    personality_traits:
      逻辑思维: 10
      数据分析: 9
      细致度: 9
      业务理解: 8
      沟通表达: 7
    skills:
      统计分析: "高级"
      数据可视化: "高级"
      机器学习: "中级"
      数据库查询: "高级"
      业务洞察: "中级"
    system_prompt: |
      你是一名专业的数据分析师,擅长从数据中提取洞察。
      回答需要基于数据和逻辑,提供准确的分析结果。

  # 销售顾问模板
  sales_advisor:
    name: "销售顾问"
    role: "高级销售顾问"
    personality: "积极、 persuasive、客户导向"
    personality_traits:
      说服力: 9
      产品知识: 8
      客户关系: 9
      谈判技巧: 8
      抗压能力: 7
    skills:
      销售技巧: "高级"
      客户开发: "高级"
      产品演示: "中级"
      合同谈判: "中级"
      市场分析: "中级"

  # 项目管理模板
  project_manager:
    name: "项目经理"
    role: "项目管理专家"
    personality: "组织力强、领导力、细致"
    personality_traits:
      组织能力: 9
      领导力: 8
      时间管理: 9
      风险管理: 8
      沟通协调: 8
    skills:
      项目规划: "高级"
      团队管理: "高级"
      风险管理: "中级"
      进度控制: "高级"
      文档管理: "中级"

2. 主配置文件

文件位置: D:OpenClawconfigmulti-agent-config.yaml

# 多 Agent 配置 - 引用模板
agent_templates_source: "../templates/agent-templates.yaml"

agents:
  # 技术支援 Agent - 基于模板
  tech_support:
    template: "tech_support"  # 引用模板
    model: "gpt-4"
    temperature: 0.2
    max_tokens: 2000
    # 可以覆盖模板中的特定属性
    personality_traits:
      紧急响应: 8  # 调整特定特质

  # 客户服务 Agent - 基于模板
  customer_service:
    template: "customer_service"
    model: "gpt-4"
    temperature: 0.7
    max_tokens: 1500

  # 数据分析 Agent - 基于模板
  data_analyst:
    template: "data_analyst"
    model: "gpt-4"
    temperature: 0.1
    max_tokens: 3000

  # 可以添加自定义 Agent(不基于模板)
  custom_agent:
    name: "自定义顾问"
    role: "业务顾问"
    personality: "专业、创新、解决方案导向"
    personality_traits:
      创新思维: 9
      业务理解: 8
      解决问题: 9
    skills:
      业务分析: "高级"
      战略规划: "中级"
      创新思维: "高级"
    system_prompt: "自定义系统提示"

3. 性格技能管理模块

文件位置: D:OpenClawscriptsagent_profiles.py

import yaml
import os
from typing import Dict, Any

class AgentProfiles:
    def __init__(self, templates_path="D:OpenClawtemplatesagent-templates.yaml"):
        self.templates_path = templates_path
        self.templates = self.load_templates()

    def load_templates(self) -> Dict[str, Any]:
        """加载职位模板库"""
        try:
            with open(self.templates_path, 'r', encoding='utf-8') as f:
                return yaml.safe_load(f)
        except FileNotFoundError:
            print(f"警告: 模板文件 {self.templates_path} 未找到")
            return {}

    def get_template(self, template_name: str) -> Dict[str, Any]:
        """获取指定模板"""
        return self.templates.get('agent_templates', {}).get(template_name, {})

    def list_available_templates(self) -> list:
        """列出所有可用模板"""
        return list(self.templates.get('agent_templates', {}).keys())

    def create_agent_from_template(self, template_name: str, custom_config: Dict = None) -> Dict[str, Any]:
        """基于模板创建 Agent 配置"""
        template = self.get_template(template_name)
        if not template:
            raise ValueError(f"模板 '{template_name}' 不存在")

        # 合并模板和自定义配置
        agent_config = template.copy()
        if custom_config:
            agent_config.update(custom_config)

        return agent_config

    def validate_agent_profile(self, profile: Dict[str, Any]) -> bool:
        """验证 Agent 配置完整性"""
        required_fields = ['name', 'role', 'personality', 'system_prompt']
        return all(field in profile for field in required_fields)

# 使用示例
if __name__ == "__main__":
    profiles = AgentProfiles()
    print("可用模板:", profiles.list_available_templates())

    # 基于模板创建 Agent 配置
    tech_agent_config = profiles.create_agent_from_template(
        "tech_support",
        {"model": "gpt-4", "temperature": 0.3}
    )
    print("技术支援 Agent 配置:", tech_agent_config)

4. 更新 Agent 管理器

文件位置: D:OpenClawscriptsagent_manager.py

import yaml
import os
from agent_profiles import AgentProfiles  # 新增导入

class MultiAgentManager:
    def __init__(self, config_path="D:OpenClawconfigmulti-agent-config.yaml"):
        self.config_path = config_path
        self.profiles = AgentProfiles()  # 新增:初始化模板管理器
        self.agents = {}
        self.load_config()

    def load_config(self):
        with open(self.config_path, 'r', encoding='utf-8') as f:
            self.config = yaml.safe_load(f)

    def create_agent(self, agent_id, config):
        """创建单个 Agent - 支持模板引用"""
        # 检查是否使用模板
        if 'template' in config:
            template_name = config['template']
            base_config = self.profiles.create_agent_from_template(template_name)
            # 合并配置(自定义配置覆盖模板配置)
            final_config = {**base_config, **config}
            # 移除 template 键,避免重复
            final_config.pop('template', None)
        else:
            final_config = config

        # 原有的 Agent 创建逻辑
        agent = BaseAgent(
            name=final_config['name'],
            system_prompt=final_config['system_prompt'],
            model=final_config.get('model', 'gpt-4'),
            temperature=final_config.get('temperature', 0.5),
            max_tokens=final_config.get('max_tokens', 2000)
        )

        # 设置扩展属性
        agent.role = final_config['role']
        agent.personality = final_config['personality']
        agent.personality_traits = final_config.get('personality_traits', {})
        agent.skills = final_config.get('skills', {})

        self.agents[agent_id] = agent
        print(f"Agent '{final_config['name']}' 初始化完成")

        return agent

使用流程:

查看可用模板:

from scripts.agent_profiles import AgentProfiles
profiles = AgentProfiles()
print("可用的职位模板:", profiles.list_available_templates())

基于模板创建 Agent: 在 multi-agent-config.yaml 中使用 template 字段引用模板

自定义特定属性: 在配置文件中覆盖模板的特定属性

评论列表
加载更多
登录 分类