Files
GenericAgent/memory/subagent.md

64 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Subagent 调用 SOP
## Task Mode 文件IO协议
- 目录:`temp/{task_name}/`相对代码根主agent cwd在temp/时即 `./{task_name}/`
- 启动:`python agentmain.py --task {name} [--input "内容"] [--bg] [--llm_no N]`cwd=代码根)
- `--input`:自动建目录+清旧output+写input.txt
- `--bg`自举后台Popen自身去掉--bg → print PID → exit
- 流程:启动 → 轮询 output.txt`[ROUND END]`=该轮完成)→ 写 reply.txt 继续 → 不写则5min退出
- output1/2/3.txtreply后各轮输出递增编号同样append+`[ROUND END]`
- input.txt目标+约束可指定SOP名。禁写具体步骤除非已读SOP确认。大量数据给路径禁塞入
- --bg启动瞬间返回可同一code_run内sleep后poll非--bg方式禁止合并启动+轮询
```python
pid = os.popen(f'python {agent_root}/agentmain.py --task {name} --input "{prompt}" --bg').read().strip()
```
## 场景1测试模式 - 行为验证
**用途**观察agent真实行为修正RULES/L2/L3/SOP
**流程**创建test_path/写input.txt→启动subagent→轮询output.txt(2秒间隔)→验证→清理重复
**测试原则**:只给目标,不提示位置/不诱导做法,观察自主选择
**修正闭环**:发现问题→设计测试→定位根源(RULES/L2/L3/SOP)→patch修正→验证
**技术要点**Insight优先级>SOPsubagent的cwd=temp/
**两种测试**
- 测SOP质量input指定SOP名如"用ezgmail_sop查看最近3封未读邮件"排除导航干扰失败即SOP问题
- 测导航能力input只写目标验证subagent能自主从insight找到正确SOP。禁止内联SOP内容
## 场景2Map模式 - 并行处理
**用途**将N个独立同构子任务分发给各自的subagent处理
**核心优势**独立上下文。避免处理文档A的长上下文污染处理文档B的质量
**约束**
- 文件系统共享是优点不同agent处理不同输入文件产生不同输出文件
- 共享资源冲突:键鼠不可共享;浏览器暂时不可并行使用,避免同时操作同一标签页
- 不满足map模式的任务 → 主agent顺序执行即可别用subagent
**标准流程map-reduce**
1. 主agent准备阶段爬取/dump数据存为多个独立输入文件
2. 分发对每个文件启动一个subagent处理主agent自己也可以处理其中一个
3. 收集等所有subagent完成主agent读取各输出文件汇总结果
## subagent内部plan_mode使用
**原则**subagent本身是完整agent接收多步骤任务时应在内部创建plan管理执行
**触发条件**:任务包含3个以上子步骤、子步骤之间有依赖关系、需要checkpoint来恢复执行
**实现方式**
1. **主agent创建subagent时**在input.txt中说明任务包含多个步骤建议使用plan_mode
2. **subagent内部执行**:检测到多步骤任务后,创建 `./subagent_plan.md` 并使用plan_mode执行
3. **主agent监控**只关注最终结果output*.txt不需要关心subagent内部如何执行
4. **文件传递机制**主agent创建subagent时在task_dir中生成 `context.json`,包含所有文件的**绝对路径**
**⚠ subagent启动后第一步必须读取context.json**
**⚠ 所有文件操作必须使用context.json中的绝对路径**
**格式示例**
```json
{
"task": "任务描述",
"work_dir": "/absolute/path/to/plan_dir/",
"input_files": {
"paper_info": "/absolute/path/to/paper_info.txt"
},
"output_files": {
"pdf": "/absolute/path/to/paper.pdf",
"report": "/absolute/path/to/paper_report.md"
},
"dependencies": ["paper_info.txt必须存在"]
}
```