---
url: /wave-agent/specs/multi-agent/general-purpose-agent.md
description: 内置 `general-purpose` 子代理，全工具访问（`*`），面向研究与多步骤实现任务
---

# 功能规格说明：通用 Agent

**创建日期**：2026-02-03

## 用户场景与测试 *（必填）*

### 用户故事：访问通用子 agent（优先级：P1）

作为开发者，我希望能够将复杂的研究、多步骤任务和代码修改委托给专门的子 agent，以便主 agent 可以专注于高层协调，而子 agent 处理代码库探索和实现的重型工作。

**为什么是这个优先级**：这是核心需求。虽然 `Explore` 子 agent 处理只读任务，但 `general-purpose` 子 agent 对于需要深度研究和文件修改能力的任务至关重要。

**独立测试**：可以通过验证 `general-purpose` agent 已在系统中注册，并可以通过 `Task` 工具调用并具有完整工具访问权限来进行完整测试。

**验收场景**：

1. **假设**在 Wave Agent 系统中，**当**列出可用的子 agent 时，**则**包含"Explore"和"general-purpose"。
2. **假设**有一个需要文件编辑的任务，**当**主 agent 调用 `Task` 工具并使用 `subagent_type: "general-purpose"` 时，**则**子 agent 成功初始化，具有其特定的系统提示和完整工具访问权限（`*`）。

***

### 用户故事：互补的子 agent 角色（优先级：P2）

作为系统维护者，我希望 `general-purpose` 子 agent 通过提供写入能力和更广泛的操作范围来补充 `Explore` 子 agent，同时保持一致的安全指南（如绝对路径和不主动创建文档）。

**为什么是这个优先级**：确保快速、只读的 `Explore` agent 与更强大的、面向实现的 `general-purpose` agent 之间有明确的区分。

**独立测试**：可以通过比较 `Explore` 和 `general-purpose` 子 agent 的配置来测试，确保它们具有不同的工具集和系统提示。

**验收场景**：

1. **假设**有 `general-purpose` 子 agent，**当**它被创建时，**则**它可以访问所有工具（`*`），而 `Explore` 仅限于只读工具。
2. **假设**有子 agent 响应，**当**它完成任务时，**则**输出遵循其系统提示中定义的指南（例如，绝对路径、无表情符号），与其他内置 agent 一致。

### 用户故事：提示词行为约束对齐 Claude Code（优先级：P2）

作为用户，我希望 `general-purpose` 子代理的系统提示与 Claude Code 一致地约束三件事：任务做完整（既不半途而废也不过度打磨）、最终报告是写给「会转述给用户的调用方」看的、以及不得把自己的整个任务再转派给另一个子代理。

**为什么是这个优先级**：`general-purpose` 是唯一能写文件的内置子代理，前两条决定交付质量，第三条直接防递归转派（一次委派被原样转手给另一个 agent，等于白白多烧一层上下文和 token）。

**独立测试**：让它跑一个多步骤改文件任务，验证最终报告是简洁结论而非过程流水账；再让它执行一个「适合委派」的任务，验证它自己做而不是再派一个子代理。

**验收场景**：

1. **假设** `general-purpose` 子代理完成任务，**当** 它输出报告，**则** 报告是给调用方转述用的要点（做了什么 + 关键发现），不是逐条工具日志。
2. **假设** 子代理发现任务比预期大，**当** 它决定做到什么程度，**则** 系统提示要求「把任务做完，但不要 gold-plate（不问自答地加料）」。
3. **假设** 子代理判断任务可以交给另一个子代理，**当** 它决定是否转派，**则** 系统提示禁止把整个任务原样转派给单个子代理，要求它自己完成。

### 边界情况

* **如果子 agent 初始化失败会怎样？** 系统应优雅地处理错误，并向主 agent 报告子 agent 任务无法完成。
* **工具冲突如何处理？** 由于子 agent 可以访问所有工具（`*`），系统必须确保子 agent 上下文中的工具执行不会干扰主 agent 的状态。
