62 lines
3.8 KiB
Markdown
62 lines
3.8 KiB
Markdown
# Subagent 调用 SOP
|
||
|
||
## 文件IO协议
|
||
|
||
- 目录:`temp/{task_name}/`(cwd在temp/时即`./{task_name}/`)
|
||
- 启动:`python agentmain.py --task {name} [--input "短文本"] [--bg] [--llm_no N]`(cwd=代码根)
|
||
- `--input`自动建目录+清旧output+写input.txt;长文本先手动写input.txt再启动(不带--input)
|
||
- 优先用`--bg`后台(print PID exit),可同一code_run内sleep后poll;非--bg禁合并启动+轮询
|
||
- subagent的cwd还是temp,不是task目录
|
||
- input:目标+约束即可,subagent同等智能。**禁写步骤/过度描述**,大量数据给路径
|
||
- 通信:output.txt(append,`[ROUND END]`=轮完成) → 写reply.txt继续 → 不写10min退出。reply后输出为output1/2/3.txt(同格式)
|
||
- 干预文件:`_stop`(当轮结束退出) | `_keyinfo`(注入working memory) | `_intervene`(追加指令)
|
||
- **主agent空闲时应读output观察进度,必要时用干预文件纠偏,禁止无脑长时间sleep轮询**
|
||
- 监察模式启动时加`--verbose`,output将包含工具执行结果,主agent可直接审查原始数据而非仅信任摘要
|
||
|
||
## 场景1:测试模式 - 行为验证
|
||
**用途**:观察agent真实行为,修正RULES/L2/L3/SOP
|
||
**流程**:创建test_path/写input.txt→启动subagent→轮询output.txt(2秒间隔)→验证→清理重复
|
||
**测试原则**:只给目标,不提示位置/不诱导做法,观察自主选择
|
||
**修正闭环**:发现问题→设计测试→定位根源(RULES/L2/L3/SOP)→patch修正→验证
|
||
**技术要点**:Insight优先级>SOP;subagent的cwd=temp/
|
||
**两种测试**:
|
||
- 测SOP质量:input指定SOP名(如"用ezgmail_sop查看最近3封未读邮件"),排除导航干扰,失败即SOP问题
|
||
- 测导航能力:input只写目标,验证subagent能自主从insight找到正确SOP。禁止内联SOP内容
|
||
|
||
## 场景2:Map模式 - 并行处理
|
||
**用途**:将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必须存在"]
|
||
}
|
||
``` |