Skip to content

feat: team config + role definitions (Phase 2 of Agent Teams)#134

Open
LeoLin990405 wants to merge 2 commits intobfly123:mainfrom
LeoLin990405:feat/team-config
Open

feat: team config + role definitions (Phase 2 of Agent Teams)#134
LeoLin990405 wants to merge 2 commits intobfly123:mainfrom
LeoLin990405:feat/team-config

Conversation

@LeoLin990405
Copy link
Contributor

Summary / 概述

Phase 2 of Agent Teams (#81): 添加 team 配置系统,支持命名 agent 及角色定义。
Adds team configuration with named agents, provider/model binding, roles, and skills.

依赖 / Depends on: #133 (Phase 1 agent aliases)

新文件 / New Files

  • lib/team_config.py (129 行) — Team 配置加载、agent 解析、名称解析
  • test/test_team_config.py (387 行) — 38 个测试覆盖所有路径

修改 / Modified

  • bin/ask — 集成 team agent 解析,优先级:team agents > aliases > direct providers

使用方式 / Usage

创建 .ccb/team.json(项目级)或 ~/.ccb/team.json(全局):
Create .ccb/team.json (project) or ~/.ccb/team.json (global):

{
  "name": "dev-team",
  "description": "开发团队 / Development team",
  "strategy": "skill_based",
  "agents": [
    {"name": "researcher", "provider": "gemini", "model": "3f", "role": "research", "skills": ["frontend", "analysis"]},
    {"name": "coder", "provider": "codex", "model": "o3", "role": "implementation", "skills": ["python", "rust"]},
    {"name": "reviewer", "provider": "claude", "role": "review", "skills": ["security", "architecture"]}
  ]
}

用 team agent 名称路由 / Route by team agent name:

ask researcher "分析这个前端架构"  # → gemini (3f)
ask coder "实现排序算法"          # → codex (o3)
ask reviewer "审查这段代码"       # → claude
ask a "hello"                    # → 别名仍有效 / aliases still work
ask kimi "hello"                 # → 直接 provider 不变 / direct unchanged

设计要点 / Design

特性 说明
解析优先级 / Resolution order team agents > aliases > direct providers
配置层级 / Config layers 项目 .ccb/team.json 覆盖全局 ~/.ccb/team.json
Daemon 零改动 / Zero daemon changes 解析完全在 bin/ask 客户端
向后兼容 / Backward compatible 无 team 配置时行为完全不变
分配策略 / Strategies round_robin / load_balance / skill_based(Phase 3 使用)
容错 / Fault tolerant JSON 损坏、无效 agent、缺失字段均安全处理

Agent 字段 / Agent Fields

字段 必填 说明
name Agent 名称(大小写不敏感)
provider Provider 名称 (codex, gemini, claude, etc.)
model 模型标识 (o3, 3f, thinking, etc.),Phase 3 路由使用
role 角色 (research, implementation, review, etc.)
skills 技能标签数组,Phase 3 skill_based 路由使用

阶段路线图 / Phased Roadmap

Phase 内容 / Content 状态 / Status
1 Agent 别名 / Agent aliases #133
2 Team 配置 + 角色定义 / Team config + roles (this PR)
3 任务分发 + 智能路由 / Task distribution + smart routing Planned
4 Agent 间通信 / Inter-agent communication Planned

Relates to #81

测试计划 / Test plan

  • pytest test/test_team_config.py -v — 38/38 passed
  • pytest test/test_aliases.py -v — 22/22 passed (Phase 1 不受影响)
  • 全量回归 / Full regression — 86/86 passed (零回归)
  • 手动测试:创建 .ccb/team.json,验证 ask researcher "hello" → gemini
  • 手动测试:无 team 配置时别名和直接 provider 正常工作
  • 手动测试:ask --help 显示 team 信息

Add a/b/c/d... shorthand aliases for providers so users can type
`ask a "hello"` instead of `ask codex "hello"`.

- New lib/aliases.py: 3-layer config (defaults < ~/.ccb/ < .ccb/)
- Updated bin/ask: alias resolution before parse_qualified_provider
- New test/test_aliases.py: 22 tests covering all paths

Relates to bfly123#81
…ly123#81)

Add team configuration system allowing named agents with provider,
model, role, and skills. Team agent names override aliases.

- New lib/team_config.py: team config loading from .ccb/team.json
- Updated bin/ask: team agent resolution (priority over aliases)
- New test/test_team_config.py: 38 tests covering all paths

Example .ccb/team.json:
{
  "name": "dev-team",
  "strategy": "skill_based",
  "agents": [
    {"name": "researcher", "provider": "gemini", "model": "3f", "role": "research"},
    {"name": "coder", "provider": "codex", "model": "o3", "role": "implementation"}
  ]
}

Usage: ask researcher "hello" → routes to gemini

Relates to bfly123#81
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant