feat: add runtime dynamic team controls
This commit is contained in:
189
backend/skills/builtin/dynamic_team_management/SKILL.md
Normal file
189
backend/skills/builtin/dynamic_team_management/SKILL.md
Normal file
@@ -0,0 +1,189 @@
|
||||
---
|
||||
name: dynamic_team_management
|
||||
description: 动态管理团队中的分析师Agent,包括创建、克隆、移除分析师,以及查看可用分析师类型。
|
||||
version: 1.0.0
|
||||
tools:
|
||||
- create_analyst
|
||||
- clone_analyst
|
||||
- remove_analyst
|
||||
- list_analyst_types
|
||||
- get_analyst_info
|
||||
- get_team_summary
|
||||
---
|
||||
|
||||
# 动态团队管理
|
||||
|
||||
当你需要调整分析师团队组成时,使用这个技能。投资经理可以动态创建新的分析师、克隆现有分析师进行定制、或移除不再需要的分析师。
|
||||
|
||||
## 1) When to use
|
||||
|
||||
- 当前团队缺乏特定领域的分析能力(如期权、加密货币、ESG等)
|
||||
- 需要多个相同类型但不同配置的分析师(如"激进型技术分析师"和"保守型技术分析师")
|
||||
- 需要临时增加分析力量应对特殊市场环境
|
||||
- 发现某个分析师配置不当,需要移除并重建
|
||||
- 在团队讨论中发现需要新的分析视角
|
||||
|
||||
## 2) Required inputs
|
||||
|
||||
### 创建分析师 (create_analyst)
|
||||
- **agent_id**: 唯一标识符(如 "options_specialist_01")
|
||||
- **analyst_type**: 基础类型(如 "technical_analyst")或自定义标识
|
||||
- **可选**: name, focus, description, soul_md, agents_md, model_name
|
||||
|
||||
### 克隆分析师 (clone_analyst)
|
||||
- **source_id**: 源分析师ID(如 "technical_analyst")
|
||||
- **new_id**: 新分析师ID(如 "crypto_technical_01")
|
||||
- **可选**: name, focus_additions, description_override, model_name
|
||||
|
||||
### 移除分析师 (remove_analyst)
|
||||
- **agent_id**: 要移除的分析师ID
|
||||
|
||||
## 3) Decision procedure
|
||||
|
||||
1. **评估当前团队能力缺口**
|
||||
- 查看当前活跃的分析师列表
|
||||
- 识别缺失的分析视角或专业领域
|
||||
|
||||
2. **选择创建策略**
|
||||
- 基于现有类型创建:指定analyst_type,提供自定义配置
|
||||
- 完全自定义:提供完整的persona定义
|
||||
- 克隆并修改:从现有分析师复制并应用覆盖
|
||||
|
||||
3. **配置分析师**
|
||||
- 设置唯一agent_id
|
||||
- 定义显示名称和关注点
|
||||
- 可选:提供自定义SOUL.md内容以精确定义行为
|
||||
|
||||
4. **验证创建结果**
|
||||
- 检查返回的success状态
|
||||
- 确认新分析师已加入活跃列表
|
||||
|
||||
## 4) Tool call policy
|
||||
|
||||
- **create_analyst**: 用于创建全新的分析师实例
|
||||
- 必须提供唯一的agent_id
|
||||
- 基于预定义类型时,analyst_type必须在可用类型列表中,或提供完整自定义配置
|
||||
- 工具调用失败时,检查agent_id是否已存在
|
||||
|
||||
- **clone_analyst**: 用于基于现有分析师创建变体
|
||||
- 适用于:创建专注于特定行业的分析师(如从technical_analyst克隆crypto_technical)
|
||||
- 新实例继承源配置,应用指定的覆盖
|
||||
|
||||
- **remove_analyst**: 用于移除动态创建的分析师
|
||||
- 只能移除通过本技能创建的分析师
|
||||
- 系统预定义分析师(fundamentals_analyst等)不可移除
|
||||
|
||||
- **list_analyst_types**: 用于查看所有可用分析师类型
|
||||
- 返回预定义类型 + 运行时注册类型
|
||||
|
||||
- **get_analyst_info**: 用于查看特定分析师的详细配置
|
||||
|
||||
- **get_team_summary**: 用于查看团队整体构成
|
||||
|
||||
## 5) Output schema
|
||||
|
||||
### create_analyst / clone_analyst 输出
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"agent_id": "options_specialist_01",
|
||||
"message": "Created runtime analyst 'options_specialist_01' (technical_analyst).",
|
||||
"analyst_type": "technical_analyst"
|
||||
}
|
||||
```
|
||||
|
||||
### remove_analyst 输出
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"agent_id": "options_specialist_01",
|
||||
"message": "Removed runtime analyst 'options_specialist_01'."
|
||||
}
|
||||
```
|
||||
|
||||
### list_analyst_types 输出
|
||||
```json
|
||||
[
|
||||
{
|
||||
"type_id": "fundamentals_analyst",
|
||||
"name": "Fundamentals Analyst",
|
||||
"description": "...",
|
||||
"is_builtin": true,
|
||||
"source": "constants"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## 6) Failure fallback
|
||||
|
||||
- **agent_id已存在**: 返回错误,提示选择新的agent_id或使用clone_analyst基于现有创建变体
|
||||
- **analyst_type未知**: 提示使用list_analyst_types查看可用类型,或提供完整的自定义persona
|
||||
- **创建失败**: 检查系统日志,可能原因包括:模型配置错误、工作空间权限问题
|
||||
- **移除失败**: 确认分析师是通过动态创建(系统预定义分析师不可移除)
|
||||
|
||||
## 重要约定
|
||||
|
||||
### Agent ID 命名规则
|
||||
|
||||
为了使新创建的分析师能够正常工作,**agent_id 必须以 `_analyst` 结尾**。这是系统识别分析师类型并分配相应工具的关键约定。
|
||||
|
||||
- ✅ **正确**: `options_specialist_analyst`, `crypto_technical_analyst`
|
||||
- ❌ **错误**: `options_specialist`, `crypto_expert`
|
||||
|
||||
如果不遵循此约定,分析师将无法获得分析工具组(基本面、技术、情绪、估值等工具)。
|
||||
|
||||
### 全新自定义类型 vs 基于现有类型
|
||||
|
||||
**基于现有类型**(推荐用于快速创建):
|
||||
- 使用 `analyst_type: "technical_analyst"` 等预定义类型
|
||||
- 可以覆盖 persona、SOUL.md 等配置
|
||||
- 工具组根据 `analyst_type` 自动选择
|
||||
|
||||
**全新自定义类型**(用于完全自定义):
|
||||
- 设置 `analyst_type` 为自定义标识(如 `"custom"`)或任意字符串
|
||||
- 必须提供完整的 `persona` 定义
|
||||
- 建议提供 `soul_md` 精确定义行为
|
||||
- **agent_id 必须仍然以 `_analyst` 结尾**
|
||||
|
||||
## 最佳实践
|
||||
|
||||
1. **命名约定**: 使用描述性agent_id,如 `industry_tech_analyst` 而非 `analyst_01`,**必须以 `_analyst` 结尾**
|
||||
2. **版本控制**: 克隆分析师时,在new_id中包含版本信息,如 `technical_v2_crypto_analyst`
|
||||
3. **文档记录**: 创建自定义分析师时,提供详细的description,便于后续理解和维护
|
||||
4. **资源管理**: 定期使用get_team_summary检查团队规模,移除不再需要的分析师
|
||||
|
||||
## 示例场景
|
||||
|
||||
### 场景1: 添加加密货币分析师
|
||||
```
|
||||
创建一个新的分析师,专注于加密货币技术分析:
|
||||
- agent_id: "crypto_technical_01"
|
||||
- analyst_type: "technical_analyst"
|
||||
- name: "加密货币技术分析师"
|
||||
- focus: ["链上数据分析", "DeFi协议", "加密货币技术指标"]
|
||||
```
|
||||
|
||||
### 场景2: 克隆并定制
|
||||
```
|
||||
基于technical_analyst创建一个更激进的版本:
|
||||
- source_id: "technical_analyst"
|
||||
- new_id: "technical_aggressive_01"
|
||||
- name: "激进技术分析师"
|
||||
- focus_additions: ["高波动交易", "突破策略"]
|
||||
- description_override: "专注于高风险高回报的技术策略..."
|
||||
```
|
||||
|
||||
### 场景3: 创建全新自定义类型(期权专家)
|
||||
```
|
||||
创建一个完全自定义的期权分析师(注意agent_id以_analyst结尾):
|
||||
- agent_id: "options_strategist_analyst"
|
||||
- analyst_type: "custom" # 使用非预定义类型
|
||||
- name: "期权策略分析师"
|
||||
- focus: ["期权定价", "希腊字母", "波动率曲面"]
|
||||
- soul_md: "# 角色定义\n你是期权策略专家,专注于..."
|
||||
```
|
||||
|
||||
**说明**:
|
||||
- 即使 `analyst_type` 是 "custom"(不在预定义类型中),只要提供完整的 `persona` 和 `soul_md`,系统就能创建功能完整的分析师
|
||||
- `agent_id` 必须以 `_analyst` 结尾才能获得分析工具
|
||||
- 模型使用全局默认,或通过 `model_name` 参数指定
|
||||
Reference in New Issue
Block a user