agent-Specialization/agentskills/sub-agent-guide/SKILL.md
JOJO 5ab3acef9c feat: 添加 terminal-guide 和 sub-agent-guide skills
- 新增 terminal-guide skill: 持久化终端使用指南
- 新增 sub-agent-guide skill: 子智能体使用指南
- 优化终端工具定义和执行逻辑
- 更新系统提示词以引用新 skills
- 添加 utils/__init__.py 模块初始化文件

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-16 21:17:02 +08:00

198 lines
7.0 KiB
Markdown
Raw Permalink 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.

---
name: sub-agent-guide
description: 子智能体使用指南。创建子智能体之前必须阅读此技能。子智能体用于并行处理多个完全独立的任务,如:并行生成多个模块的文档、同时进行多个网络调研、大范围信息搜集(分析项目认证实现、收集系统信息)。关键限制:子智能体之间无法通信,看不到主对话历史,只能通过文件共享信息。不适合需要协作或精细控制的任务(如代码重构)。
---
# 子智能体使用指南
## 核心原则
**一个子智能体 = 一个完整的独立任务**
子智能体拥有完整工具能力,但与主智能体和其他子智能体完全隔离。它们看不到你的对话历史,无法互相通信,只能通过文件系统共享信息。
## 何时使用
**适合:**
- **并行独立任务**同时生成3个不同模块的文档、并行测试多个功能
- **大范围信息搜集**分析项目的前后端认证实现、收集系统硬件信息CPU/GPU/内存)
- **网络调研**搜索并整理英伟达2025财报、对比 Claude 和 ChatGPT 最新模型
- **耗时分析任务**:大规模日志分析、代码库依赖关系梳理
**不适合:**
- 任务之间需要频繁协调(子智能体无法互相通信)
- 简单快速的任务(创建子智能体有开销)
- 需要你参与决策的任务(子智能体是自主运行的)
- 代码重构等需要精细控制的任务(建议自己完成)
## 任务描述的艺术
子智能体看不到你的对话历史task 参数是它收到的唯一指令。
**关键要素:**
1. **明确的目标** - 要做什么,产出什么
2. **清晰的范围** - 操作哪些文件/目录
3. **具体的交付物** - 生成什么文件,放在哪里
4. **完成标准** - 什么算完成
**好的示例:**
```
# 信息搜集任务
分析项目的前后端认证与鉴权实现:
1. 查找所有与认证相关的代码文件login, auth, jwt, session 等关键词)
2. 分析前端如何存储和传递认证信息
3. 分析后端如何验证和管理用户权限
4. 整理成一份技术文档auth_analysis.md包含流程图和代码位置
# 网络调研任务
搜索并整理英伟达2025年的财报信息
1. 搜索英伟达2025年Q1-Q4财报
2. 提取关键财务数据(营收、利润、增长率)
3. 分析主要业务板块表现
4. 生成结构化报告nvidia_2025_report.md
# 系统信息收集
收集当前计算机的硬件和系统信息:
1. CPU 架构、型号、核心数
2. GPU 型号、显存、驱动版本
3. 内存大小、系统版本
4. 保存为 system_info.md
```
**避免:**
- ❌ "帮我分析一下认证代码" - 太模糊
- ❌ "如果发现问题请告诉我" - 子智能体无法与你交互
- ❌ "先做 A然后等我确认再做 B" - 子智能体是一次性执行的
## 交付目录设计
`deliverables_dir` 必须是**不存在的新目录**,子智能体会把所有成果放在这里。
**命名建议:**
```
sub_agent_results/task_description/ # 清晰描述任务
sub_agent_results/module_a_docs/ # 按模块组织
sub_agent_results/refactor_auth/ # 按功能组织
```
**避免:**
- ❌ 使用已存在的目录(会报错)
- ❌ 使用绝对路径(必须是相对于项目根目录的相对路径)
- ❌ 使用通用名称如 "output" "result"(多个子智能体会冲突)
## 并行执行模式
创建多个子智能体时,确保它们的任务**完全独立**
```python
# ✅ 好的并行:各自独立
create_sub_agent(agent_id=1, task="生成模块 A 的文档", deliverables_dir="docs/module_a", ...)
create_sub_agent(agent_id=2, task="生成模块 B 的文档", deliverables_dir="docs/module_b", ...)
# ✅ 好的并行:信息搜集
create_sub_agent(agent_id=1, task="搜索并整理 Claude 最新模型信息", deliverables_dir="research/claude", ...)
create_sub_agent(agent_id=2, task="搜索并整理 ChatGPT 最新模型信息", deliverables_dir="research/chatgpt", ...)
# 等两个都完成后,你再对比整合
# ✅ 好的并行:系统调研
create_sub_agent(agent_id=1, task="分析前端认证实现", deliverables_dir="analysis/frontend_auth", ...)
create_sub_agent(agent_id=2, task="分析后端鉴权实现", deliverables_dir="analysis/backend_auth", ...)
# 等待所有完成
wait_sub_agent(agent_id=1)
wait_sub_agent(agent_id=2)
```
```python
# ❌ 不好的并行:需要协作
create_sub_agent(agent_id=1, task="收集数据", ...)
create_sub_agent(agent_id=2, task="分析数据", ...) # 依赖子智能体1的结果
# 子智能体2不知道子智能体1什么时候完成无法协调
```
## 常见陷阱
### 1. 期望子智能体协作
**错误:**
```python
create_sub_agent(agent_id=1, task="实现功能 A完成后通知子智能体2")
create_sub_agent(agent_id=2, task="等待子智能体1完成然后实现功能 B")
```
子智能体之间无法通信。如果任务有依赖,应该:
- 方案1顺序执行等第一个完成后再创建第二个
- 方案2让一个子智能体完成整个流程
### 2. 忘记子智能体看不到对话历史
**错误:**
```python
# 你在对话中说:"我们要重构认证模块,使用 JWT 替代 Session"
create_sub_agent(task="按照我们讨论的方案重构认证模块")
```
**正确:**
```python
create_sub_agent(task="""
重构 src/auth/ 目录的认证模块:
- 移除基于 Session 的认证
- 实现基于 JWT 的认证
- 保持 API 接口不变
- 更新相关测试
""")
```
### 3. 超时时间设置不当
子智能体超时后会被强制终止,已完成的工作可能丢失。
**经验值:**
- 文档生成600-900 秒
- 信息搜集/网络调研900-1800 秒
- 大规模分析1800-3600 秒
宁可设置得长一些,也不要让子智能体因超时而前功尽弃。
### 4. agent_id 重复使用
同一对话中,每个 agent_id 只能使用一次。如果子智能体失败需要重试,必须使用新的 agent_id。
```python
create_sub_agent(agent_id=1, ...) # 失败了
# ❌ create_sub_agent(agent_id=1, ...) # 会报错
# ✅ create_sub_agent(agent_id=2, ...) # 使用新的 ID
```
## 检查结果
子智能体完成后,检查 `success` 字段和 `deliverables_dir`
```python
result = wait_sub_agent(agent_id=1)
if result["success"]:
# 读取交付目录中的文件
deliverables = result["deliverables_dir"]
# 处理生成的文件...
else:
# 检查失败原因
if result["status"] == "timeout":
# 考虑增加 timeout_seconds 重试
else:
# 查看 result["message"] 了解失败原因
# 检查交付目录中是否有部分结果
```
## thinking_mode 选择
- `fast`:常规任务(文档生成、信息搜集、数据分析)
- `thinking`:需要深度推理的任务(架构设计、复杂算法分析、安全审计)
大多数情况下使用 `fast` 即可。
## 总结
子智能体的本质是**并行执行完全独立的任务**。如果你发现自己在设计子智能体之间的协作流程,那可能不应该使用子智能体,而应该自己顺序执行这些步骤。