|
| 1 | +*** |
| 2 | + |
| 3 | +name: "conversation" |
| 4 | +description: "管理对话流程和状态转换。在处理任务、话题、问答交互时调用。" |
| 5 | +-------------------------------------------- |
| 6 | + |
| 7 | +# 对话管理规则 |
| 8 | + |
| 9 | +## 核心概念 |
| 10 | + |
| 11 | +### Task(任务) |
| 12 | + |
| 13 | +用户发起的完整工作单元,具有独立的生命周期。 |
| 14 | + |
| 15 | +| 状态 | 说明 | |
| 16 | +| ------------- | -------- | |
| 17 | +| **IDLE** | 空闲/无活动任务 | |
| 18 | +| **ACTIVE** | 进行中 | |
| 19 | +| **PAUSED** | 已暂停(可恢复) | |
| 20 | +| **COMPLETED** | 已完成 | |
| 21 | +| **ABANDONED** | 已放弃 | |
| 22 | + |
| 23 | +### Topic(话题) |
| 24 | + |
| 25 | +Task 内的一个主题单元,一个 Task 可包含多个 Topic。 |
| 26 | + |
| 27 | +| 状态 | 说明 | |
| 28 | +| ------------- | ------------ | |
| 29 | +| **ACTIVE** | 当前活跃话题 | |
| 30 | +| **PAUSED** | 已暂停(切换到其他话题) | |
| 31 | +| **COMPLETED** | 已完成 | |
| 32 | +| **ABANDONED** | 已放弃 | |
| 33 | + |
| 34 | +### QA(问答) |
| 35 | + |
| 36 | +Topic 内的一次完整问答交互。 |
| 37 | + |
| 38 | +| 状态 | 说明 | |
| 39 | +| --------------- | --------- | |
| 40 | +| **PROCESSING** | AI 正在处理 | |
| 41 | +| **WAITING** | 等待用户确认/输入 | |
| 42 | +| **COMPLETED** | 已完成 | |
| 43 | +| **INTERRUPTED** | 已中断(可恢复) | |
| 44 | + |
| 45 | +*** |
| 46 | + |
| 47 | +## 状态记录文件 |
| 48 | + |
| 49 | +所有对话状态记录在 `.trae/status/conversation.yaml` 文件中,包含: |
| 50 | + |
| 51 | +- Task 列表及其状态 |
| 52 | +- 每个 Task 包含的 Topic 列表 |
| 53 | +- 每个 Topic 包含的 QA 列表 |
| 54 | +- 每个对象的唯一 ID、创建时间、更新时间等信息 |
| 55 | + |
| 56 | +### 唯一 ID 生成规则 |
| 57 | + |
| 58 | +- **Task ID**: `T-{timestamp}-{random4}` (例:`T-20260326192600-a1b2`) |
| 59 | +- **Topic ID**: `TP-{task_id}-{sequence}` (例:`TP-T-20260326192600-a1b2-001`) |
| 60 | +- **QA ID**: `QA-{topic_id}-{sequence}` (例:`QA-TP-T-20260326192600-a1b2-001-001`) |
| 61 | + |
| 62 | +*** |
| 63 | + |
| 64 | +## 用户指令集 |
| 65 | + |
| 66 | +### Task 级别指令 |
| 67 | + |
| 68 | +| 指令 | 说明 | 触发条件 | |
| 69 | +| ------------------------------- | ---------- | ------------ | |
| 70 | +| `/continue [task_id/task_name]` | 继续指定任务 | IDLE, PAUSED | |
| 71 | +| `/merge [task_id/task_name]` | 继承指定任务的上下文 | IDLE | |
| 72 | +| `/status [task_id/task_name]` | 查看任务状态 | 任意 | |
| 73 | +| `/save [task_id/task_name]` | 保存进度,存储记忆 | PAUSED | |
| 74 | + |
| 75 | +### Topic 级别指令 |
| 76 | + |
| 77 | +| 指令 | 说明 | 触发条件 | |
| 78 | +| -------------------------------- | ---------------- | -------------- | |
| 79 | +| `/new [topic_name]` | 新建话题,名称可由用户输入或为空 | IDLE | |
| 80 | +| `/status [topic_id/topic_desc]` | 查看话题状态 | 任意 | |
| 81 | +| `/save [topic_id/topic_desc]` | 保存进度,存储记忆 | PAUSED | |
| 82 | +| `/abandon [topic_id/topic_desc]` | 放弃当前话题 | ACTIVE, PAUSED | |
| 83 | + |
| 84 | +### QA 级别指令 |
| 85 | + |
| 86 | +| 指令 | 说明 | 触发条件 | |
| 87 | +| ----------- | --------------- | ----------------------- | |
| 88 | +| `/stop` | 停止当前问答(UI 停止按钮) | PROCESSING | |
| 89 | +| `/continue` | 继续执行 | INTERRUPTED | |
| 90 | +| `/abandon` | 放弃当前问答的执行结果 | INTERRUPTED 或 COMPLETED | |
| 91 | +| `/adjust` | 调整方案后继续 | WAITING | |
| 92 | + |
| 93 | +*** |
| 94 | + |
| 95 | +## 状态管理规则 |
| 96 | + |
| 97 | +### Task 状态转换 |
| 98 | + |
| 99 | +- `IDLE` → `ACTIVE`: 用户通过 UI 创建新任务 |
| 100 | +- `ACTIVE` → `PAUSED`: 用户暂停任务 |
| 101 | +- `ACTIVE` → `COMPLETED`: 所有话题完成 |
| 102 | +- `ACTIVE` → `ABANDONED`: 用户放弃任务 |
| 103 | +- `PAUSED` → `ACTIVE`: 用户继续任务 |
| 104 | +- `PAUSED` → `COMPLETED`: 用户确认完成 |
| 105 | +- `PAUSED` → `ABANDONED`: 用户放弃任务 |
| 106 | + |
| 107 | +### Topic 状态转换 |
| 108 | + |
| 109 | +- `IDLE` → `ACTIVE`: 用户创建新话题(`/new`) |
| 110 | +- `ACTIVE` → `PAUSED`: 切换到其他话题 |
| 111 | +- `ACTIVE` → `COMPLETED`: 话题内所有 QA 完成 |
| 112 | +- `ACTIVE` → `ABANDONED`: 用户放弃话题(`/abandon`) |
| 113 | +- `PAUSED` → `ACTIVE`: 切换回该话题 |
| 114 | +- `PAUSED` → `COMPLETED`: 用户确认完成 |
| 115 | +- `PAUSED` → `ABANDONED`: 用户放弃话题 |
| 116 | + |
| 117 | +### QA 状态转换 |
| 118 | + |
| 119 | +- `IDLE` → `PROCESSING`: 用户输入,AI 开始处理 |
| 120 | +- `PROCESSING` → `WAITING`: AI 处理完成,等待确认 |
| 121 | +- `PROCESSING` → `INTERRUPTED`: 用户点击停止(`/stop`) |
| 122 | +- `WAITING` → `PROCESSING`: 用户调整方案(`/adjust`) |
| 123 | +- `WAITING` → `COMPLETED`: 用户确认 |
| 124 | +- `INTERRUPTED` → `PROCESSING`: 用户继续(`/continue`) |
| 125 | +- `INTERRUPTED` → `COMPLETED`: 用户放弃执行结果(`/abandon`) |
| 126 | + |
| 127 | +*** |
| 128 | + |
| 129 | +## 话题切换与跨任务处理 |
| 130 | + |
| 131 | +### 场景一:同一任务内切换话题 |
| 132 | + |
| 133 | +**处理规则:** |
| 134 | + |
| 135 | +1. **明确切换**(用户主动说明) |
| 136 | + - 当用户明确表示切换话题时(如"换个话题") |
| 137 | + - 当前 Topic 进入 PAUSED |
| 138 | + - 创建新 Topic 或切换到已存在的话题 |
| 139 | +2. **隐式切换**(上下文自然转移) |
| 140 | + - 当用户问题与当前上下文明显无关时 |
| 141 | + - 提醒用户确认是否开启新话题 |
| 142 | + - 用户确认后创建新 Topic |
| 143 | + |
| 144 | +### 场景二:跨任务联系 |
| 145 | + |
| 146 | +**处理规则:** |
| 147 | + |
| 148 | +1. **任务 ID/名称引用** |
| 149 | + - 用户可通过任务 ID 或名称引用其他任务 |
| 150 | + - AI 主动询问是否需要加载引用任务的上下文 |
| 151 | +2. **上下文继承** |
| 152 | + - 用户可以要求继承上一个任务的上下文(`/merge`) |
| 153 | + - AI 确认继承内容后继续 |
| 154 | +3. **项目级记忆** |
| 155 | + - 将用户偏好、项目背景存储到 `.trae/status/conversation.yaml` |
| 156 | + - 新任务自动加载项目上下文 |
| 157 | + |
| 158 | +*** |
| 159 | + |
| 160 | +## 默认采纳机制 |
| 161 | + |
| 162 | +- 对话中如果用户对 AI 的回答没有提出质疑,**默认就是采纳** |
| 163 | +- 采纳意味着用户认可 AI 的回答内容,不需要进一步修改或澄清 |
| 164 | +- AI 可以继续推进任务,无需反复确认 |
| 165 | + |
| 166 | +*** |
| 167 | + |
| 168 | +## 质疑与修改流程 |
| 169 | + |
| 170 | +- 用户可能会对 AI 回答的某个点产生质疑,逐步修改 AI 的回答 |
| 171 | +- 每次质疑都是对回答的**局部调整**,而非整体否定 |
| 172 | +- AI 应根据质疑内容调整方案,而非重新开始 |
| 173 | + |
| 174 | +*** |
| 175 | + |
| 176 | +## 执行前汇总原则 |
| 177 | + |
| 178 | +- 当用户明确表示**开始执行**时,AI 需要汇总几次质疑的最终结果 |
| 179 | +- 按**最终汇总结果**去执行,确保执行方案是所有讨论和修改的综合结果 |
| 180 | + |
0 commit comments