Bỏ qua để đến nội dung

Điều hướng các phiên dài

Bài viết được dịch tự động từ bài viết gốc, chưa được kiểm tra lại bởi con người. Chỉ những bài viết có dấu tick xanh cạnh tiêu đề là đã được kiểm tra.

Yêu cầu Claude làm xong một việc nhanh gọn thì dễ: bạn hỏi, nó làm, bạn kiểm tra kết quả. Nhưng việc dài lại là một cuộc chơi khác. Refactor xuyên suốt cả chục file hay xây một tính năng mới có thể mất hàng giờ. Và bạn càng phải điều hướng Claude dọc đường, việc càng kéo dài thêm.

Tin vui là bạn có khá nhiều công cụ giúp Claude trong những phiên dài này. Về cơ bản, mọi thứ gói gọn trong hai thói quen: định phạm vi (scope) công việc trước khi Claude bắt đầu, và điều hướng (steer) nó trong lúc chạy. Hãy đi qua từng cái.

Định phạm vi công việc trước bằng plan mode

Phần tiêu đề “Định phạm vi công việc trước bằng plan mode”

Trước khi Claude viết một dòng code nào, hãy để nó vạch ra một kế hoạch. Ở plan mode, Claude nghiên cứu ở chế độ chỉ-đọc (read-only). Nó đọc code, tìm ra cần thay đổi gì, rồi đưa cho bạn một kế hoạch để xem lại.

Khi nhận được kế hoạch đó, hãy thực sự đọc nó. Đừng đọc lướt. Kế hoạch càng chi tiết, bạn càng ít bất ngờ khi Claude bắt đầu thực thi. Nếu có gì thiếu hoặc sai, chỉ cần yêu cầu Claude bổ sung đúng chỗ bạn muốn. Chỉnh sửa một kế hoạch nhanh hơn nhiều so với việc để Claude chạy, hy vọng nó đúng, rồi dọn dẹp đống lộn xộn sau đó.

Khi Claude đang chạy, bạn có vài cách để giữ nó đi đúng hướng. Cách đầu tiên là compaction.

Compact tóm tắt hội thoại của bạn, dùng bản tóm tắt đó làm ngữ cảnh mới, và xóa các tin nhắn cũ. Điều này giải phóng cửa sổ ngữ cảnh để Claude tiếp tục làm việc. Rủi ro là một chi tiết quan trọng nào đó có thể bị bỏ sót trong bản tóm tắt, khiến Claude đi lệch hướng.

Vì vậy, đừng chỉ chạy /compact trơ trọi. Thêm chỉ dẫn ngay sau lệnh để nói cho Claude biết nên tóm tắt như thế nào. Ví dụ, nếu bạn vừa debug xong một lúc trước và giờ chỉ quan tâm tới vài thay đổi API, hãy nói rõ:

/compact Focus on the --version flag implementation

Bất cứ điều gì bạn viết sau lệnh sẽ định hình những gì bản tóm tắt giữ lại. Đó chính là “vô lăng” để bạn điều hướng ngữ cảnh.

Khi Claude đi sai hướng, bạn không cần phải prompt để kéo nó quay lại. Rewind đưa bạn về checkpoint gần nhất. Mỗi prompt của bạn tạo ra một checkpoint có thể quay lại. Để mở menu này, nhấn phím escape hai lần liên tiếp khi ô nhập prompt đang trống.

Từ menu rewind, bạn có vài lựa chọn:

  • Restore code and conversation - khôi phục cả code lẫn hội thoại cùng lúc.
  • Restore conversation - chỉ khôi phục phần chat.
  • Restore code - chỉ khôi phục các file.
  • Summarize from here - tóm tắt mọi thứ sau checkpoint. Hữu ích nếu bạn vừa có một đoạn hội thoại lạc đề và chỉ muốn giải phóng bớt dung lượng.
  • Summarize up to here - tóm tắt mọi thứ trước checkpoint. Hữu ích khi bạn có một giai đoạn thiết lập dài muốn nén lại, nhưng vẫn muốn giữ nguyên phần triển khai.

Mọi thứ nói ở trên đều giả định bạn đang theo sát, quan sát và điều chỉnh. Nếu muốn thứ gì đó tự động hơn, có goalloop.

Goal thiết lập một điều kiện hoàn thành. Bạn mô tả “xong” là như thế nào, và Claude sẽ tiếp tục làm việc qua nhiều lượt cho tới khi một bộ đánh giá nhanh (fast evaluator) xác nhận điều kiện đó đã được đáp ứng. Nó sẽ không tự dừng ngay lần đầu tiên nó nghĩ là đã xong.

Ví dụ:

/goal all tests in src/billing pass, and the type checker reports zero errors

Để hủy, chạy /goal clear. Có một ràng buộc quan trọng: bộ đánh giá chỉ đọc transcript. Vì vậy điều kiện của bạn phải kiểm chứng được từ chính output mà Claude tạo ra, ví dụ như kết quả của một lần chạy test.

Loop chạy một prompt theo chu kỳ giữa các lượt, cố định hoặc tự điều chỉnh nhịp độ. Dùng nó để kéo dữ liệu từ bên ngoài, như một lần chạy CI hay một lần deploy, và hành động khi trạng thái thay đổi.

Để dừng một loop, chỉ cần nhấn escape.

Ẩn dụ “điều hướng” ở trên giả định một vô lăng cho một chiếc xe. Nhưng khi bạn chạy nhiều agent trên cùng một codebase, bạn không muốn có hai vô lăng trong một chiếc xe. Điều đó không an toàn. Hai phiên Claude tranh giành cùng một file sẽ dẫn tới xung đột.

Đây là lúc worktree phát huy tác dụng. Thay vì các phiên giẫm chân lên nhau, mỗi phiên có cây file (file tree) độc lập của riêng nó.

Vì mỗi agent có cây file riêng, chúng không thể ghi đè lên thay đổi của nhau. Khi một phiên kết thúc, worktree sạch của nó sẽ tự động được xóa.

Có một file hữu ích cần biết: file .worktreeinclude ở gốc repo liệt kê các file bị git bỏ qua (git-ignored) cần copy vào mỗi worktree. Rất hữu ích cho những thứ như file biến môi trường hay config cục bộ mà bạn cần trong mọi worktree nhưng không muốn commit vào version control.

Xử lý các phiên Claude Code dài gói gọn trong vài thói quen:

  1. Định phạm vi công việc trước, rồi mới điều hướng.
  2. Định hướng cho compaction để bản tóm tắt giữ lại đúng những gì quan trọng.
  3. Dùng menu rewind để sửa hướng khi Claude đi lệch.
  4. Đặt goal khi bạn mô tả được “xong” tốt hơn là mô tả từng bước.
  5. Chạy việc song song trong các worktree.

Làm được vậy, bạn có thể tin tưởng một lần chạy dài mà không cần trông chừng từng bước.