Từ chối, rework & xung đột merge
Đối tượng: approver khi diff chưa đạt hoặc merge bị conflict. Điều kiện: đã quen Review View.
Request Changes — vòng rework (tối đa 3 chu kỳ)
- Trong Review Panel bấm Request Changes → ReworkModal.
- Viết ghi chú cụ thể — đây là toàn bộ thông tin agent nhận được:
Ghi chú tốt vs ghi chú tệ
- Tệ: "Sửa lại đi".
- Tốt: "Bổ sung try-catch retry 3 lần với backoff khi VNPay timeout, thêm unit test cho nhánh timeout".
- Server ghi
task_runsloạirework, bơm ghi chú vào.board/history.md, chuyển task vềin-progresstrên cùng worktree và branch cũ (không rẽ nhánh mới). - Agent sửa xong → quay lại
reviewcho vòng duyệt tiếp. Tra cứu chuỗi verdict:GET /api/tasks/:id/reviews;task_runscórun_indextăng dần vớikind='rework'.
Quá 3 chu kỳ vẫn bị từ chối?
Hệ thống khoá tự chạy lại, task chuyển needs-human để người can thiệp tay.
Xung đột merge — auto-rework đúng 1 lần
Bối cảnh: hai task song song sửa cùng file; task A merge trước; khi approve task B, git báo conflict.
- Bảo vệ repo gốc trước tiên: merge fail →
git merge --abortngay (repo gốc luôn sạch, lock được nhả). Task sangmerge-conflict, API trả 409 có cấu trúc (không phải 500). - Dò xung đột cách ly: trong
task.worktreePath, merge thửmainvào nhánh task, lấy danh sách file conflict, rồi abort — không chiếm lock repo gốc nên không chặn task khác. - Auto-rework đúng 1 lần: ghi hướng dẫn vào
.board/history.md, gọi lại rework vớikind='auto_conflict_resolution'trên cùng worktree. - Agent gỡ xong → merge lần 2 →
done. Agent thất bại →needs-human, giao cho người.
Task không dùng worktree (
useWorktree=false)?Dừng ngay ở needs-human, không auto-rework — không có nơi cách ly để thử. Xử lý tay:
docker exec -it agentjira_server sh -c 'cd <worktreePath> && git status'
Gỡ conflict, commit, rồi approve lại trên UI.