Skip to content

fix: sửa lỗi chưa rõ nguyên nhân

/znf:fix là workflow tìm nguyên nhân và sửa một lỗi. Nó lấy log thật, chứng minh nguyên nhân trước khi sửa, rồi gọi /znf:gate/znf:ship.

Khi nào dùng

Dùng /znf:fix khi:

  • Có triệu chứng thật (log, lỗi, test fail) và chưa biết nguyên nhân.
  • Cần chứng minh nguyên nhân trước khi sửa.

Không dùng /znf:fix khi:

  • Đang hỏng trên production. Dùng /znf:hotfix. Hotfix dùng lại bước chẩn đoán của fix.
  • Đã biết nguyên nhân và cách sửa chỉ một dòng. Đi đường không dùng workflow, xem Chọn workflow.

Cách gọi

text
/znf:fix <mô tả triệu chứng>
/znf:fix <url github-actions-run>
/znf:fix

Không truyền gì thì fix tự lấy log gần nhất. Agent tự route vào /znf:fix khi nhận bug report. Điểm này khác với hotfix.

Viết yêu cầu

TrườngVí dụ
Triệu chứng nguyên vănĐúng dòng log hoặc lỗi thật, không diễn giải lại
Cách tái hiệnBước cụ thể, hoặc "không tái hiện được, chỉ có log"
Mong đợiHành vi đúng phải là gì
Môi trườngRepo, branch hoặc base, local hay staging
Từ khi nàoMới xuất hiện hay đã có từ lâu

Các bước

Các bước của một lần chạy fix

BướcKit làm gìBạn làm gì
0Lấy log hoặc lỗi thật, tự động hoặc từ argumentXác nhận đúng log
1Phân tích nguyên nhân. Hẹp thì một giả thuyết, rộng thì nhiều agent chạy song songĐọc kết luận
2Kiểm chứng nguyên nhân trước khi sửa bất cứ gìKhông sửa gì nếu chưa kiểm chứng được
3Chạy /znf:scout tìm nơi gọi, đọc, ghi code sắp đổiĐọc báo cáo scout
4Nếu có trade-off thật giữa hai cách sửa, trình bày cho bạnChọn cách sửa
4 (leo thang)Nếu fix lan 4+ file hoặc cần quyết định thiết kế, dừngChuyển sang /znf:cook thay vì ép sửa trong fix
5Sửa nhỏ nhất theo cách đã chọnKhông cần làm gì
6Verify bằng cách chạy lại phần đang failĐọc kết quả
7Ghi báo cáo nguyên nhân và cách sửaĐọc báo cáo
8Chạy /znf:gate rồi /znf:shipĐọc board ship, nhận PR

Kết quả

ArtifactNội dung
Báo cáoNguyên nhân đã xác nhận, cách sửa, kết quả verify
Branch<user>/fix/<slug>
PRMở, chưa merge

Quyết định thuộc về bạn

  • Có leo thang sang /znf:cook hay không, khi fix vượt quá phạm vi một bug.
  • Chọn cách sửa khi có trade-off thật giữa hai lựa chọn hợp lý.
  • Merge PR.

Ví dụ

Một fix thật trong chính ZenifyKit.

Triệu chứng: sau zenify migrate, một worktree cũ còn thư mục và branch nhưng git không còn đăng ký nó. zenify wt rm --forcezenify wt sweep báo lỗi khi gọi git, không dọn được gì.

Nguyên nhân: sau khi di chuyển repo, worktree cũ trỏ tới vị trí git đã bỏ, nên git không còn nhận nó.

Cách sửa: khi git không còn biết worktree đó, kit xoá thư mục trực tiếp, dọn dấu vết trong git và vẫn xoá đúng branch. Fix nằm gọn trong lệnh wt, không đổi hành vi khác.

Lỗi thường gặp

TránhNên làm
Vá triệu chứng cho quaChứng minh nguyên nhân bằng bằng chứng thật ở bước 2 trước khi sửa
Để fix mọc thành featureFix lan 4+ file hoặc cần quyết định thiết kế thì leo thang sang /znf:cook

Xem thêm

/reference/skills/fix, Chọn workflow