取消不再需要的任务并转移
completed/issue_number 存在时,Issue 同步属于必做项依次检查以下目录:
.agents/workspace/active/{task-id}/.agents/workspace/blocked/{task-id}/.agents/workspace/completed/{task-id}/处理规则:
active/ 或 blocked/ 中找到:继续completed/ 中找到:告知用户任务已转移,停止Task {task-id} not found根据取消原因推断 Issue 关闭标签:
status: superseded:原因包含“重复”、“替代”、“合并到”、“已由 #123 / PR 替代”等语义status: invalid:原因包含“误报”、“不存在”、“无法复现”、“排查后无问题”等语义status: declined:原因包含“不做”、“暂不实现”、“优先级调整”、“方案否决”等语义status: declined后续同步到 Issue 时,使用最终推断结果替换现有 status: labels。
获取当前时间:
date "+%Y-%m-%d %H:%M:%S%:z"
更新任务目录中的 task.md:
status:completedcancelled_at:{当前时间戳}cancel_reason:{取消原因}updated_at:{当前时间戳}## Activity Log(不要覆盖之前记录):
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Cancelled** by {agent} — {一行取消原因}
将任务目录移动到 .agents/workspace/completed/{task-id}。
如果源目录在 blocked/,从 blocked/ 移动;如果源目录在 active/,从 active/ 移动。
ls .agents/workspace/completed/{task-id}/task.md
确认任务目录已成功移动。
检查 task.md 中是否存在有效的 issue_number。如果没有,跳过此步骤。
Issue 同步规则见
.agents/rules/issue-sync.md。执行同步前先读取该文件,完成 upstream 仓库检测和权限检测。 关闭 Issue 前先读取.agents/rules/issue-pr-commands.md。
如果存在有效的 issue_number:
status: labels,并设置步骤 2 推断出的标签in: labels<!-- sync-issue:{task-id}:cancel -->.agents/rules/issue-sync.md 的 task.md 评论同步规则创建或更新 <!-- sync-issue:{task-id}:task --> 评论.agents/rules/issue-pr-commands.md 中的“关闭 Issue”命令执行,关闭原因固定为 not planned取消评论至少包含:
status: label运行完成校验,确认任务转移和同步状态符合规范:
node .agents/scripts/validate-artifact.js gate cancel-task .agents/workspace/completed/{task-id} --format text
处理结果:
将校验输出保留在回复中作为当次验证输出。没有当次校验输出,不得声明完成。
仅在校验通过后执行本步骤。
重要:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。
输出格式:
任务 {task-id} 已取消,任务目录已转移到 completed/。
取消原因:{reason}
状态标签:{status-label 或 skipped}
目标路径:.agents/workspace/completed/{task-id}/
下一步 - 查看已转移任务:
- Claude Code / OpenCode:/check-task {task-id}
- Gemini CLI:/agent-infra:check-task {task-id}
- Codex CLI:$check-task {task-id}
.agents/workspace/completed/cancelled 状态值,而是复用 completedcancelled_at 和 cancel_reason 区分“取消”与“正常完成”Task {task-id} not foundcompleted/ 中