议题管理
议题(Issue)是你与 Agent 协作的核心入口。通过创建议题并绑定 Workflow 模板,你可以将开发需求交给 Agent 自动处理。
议题生命周期
一个议题(Issue)有 9 种状态,遵循以下状态机:
| 状态 | 说明 |
|---|---|
draft | 刚创建(草稿),等待启动自动化 |
planned | 已规划,planner/Workflow 已分析并准备拆分任务 |
in_progress | 进行中,Workflow 映射出的 Task 正在执行 |
review_pending | 待审查,等待 reviewer 评审 |
changes_requested | 要求修改,人工或 reviewer 反馈后回到 planned 重新处理 |
approved | 已通过审查 |
completed | 已完成,所有 Task 执行完毕 |
archived | 已归档 |
error | 错误,未绑定 Workflow、模板缺失、运行前校验失败,或重试超过上限 |
典型成功路径:
draft -> planned -> in_progress -> completed
异常或人工反馈路径:
changes_requested -> planned -> in_progress -> completed
planned -> error
in_progress -> changes_requested
Issue 完成由依赖调度器根据所有 Task 的状态判定:当所有 Task 都为 done 时,Issue 被标记为 completed。
创建议题
- 在工作空间中打开议题面板
- 点击「新建议题」
- 填写标题和描述
- 选择 Workflow 模板(必选,否则 Issue 无法自动执行)
写好描述的技巧:
- 明确说明需求目标和期望结果
- 提供必要的上下文信息
- 如果涉及特定文件或模块,直接说明
- 如果有参考代码或设计稿,附上链接
Workflow 驱动的任务分解
议题启动自动化后,系统会:
- 加载选定的 Workflow 模板
- 将 Workflow 中的 Agent 节点映射为可执行的 Task(每节点 → 一 Task)
- 节点的入边作为 Task 的
dependsOnTaskIds依赖 - 调度执行:只有所有前置 Task 都为
done时,Task 才会启动 - 所有 Task 完成后 Issue 标记为
completed
注意:当前同一轮可运行的 Task 按数组顺序串行执行,DAG 表达依赖关系,但同层不会真正并行运行多个 Agent。
Task 状态
每个 Task 有 8 种状态:
| 状态 | 说明 |
|---|---|
pending | 待执行 |
running | 正在执行 |
reviewing | 正在被 reviewer 审查 |
waiting_review | 等待审查 |
retrying | 重试中 |
done | 已完成 |
failed | 失败 |
cancelled | 已取消 |
每个 Task 包含:
- 绑定的 Agent 预设(
agentConfigId)与运行时实际分配的 Agent session(assignedAgentId) - 执行状态、重试计数(
retryCount/maxRetries) - 依赖关系(
dependsOnTaskIds) - 工具调用记录、代码变更(diff)与执行日志
详见 Workflow 编辑器。
议题评论
在议题详情页可以添加评论,支持富文本格式。评论用于:
- 补充需求信息
- 与 Agent 交互讨论
- 记录决策和变更
失败重试与恢复
Task 和 Issue 都有独立的重试计数:Task 有 retryCount / maxRetries,Issue 有 retryCount / maxRetries / retryPaused。
Task 失败重试
Agent 执行失败时:
retryCount < maxRetries:Task 重置为pending并重新调度retryCount >= maxRetries:Task 保持failed,并设置 Issue 错误信息
Issue 错误与自动重试
Issue 进入 error 后,后台调度器会在后续 tick 中通过 error issue retry service 处理:
retryCount < maxRetries:将失败的 Task 重置为pending,Issue 切回in_progress,继续调度retryCount >= maxRetries:设置retryPaused = true,停止自动重试
手动恢复
- 后端:
POST /api/workspaces/:workspaceId/issues/:issueId/resume - 前端:Issue 详情页在
error状态显示Resume failed tasks按钮 - 单个
failedTask 也可单独重试,后端会将其恢复为pending并立即重新调度
服务器启动恢复
服务器启动时会执行恢复流程(issue-retry.ts):
- 所有状态为
running或retrying的 Task 被标记为failed - 所有状态为
in_progress的 Issue 被切换为error - 后续由调度器的 error issue retry service 继续自动恢复,超过最大重试次数后暂停
替代方式:频道聊天
除了通过 Issue + Workflow 自动编排外,你也可以在频道聊天中 @mention Agent 直接触发执行,适合快速下达指令。