openclaw 搭建多个 Agents,并设置不能的职位性格技能
文件结构:
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 字段引用模板
自定义特定属性: 在配置文件中覆盖模板的特定属性
评论列表
${content}