203 lines
4.4 KiB
Markdown
203 lines
4.4 KiB
Markdown
# 子智能体集成测试
|
||
|
||
本文档说明如何测试新的子智能体系统。
|
||
|
||
## 前置条件
|
||
|
||
1. 确保 Node.js 已安装(18+)
|
||
2. 安装 easyagent 依赖:
|
||
```bash
|
||
cd easyagent
|
||
npm install
|
||
```
|
||
|
||
3. 确保 models.json 配置正确(复制 easyagent 根目录的 models.json 到 easyagent/ 目录)
|
||
|
||
## 测试步骤
|
||
|
||
### 1. 测试批处理模式
|
||
|
||
```bash
|
||
# 创建测试目录
|
||
mkdir -p /tmp/test_subagent
|
||
cd /tmp/test_subagent
|
||
|
||
# 创建测试任务文件
|
||
cat > task.txt << 'EOF'
|
||
你是子智能体 1,负责以下任务:
|
||
|
||
**任务摘要**:创建测试文件
|
||
|
||
**任务详情**:
|
||
在当前目录创建一个名为 test.txt 的文件,内容为 "Hello from sub-agent"。
|
||
|
||
**交付目录**:/tmp/test_subagent/deliverables
|
||
请将所有生成的文件保存到此目录。
|
||
|
||
**超时时间**:60 秒
|
||
|
||
完成任务后,请调用 finish_task 工具提交完成报告。
|
||
EOF
|
||
|
||
# 创建系统提示文件
|
||
cat > system.txt << 'EOF'
|
||
你是一个专注的子智能体,负责独立完成分配的任务。
|
||
完成任务后,必须调用 finish_task 工具。
|
||
EOF
|
||
|
||
# 运行批处理
|
||
node /Users/jojo/Desktop/agents/正在修复中/agents/easyagent/src/batch/index.js \
|
||
--workspace /tmp/test_subagent \
|
||
--task-file task.txt \
|
||
--system-prompt-file system.txt \
|
||
--output-file output.json \
|
||
--stats-file stats.json \
|
||
--agent-id 1 \
|
||
--timeout 60
|
||
|
||
# 检查结果
|
||
cat output.json
|
||
ls -la deliverables/
|
||
```
|
||
|
||
### 2. 测试主智能体集成
|
||
|
||
启动 Web 服务器:
|
||
```bash
|
||
cd /Users/jojo/Desktop/agents/正在修复中/agents
|
||
python -m server.app
|
||
```
|
||
|
||
在浏览器中测试:
|
||
|
||
1. 登录系统
|
||
2. 创建新对话
|
||
3. 发送消息:
|
||
```
|
||
请创建一个子智能体,编号1,任务是在项目根目录创建一个 test.md 文件,内容为"测试子智能体功能"。
|
||
```
|
||
|
||
4. 观察子智能体执行过程
|
||
5. 检查交付目录:`sub_agent_results/agent_1/`
|
||
|
||
### 3. 测试后台运行
|
||
|
||
发送消息:
|
||
```
|
||
请创建一个后台运行的子智能体,编号2,任务是搜索项目中所有的 Python 文件并统计行数,生成报告到 reports/line_count.md。设置为后台运行。
|
||
```
|
||
|
||
然后继续发送其他消息,观察子智能体完成后的通知。
|
||
|
||
### 4. 测试多个并行子智能体
|
||
|
||
发送消息:
|
||
```
|
||
请同时创建3个子智能体:
|
||
1. 编号1:分析 core/ 目录的代码结构
|
||
2. 编号2:分析 modules/ 目录的代码结构
|
||
3. 编号3:分析 utils/ 目录的代码结构
|
||
|
||
都设置为后台运行,交付目录分别为 reports/core、reports/modules、reports/utils。
|
||
```
|
||
|
||
### 5. 测试查询状态
|
||
|
||
在子智能体运行时,发送消息:
|
||
```
|
||
查询子智能体 1、2、3 的状态
|
||
```
|
||
|
||
### 6. 测试终止子智能体
|
||
|
||
发送消息:
|
||
```
|
||
终止子智能体 2
|
||
```
|
||
|
||
## 预期结果
|
||
|
||
1. **批处理模式**:
|
||
- output.json 包含 success 和 summary
|
||
- deliverables/ 目录包含生成的文件
|
||
- deliverables/.subagent/conversation.json 包含对话记录
|
||
|
||
2. **主智能体集成**:
|
||
- 阻塞模式:立即返回完成结果
|
||
- 后台模式:立即返回 running 状态,完成后收到通知
|
||
|
||
3. **并行执行**:
|
||
- 多个子智能体同时运行
|
||
- 各自独立完成任务
|
||
- 不会相互干扰
|
||
|
||
4. **状态查询**:
|
||
- 返回每个子智能体的运行时间、工具使用统计
|
||
- 显示当前状态(running/completed)
|
||
|
||
5. **终止功能**:
|
||
- 子智能体进程被终止
|
||
- 部分结果保留
|
||
|
||
## 常见问题
|
||
|
||
### 1. Node.js 找不到
|
||
|
||
确保 Node.js 已安装并在 PATH 中:
|
||
```bash
|
||
which node
|
||
node --version
|
||
```
|
||
|
||
### 2. 模型配置错误
|
||
|
||
检查 easyagent/models.json 是否存在且配置正确。
|
||
|
||
### 3. 权限问题
|
||
|
||
确保交付目录有写权限:
|
||
```bash
|
||
chmod -R 755 sub_agent_results/
|
||
```
|
||
|
||
### 4. 子进程无法启动
|
||
|
||
检查 easyagent 批处理文件路径是否正确:
|
||
```bash
|
||
ls -la /Users/jojo/Desktop/agents/正在修复中/agents/easyagent/src/batch/index.js
|
||
```
|
||
|
||
### 5. 对话记录未保存
|
||
|
||
检查交付目录的 .subagent/ 子目录权限。
|
||
|
||
## 调试技巧
|
||
|
||
1. 查看子进程输出:
|
||
```bash
|
||
tail -f logs/debug_stream.log
|
||
```
|
||
|
||
2. 查看任务状态文件:
|
||
```bash
|
||
cat data/sub_agent_state.json
|
||
```
|
||
|
||
3. 查看子智能体输出:
|
||
```bash
|
||
cat sub_agent_tasks/sub_1_*/output.json
|
||
```
|
||
|
||
4. 查看统计信息:
|
||
```bash
|
||
cat sub_agent_tasks/sub_1_*/stats.json
|
||
```
|
||
|
||
## 下一步
|
||
|
||
测试通过后,可以:
|
||
1. 添加更多工具到子智能体
|
||
2. 优化性能和错误处理
|
||
3. 添加前端展示界面
|
||
4. 完善文档和示例
|