# 多智能体

QwenPaw 支持**多智能体**，允许您在同一个 QwenPaw 实例中运行多个独立的 AI 智能体。

> 本功能在 **v0.1.0** 中引入。

**本文档包含两部分内容：**

1. **多智能体工作区** - 如何创建和管理多个智能体，每个智能体拥有独立的配置、记忆、技能和对话历史
2. **智能体间协作** - 如何启用协作技能，让智能体之间可以互相通信，共同完成复杂任务

---

## 第一部分：多智能体工作区

### 什么是多智能体？

简单来说，**多智能体**就是让您可以在一个 QwenPaw 中运行多个"分身"，每个分身：

- 有自己的**性格和专长**（通过不同的人设文件配置）
- 记住**各自的对话**（互不干扰）
- 使用**不同的技能**（一个擅长代码，一个擅长写作）
- 连接**不同的频道**（一个负责钉钉，一个负责 Discord）

就像您有多个助手，每个助手各司其职。

---

## 为什么需要多智能体？

### 场景一：按用途分工

您可能需要：

- 一个**日常助手** - 闲聊、查资料、记待办
- 一个**代码助手** - 专注代码审查和开发
- 一个**写作助手** - 专注文档撰写和润色

每个智能体专注自己的领域，互不干扰。

### 场景二：按平台分离

您可能在多个平台使用 QwenPaw：

- **钉钉** - 工作相关对话
- **Discord** - 社区讨论
- **控制台** - 私人使用

不同平台的对话和配置完全隔离，不会混在一起。

### 场景三：测试与生产隔离

您可能需要：

- **生产智能体** - 稳定配置，用于日常工作
- **测试智能体** - 实验新功能，不影响生产环境

---

## 如何使用？（推荐方式）

### 在控制台中管理智能体

> 这是最简单的方式，**无需任何命令行操作**。

#### 1. 查看和切换智能体

启动 QwenPaw 后，在控制台**左上角**可以看到**智能体切换器**：

```
┌───────────────────────────────────┐
│  当前智能体  [默认智能体 ▼] (1)    │
└───────────────────────────────────┘
```

点击下拉框可以：

- 查看所有智能体的名称和描述
- 切换到其他智能体
- 看到当前智能体的 ID

切换后，页面会自动刷新，显示新智能体的配置和数据。

#### 2. 创建新智能体

进入**设置 → 智能体管理**页面：

1. 点击"创建智能体"按钮
2. 填写信息：
   - **名称**：给智能体起个名字（如"代码助手"）
   - **描述**：说明这个智能体的专长和用途（**重要**）
   - **ID**：留空自动生成，或自定义（如"coder"）
3. 点击"确定"

创建后，新智能体会出现在列表中，您可以立即切换过去使用。

> **重要提示**：**描述**字段非常重要！如果您计划使用多智能体协作功能，请在描述中清晰说明这个智能体的专长领域和擅长的任务类型。例如："专注于 Python/JavaScript 代码审查和重构优化"。智能体间协作时会读取这个描述来判断应该调用哪个智能体。

#### 3. 为智能体配置专属设置

切换到某个智能体后，您可以为它单独配置：

- **频道** - 去"控制 → 频道"页面，启用/配置频道
- **技能** - 去"工作区 → 技能"页面，启用/禁用技能
- **工具** - 去"工作区 → 工具"页面，开关内置工具
- **人设** - 去"工作区 → 文件"页面，编辑 AGENTS.md 和 SOUL.md

这些配置**只影响当前智能体**，不会影响其他智能体。

#### 4. 编辑和删除智能体

在**设置 → 智能体管理**页面：

- 点击"编辑"按钮修改智能体的名称和描述（修改描述后，系统会自动更新 PROFILE.md）
- 点击"删除"按钮移除智能体（默认智能体不能删除）

---

## 使用场景示例

### 示例一：工作与生活分离

**场景**：您希望工作对话和私人对话分开。

**配置**：

1. 在控制台创建两个智能体：

   - `work` - 工作助手
   - `personal` - 私人助手

2. 为 `work` 智能体：

   - 启用钉钉频道
   - 启用代码、文档相关技能
   - 配置正式的人设（AGENTS.md）

3. 为 `personal` 智能体：
   - 启用 Discord 或控制台
   - 启用娱乐、新闻相关技能
   - 配置轻松的人设

**使用**：在钉钉聊天时自动使用 `work` 智能体，在 Discord 聊天时使用 `personal` 智能体。

### 示例二：专业助手团队

**场景**：您希望有多个专业领域的助手。

**配置**：

1. 创建三个智能体：

   - `coder` - 代码助手（启用代码审查、文件操作技能）
   - `writer` - 写作助手（启用文档处理、新闻摘要技能）
   - `planner` - 任务助手（启用定时任务、邮件技能）

2. 根据需要切换到对应的智能体使用。

**优点**：每个智能体专注自己的领域，人设更精准，对话历史不会混淆。

### 示例三：多语言支持

**场景**：您需要中英文两个助手。

**配置**：

1. 创建两个智能体：

   - `zh-assistant` - 中文助手（language: "zh"）
   - `en-assistant` - 英文助手（language: "en"）

2. 分别编辑它们的 AGENTS.md 和 SOUL.md 为对应语言。

**使用**：需要中文对话时切换到 `zh-assistant`，需要英文时切换到 `en-assistant`。

---

## 常见问题

### Q: 我需要创建多个智能体吗？

不一定。如果您的使用场景简单，**只用默认智能体完全足够**。

建议创建多个智能体的情况：

- 需要明确的功能分离（工作/生活、开发/写作等）
- 连接多个平台，希望每个平台有独立的对话历史
- 需要测试新配置，不想影响日常使用的智能体

### Q: 智能体切换会丢失对话吗？

不会。每个智能体的对话历史都是独立保存的，切换只是改变当前查看的智能体。

### Q: 多个智能体会增加成本吗？

不会。智能体只在使用时才调用 LLM，闲置的智能体不会产生费用。

### Q: 可以同时使用多个智能体吗？

可以。如果您在钉钉和 Discord 都配置了不同的智能体，它们可以同时响应各自频道的消息。

### Q: 如何删除智能体？

在控制台的"设置 → 智能体管理"页面点击删除按钮。

**注意**：删除后工作区目录会保留（防止误删数据），如需彻底清理，请手动删除 `~/.qwenpaw/workspaces/{agent_id}` 目录。

### Q: 默认智能体可以删除吗？

不建议删除。`default` 智能体是系统的默认后备，删除可能导致兼容性问题。

### Q: 智能体之间可以共享什么？

**全局共享**：

- 模型提供商配置（API Key、模型选择）
- 环境变量（TAVILY_API_KEY 等）

**独立配置**：

- 频道配置
- 技能启用状态
- 对话历史
- 定时任务
- 人设文件

---

## 从单智能体升级

如果您之前使用 QwenPaw **v0.0.x**，升级到 **v0.1.0** 时会**自动迁移**：

1. **首次启动时自动迁移**

   - 旧的配置和数据会自动移动到 `default` 智能体工作区
   - 您无需手动操作任何文件

2. **验证迁移**

   - 启动 QwenPaw 后，在控制台查看智能体列表
   - 应该能看到一个名为"默认智能体"的智能体
   - 您的旧对话和配置都应该还在

3. **备份建议**
   升级前备份工作目录：
   ```bash
   cp -r ~/.qwenpaw ~/.qwenpaw.backup
   ```

---

## 第二部分：智能体间协作

智能体之间可以互相通信和协作，完成单个智能体难以完成的复杂任务。

### 什么是智能体协作？

**多智能体协作（Multi-Agent Collaboration）** 是一个内置技能，启用后，您的智能体可以：

- 请求其他智能体的**专业能力**（如让代码智能体审查代码，让写作智能体润色文档）
- 访问其他智能体的**工作区数据**（如读取另一个智能体的配置或文件）
- 寻求**第二意见**或专业复核
- 在用户**明确要求**时调用指定的智能体

### 如何启用协作功能？

#### 方式一：在控制台中启用（推荐）

1. 切换到需要启用协作的智能体
2. 进入**智能体 → 技能**页面
3. 找到 **Multi-Agent Collaboration（多智能体协作）** 技能
4. 勾选启用
5. 点击"保存"

#### 方式二：使用 CLI 启用

```bash
# 为默认智能体启用
qwenpaw skills config

# 为特定智能体启用
qwenpaw skills config --agent-id abc123

# 在交互界面中：
# - 使用 ↑/↓ 键找到 "multi_agent_collaboration"
# - 按空格键勾选
# - 按回车键确认保存
```

### 协作如何触发？

启用协作技能后，智能体会在以下情况自动发起协作：

#### 触发方式一：用户明确要求

用户在对话中直接要求调用其他智能体：

**示例：**

```
用户：请让代码助手帮我审查这段代码
```

当前智能体会：

1. 识别到用户要求调用"代码助手"
2. 查询可用智能体列表
3. 向"代码助手"发送审查请求
4. 等待"代码助手"返回结果
5. 将结果整合后回复用户

#### 触发方式二：智能体主动判断

智能体在处理任务时，如果判断需要其他智能体的专业能力，会主动发起协作：

**示例：**

```
用户：帮我生成一份技术文档并用专业语言润色

当前智能体的处理流程：
1. [生成技术文档初稿]
2. [判断：润色需要写作专长，调用写作助手]
3. [将初稿发送给写作助手]
4. [接收写作助手返回的润色版本]
5. [返回最终文档给用户]
```

### 使用场景示例

#### 场景一：跨领域协作

```
用户：请分析我的项目结构并生成架构文档

流程：
1. 代码智能体分析项目结构
2. 代码智能体调用写作智能体
3. 写作智能体生成专业文档
4. 代码智能体返回最终结果
```

#### 场景二：专业复核

```
用户：这段代码有什么问题？让资深助手也看看

流程：
1. 当前智能体先分析代码
2. 识别用户要求"资深助手"参与
3. 调用"资深助手"进行复核
4. 综合两方意见返回给用户
```

#### 场景三：数据共享

```
用户：把财务智能体的月度报告发给我

流程：
1. 当前智能体识别需要"财务智能体"的数据
2. 向财务智能体请求月度报告
3. 接收报告数据
4. 格式化后发送给用户
```

### 协作的优势

- **专业分工**：每个智能体专注自己的领域，协作时发挥各自优势
- **上下文隔离**：不同智能体的对话历史互不干扰，避免混淆
- **灵活组合**：根据任务需要动态组合不同智能体的能力
- **可扩展性**：添加新智能体即可扩展整个系统的能力

### 智能体描述的重要性

为了让智能体间协作更有效，需要为每个智能体提供清晰的描述信息。

#### 智能体如何识别彼此？

当智能体 A 需要与智能体 B 协作时，会先查询可用智能体列表。系统会读取并展示每个智能体的：

- **名称**（name）- 智能体的显示名称
- **ID**（agent_id）- 唯一标识符
- **描述**（description）- 用户在创建智能体时填写的专长和用途说明
- **PROFILE.md**（自动生成）- 系统根据智能体的配置自动生成的详细能力描述

#### 如何填写描述？

**在创建智能体时**，描述字段应清晰说明：

✅ **好的描述示例**：

```
专注于 Python/JavaScript 代码审查、重构和性能优化
```

```
负责文档撰写、内容润色和技术写作，擅长中英文双语
```

```
处理财务数据分析、报表生成和预算管理
```

❌ **不好的描述示例**：

```
我的助手
```

```
测试用
```

```
（留空）
```

**描述的关键要素**：

1. 明确的**专长领域**（如"代码审查"、"文档撰写"）
2. 具体的**技能范围**（如"Python/JavaScript"、"中英文双语"）
3. 擅长的**任务类型**（如"重构优化"、"数据分析"）

#### PROFILE.md 自动生成

系统会根据智能体的配置（包括名称、描述、技能、人设文件等）**自动生成** `PROFILE.md` 文件，存放在工作区目录：

```
~/.qwenpaw/workspaces/{agent_id}/PROFILE.md
```

您可以在**工作区 → 文件**页面查看自动生成的 PROFILE.md。

#### 查看智能体信息

使用 CLI 查看所有智能体的信息：

```bash
qwenpaw agents list

# 输出示例：
# Agent ID: code_reviewer
# Name: 代码审查助手
# Description: 专注于 Python/JavaScript 代码审查、重构和性能优化
# Workspace: ~/.qwenpaw/workspaces/code_reviewer
# Profile: [自动生成的详细能力描述]
```

智能体在协作时会综合参考 **Description** 和 **PROFILE.md** 来做出决策。

### 注意事项

- **需要先启用 skill**：协作功能需要显式启用"多智能体协作"技能
- **填写清晰的描述**：创建智能体时，在描述字段清晰说明其专长和擅长的任务类型
- **系统自动生成 Profile**：PROFILE.md 由系统自动生成，无需手动编写
- **自动化处理**：启用后，智能体会根据需要自动发起协作，用户无需手动操作
- **性能考虑**：协作涉及多个智能体，可能需要更多时间和 API 调用
- **合理规划**：建议根据实际需求创建 3-5 个智能体，避免过度复杂化

---

## 进阶：CLI 和 API

> 如果您不熟悉命令行或 API，可以跳过这部分。所有功能都可以在控制台中完成。

### 智能体协作相关 CLI

智能体在启用协作技能后，会在后台自动使用以下 CLI 命令：

#### 查询可用智能体

```bash
qwenpaw agents list
```

此命令会列出所有已配置的智能体，包括：

- **Agent ID**：智能体的唯一标识
- **Name**：智能体名称
- **Description**：用户创建智能体时填写的专长和用途说明
- **Workspace**：工作区路径
- **Profile**：系统自动生成的 `PROFILE.md` 文件内容（如果存在）

**示例输出**：

```
Agent ID: code_reviewer
Name: 代码审查助手
Description: 专注于 Python/JavaScript 代码审查、重构和性能优化
Workspace: ~/.qwenpaw/workspaces/code_reviewer
Profile: [自动生成的详细能力描述，基于配置和人设文件]

Agent ID: writer_bot
Name: 写作助手
Description: 负责文档撰写、内容润色和技术写作，擅长中英文双语
Workspace: ~/.qwenpaw/workspaces/writer_bot
Profile: [自动生成的详细能力描述]
```

智能体在决定调用哪个智能体时，会综合参考 **Description** 和 **Profile** 来做出最佳选择。

#### 与其他智能体通信

```bash
# 发起新对话（实时模式，适合快速查询）
qwenpaw agents chat \
  --from-agent <current_agent> \
  --to-agent <target_agent> \
  --text "请求内容"

# 多轮对话（保持上下文）
qwenpaw agents chat \
  --from-agent <current_agent> \
  --to-agent <target_agent> \
  --session-id "<session_id>" \
  --text "继续请求"

# 复杂任务（后台模式，适合数据分析、报告生成等）
qwenpaw agents chat --background \
  --from-agent <current_agent> \
  --to-agent <target_agent> \
  --text "复杂任务请求"
# 返回 [TASK_ID: xxx] [SESSION: xxx]

# 查询后台任务状态（查询时 --to-agent 为可选）
qwenpaw agents chat --background \
  --task-id <task_id>
# 状态流程：submitted → pending → running → finished
# finished 时结果显示：completed（✅）或 failed（❌）
```

**后台模式说明**：

当任务比较复杂（如数据分析、批量处理、报告生成）时，使用 `--background` 可以避免阻塞当前智能体，让它可以继续处理其他工作。提交后会返回 `task_id`，稍后可以查询任务状态和结果。

**任务状态流程**：

- `submitted`：任务已接受，等待开始
- `pending`：排队等待执行
- `running`：正在执行
- `finished`：已完成（需检查结果是 `completed` 或 `failed`）

**建议使用后台模式的场景**：

- 数据分析和统计
- 批量文件处理
- 生成详细报告
- 调用慢速外部API
- 不确定执行时间的复杂任务

> **说明**：这些命令由智能体自动执行，通常无需用户手动调用。详见 [CLI - 智能体](./cli#智能体)。

### 智能体管理 CLI

所有支持多智能体的 CLI 命令都接受 `--agent-id` 参数（默认为 `default`）：

```bash
# 查看特定智能体的配置
qwenpaw channels list --agent-id abc123
qwenpaw cron list --agent-id abc123
qwenpaw skills list --agent-id abc123

# 为特定智能体创建定时任务
qwenpaw cron create \
  --agent-id abc123 \
  --type agent \
  --name "检查待办" \
  --cron "0 9 * * *" \
  --channel console \
  --target-user "user1" \
  --target-session "session1" \
  --text "我有什么待办事项？"
```

**支持 `--agent-id` 的命令**：

- `qwenpaw channels` - 频道管理
- `qwenpaw cron` - 定时任务
- `qwenpaw daemon` - 运行状态
- `qwenpaw chats` - 对话管理
- `qwenpaw skills` - 技能管理

**不支持 `--agent-id` 的命令**（全局操作）：

- `qwenpaw init` - 初始化
- `qwenpaw providers` - 模型提供商
- `qwenpaw models` - 模型配置
- `qwenpaw env` - 环境变量

### REST API

#### 智能体管理 API

| 端点                            | 方法   | 说明           |
| ------------------------------- | ------ | -------------- |
| `/api/agents`                   | GET    | 列出所有智能体 |
| `/api/agents`                   | POST   | 创建新智能体   |
| `/api/agents/{agent_id}`        | GET    | 获取智能体详情 |
| `/api/agents/{agent_id}`        | PUT    | 更新智能体配置 |
| `/api/agents/{agent_id}`        | DELETE | 删除智能体     |
| `/api/agents/{agent_id}/active` | POST   | 激活智能体     |

#### 智能体专属 API

所有智能体专属的 API 都支持 `X-Agent-Id` HTTP 头：

```bash
# 获取特定智能体的对话列表
curl -H "X-Agent-Id: abc123" http://localhost:7860/api/chats

# 为特定智能体创建定时任务
curl -X POST http://localhost:7860/api/cron/jobs \
  -H "X-Agent-Id: abc123" \
  -H "Content-Type: application/json" \
  -d '{ ... }'
```

支持 `X-Agent-Id` 的 API 端点：

- `/api/chats/*` - 对话管理
- `/api/cron/*` - 定时任务
- `/api/config/*` - 频道和心跳配置
- `/api/skills/*` - 技能管理
- `/api/tools/*` - 工具管理
- `/api/mcp/*` - MCP 客户端管理
- `/api/agent/*` - 工作区文件和记忆

### 配置文件结构

如果您需要直接编辑配置文件：

#### 旧结构（v0.0.x）

```
~/.qwenpaw/
├── config.json          # 包含所有配置
├── chats.json
├── jobs.json
├── AGENTS.md
└── ...
```

#### 新结构（v0.1.0+）

```
~/.qwenpaw/
├── config.json          # 全局配置（providers, agents.profiles）
└── workspaces/
    ├── default/         # 默认智能体工作区
    │   ├── agent.json   # 智能体专属配置
    │   ├── chats.json
    │   ├── jobs.json
    │   ├── AGENTS.md
    │   └── ...
    └── abc123/          # 其他智能体
        └── ...
```

---

## 最佳实践

### 合理规划智能体数量

✅ **推荐**：3-5 个智能体，按主要功能或平台分类

❌ **不推荐**：为每个小功能都创建智能体

过多智能体会增加管理复杂度，得不偿失。

### 使用清晰的名称

✅ **好的命名**：

- `default` - 默认智能体
- `work-assistant` - 工作助手
- `code-reviewer` - 代码审查助手

❌ **不好的命名**：

- `abc123` - 无意义的随机字符
- `test1`, `test2` - 不清楚用途

### 定期备份

重要智能体的工作区建议定期备份：

```bash
# 备份特定智能体
cp -r ~/.qwenpaw/workspaces/abc123 ~/backups/agent-abc123-$(date +%Y%m%d)

# 备份所有智能体
cp -r ~/.qwenpaw/workspaces ~/backups/workspaces-$(date +%Y%m%d)
```

---

## 第三部分：子 Agent 派发（spawn_subagent）

> 本功能在 **v1.1.10** 中引入。

除了与**不同 workspace 的其他 Agent** 协作（`chat_with_agent`），QwenPaw 还支持在**当前项目内**派发临时子任务。

### 三种协作模式对比

| 模式                         | 工作区                    | 历史上下文         | 适用场景                         |
| ---------------------------- | ------------------------- | ------------------ | -------------------------------- |
| `chat_with_agent`            | 目标 Agent 独立 workspace | 无（只传 text）    | 调用专长 Agent（QA、代码审查等） |
| `spawn_subagent(fork=False)` | 与当前 Agent 相同的项目   | 无（空白 session） | 干净独立子任务                   |
| `spawn_subagent(fork=True)`  | 取决于环境（见下方）      | 继承完整对话历史   | 需要背景的侧任务，且可能改文件   |

### 核心特性

- **临时性（Ephemeral）**：子 Agent 不可恢复。每次调用创建一个新 session，完成后即丢弃。
- **同一 Agent**：子 Agent 使用相同的 Agent 配置（persona、tools），只是在独立 session 中运行。
- **无需额外配置**：`fork=True` 始终可用，无论是否开启 Coding Mode。

### fork=True 在不同环境下的行为

| 环境                                       | 行为                                                                                                |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------- |
| 开启 Coding Mode + project_dir 是 git 仓库 | 在 `<project_dir>/.qwenpaw/worktrees/` 下创建 **git worktree**，子 Agent 在隔离的 worktree 中工作   |
| 未开启 Coding Mode + workspace 是 git 仓库 | 在 `<workspace_dir>/.qwenpaw/worktrees/` 下创建 **git worktree**，子 Agent 在隔离的 worktree 中工作 |
| 没有可用的 git 仓库                        | **原地 fork**：继承对话上下文，在与 parent 相同的目录中工作。无文件隔离                             |

`fork=True` 的核心保证是**对话上下文继承**。Git worktree 隔离是项目为 git 仓库时的自动附加能力。

### 何时使用 spawn_subagent？

**使用 `spawn_subagent(fork=False)`（推荐，最常用）**：

- 子任务需要读写**当前项目的文件**
- 子任务相对独立，**不需要当前对话的背景**

```
"分析 src/core 下所有 API 端点并生成清单"
"运行测试套件并汇总失败原因"
"扫描整个代码库的安全漏洞"
```

**使用 `spawn_subagent(fork=True)`**：

- 子任务**需要完整对话背景**（如基于刚才讨论的内容）
- 子任务**会改动文件**，但不希望影响当前工作区（需要 git 仓库）
- 子任务需要对话背景但**不改动文件**（任何环境都可用）

```
"基于我们刚才的讨论，为解析器模块补充单元测试"
"试试另一个实现思路，做成独立分支方便比较"
"把我们讨论的内容整理成一份规格文档"
```

**使用 `chat_with_agent`（跨 Agent）**：

- 需要调用有特定专长的其他 Agent（QA Agent、代码审查 Agent 等）

### 调用方式

#### 前台同步（等待结果）

```
用户：分析 src/core 下的性能瓶颈

Agent 内部执行：
spawn_subagent(task="分析 src/core 下的性能瓶颈并给出报告")
→ 返回: [SESSION: sub-ab12]
         分析结果详情...
```

#### 后台异步（立即返回，稍后查询）

```
spawn_subagent(
    task="扫描整个代码库安全漏洞",
    background=True,
)
→ 返回: [TASK_ID: task-cd34]
         [SESSION: sub-ef56]
         任务已提交，用 check_agent_task(task_id="task-cd34") 查询进度
```

#### fork=True + git 仓库 — 继承历史，隔离 worktree

```
spawn_subagent(
    task="基于我们刚才的讨论，为 parser 模块写单元测试",
    fork=True,
)
→ [SESSION: sub-gh78]
   测试代码已写入...
   [FORK_BRANCH: fork/ab12ef34]
   有文件改动，请手动合并分支。

# 如果子任务完成后没有改动文件 → worktree 自动清理
```

#### fork=True + 非 git 仓库 — 原地继承上下文

```
spawn_subagent(
    task="基于我们之前的讨论，起草 API 规格文档",
    fork=True,
)
→ [SESSION: sub-ij90]
   API 规格文档已起草...

# 无 worktree 创建 — 子 Agent 继承上下文后原地工作
```

### .worktreeinclude — 自动复制配置文件

当 git worktree 被创建时，被 `.gitignore` 忽略的文件（如 `.env`）不会被包含。

在项目根目录创建 `.worktreeinclude` 文件，列出需要复制到 worktree 的文件：

```
# .worktreeinclude
.env
.env.local
config/local.json
```

QwenPaw 在创建 worktree 时会自动将这些文件复制过去，确保子任务能正常运行。

> 注意：`.worktreeinclude` 仅在 git worktree 被创建时生效。

### 常见问题

**Q：spawn_subagent 和 chat_with_agent 可以同时用吗？**

可以。两者互不冲突：

- `spawn_subagent` 在当前项目内执行文件操作类子任务（同 Agent，临时 session）
- `chat_with_agent` 调用其他专长 Agent

**Q：fork=True 需要开启 Coding Mode 吗？**

不需要。`fork=True` 始终可用：

- 有 git 仓库时（无论是 Coding Mode 的 project_dir 还是 workspace）：获得 worktree 隔离 + 上下文继承
- 没有 git 仓库时：仅获得上下文继承（原地工作，无文件隔离）

**Q：worktree 会自动清理吗？**

- **有文件改动**：保留，返回 `[FORK_BRANCH]` 分支名。需手动合并后执行 `git worktree remove` 清理
- **无文件改动**：自动清理
- **无 git 仓库**：不创建 worktree，无需清理

**Q：background=True 时的 worktree 怎么处理？**

后台模式下不自动清理，需手动检查：

```bash
git worktree list
git worktree remove .qwenpaw/worktrees/<id>
```

**Q：可以恢复子 Agent 的 session 吗？**

不可以。子 Agent 设计为临时性的。如需多轮交互，请使用 `chat_with_agent` 并指定 `session_id`。

---

## 相关页面

- [CLI 命令](./cli) - 命令行工具详细说明
- [配置与工作目录](./config) - 配置文件结构
- [控制台](./console) - Web 管理界面
- [技能](./skills) - 技能系统
