75 lines
2.3 KiB
Markdown
75 lines
2.3 KiB
Markdown
# Agent Orchestration Schema (SSOT)
|
|
|
|
`config/agent_registry.yml` is the only source of truth.
|
|
|
|
## Per-Agent Block
|
|
|
|
Use this block for every top-level agent:
|
|
|
|
```yaml
|
|
orchestration:
|
|
mode: llm_only | crew_only | hybrid
|
|
crew:
|
|
enabled: true|false
|
|
default_profile: default
|
|
profile_hints:
|
|
profile_name: ["keyword1", "keyword2"]
|
|
profiles:
|
|
default:
|
|
team_name: "Agent Team"
|
|
parallel_roles: true
|
|
max_concurrency: 3
|
|
synthesis:
|
|
role_context: "Agent Orchestrator"
|
|
system_prompt_ref: "roles/<agent>/orchestrator_synthesis.md"
|
|
llm_profile: reasoning
|
|
team:
|
|
- id: role_id
|
|
role_context: "Role Name"
|
|
system_prompt_ref: "roles/<agent>/role.md"
|
|
llm_profile: science
|
|
skills: [optional, for router summary only]
|
|
delegation:
|
|
enabled: false
|
|
max_hops: 2
|
|
forbid_self: true
|
|
allow_top_level_agents: []
|
|
a2a:
|
|
enabled: false
|
|
allow_top_level_agents: []
|
|
max_hops: 2
|
|
forbid_self: true
|
|
response_contract:
|
|
user_visible_speaker: self
|
|
crew_roles_user_visible: false
|
|
```
|
|
|
|
## Generation Rules
|
|
|
|
- `tools/agents generate` builds `config/crewai_agents.json` from `orchestration.*`.
|
|
- Router uses `crewai_agents.json` only for light decision metadata.
|
|
- Optional generation target: `config/crewai_teams.generated.yml` (feature flag `generate_crewai_teams`).
|
|
- Runtime `services/crewai-service/app/registry_loader.py` remains bound to `crewai_teams.yml` until final cutover.
|
|
|
|
## Validation Rules
|
|
|
|
- `mode` must be one of: `llm_only`, `crew_only`, `hybrid`.
|
|
- If `mode in [crew_only, hybrid]`, then `crew.enabled` must be `true`.
|
|
- If `crew.enabled=true`, then:
|
|
- `crew.profiles` must be non-empty.
|
|
- `crew.default_profile` must exist in `crew.profiles`.
|
|
- default profile must have either:
|
|
- non-empty `team`, or
|
|
- `delegation.enabled=true` (delegation-only orchestrator).
|
|
- `response_contract.crew_roles_user_visible` must be `false`.
|
|
- For top-level agents, user-facing response speaker is always `self`.
|
|
|
|
## Migration Notes
|
|
|
|
- Legacy `crewai` block is still supported by generator as fallback.
|
|
- Recommended path:
|
|
1. define `orchestration` for all top-level agents,
|
|
2. enable `generate_crewai_teams`,
|
|
3. switch CrewAI runtime to generated teams file,
|
|
4. remove legacy `crewai` block.
|