TROISINH
Nâng cao & Tự động hoáTính năng nâng cao

/batch: Xử lý hàng loạt file song song, refactor cả dự án trong 15 phút

Giảm 90% thời gian refactor với /batch: xử lý hàng trăm file song song qua git worktree, an toàn hơn script tự viết mà không lo xung đột context.

Định nghĩa

/batch là kỹ năng (skill) tích hợp sẵn trong Claude Code cho phép xử lý hàng loạt file song song thông qua cơ chế git worktree. Thay vì mở từng file một cách tuần tự (sequential), lệnh này tạo ra nhiều "phiên bản song song" của repository — mỗi phiên xử lý một nhóm file riêng biệt trong context window riêng, rồi gộp kết quả về nhánh gốc khi hoàn tất.

Giải thích chi tiết

Tại sao xử lý tuần tự lại lãng phí?

Khi bạn nhờ Claude sửa từng file một, mỗi lần chuyển file là một lần "khởi động lại": Claude phải đọc lại cấu trúc thư mục, phân tích dependency, nạp lại context. Với 100 file, bạn trả chi phí khởi động này 100 lần.

/batch giải quyết bằng cách gộp chung chi phí cố định: nạp model một lần, xử lý cả lô file trong cùng một "nhịp". Giống như thay vì chạy xe máy đi lại 100 lần để chở đồ, bạn thuê một chiếc xe tải chở một thể.

Git Worktree: Mỗi file một "phòng thí nghiệm" riêng

Khi chạy /batch, Claude không sửa trực tiếp trên working directory hiện tại. Thay vào đó, nó:

  • Tạo nhiều git worktree tạm thời (thư mục làm việc riêng biệt, chia sẻ lịch sử với repo gốc nhưng cô lập hoàn toàn về mặt file)
  • Spawn subagent cho mỗi worktree, mỗi agent có context window riêng biệt
  • Chia danh sách file thành các nhóm nhỏ (thường 20-100 file mỗi nhóm)
  • Chạy song song: trong khi agent A phân tích file đầu tiên, agent B có thể ghi file thứ 50 mà không sợ xung đột

Điểm mấu chốt là cô lập trạng thái mutable. Nếu xử lý tuần tự trên cùng một thư mục, lỗi ở file thứ 10 làm hỏng trạng thái có thể lan sang file thứ 11. Worktree đảm bảo mỗi nhóm file được xử lý trong "vũ trụ" sạch sẽ riêng, không ảnh hưởng lẫn nhau.

Chia nhỏ thế nào cho đúng?

Có quan niệm sai lầm cho rằng "batch càng lớn càng nhanh". Thực tế:

  • Nhóm nhỏ (2-4 file): Chi phí khởi động chiếm ưu thế, chưa đủ để bão hòa CPU
  • Nhóm quá lớn (hàng nghìn file): Memory tăng vọt, một file chậm bất thường (ví dụ file cực phức tạp) sẽ làm tắc nghẽn cả nhóm

Claude tối ưu cho khoảng 20-100 file mỗi batch — đủ để tận dụng hiệu quả song song nhưng vừa vặn trong RAM. Nếu bạn có 500 file, Claude tự động chia thành 5 đợt x 100 file, chạy tuần tự từng đợt nhưng vẫn song song bên trong mỗi đợt.

Nếu lỗi giữa chừng thì sao?

Một ưu điểm khác là khả năng phục hồi. Nếu xử lý tuần tự bị crash ở file thứ 99, bạn mất cả giờ làm việc. /batch ghi kết quả incrementally (từng nhóm nhỏ). Nếu một nhóm fail:

  • Các nhóm khác vẫn giữ kết quả đã commit vào worktree
  • Claude chỉ retry nhóm bị lỗi mà không cần chạy lại từ đầu
  • Kết quả cuối cùng được merge về nhánh gốc qua git apply hoặc cherry-pick an toàn

Ví dụ thực tế

Đổi testing framework cho dự án fintech (Jest → Vitest)

Bạn là tech lead tại một startup fintech ở TP.HCM (kiểu Momo hoặc ZaloPay), cần đổi toàn bộ test suite từ Jest sang Vitest để tận dụng native ESM và tốc độ nhanh hơn cho CI pipeline.

Trước khi dùng /batch:

  • Sửa thủ công: 3-5 phút/file × 150 file = 12 giờ làm việc chết tiệt
  • Dùng sed/regex: Dễ làm hỏng cú pháp async/await, mất thêm nửa ngày debug

Với /batch:

/batch migrate-testing-framework target=src/**/*.test.ts from=jest to=vitest

Claude tự động:

  • Tạo 5 worktree, mỗi cái xử lý 30 file test
  • Subagent 1 chuyển jest.mock()vi.mock(), subagent 2 cập nhật beforeEach syntax...
  • Chạy song song trên máy có 8 core CPU, hoàn thành trong 18 phút
  • Tự động chạy vitest run trên từng batch để verify không break trước khi merge

Thêm TypeScript cho legacy codebase ngân hàng

Dự án freelance của bạn là hệ thống core banking cũ có 80 file JavaScript cần thêm JSDoc hoặc chuyển sang .ts để giảm lỗi runtime. Thay vì mở từng file trong VS Code:

/batch add-typescript-types files=src/**/*.js strategy=gradual

Claude phân chia thông minh:

  • Các file "pure function" vào batch 1 (dễ type, xong nhanh)
  • Các file có dynamic require() vào batch 2 (cần any tạm thời, xử lý kỹ hơn)
  • Chạy tsc --noEmit trên từng worktree để đảm bảo type check pass trước khi merge về main

Kết quả: 45 phút thay vì 2 ngày cật lực, và types chất lượng cao hơn vì mỗi subagent tập trung sâu vào pattern cụ thể thay vì bị choáng ngợp bởi 80 file cùng lúc.

Cập nhật API VietQR cho sàn thương mại điện tử

Công ty bạn (kiểu Shopee, Tiki hay Lazada) chuyển đổi tích hợp thanh toán từ VietQR phiên bản cũ sang API mới với response format khác. Cần cập nhật 60 file frontend và backend gọi đến endpoint này.

/batch tạo các subagent chuyên biệt:

  • Agent A: Tìm và sửa fetch calls trong React components (Next.js pages)
  • Agent B: Sửa axios interceptors và error handling cho các trường hợp timeout
  • Agent C: Cập nhật TypeScript interfaces cho response mới (bankCode, accountName thay đổi vị trí)

Chạy song song trên cùng một codebase thông qua worktree, đảm bảo không có xung đột khi nhiều file cùng import một utility function được sửa đổi. Cả team thường mất 3 ngày cho việc này, giờ xong trong 25 phút với một lệnh duy nhất.

Ứng dụng

Developer độc lập & Freelancer

Tăng throughput khi nhận dự án "đập đi xây lại" cho khách hàng. Thay vì báo giá 3 ngày cho refactoring codebase legacy, bạn hoàn thành trong buổi sáng và dành thời gian còn lại cho feature mới hoặc nhận thêm khách. Đặc biệt hữu ích khi làm việc với các doanh nghiệp nhỏ tại Việt Nam cần nhanh-gọn-lẹ.

Tech Lead & Senior Developer

Xử lý technical debt hàng loạt mà không "mất mạch" (flow state) do phải chờ đợi. Hiệu quả cao cho việc áp dụng coding standards mới (ví dụ: chuyển từ callback sang async/await) trên toàn bộ codebase lớn của công ty như Grab hay Giao Hàng Nhanh.

Startup cần ship nhanh

Khi pivot hoặc thay đổi cấu trúc dữ liệu (database schema migration ảnh hưởng 50+ files), /batch cho phép team thực hiện breaking changes trong vòng 1 giờ thay vì 1 tuần, giảm thiểu thời gian "freeze code" trước khi release — cực kỳ quan trọng trong môi trường startup Việt Nam cạnh tranh khốc liệt.

DevOps & Platform Engineer

Áp dụng policy mới (ví dụ: thêm structured logging vào tất cả API endpoints, hoặc cập nhật Docker base images) trên hàng trăm microservices một cách nhất quán mà không cần viết script bash phức tạp hay lo lắng về việc bỏ sót file.

So sánh

Phương phápThời gian (100 file)Rủi ro xung độtChất lượng xử lýKhi nào dùng
Sửa thủ công từng file8-10 giờThấpCao nhưng mệt mỏi, dễ sótDưới 10 file, logic phức tạp cần review từng bước
Regex/Script tự viết30 phút - 2 giờCao (dễ break)Thấp (không hiểu ngữ nghĩa)Thay đổi đơn giản, pattern rõ ràng (rename biến toàn cục)
/batch + Claude Code15-30 phútThấp (cô lập worktree)Cao (AI hiểu semantic)Migration phức tạp, refactor cần giữ nguyên logic nghiệp vụ
IDE Multi-cursor2-4 giờTrung bìnhTrung bìnhThay đổi đơn giản trên cùng một pattern lặp lại

Kết luận: /batch không chỉ nhanh hơn sửa thủ công mà còn an toàn hơn script tự viết nhờ khả năng hiểu ngữ nghĩa code (semantic understanding) và cơ chế cô lập tự nhiên của git worktree.

Bài viết liên quan

Cùng cụm (Tính năng nâng cao)

Đọc tiếp (Tự động hóa chuyên sâu)

Nền tảng

On this page