Loading...
Loading...
Compare original and translation side by side
Main Task Agent
│
├─► create_task (subtask A) ─► start_workspace_session ─► Agent A executes
│ │
├─► create_task (subtask B) ─► start_workspace_session ─► Agent B executes
│ │
└─► poll list_tasks + get_task ◄─── update_task (results) ────┘descriptionMain Task Agent
│
├─► create_task (subtask A) ─► start_workspace_session ─► Agent A executes
│ │
├─► create_task (subtask B) ─► start_workspace_session ─► Agent B executes
│ │
└─► poll list_tasks + get_task ◄─── update_task (results) ────┘descriptioncreate_task(
project_id: "<current_project_id>",
title: "Subtask: <specific work>",
description: "<your task instructions here>\n\n" + SUBTASK_REPORT_INSTRUCTIONS
)---create_task(
project_id: "<current_project_id>",
title: "Subtask: <specific work>",
description: "<your task instructions here>\n\n" + SUBTASK_REPORT_INSTRUCTIONS
)---context = get_context()update_task(
task_id: context.task_id,
description: "<your result report>"
)context = get_context()update_task(
task_id: context.task_id,
description: "<your result report>"
)
**Record the returned `task_id` for each subtask.**
**记录每个子任务返回的`task_id`。**start_workspace_session(
task_id: "<subtask_task_id>",
executor: "CLAUDE_CODE", // or: AMP, GEMINI, CODEX, OPENCODE, CURSOR_AGENT, QWEN_CODE, COPILOT, DROID
repos: [{ repo_id: "<target_repo_id>", base_branch: "main" }]
)start_workspace_session(
task_id: "<subtask_task_id>",
executor: "CLAUDE_CODE", // 或:AMP, GEMINI, CODEX, OPENCODE, CURSOR_AGENT, QWEN_CODE, COPILOT, DROID
repos: [{ repo_id: "<target_repo_id>", base_branch: "main" }]
)list_tasksget_taskundefinedlist_tasksget_taskundefinedundefinedundefined | | Description has results | State |
|---|---|---|---|
| | No | Running - wait |
| | No | Failed - workspace crashed, don't wait |
| | Yes | Completed - collect results |
| | No | Completed but no report - check manually |
| | 描述包含结果 | 状态 |
|---|---|---|---|
| | 否 | 运行中 - 等待 |
| | 否 | 失败 - 工作区崩溃,无需等待 |
| | 是 | 已完成 - 收集结果 |
| | 否 | 已完成但无报告 - 手动检查 |
SUBTASK_REPORT_INSTRUCTIONS = """
---SUBTASK_REPORT_INSTRUCTIONS = """
---context = get_context()update_task(
task_id: context.task_id,
description: "<your result report>"
)context = get_context()update_task(
task_id: context.task_id,
description: "<your result report>"
)start_workspace_session(
task_id: task.task_id,
executor: "CLAUDE_CODE",
repos: [{ repo_id: work_item.repo_id, base_branch: "main" }]
)start_workspace_session(
task_id: task.task_id,
executor: "CLAUDE_CODE",
repos: [{ repo_id: work_item.repo_id, base_branch: "main" }]
)for task_id in list(pending):
task_status = task_map.get(task_id)
if task_status.has_in_progress_attempt:
continue # Still running
if task_status.last_attempt_failed:
failed[task_id] = "Workspace session failed"
pending.remove(task_id)
continue
result = get_task(task_id)
if "## Status" in result.description:
results[task_id] = result.description
pending.remove(task_id)undefinedfor task_id in list(pending):
task_status = task_map.get(task_id)
if task_status.has_in_progress_attempt:
continue # 仍在运行
if task_status.last_attempt_failed:
failed[task_id] = "Workspace session failed"
pending.remove(task_id)
continue
result = get_task(task_id)
if "## Status" in result.description:
results[task_id] = result.description
pending.remove(task_id)undefined| Tool | Role | Purpose |
|---|---|---|
| Subtask | Get own task_id, project_id, workspace_id |
| Main | Create subtask with instructions |
| Main | Launch subtask workspace |
| Main | Check execution status (has_in_progress_attempt, last_attempt_failed) |
| Main | Get subtask description for results |
| Subtask | Write results to own description |
| Main | Get available repo IDs |
| 工具 | 角色 | 用途 |
|---|---|---|
| 子任务 | 获取自身的task_id、project_id、workspace_id |
| 主任务 | 创建包含指令的子任务 |
| 主任务 | 启动子任务工作区 |
| 主任务 | 检查执行状态(has_in_progress_attempt、last_attempt_failed) |
| 主任务 | 获取子任务描述以获取结果 |
| 子任务 | 将结果写入自身描述 |
| 主任务 | 获取可用的仓库ID |
last_attempt_failed = truehas_in_progress_attempt = falselast_attempt_failed = truehas_in_progress_attempt = false