ChatDev多智能体配置:用YAML定义角色与任务链
ChatDev 的多智能体配置并不在代码里硬编码,而是通过 CompanyConfig 目录下的 YAML 文件定义角色和任务链。
你只需要改对两个地方:角色定义文件决定“谁来干活”,workflow 文件决定“活按什么顺序流转”。
下面按实际配置顺序说明。
先确认运行环境与目录结构
ChatDev 基于 Python,建议使用 Python 3.9 以上版本,并提前准备好 OpenAI API Key 或兼容接口。
克隆项目后,核心配置目录通常位于 CompanyConfig/ 下,里面按公司或场景分成子目录,每个子目录包含角色 YAML 和 workflow YAML。
进入项目根目录后,先确认目录存在:
cd ChatDev
ls CompanyConfig/
如果使用虚拟环境,先激活再安装依赖:
python -m venv venv
source venv/bin/activate # Windows 用 venv\Scripts\activate
pip install -r requirements.txt
接着在项目根目录或环境变量中配置 API Key。
常见做法是设置 OPENAI_API_KEY,如果你用的是兼容接口,还需要确认 base_url 和模型名配置位置。
不同版本配置文件名称可能略有差异,以你本地项目中的 config.yaml 或 .env 为准。
角色定义:在 YAML 里写清楚职责和提示词
打开 CompanyConfig/Default/ 下的角色文件,通常能看到类似 role、prompt、name 等字段。
每个角色对应一个智能体,配置时重点写清三件事:角色名称、职责描述、输出约束。
例如新增一个“测试工程师”角色,可以在角色 YAML 中按现有结构追加:
TestEngineer:
role: "测试工程师"
prompt: "你负责根据需求编写测试用例,检查代码边界条件,输出测试报告。"
name: "TestEngineer"
注意字段名和缩进必须和同文件其他角色保持一致,YAML 对空格敏感,不要用 Tab。
角色提示词不要写得太宽泛,否则多个智能体容易输出重叠内容。
职责边界越清楚,后续协作越稳定。
任务链配置:让角色按顺序接力
workflow 文件定义每个阶段由哪个角色执行、输出交给谁。
打开对应 workflow YAML,你会看到阶段列表,每个阶段通常包含角色名和任务说明。
配置时要保证角色名与角色定义文件中的键名完全一致。
一个简化的工作流片段可以写成:
workflow:
- stage: "需求分析"
role: "CEO"
task: "整理用户需求,输出功能清单"
- stage: "开发"
role: "Programmer"
task: "根据功能清单编写代码"
- stage: "测试"
role: "TestEngineer"
task: "对代码进行测试并输出报告"
实际文件字段名可能不同,请以你本地模板为准。
核心原则是:每个阶段引用的角色必须真实存在,任务描述要能独立理解,不要把多个阶段塞进同一个任务里。
跑通验证与常见报错
配置改完后,用一条简单需求启动 ChatDev:
python run.py --task "写一个计算器" --name "test_project" --org "Default" --config "Default"
参数名以你本地 run.py 的帮助信息为准,可以先执行 python run.py --help 查看。
运行后观察日志里是否依次出现你配置的角色名称,以及每个阶段是否产出了对应文件。
如果日志里角色名缺失,优先检查 workflow 中的角色键名是否拼错;
如果启动就报 Key 错误,检查 API Key 和模型配置;
如果 YAML 解析失败,用 python -c "import yaml; yaml.safe_load(open('文件路径'))" 单独验证语法。
避坑提醒
不要直接修改默认模板后不留备份,建议复制一份 Default 目录再改。
角色提示词里避免写入互相矛盾的指令,否则智能体会反复来回修改。
新增角色后如果工作流没有引用它,它不会自动参与协作。
最后,配置目录和运行参数里的组织名、配置名要对应,否则可能读不到你改的文件。
完成上述步骤后,你可以通过日志中的角色顺序和输出文件核对配置是否生效。
后续再调整角色数量或任务顺序时,按同样方式先改 YAML 再运行验证即可。