Ngữ cảnh, lời nhắc cho Lập trình cảm xúc với các tác nhân AIvà cách tránh lãng phí token

Nội dung

    Một nghiên cứu của METR năm 2025 cho thấy rằng các nhà phát triển giàu kinh nghiệm cảm thấy làm việc nhanh hơn 20% với trợ lý AI, nhưng thực tế lại chậm hơn 19% khi tính cả thời gian gỡ lỗi và dọn dẹp. Mười sáu nhà phát triển chuyên nghiệp. Khoảng cách 43 điểm giữa kỳ vọng và thực tế. Không phải vì các công cụ kém chất lượng — mà vì quy trình làm việc sai.

    Trước khi đi sâu vào chiến thuật, điều quan trọng là phải hiểu rõ công cụ bạn đang sử dụng và lý do tại sao. Mỗi công cụ đều có một thế mạnh riêng mà các công cụ khác không thể sao chép hoàn toàn.

    Claude Code hoạt động ngay trong cửa sổ dòng lệnh của bạn, điều này thoạt nhìn có vẻ như là một bước thụt lùi cho đến khi bạn nhận ra nó đang giải quyết một vấn đề hoàn toàn khác. Thay vì chỉ là một phiên bản sao chép của VS Code, Anthropic đã xây dựng một thứ hoạt động ngay tại nơi mà nhiều nhà phát triển đã dành phần lớn thời gian của họ. Trong một bài kiểm tra so sánh trực tiếp được ghi nhận, Claude Code đã hoàn thành bản dựng Next.js với 33.000 token và không có lỗi nào. Trong khi đó, tác nhân của Cursor đã sử dụng 188.000 token trên cùng một lời nhắc lệnh — đòi hỏi sức mạnh tính toán gấp 5,5 lần cho kết quả tương đương.

    Đây là bản đồ thực tế:

    • Cursor— Phù hợp nhất cho việc kiểm soát chi tiết ngay trong trình soạn thảo, các dự án quy mô vừa và lớn, và các nhà phát triển muốn xem xét sự khác biệt trước khi áp dụng thay đổi. Việc lập chỉ mục mã nguồn cục bộ thực sự hữu ích cho việc tham chiếu giữa các tệp.
    • Claude Code— Tốt nhất cho các tác vụ phức tạp nhiều bước, tái cấu trúc quy mô lớn và các codebase trên 50.000 dòng. Cửa sổ ngữ cảnh 200.000 token là thật và đáng tin cậy, không bị phân mảnh như ngữ cảnh hiệu quả của Cursor.
    • GitHub Copilot— Lựa chọn tốt nhất cho các nhóm không muốn thay đổi IDE, giá cả phải chăng nhất với 10 đô la/tháng, và là phần mềm có môi trường doanh nghiệp phát triển nhất trong nhóm.
    • Windsurf— Phù hợp nhất cho người mới bắt đầu và tạo mẫu nhanh, giao diện người dùng thân thiện nhất, quy trình Cascade thực sự trực quan.

    Bạn không nhất thiết phải chọn một. Nhiều lập trình viên cấp cao sử dụng đồng thời hai công cụ: Cursor viết mã, Claude Code xem xét mọi thứ Cursor tạo ra — xác định các lỗi tiềm ẩn, lỗ hổng bảo mật và các vấn đề về kiến ​​trúc. Tệp CLAUDE.md nằm trong kho lưu trữ của bạn. Cursor cũng đọc tệp này. Ngữ cảnh dự án được chia sẻ giữa cả hai công cụ.

    Mẹo 1: Xây dựng kiến ​​thức về dự án — Điều quan trọng nhất mà bạn chưa làm
    Đây là lời khuyên quan trọng nhất trong bài viết này . Hầu hết các nhà phát triển coi các tác nhân AI như những chatbot thông thường — mỗi phiên làm việc đều bắt đầu từ đầu, không có bối cảnh dự án nào. Tác nhân này không biết bạn đang sử dụng công nghệ nào, các quy ước của bạn là gì, hoặc những quyết định kiến ​​trúc nào bạn đã đưa ra.

    Các nhà phát triển năng suất làm điều ngược lại. Họ xây dựng bộ nhớ dự án bền vững , tự động tải vào mỗi phiên làm việc.

    CLAUDE.md (viết tắt của Claude Code)
    Tệp CLAUDE.mdtin ở thư mục gốc dự án của bạn được tự động đọc mỗi khi Claude Code bắt đầu một phiên làm việc mới. Nó chính là bộ não thường trực của Claude dành cho dự án của bạn.

    # Dự án: API Thương mại điện tử Laravel

    ## Công nghệ sử dụng
    – PHP 8.3, Laravel 13.x
    – MySQL 8.0 với Eloquent ORM
    – Redis cho bộ nhớ đệm và hàng đợi
    – Docker cho môi trường phát triển

    ## Chuẩn mực lập trình
    – Luôn sử dụng kiểu dữ liệu nghiêm ngặt: `declare(strict_types=1)`
    – Yêu cầu khai báo kiểu trả về trên tất cả các phương thức
    – Sử dụng thuộc tính chỉ đọc cho DTO
    – Tất cả các thao tác ghi vào cơ sở dữ liệu phải được gói gọn trong một giao dịch cơ sở dữ liệu
    – Sử dụng Form Requests để xác thực – không bao giờ nội tuyến trong bộ điều khiển
    – Lớp dịch vụ cho logic nghiệp vụ – không bao giờ trong bộ điều khiển hoặc mô hình

    ## Mẫu kiến ​​trúc
    – Mẫu Repository để truy cập dữ liệu
    – Lớp dịch vụ cho logic nghiệp vụ
    – Lớp hành động cho các thao tác trách nhiệm đơn lẻ
    – DTO để truyền dữ liệu giữa các lớp

    ## Quy tắc kiểm thử
    – Kiểm thử tính năng cho tất cả các điểm cuối API
    – Kiểm thử đơn vị cho các lớp Dịch vụ và Hành động
    – Sử dụng factory – không bao giờ mã hóa cứng dữ liệu trong các bài kiểm thử
    – Độ phủ mã tối thiểu 80%

    ## Quy trình làm việc Git
    – Luôn tạo một nhánh mới trước khi bắt đầu một tính năng
    – Định dạng thông báo commit: `type(scope): description`
    – Không bao giờ đẩy trực tiếp lên main/master

    ## Các tập tin quan trọng
    – `app/Exceptions/Handler.php` – Xử lý ngoại lệ tùy chỉnh
    – `app/Http/Middleware/` – Middleware xác thực và phân quyền
    – `routes/api.php` – Tất cả các tuyến API
    – `database/migrations/` – Không bao giờ chỉnh sửa các migration đã chạy

    ## Những điều KHÔNG NÊN làm
    – Không bao giờ sử dụng `Model::all()` mà không có phân trang
    – Không bao giờ để lộ dấu vết ngăn xếp trong phản hồi sản xuất
    – Không bao giờ lưu trữ thông tin đăng nhập trong mã – luôn sử dụng .env
    – Không bao giờ sử dụng `sleep()` hoặc `while(true)` không giới hạn
    Hãy tập trung vào nội dung. Mỗi từ trong tập tin này là một mã thông báo được tải vào mỗi phiên làm việc. CLAUDE.md không phải là nơi để chứa toàn bộ wiki dự án của bạn.

    .cursor/rules/ (dành cho Cursor)
    Vào năm 2026, Cursor đã chuẩn hóa định dạng Markdown mô-đun (.mdc) . Các tệp này sử dụng phần đầu YAML để cho AI biết chính xác khi nào chúng nên được kích hoạt — chỉ đối với các tệp có liên quan, chứ không phải cho mọi thông báo.

    Tạo .cursor/rules/project.mdcnội dung phù hợp với bối cảnh toàn cầu:


    mô tả: Nhận dạng dự án thiết yếu — được tải cho tất cả các tệp
    globs: [” **/ *”] —
    – * *Ngăn xếp* *: Laravel 13, PHP 8.3, MySQL, Redis, Docker
    – * *Các bất biến nghiêm ngặt* *:
    – Tất cả các bộ điều khiển phải mỏng — logic nghiệp vụ trong các Dịch vụ
    – Tất cả các phản hồi API sử dụng các lớp Tài nguyên
    – Không sử dụng SQL thô ngoại trừ các truy vấn thực sự phức tạp
    – Việc ghi vào cơ sở dữ liệu được gói trong các giao dịch
    Tạo .cursor/rules/api.mdccho ngữ cảnh cụ thể của API:


    Mô tả: Các mẫu chuẩn của Trình xử lý tuyến API
    : [“app/Http/Controllers/Api/ **/ *.php”, “routes/api.php”] —
    – Sử dụng các lớp Yêu cầu Biểu mẫu để xác thực
    – Trả về JSON nhất quán: `{“data”: …, “message”: …}`
    – Mã trạng thái HTTP chính xác: 200, 201, 422, 404, 500
    – Tất cả các điểm cuối đều yêu cầu xác thực trừ khi được đánh dấu rõ ràng là công khai
    Trường globsdữ liệu là tất cả. Khi bạn sửa lỗi CSS, các quy tắc di chuyển cơ sở dữ liệu không được tải. Khi bạn viết một bản di chuyển, các quy tắc giao diện người dùng không được tải. Đây là cách bạn tránh được “thuế token” của một .cursorrulestệp tin nguyên khối.

    Nguyên tắc “Quy tắc ba”
    Đừng vội mã hóa một quy tắc ngay lần đầu tiên AI mắc lỗi. Chỉ thêm quy tắc đó vào tập tin quy tắc nếu AI phạm cùng một lỗi ở mô hình kiến ​​trúc ba lần . Các quy tắc nên phản ánh các mô hình lặp lại thực tế, chứ không phải là sự lo lắng thái quá trước khi có cơ hội. Mỗi quy tắc bạn thêm vào đều là các token được tải trong mỗi phiên làm việc.

    Mẹo 2: Sử dụng Chế độ Lập kế hoạch — Đừng nhảy thẳng đến bước Xây dựng
    Sai lầm phổ biến nhất của những người mới bắt đầu lập trình bằng Vibe: yêu cầu AI thực hiện một việc phức tạp mà không có kế hoạch trước. Sự khác biệt giữa việc chạy trực tiếp lệnh trong chế độ biên dịch so với chạy qua chế độ lập kế hoạch trước là một trời một vực.

    Trong Claude Code
    Nhấn Shift+Tab hai lần để chuyển sang Chế độ Lập kế hoạch — bạn sẽ thấy chỉ báo thay đổi. Ở Chế độ Lập kế hoạch, Claude có thể đọc tệp và suy luận, nhưng không thể viết, sửa đổi hoặc thực thi bất cứ thứ gì.

    Tôi muốn triển khai tính năng “giảm giá chớp nhoáng”:
    – Quản trị viên có thể thiết lập các sản phẩm cụ thể với phần trăm giảm giá và khung thời gian – Giá giảm giá chớp nhoáng tự động kích hoạt/vô hiệu hóa dựa trên thời gian – Kho hàng riêng biệt
    cho giảm
    giá chớp nhoáng và hàng tồn kho thông thường
    – Người dùng thấy bộ đếm ngược trên trang sản phẩm
    – Thông báo qua email được gửi 1 giờ trước khi mỗi đợt giảm giá chớp nhoáng bắt đầu. Hãy tạo một kế hoạch triển khai chi tiết. Chưa cần viết mã.
    Claude sẽ lập một kế hoạch: các tập tin cần tạo, lược đồ cơ sở dữ liệu cần thiết, thứ tự thực hiện, các trường hợp ngoại lệ tiềm ẩn. Hãy đọc kỹ kế hoạch này. Nếu có điều gì sai sót hoặc bạn không đồng ý với một phương pháp nào đó, hãy sửa ngay lập tức — trước khi viết bất kỳ dòng mã nào. Thay đổi kế hoạch chỉ mất vài giây. Gỡ rối lỗi trong quá trình thực hiện sai mất hàng giờ.

    Sau khi bạn đã phê duyệt kế hoạch:

    /build

    Tiếp tục với kế hoạch chúng ta đã thống nhất. Bắt đầu với bước 1: di chuyển cơ sở dữ liệu.
    Trong con trỏ
    Hãy sử dụng chế độ trò chuyện trước khi kích hoạt chế độ trợ lý:

    Trước khi viết bất kỳ đoạn mã nào, hãy tạo một kế hoạch triển khai cho tính năng sau:
    [mô tả tính năng]

    Hãy cho tôi biết:
    1. Các tập tin cần được tạo hoặc sửa đổi
    2. Các thay đổi cơ sở dữ liệu cần thiết
    3. Thứ tự triển khai được đề xuất
    4. Các trường hợp ngoại lệ tiềm ẩn cần xử lý

    Không được viết bất kỳ đoạn mã nào cho đến khi tôi chấp thuận kế hoạch.
    Mẹo 3: Kỹ thuật thúc đẩy hiệu quả thực sự cho mã nguồn
    Công thức nhắc nhở hiệu quả
    Những gợi ý tốt cho việc mã hóa cảm xúc không nên quá dài — chúng cần cụ thể và chứa đủ ngữ cảnh . Hãy sử dụng cấu trúc này:

    [BỐI CẢNH] + [NHIỆM VỤ CỤ THỂ] + [RÀNG BUỘC] + [ĐỊNH DẠNG ĐẦU RA] Gợi ý yếu:

    Thêm tính năng giới hạn tốc độ đăng nhập.
    Gợi ý mạnh mẽ:

    Trong file `app/Http/Controllers/Auth/LoginController.php` hiện có ,
    hãy thêm giới hạn tốc độ: tối đa 5 lần đăng nhập không thành công mỗi địa chỉ IP trong vòng 15 phút.
    Sử dụng middleware throttle tích hợp sẵn của Laravel.
    Không thay đổi logic đăng nhập hiện có — chỉ cần thêm middleware.
    Trả về lỗi JSON với mã HTTP 429 khi đạt đến giới hạn tốc độ.
    Yêu cầu tương tự. Yêu cầu thứ hai sẽ tạo ra mã có thể sử dụng được ngay lần thử đầu tiên. Yêu cầu đầu tiên sẽ cần ba lần chỉnh sửa tiếp theo.

    Kỹ thuật nhiệm vụ phạm vi
    Thay vì yêu cầu AI xây dựng toàn bộ hệ thống, hãy chia nhỏ nó thành các phần cụ thể:

    # ❌ Quá chung chung — tạo ra kết quả phân tán, khó xem xét
    Xây dựng một hệ thống thông báo có thể gửi email, thông báo đẩy và tin nhắn SMS

    # ✅ Phạm vi rõ ràng – một sản phẩm đầu ra cụ thể
    Tạo giao diện NotificationChannel tại `app/Contracts/NotificationChannel.php`
    với một phương thức duy nhất: `send(User $user, NotificationData $data): bool`
    Hoàn thành một nhiệm vụ, xem xét lại, rồi yêu cầu nhiệm vụ tiếp theo. Bạn là tổng biên tập. Trí tuệ nhân tạo là trợ lý của bạn.

    Ràng buộc “Không được chạm vào bất cứ thứ gì khác”
    Ở chế độ tác nhân, AI có thể tự ý chỉnh sửa các tập tin mà bạn không cho phép. Hãy ngăn chặn điều này một cách rõ ràng:

    Sửa lỗi ngoại lệ con trỏ null trong phương thức `calculateDiscount()`
    trong tệp `app/Services/OrderService.php` .

    Không sửa đổi bất kỳ tệp nào khác.
    Không chỉnh sửa lại bất cứ thứ gì bên ngoài phương thức này.
    Chỉ sửa lỗi cụ thể được mô tả.
    Chỉ một câu này thôi — “không được chỉnh sửa bất kỳ tập tin nào khác” — sẽ giúp bạn tránh phải xem xét những thay đổi không mong muốn đối với sáu tập tin không liên quan.

    Hãy yêu cầu giải thích trước khi thực hiện.
    Đối với các nhiệm vụ phức tạp hoặc không quen thuộc:

    Hãy giải thích cách bạn sẽ triển khai cơ chế khóa phân tán dựa trên Redis
    để ngăn chặn tình trạng tranh chấp dữ liệu trong quá trình thanh toán.
    Nêu rõ những ưu nhược điểm. Sau khi tôi chấp thuận phương pháp, hãy viết mã.
    Bạn học được điều gì đó và phát hiện ra những lỗi về kiến ​​trúc trước khi chúng được đưa vào mã nguồn.

    Mẹo 4: Tiết kiệm Token — Kỹ thuật ngữ cảnh
    Mỗi từ trong tệp quy tắc của bạn đều là một token. Trong một dự án lớn, 20 quy tắc toàn cục có thể gửi thêm 2.000 token với mỗi thông báo. Điều này tạo ra ba vấn đề thực sự: sự thiếu hụt ngữ cảnh (ít “không gian bộ nhớ” hơn cho mã nguồn thực tế của bạn), hội chứng mất phần giữa (AI nhớ phần đầu và cuối của các lời nhắc dài, bỏ qua phần giữa) và chi phí không cần thiết.

    Chiến lược tiết kiệm token
    Đừng giải thích những gì mô hình đã biết.

    # ❌ Lãng phí token vào kiến ​​thức chung
    Tạo một controller Laravel. Controller trong Laravel là các lớp
    kế thừa từ lớp Controller cơ bản và xử lý các yêu cầu HTTP…

    # ✅ Chuyển thẳng đến phần cụ thể cho dự án của bạn
    Tạo tệp `app/Http/Controllers/Api/V2/OrderController.php`
    với các phương thức index, show và store trả về OrderResource.
    Hãy tham khảo các tệp tin thay vì dán mã.

    # ❌ Dán 500 dòng (hàng nghìn token)
    [dán toàn bộ OrderService.php] Sửa lỗi trong phần này…

    # ✅ Tham chiếu trực tiếp
    Sửa lỗi kiểm tra null trong phương thức `processRefund()`
    trong `app/Services/OrderService.php` xung quanh dòng 145.
    Công cụ này dùng /clearđể thiết lập lại ngữ cảnh đã bị phình to. Trong Claude Code, /clearnó xóa lịch sử hội thoại trong khi vẫn giữ nguyên tệp CLAUDE.md được tải. Hãy sử dụng nó sau khi hoàn thành một tác vụ lớn trước khi bắt đầu một tác vụ mới.

    Mỗi nhiệm vụ chính chỉ nên có một cuộc trò chuyện riêng. Trong các cuộc trò chuyện dài, hiệu suất của mô hình sẽ giảm và AI sẽ lạc khỏi ngữ cảnh. Hãy mở một cuộc trò chuyện mới cho mỗi tính năng hoặc bản sửa lỗi không liên quan.

    Sử dụng các tác nhân phụ cho các công việc độc lập. Trong Claude Code, hãy tạo một tác nhân phụ cho các tác vụ không cần ngữ cảnh của phiên chính:

    /spawn

    Xem xét `app/Services/PaymentService.php` và chỉ tạo một danh sách các
    vấn đề bảo mật tiềm ẩn. Không sửa chữa bất cứ điều gì.
    Các tác nhân phụ có cửa sổ ngữ cảnh riêng. Chúng không chiếm dung lượng của phiên làm việc chính.

    Mẹo 5: Xây dựng các kỹ năng và lệnh tùy chỉnh
    Kỹ năng là những phím tắt cho những việc bạn làm đi làm lại nhiều lần. Thay vì viết một câu lệnh dài mỗi lần, hãy lưu nó dưới dạng một lệnh có thể tái sử dụng.

    Trong Claude Code — Các tập lệnh tùy chỉnh
    Tạo .claude/commands/tại thư mục gốc của dự án:

    mkdir -p .claude/commands
    Tạo nên .claude/commands/make-feature.md:

    # Xây dựng Feature Command

    Scaffold hoàn chỉnh từ đầu trong Laravel.

    ## Các bước:
    1. Tạo migration cho các bảng cần thiết
    2. Tạo Model với các thuộc tính fillable, casts và relationships
    3. Tạo các lớp FormRequest (Store và Update)
    4. Tạo lớp Resource cho các phản hồi API
    5. Tạo lớp Service với các phương thức CRUD
    6. Tạo Controller với các phương thức index, show, store, update, destroy
    7. Thêm routes vào routes/api.php
    8. Tạo các bài kiểm thử Feature cho tất cả các endpoint

    ## Định dạng đầu vào:
    Tên Feature: [tên] Các trường: [danh sách các trường với kiểu dữ liệu] Mối
    quan hệ: [mối quan hệ với các model khác, nếu có] Gọi nó bằng:

    claude run .claude/commands/make-feature.md \
    “Tên tính năng: Đánh giá sản phẩm
    Các trường: xếp hạng (số nguyên), bình luận (văn bản), đã xác minh (boolean) _đã xác minh (boolean)
    Mối quan hệ: thuộc về Sản phẩm, thuộc về Người dùng”
    Một lệnh duy nhất. Giàn giáo hoàn chỉnh. Luôn luôn như vậy.

    Trong con trỏ — Lệnh gạch chéo
    Tạo nên .cursor/commands/review.md:


    Tên: Đánh giá
    Mô tả: Đánh giá mã nguồn mới viết về chất lượng và bảo mật

    Hãy đánh giá đoạn mã sau và đưa ra phản hồi về:
    1. **Lỗi & Sai sót logic** : Có logic nào không chính xác hoặc trường hợp ngoại lệ nào chưa được xử lý không?
    2. **Bảo mật** : Có khả năng bị tấn công SQL injection, XSS, bỏ qua xác thực hoặc lộ dữ liệu nhạy cảm không?
    3. **Hiệu suất** : Có truy vấn N+1, thiếu chỉ mục hoặc các thao tác nào có thể được tối ưu hóa không?
    4. **Thực tiễn tốt nhất** : Mã có tuân theo các quy ước trong dự án này không?
    5. **Độ phủ kiểm thử** : Phương thức nào cần kiểm thử?

    Hãy định dạng phản hồi dưới dạng các mục có thể thực hiện được, không phải là một bài luận dài.
    Hãy gọi hàm đó /reviewtrong khung chat Cursor, dán mã code vào và nhận phản hồi có cấu trúc chỉ trong vài giây.

    Mẹo 6: Quy trình làm việc thực sự hiệu quả
    Chu trình Lập kế hoạch → Thực hiện → Đánh giá
    Đây là mô hình đáng tin cậy nhất để tạo ra mã nguồn dễ bảo trì bằng AI:

    1. LẬP KẾ HOẠCH: “Tạo kế hoạch triển khai cho [tính năng]. Chưa có mã.”
    → Đọc kế hoạch. Sửa chữa bất kỳ lỗi nào.

    2. THỰC HIỆN (từng bước một): “Thực hiện bước 1 trong kế hoạch của chúng ta: [di chuyển dữ liệu]”
    → Đọc mã được tạo ra.
    → Chạy thử nghiệm hoặc xác minh thủ công.

    3. XEM XÉT: “Xem lại mã chúng ta vừa viết. Tìm các vấn đề tiềm ẩn.”
    → Sửa chữa những lỗi được phát hiện.

    4. Chuyển sang bước tiếp theo.
    Đừng bao giờ bỏ qua bước xem xét lại. Đây là điều phân biệt việc lập trình hiệu quả với việc tích lũy nợ kỹ thuật.

    Quy trình làm việc sử dụng hai công cụ
    Một mô hình mà nhiều nhà phát triển giàu kinh nghiệm đã thống nhất: Cursor viết, Claude xem xét.

    1. Chế độ Cursor Agent → Tạo hoặc chỉnh sửa mã
    2. Claude Code → Xem lại tất cả các thay đổi mà Cursor đã thực hiện
    3. Claude Code → Chạy thử nghiệm, kiểm tra kết quả
    4. Cursor → Khắc phục sự cố dựa trên phản hồi của Claude
    5. Lặp lại
    Hãy thiết lập tệp CLAUDE.md của bạn để nhấn mạnh vai trò của người đánh giá:

    ## Vai trò của tôi trong quy trình này:
    Đóng vai trò là người đánh giá mã cho tất cả mã được viết bởi Cursor AI trong không gian làm việc này.
    Khi được yêu cầu đánh giá:
    – Đọc sự khác biệt hoặc các thay đổi tệp
    – Xác định lỗi, vấn đề bảo mật và các vấn đề kiến ​​trúc
    – Đưa ra phản hồi cụ thể, có thể thực hiện được
    – Không viết lại mã trừ khi được yêu cầu rõ ràng
    Một nhà phát triển đã báo cáo rằng Claude bắt được một vòng lặp giữ tham chiếu trong một view SwiftUI, điều này có thể gây ra rò rỉ bộ nhớ — đoạn mã về mặt chức năng là chính xác nhưng lại có một lỗi bắt giữ tham chiếu mạnh tinh tế. Đó là loại lỗi dễ dàng xuất hiện khi bạn đang phát triển nhanh chóng.

    Quy trình gỡ lỗi
    Khi gặp phải một lỗi khó:

    Bước 1 — Cung cấp đầy đủ ngữ cảnh:
    “Tôi đang gặp lỗi này: [dán toàn bộ dấu vết lỗi] Các tệp liên quan: [liệt kê các tệp] Điều này xảy ra khi: [mô tả hành động hoặc tình huống của người dùng]”

    Bước 2 – Yêu cầu chẩn đoán trước khi sửa chữa:
    “Nguyên nhân có thể là gì? Hãy giải thích trước khi bạn sửa chữa bất cứ điều gì.”

    Bước 3 – Xác nhận phương pháp:
    “Bạn nói vấn đề nằm ở [X]. Tôi đồng ý. Bây giờ chỉ sửa phần đó thôi.”
    Việc chẩn đoán trước giúp ngăn AI tự tin sửa chữa sai vấn đề — điều này xảy ra thường xuyên hơn bạn nghĩ.

    Mẹo 7: Đừng bao giờ tin tưởng mù quáng — Hãy xem xét kỹ trước khi ứng tuyển.
    Đây không phải là lời khuyên. Đây là nền tảng.

    Các công cụ AI rất nhanh. Chúng không phải là hoàn hảo. Luôn luôn đọc kỹ những thay đổi mà chúng thực hiện. Giữ lại những gì hợp lý. Đánh dấu những gì không hợp lý. Yêu cầu chỉnh sửa lại khi cảm thấy có gì đó không ổn. Bạn là tổng biên tập. AI là trợ lý của bạn.

    Một danh sách kiểm tra cụ thể cần thực hiện sau mỗi lần tạo mã AI:

    Bảo mật — hãy kiểm tra thủ công các mục này:

    Liệu có dữ liệu đầu vào nào của người dùng được sử dụng trực tiếp trong truy vấn cơ sở dữ liệu không?
    Liệu có dữ liệu nhạy cảm nào đang được ghi lại hoặc bị lộ trong các phản hồi không?
    Việc kiểm tra quyền truy cập đã chính xác trên tất cả các thiết bị đầu cuối chưa?
    Hiệu năng — điều dễ bị bỏ qua:

    Có truy vấn nào bên trong vòng lặp không? (Bài toán N+1)
    Liệu những mối quan hệ cần thiết có đang bị quá tải?
    Liệu các thao tác nặng có nên được xếp vào hàng đợi xử lý thay vì thực hiện ngay lập tức không?
    Logic — kiểm chứng hành vi:

    Các trường hợp ngoại lệ có được xử lý không? (giá trị null, mảng rỗng, số 0, số âm)
    Liệu hành vi đó có thực sự đáp ứng yêu cầu hay không?
    Nghiên cứu của Stack Overflow năm 2025 cho thấy các nhà phát triển làm việc chậm hơn 19% khi sử dụng các công cụ AI, nhưng thực chất không phải là đo lường chất lượng của công cụ mà là đo lường chi phí thời gian dành cho việc gỡ lỗi và làm sạch mã trông có vẻ đúng nhưng chưa được xem xét kỹ lưỡng.

    Mẹo 8: Quản lý cửa sổ ngữ cảnh
    Cửa sổ ngữ cảnh là một tài nguyên cố định. Khi nó đầy, hiệu suất của mô hình sẽ suy giảm — ban đầu là từ từ, sau đó sẽ rõ rệt hơn. Đây là lỗi phổ biến nhất trong quá trình phát triển có sự hỗ trợ của AI, và hoàn toàn có thể phòng ngừa được.

    Dấu hiệu cho thấy cửa sổ ngữ cảnh của bạn sắp đầy.
    Trí tuệ nhân tạo bắt đầu “quên” những tập tin mà nó đã đọc trước đó trong phiên làm việc.
    Các phản hồi trở nên chung chung hơn là cụ thể cho từng dự án.
    Trí tuệ nhân tạo tự tạo ra các tên phương thức hoặc lớp không hề tồn tại.
    Hiệu năng giảm đáng kể
    Chiến lược phục hồi
    Trong Claude Code:

    # Xóa lịch sử hội thoại trong khi vẫn giữ CLAUDE.md được tải
    /clear

    # Hoặc bắt đầu lại với bản tóm tắt chuyển giao
    claude “Chúng tôi đang làm việc trên tính năng [X]. Tiến độ cho đến nay: [tóm tắt ngắn gọn].
    Nhiệm vụ tiếp theo: [việc cần làm tiếp theo]”
    Trong Cursor: Mở một cuộc trò chuyện mới. Bắt đầu bằng một bản tóm tắt ngắn gọn về những gì bạn đã làm dở và chỉ rõ các tệp bạn cần.

    Mô hình tóm tắt nhỏ gọn
    Trước khi nội dung được bổ sung đầy đủ, hãy yêu cầu AI tóm tắt phiên họp:

    Hãy tạo một bản tóm tắt ngắn gọn về tất cả những gì chúng ta đã làm trong phiên này:
    – Các quyết định về kiến ​​trúc đã được đưa ra
    – Các tệp đã được tạo hoặc sửa đổi
    – Những việc vẫn chưa hoàn thành
    – Bối cảnh quan trọng cần nhớ cho phiên tiếp theo .

    Định dạng dưới dạng gạch đầu dòng để tôi có thể dán vào đầu một cuộc trò chuyện mới.
    Tài liệu chuyển giao này cho phép bạn tiếp tục trong một cửa sổ ngữ cảnh mới mà không làm mất trạng thái quan trọng.

    Mẹo 9: MCP — Mở rộng phạm vi hoạt động của đại lý
    Giao thức ngữ cảnh mô hình (Model Context Protocol – MCP) cho phép các tác nhân AI tương tác với các công cụ bên ngoài — cơ sở dữ liệu, trình duyệt, hệ thống tệp, API. Thiết lập MCP phù hợp có thể loại bỏ hoàn toàn một loại tương tác qua lại nhiều lần.

    Cơ sở dữ liệu MCP
    // .cursor/mcp.json
    {
    “mcpServers” : {
    “mysql” : {
    “command” : “npx” ,
    “args” : [ “-y” , “@modelcontextprotocol/server-mysql” ] ,
    “env” : {
    “MYSQL_HOST” : “localhost” ,
    “MYSQL_PORT” : “3306” ,
    “MYSQL_DATABASE” : “your_db” ,
    “MYSQL_USER” : “root” ,
    “MYSQL_PASSWORD” : “secret”
    }
    }
    }
    }
    Khi cơ sở dữ liệu MCP được kích hoạt, bạn có thể yêu cầu:

    Hãy xem xét cấu trúc của các bảng orders và order_items.
    Dựa trên lược đồ thực tế, hãy viết một truy vấn Eloquent hiệu quả
    để lấy ra 10 khách hàng có tổng chi tiêu cao nhất trong tháng này.
    Trí tuệ nhân tạo (AI) sẽ kiểm tra lược đồ cơ sở dữ liệu thực tế của bạn — chứ không chỉ những gì được mô tả trong mã — và viết một truy vấn phù hợp với mô hình dữ liệu thực của bạn.

    Kiểm thử giao diện người dùng (UI Testing) trên trình duyệt MCP
    {
    “mcpServers” : {
    “playwright” : {
    “command” : “npx” ,
    “args” : [ “-y” , “@modelcontextprotocol/server-playwright” ] }
    }
    }
    Trí tuệ nhân tạo (AI) có thể mở trình duyệt, nhấp vào các nút, điền vào biểu mẫu và chụp ảnh màn hình kết quả. Kiểm thử giao diện người dùng toàn diện được thực hiện bằng ngôn ngữ tự nhiên.

    Quy trình làm việc đầy đủ: Xây dựng một tính năng từ đầu
    Dưới đây là cách tất cả các mẹo này kết hợp lại để tạo nên một tính năng thực sự — Hệ thống Đánh giá Sản phẩm trong Laravel.

    Bước 1 — Ngữ cảnh đã sẵn sàng. Thông tin về ngăn xếp và các quy ước của bạn CLAUDE.mdđã được tải sẵn. Không cần làm gì thêm ở đây.

    Bước 2 — Chế độ Lập kế hoạch:

    /plan

    Triển khai Hệ thống Đánh giá Sản phẩm:
    – Người dùng đã mua sản phẩm có thể gửi đánh giá (1-5) và văn bản nhận xét – Mỗi
    người dùng chỉ được đánh giá một sản phẩm một lần
    – Các đánh giá cần được quản trị viên kiểm duyệt trước khi hiển thị
    – Trang sản phẩm hiển thị điểm đánh giá trung bình và số lượng đánh giá
    – Gửi thông báo qua email cho người bán khi có đánh giá mới được gửi
    Tạo một kế hoạch triển khai chi tiết. Không viết bất kỳ đoạn mã nào.
    Hãy đọc kỹ kế hoạch. Chỉnh sửa bất cứ điều gì bạn không đồng ý. Việc này chỉ mất hai phút và giúp bạn tránh phải làm lại hàng giờ liền.

    Bước 3 — Thực hiện từng bước:

    Thực hiện bước 1 trong kế hoạch của chúng ta: di chuyển cơ sở dữ liệu cho bảng product_reviews.
    Các trường dữ liệu theo như kế hoạch đã đề ra . Thêm các chỉ mục phù hợp.
    Xem xét quá trình di chuyển → phê duyệt → bước tiếp theo.

    Thực hiện bước 2: Mô hình Đánh giá Sản phẩm với:
    – Các trường có thể điền
    – Kiểu dữ liệu (xếp hạng dưới dạng số nguyên, dấu thời gian)
    – Mối quan hệ với Người dùng và Sản phẩm
    – Phạm vi chỉ dành cho các đánh giá đã được phê duyệt
    – Trình quan sát để gửi thông báo qua email
    Xem xét mẫu → phê duyệt → bước tiếp theo. Tiếp tục cho đến khi hoàn tất tất cả các bước.

    Bước 4 — Đánh giá toàn diện:

    Xem lại tất cả các tệp chúng ta đã tạo cho Hệ thống Đánh giá Sản phẩm :
    [liệt kê tất cả các tệp đã tạo]

    Kiểm tra cụ thể:
    1. Ủy quyền : Người dùng chưa mua hàng có thể gửi đánh giá không?
    2. Truy vấn N+1 trong bộ điều khiển
    3. Thiếu quy tắc xác thực
    4. Các trường hợp ngoại lệ chưa được xử lý
    Khắc phục mọi vấn đề phát sinh. Vận chuyển hàng hóa với sự tự tin.

    Tóm lại
    Lập trình cảm xúc hiệu quả không phải là phó mặc cho AI và xem điều gì sẽ xảy ra. Mà là xây dựng một hệ thống cho phép tác nhân hoạt động trong bối cảnh phù hợp, trong một nhiệm vụ được xác định rõ ràng, tạo ra kết quả mà bạn thực sự có thể kiểm chứng.

    Tóm lại, điều quan trọng nhất là:

    CLAUDE.md / .cursorrules — khoản đầu tư một lần giúp tiết kiệm hàng ngàn token mỗi phiên giao dịch
    Chế độ Lập kế hoạch — ngăn ngừa những bế tắc tốn kém trước khi viết bất kỳ dòng mã nào.
    Mỗi phiên chỉ nên làm một việc — tốt hơn là dồn tất cả mọi việc vào một phiên.
    Xem xét kỹ trước khi nộp đơn — đây là điều bắt buộc; bạn vẫn phải chịu trách nhiệm về kết quả.
    Bối cảnh là hữu hạn — hãy chủ động quản lý nó, đừng để nó bị lấp đầy một cách ngẫu nhiên.
    Những nhà phát triển làm việc hiệu quả nhất với các tác nhân AI không phải là những người tin tưởng AI nhất. Họ là những người giỏi nhất trong việc hướng dẫn AI bằng ngữ cảnh phù hợp vào đúng thời điểm.

    # Bắt đầu ngay hôm nay
    1. Tạo tệp CLAUDE.md hoặc .cursorrules cho dự án hiện tại của bạn
    2. Sử dụng Chế độ Lập kế hoạch cho tính năng tiếp theo của bạn
    3. Biến việc xem lại mã trước khi commit thành thói quen
    Từ đây, việc mã hóa cảm xúc của bạn sẽ mang nhiều cảm xúc hơn — và đáng tin cậy hơn nhiều.

    //medium.com/@developerawam/vibe-coding-with-ai-agents-the-tips-nobody-tells-you-about-context-prompts-and-not-wasting-dc4e32b135f8

    [NGỮ CẢNH] + [CÔNG VIỆC CỤ THỂ] + [RÀNG BUỘC] + [ĐỊNH DẠNG KẾT QUẢ] Prompt yếu:
    Thêm giới hạn tốc độ vào đăng nhập

    Prompt mạnh:
    Trong file app/Http/Controllers/Auth/LoginController.php hiện có, thêm giới hạn tốc độ: tối đa 5 lần đăng nhập thất bại cho mỗi IP trong 15 phút. Sử dụng middleware throttle tích hợp sẵn của Laravel. Không thay đổi logic đăng nhập hiện có — chỉ cần thêm middleware. Khi vượt quá giới hạn, trả về lỗi JSON với mã HTTP 429.

    Công cụ Scoped Task Technique
    Thay vì yêu cầu AI xây dựng toàn bộ hệ thống, hãy chia nó thành các phần nhỏ, tập trung:

    # ❌ Quá rộng — tạo ra kết quả lan man, khó kiểm tra
    Xây dựng hệ thống thông báo có thể gửi email, push và SMS

    # ✅ Scoped — một kết quả rõ ràng
    Tạo interface NotificationChannel tại app/Contracts/NotificationChannel.php với một phương thức duy nhất: send(User $user, NotificationData $data): bool

    Hoàn thành một nhiệm vụ, xem xét, rồi yêu cầu nhiệm vụ tiếp theo. Bạn là biên tập viên trưởng, AI là trợ lý.

    Ràng buộc “Không thay đổi gì khác”
    Trong chế độ agent, AI có thể sáng tạo và sửa các file không được yêu cầu. Ngăn chặn điều này bằng cách nêu rõ:

    Sửa lỗi null pointer trong phương thức calculateDiscount()app/Services/OrderService.php. Không sửa bất kỳ file nào khác. Không tái cấu trúc ngoài phương thức này. Chỉ sửa lỗi cụ thể được mô tả. Câu lệnh “không sửa file nào khác” sẽ bảo vệ bạn khỏi việc phải kiểm tra những thay đổi không mong muốn ở sáu file liên quan.

    Yêu cầu giải thích trước khi thực hiện
    Đối với các nhiệm vụ phức tạp hoặc chưa quen:

    Giải thích cách triển khai khóa phân tán dựa trên Redis để ngăn tình trạng race condition trong quá trình thanh toán. Nêu rõ các ưu nhược điểm. Khi tôi đồng ý với cách tiếp cận, mới viết code. Bạn sẽ học được kiến thức nền tảng và tránh lỗi kiến trúc trước khi chúng được chôn sâu trong code.

    Tip 4: Tiết kiệm token — Kỹ thuật quản lý ngữ cảnh
    Mỗi từ trong file quy tắc đều tiêu tốn token. Trong dự án lớn, 20 quy tắc toàn cục có thể chiếm 2.000 token cho mỗi tin nhắn. Điều này gây ra ba vấn đề thực tế:
    – Ép chật ngữ cảnh (ít “không gian não” cho code thực tế)
    – Hội chứng mất mát trung tâm (AI nhớ đầu và cuối tài liệu dài, bỏ qua phần giữa)
    – Chi phí không cần thiết.

    Chiến lược tiết kiệm token
    – Đừng giải thích những gì mô hình đã biết. # ❌ Lãng phí token với kiến thức chung
    Tạo controller Laravel. Controllers trong Laravel là các lớp kế thừa Controller cơ bản và xử lý HTTP request… # ✅ Đi thẳng vào phần đặc thù của dự án
    Tạo app/Http/Controllers/Api/V2/OrderController.php với các phương thức index, show, store trả về OrderResource. Tham chiếu file thay vì dán toàn bộ code. # ❌ Dán 500 dòng (nghìn token)
    [dán toàn bộ OrderService.php] Sửa lỗi trong… # ✅ Tham chiếu trực tiếp
    Sửa lỗi kiểm tra null trong phương thức processRefund()app/Services/OrderService.php quanh dòng 145.

    Sử dụng /clear để xóa ngữ cảnh bở khi cần. Trong Claude Code, /clear xóa lịch sử hội thoại nhưng giữ CLAUDE.md. Dùng sau khi hoàn thành một nhiệm vụ lớn rồi bắt đầu nhiệm vụ mới. Một chat cho mỗi tính năng hoặc sửa lỗi. Trong các cuộc chat dài, hiệu năng mô hình giảm và AI dần lệch khỏi ngữ cảnh. Mở chat mới cho mỗi tính năng không liên quan. Sử dụng subagent cho công việc cô lập. Trong Claude Code, tạo subagent cho những nhiệm vụ không cần ngữ cảnh chính:

    /spawn

    Xem xét app/Services/PaymentService.php và đưa ra danh sách các vấn đề bảo mật tiềm năng chỉ. Không sửa gì. Subagent có ngữ cảnh riêng, không tiêu tốn không gian của phiên chính.

    Tip 5: Xây dựng kỹ năng và lệnh tùy chỉnh
    Kỹ năng là phím tắt cho các công việc lặp đi lặp lại. Thay vì viết prompt dài mỗi lần, lưu nó dưới dạng lệnh có thể tái sử dụng. Trong Claude Code — Lệnh tùy chỉnh
    Tạo .claude/commands/ ở gốc dự án:

    mkdir -p .claude/commands
    Tạo .claude/commands/make-feature.md:

    # Make Feature Command

    Scaffold một tính năng Laravel hoàn chỉnh từ đầu. ## Các bước:
    1. Tạo migration cho các bảng cần thiết
    2. Tạo Model với fillable, casts, và relationships
    3. Tạo FormRequest (Store và Update)
    4. Tạo Resource cho phản hồi API
    5. Tạo Service với các phương thức CRUD
    6. Tạo Controller với index, show, store, update, destroy
    7. Thêm route vào routes/api.php
    8. Tạo test cho mọi endpoint

    ## Định dạng đầu vào:
    Tên tính năng: [name] Trường: [list field + type] Quan hệ: [relationships nếu có]

    Gọi bằng:

    claude run .claude/commands/make-feature.md \
    “Feature name: Product Review
    Fields: rating (int), comment (text), isverified (bool)
    Relationships: belongs to Product, belongs to User”

    Một lệnh. Scaffold đầy đủ. Mỗi lần.

    Trong Cursor — Lệnh Slash
    Tạo .cursor/commands/review.md:


    name: review
    description: Review newly written code for quality and security

    Review code và cung cấp phản hồi về:
    1. Bugs & Logic Errors: Logic sai hoặc trường hợp không xử lý?
    2. Security: Rủi ro SQL injection, XSS, bypass auth, rò rỉ dữ liệu?
    3. Performance: N+1 query, thiếu index, tối ưu?
    4. Best Practices: Có tuân thủ convention dự án không?
    5. Test Coverage: Phương thức nào cần test?
    Định dạng phản hồi dạng mục hành động, không viết luận. Gọi bằng /review trong chat Cursor, dán code, nhận feedback nhanh.

    Tip 6: Quy trình làm việc thực sự hiệu quả
    Kế hoạch → Thực hiện → Đánh giá vòng lặp
    Đây là mô hình nhất quán nhất để tạo code bảo trì được với AI:

    1. PLAN: “Tạo kế hoạch triển khai [tính năng]. Không code.” → Đọc kế hoạch, sửa lỗi nếu có.
    2. IMPLEMENT (từng bước): “Thực hiện bước 1 trong kế hoạch: [migration]” → Đọc code, chạy test hoặc kiểm tra thủ công.
    3. REVIEW: “Review code vừa viết. Tìm vấn đề tiềm ẩn.” → Sửa theo feedback.
    4. Tiếp tục bước tiếp theo. Không bỏ qua bước review. Đây là điểm khác biệt giữa coding nhanh và tích tụ technical debt.

    Quy trình Dual-Tool
    Mô hình được nhiều lập trình viên kinh nghiệm áp dụng: Cursor viết → Claude review.
    1. Cursor Agent Mode → Tạo hoặc sửa code
    2. Claude Code → Review toàn bộ thay đổi do Cursor tạo
    3. Claude Code → Chạy test, kiểm tra output
    4. Cursor → Sửa lỗi dựa trên feedback của Claude
    5. Lặp lại

    Đặt CLAUDE.md để nhấn mạnh vai trò reviewer:

    ## Vai trò của tôi trong quy trình này
    Làm reviewer cho mọi code do Cursor AI tạo trong workspace này. Khi được yêu cầu review:
    – Đọc diff hoặc thay đổi file
    – Xác định bug, vấn đề bảo mật, kiến trúc
    – Đưa ra feedback cụ thể, hành động được
    – Không viết lại code trừ khi được yêu cầu rõ ràng

    Một lập trình viên đã báo cáo Claude phát hiện một retain cycle trong SwiftUI view, tránh được rò rỉ bộ nhớ dù code chạy được. Đây là kiểu bug dễ xuất hiện khi di chuyển nhanh.

    Quy trình Debug
    Khi gặp lỗi khó:

    Bước 1 — Cung cấp ngữ cảnh đầy đủ:
    “Tôi nhận được lỗi: [dán toàn bộ stack trace] Các file liên quan: [list files] Điều này xảy ra khi: [miêu tả hành động người dùng hoặc kịch bản]”

    Bước 2 — Yêu cầu chẩn đoán trước khi sửa:
    “Nguyên nhân có thể là gì? Giải thích trước khi sửa.”

    Bước 3 — Xác nhận cách tiếp cận:
    “Bạn nói vấn đề ở [X]. Tôi đồng ý. Bây giờ sửa chỉ phần đó.”

    Nhận chẩn đoán trước ngăn AI sửa nhầm phần sai — hiện tượng thường xảy ra hơn bạn nghĩ.

    Tip 7: Không bao giờ tin tưởng mù quáng — luôn review trước khi áp dụng
    Đây không phải một lời khuyên phụ; nó là nền tảng. Công cụ AI nhanh nhưng không hoàn hảo. Luôn đọc kỹ các thay đổi. Giữ những gì hợp lý, gắn cờ những gì nghi ngờ. Yêu cầu prompt lại khi có cảm giác không đúng. Bạn là biên tập viên trưởng, AI là trợ lý.

    Checklist kiểm tra sau mỗi lần AI sinh code:

    Bảo mật — kiểm tra thủ công:
    – Có input người dùng nào được dùng trực tiếp trong query DB không?
    – Dữ liệu nhạy cảm có bị log hoặc trả về trong response không?
    – Kiểm tra quyền truy cập trên mọi endpoint có đúng không?

    Hiệu năng — dễ bỏ qua:
    – Có query nằm trong vòng lặp? (N+1)
    – Các quan hệ cần thiết đã được eager-load?
    – Các thao tác nặng có nên chuyển sang queue job không?

    Logic — xác nhận hành vi:
    – Các trường hợp biên (null, mảng rỗng, 0, số âm) có được xử lý?
    – Hành vi có thực sự đáp ứng yêu cầu không?

    Nghiên cứu Stack Overflow 2025 cho thấy nhà phát triển chậm 19% khi dùng AI không phải vì công cụ kém, mà vì thời gian phải debug và dọn dẹp code trông đúng nhưng chưa được review kỹ.

    Tip 8: Quản lý cửa sổ ngữ cảnh
    Cửa sổ ngữ cảnh là tài nguyên cố định.
    — dễ bỏ sót:

    Có truy vấn bên trong vòng lặp không? (vấn đề N+1)
    Các quan hệ cần thiết đã được eager‑load chưa?
    Có nên đưa các hoạt động nặng vào queue job không?

    Logic — kiểm chứng hành vi:

    Các trường hợp biên đã được xử lý chưa? (null, mảng rỗng, 0, số âm)
    Hành vi thực tế có khớp với yêu cầu không? Nghiên cứu Stack Overflow 2025 cho thấy các lập trình viên chậm hơn 19 % khi dùng công cụ AI không phải vì chất lượng công cụ, mà vì thời gian phải debug và làm sạch mã trông đúng nhưng chưa được xem xét kỹ.

    Mẹo 8: Quản lý Context Window
    Context window là tài nguyên có giới hạn. Khi đầy, hiệu năng của mô hình giảm dần, cuối cùng rõ rệt. Đây là lỗi phổ biến nhất trong phát triển hỗ trợ AI và hoàn toàn có thể ngăn ngừa.

    Dấu hiệu Context Window đang đầy
    – AI bắt đầu “quên” các tệp đã đọc ở đầu phiên
    – Các phản hồi trở nên chung chung, không đặc thù dự án
    – AI tự tạo tên phương thức hoặc lớp không tồn tại
    – Hiệu năng giảm mạnh

    Chiến lược khôi phục

    Trong Claude Code:
    <br>/clear # xóa lịch sử hội thoại, giữ CLAUDE.md đã tải<br>
    hoặc
    <br>claude "Chúng ta đang làm tính năng [X]. Tiến độ: [tóm tắt ngắn]. Nhiệm vụ tiếp theo: [cần làm gì]"<br>

    Trong Cursor: Mở chat mới, bắt đầu bằng tóm tắt ngắn về những gì đã làm và chỉ rõ các tệp cần tham chiếu.

    Mẫu Tóm tắt Gọn (Compact Summary Pattern)
    Trước khi context đầy, yêu cầu AI tóm tắt phiên làm việc:

    > Tạo một bản tóm tắt ngắn về mọi việc chúng ta đã thực hiện trong phiên này:
    > – Các quyết định kiến trúc đã đưa ra
    > – Các tệp được tạo hoặc sửa đổi
    > – Những phần chưa hoàn thiện
    > – Các thông tin quan trọng cần nhớ cho phiên kế tiếp
    > Định dạng dạng bullet để tôi có thể dán vào chat mới.

    Bản tóm tắt này cho phép bạn tiếp tục trong một cửa sổ context mới mà không mất trạng thái quan trọng.

    Mẹo 9: MCP — Mở rộng khả năng của Agent
    Model Context Protocol (MCP) cho phép các agent AI tương tác với công cụ bên ngoài – cơ sở dữ liệu, trình duyệt, API. Cấu hình MCP phù hợp có thể loại bỏ hoàn toàn một loạt các vòng hỏi đáp.

    Database MCP
    json<br>// .cursor/mcp.json<br>{<br> "mcpServers": {<br> "mysql": {<br> "command": "npx",<br> "args": ["-y", "@modelcontextprotocol/server-mysql"],<br> "env": {<br> "MYSQL_HOST": "localhost",<br> "MYSQL_PORT": "3306",<br> "MYSQL_DATABASE": "your_db",<br> "MYSQL_USER": "root",<br> "MYSQL_PASSWORD": "secret"<br> }<br> }<br> }<br>}<br>
    Kích hoạt Database MCP, bạn có thể hỏi:

    > Xem cấu trúc bảng ordersorder_items. Dựa trên schema thực tế, viết một truy vấn Eloquent hiệu quả để lấy 10 khách hàng chi tiêu cao nhất trong tháng này.

    AI sẽ kiểm tra schema thực tế của bạn, không chỉ dựa vào mô tả trong code, và viết truy vấn phù hợp.

    Browser MCP (Kiểm thử UI)
    json<br>{<br> "mcpServers": {<br> "playwright": {<br> "command": "npx",<br> "args": ["-y", "@modelcontextprotocol/server-playwright"]<br> }<br> }<br>}<br>
    AI có thể mở trình duyệt, nhấn nút, điền form và chụp màn hình kết quả – kiểm thử UI end‑to‑end chỉ bằng ngôn ngữ tự nhiên.

    Quy trình hoàn chỉnh: Xây dựng tính năng từ đầu
    Ví dụ: Hệ thống Đánh giá Sản phẩm trong Laravel.

    1. Chuẩn bị Context – CLAUDE.md đã được tải, chứa thông tin stack và quy ước dự án.
    2. Plan Mode
    <br> /plan<br>
    Yêu cầu:
    – Người dùng đã mua sản phẩm mới được gửi rating (1‑5) và nội dung review.
    – Mỗi người dùng chỉ review một sản phẩm một lần.
    – Review cần duyệt bởi admin trước khi hiển thị.
    – Trang sản phẩm hiển thị rating trung bình và số lượng review.
    – Gửi email thông báo cho người bán khi có review mới.

    AI đưa ra kế hoạch chi tiết, bạn duyệt, chỉnh sửa nếu cần – mất vài phút, nhưng ngăn ngừa giờ đồng hồ sửa lại.

    3. Thực hiện từng bước

    Bước 1: Migration product_reviews (các trường theo kế hoạch, thêm index).
    Bước 2: Model ProductReview với:
    * $fillable
    * $casts (rating là int, timestamps)
    * Quan hệ tới UserProduct
    * Scope approved() chỉ lấy review đã duyệt
    * Observer gửi email thông báo
    – Kiểm tra, duyệt mỗi file, rồi chuyển sang bước tiếp.

    4. Rà soát toàn diện
    – Liệt kê mọi file đã tạo cho hệ thống Review.
    – Kiểm tra:
    1. Phân quyền: người chưa mua có thể review không?
    2. Truy vấn N+1 trong controller?
    3. Quy tắc validation còn thiếu?
    4. Các trường hợp biên chưa xử lý?
    – Sửa lỗi, rồi chuẩn bị phát hành.

    Kết luận
    Coding “vibe” hiệu quả không phải là để AI làm mọi việc và chờ kết quả. Nó là việc xây dựng một hệ thống cho phép agent làm việc với ngữ cảnh đúng, trong phạm vi nhiệm vụ rõ ràng, và luôn có bước kiểm chứng trước khi áp dụng.

    Các điểm quan trọng nhất:

    CLAUDE.md / .cursorrules – đầu tư một lần, tiết kiệm hàng ngàn token mỗi phiên.
    – Plan Mode – ngăn ngừa các ngã rẽ tốn kém trước khi viết code.
    – Một nhiệm vụ mỗi phiên – tốt hơn là gộp quá nhiều việc trong một phiên.
    – Rà soát trước khi commit – không thể thỏa hiệp; bạn vẫn chịu trách nhiệm cuối cùng.
    – Quản lý context liên tục, không để nó đầy một cách vô tình.

    Những lập trình viên năng suất cao với AI không phải là những người tin AI nhất, mà là những người biết hướng dẫn AI bằng ngữ cảnh đúng lúc, đúng cách.

    Bắt đầu ngay hôm nay

    1. Tạo CLAUDE.md hoặc .cursorrules cho dự án hiện tại.
    2. Sử dụng Plan Mode cho tính năng tiếp theo.
    3. Biến việc rà soát code trước khi commit thành thói quen.

    Như vậy, phong cách “vibe coding” của bạn sẽ trở nên thực sự ổn định và đáng tin cậy.
    — Dễ bỏ qua:

    Các truy vấn có nằm trong vòng lặp không? (vấn đề N+1)
    Các quan hệ cần thiết đã được eager‑load chưa?
    Có nên chuyển các thao tác nặng sang job queue không?

    Kiểm tra logic — xác nhận hành vi:

    Các trường hợp biên đã được xử lý chưa? (null, mảng rỗng, 0, số âm)
    Hành vi thực sự có đáp ứng yêu cầu không?

    Nghiên cứu Stack Overflow 2025 cho thấy các nhà phát triển chậm hơn 19 % khi dùng công cụ AI không phải vì chất lượng công cụ, mà vì thời gian phải debug và dọn dẹp mã trông đúng nhưng chưa được xem xét kỹ.

    ### Mẹo 8: Quản lý Context Window
    Context window là tài nguyên cố định. Khi đầy, hiệu năng mô hình giảm dần—ban đầu ít, sau đó rõ rệt. Đây là lỗi phổ biến nhất trong phát triển hỗ trợ AI và hoàn toàn có thể ngăn ngừa.

    Dấu hiệu Context Window đang đầy:
    – AI bắt đầu “quên” các file đã đọc trước đó trong phiên
    – Câu trả lời trở nên chung chung, không còn đặc thù cho dự án
    – AI tự bịa tên phương thức hoặc lớp không tồn tại
    – Hiệu năng giảm đáng kể

    Chiến lược phục hồi:
    Trong Claude Code:

    <br># Xóa lịch sử trò chuyện, giữ lại CLAUDE.md đã tải<br>/clear<br><br># Hoặc bắt đầu mới với bản tóm tắt chuyển giao<br>claude "Chúng ta đang làm tính năng [X]. Tiến độ hiện tại: [tóm tắt ngắn]. Nhiệm vụ tiếp theo: [công việc tiếp theo]"<br>

    Trong Cursor: Mở chat mới, bắt đầu bằng tóm tắt ngắn về nơi bạn dừng lại và chỉ rõ các file cần thiết.

    Mô hình Tóm Tắt Ngắn Gọn
    Trước khi context đầy, yêu cầu AI tóm tắt buổi làm việc:

    – Các quyết định kiến trúc đã đưa ra
    – Các file đã tạo hoặc sửa
    – Những công việc còn chưa hoàn thành
    – Thông tin quan trọng cần nhớ cho phiên sau

    Yêu cầu AI đưa ra dưới dạng danh sách gạch đầu dòng để bạn có thể dán vào một cuộc trò chuyện mới.

    ### Mẹo 9: MCP — Mở Rộng Khả Năng của Agent
    Model Context Protocol (MCP) cho phép các agent AI tương tác với công cụ bên ngoài—cơ sở dữ liệu, trình duyệt, hệ thống tệp, API. Thiết lập MCP đúng sẽ loại bỏ hoàn toàn một loại giao tiếp “đi lại” giữa bạn và AI.

    MCP cho Cơ sở dữ liệu

    json<br>// .cursor/mcp.json<br>{<br> "mcpServers": {<br> "mysql": {<br> "command": "npx",<br> "args": ["-y", "@modelcontextprotocol/server-mysql"],<br> "env": {<br> "MYSQL_HOST": "localhost",<br> "MYSQL_PORT": "3306",<br> "MYSQL_DATABASE": "your_db",<br> "MYSQL_USER": "root",<br> "MYSQL_PASSWORD": "secret"<br> }<br> }<br> }<br>}<br>

    Khi MCP cơ sở dữ liệu được kích hoạt, bạn có thể yêu cầu:

    > “Xem cấu trúc bảng orders và orderitems. Dựa trên schema thực tế, viết query Eloquent hiệu quả để lấy 10 khách hàng chi tiêu cao nhất trong tháng này.”

    AI sẽ kiểm tra schema thực tế của bạn, không chỉ dựa vào mô tả trong code, và viết query phù hợp.

    MCP cho Trình duyệt (Kiểm thử UI)

    json<br>{<br> "mcpServers": {<br> "playwright": {<br> "command": "npx",<br> "args": ["-y", "@modelcontextprotocol/server-playwright"]<br> }<br> }<br>}<br>

    AI có thể mở trình duyệt, click nút, điền form và chụp ảnh màn hình—cho phép kiểm thử UI end‑to‑end chỉ bằng ngôn ngữ tự nhiên.

    ### Quy trình hoàn chỉnh: Xây dựng tính năng “Product Review System” trong Laravel

    1. Chuẩn bị Context – CLAUDE.md đã tải sẵn thông tin stack và quy tắc dự án.
    2. Chế độ Kế hoạch

    <br>/plan<br><br>Implement a Product Review System:<br>- Người dùng đã mua sản phẩm mới có thể gửi rating (1‑5) và nội dung đánh giá.<br>- Một người dùng chỉ được đánh giá một sản phẩm một lần.<br>- Đánh giá phải được admin duyệt trước khi hiển thị.<br>- Trang sản phẩm hiển thị rating trung bình và số lượt đánh giá.<br>- Gửi email thông báo cho người bán khi có đánh giá mới.<br>

    Yêu cầu AI đưa ra kế hoạch chi tiết, không viết code. Đọc kế hoạch, chỉnh sửa nếu cần—công việc này chỉ mất vài phút nhưng ngăn ngừa giờ đồng hồ sửa lỗi.

    3. Thực hiện từng bước

    Bước 1: Tạo migration cho bảng product_reviews theo kế hoạch, bao gồm các chỉ mục cần thiết. Kiểm tra migration → duyệt → tiếp tục.
    Bước 2: Tạo Model ProductReview với:
    $fillable phù hợp
    $casts (rating thành int, timestamps)
    – Quan hệ tới UserProduct
    – Scope cho các review đã duyệt
    – Observer gửi email thông báo
    Kiểm tra model → duyệt → tiếp tục.
    – Tiếp tục tương tự cho các bước còn lại cho đến khi hoàn thành.

    4. Đánh giá toàn diện

    Liệt kê mọi file đã tạo cho hệ thống Review, sau đó kiểm tra:
    1. Quyền truy cập: người chưa mua có thể gửi review không?
    2. Truy vấn N+1 trong controller?
    3. Các rule validation còn thiếu?
    4. Các trường hợp biên chưa được xử lý?

    Sửa các vấn đề phát sinh, rồi triển khai với tự tin.

    ### Kết luận
    Vibe coding hiệu quả không phải là “để AI tự do” mà là xây dựng một hệ thống cho phép agent làm việc với context đúng, trong phạm vi rõ ràng, và luôn có bước kiểm tra cuối cùng.

    Những điểm quan trọng:
    – CLAUDE.md / .cursorrules: đầu tư một lần, tiết kiệm hàng ngàn token mỗi phiên.
    – Chế độ Kế hoạch: ngăn ngừa lãng phí thời gian trước khi viết code.
    – Một nhiệm vụ mỗi phiên: hiệu quả hơn việc cố gắng làm mọi thứ trong một lần.
    – Kiểm tra trước khi áp dụng: không thể thương lượng; bạn vẫn chịu trách nhiệm về kết quả.
    – Context có hạn: quản lý nó tích cực, đừng để nó đầy một cách tình cờ.

    Các lập trình viên năng suất nhất không phải là người tin tưởng AI nhất, mà là người hướng dẫn AI với context và thời điểm đúng.

    Bắt đầu ngay:
    1. Tạo CLAUDE.md hoặc .cursorrules cho dự án hiện tại.
    2. Dùng Plan Mode cho tính năng tiếp theo.
    3. Hình thành thói quen rà soát code trước khi commit.

    Từ đây, phong cách vibe coding của bạn sẽ trở nên “vibe” hơn và đáng tin cậy hơn.

     

    Tham khảo: medium.com

    Xây dựng các thành phần giao diện người dùng linh hoạt

    Trước khi người dùng nhìn thấy trang tổng quan, trang giá cả, trang hồ sơ, trang cài đặt hoặc chi tiết sản phẩm, họ thường tương tác với hệ thống điều hướng trước.

    Một thanh điều hướng tốt có thể làm cho ứng dụng của bạn trông gọn gàng, chuyên nghiệp và dễ sử dụng. Một thanh điều hướng tệ có thể khiến ngay cả một ứng dụng tốt cũng trở nên khó hiểu.

    Vậy nên trong phần này, chúng ta sẽ bắt đầu với các loại lời nhắc trên thanh điều hướng khác nhau. Sau đó, trong các phần tiếp theo, chúng ta sẽ lần lượt tìm hiểu các thành phần giao diện người dùng khác.

    Vậy chúng ta hãy bắt đầu từ phần trên cùng của ứng dụng, thanh điều hướng (navbar).

    Logo + Thanh điều hướng

     

    Để lại một bình luận

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

    Chat with us
    Hello! How can I help you today?