Chuyển đến nội dung chính

Kết hợp Spec-Kit và Google Antigravity (agy)

1. "Vibe Coding" Là Gì Và Tại Sao Nó Lại Là "Bẫy Ngọt Ngào"?

"Vibe Coding" là cách gọi cho một kiểu phát triển phần mềm trong đó developer mô tả ý tưởng bằng ngôn ngữ tự nhiên và để AI tạo phần lớn code, thay vì tự mình thiết kế và viết từng phần của implementation. Với các coding agent hiện đại, workflow này thậm chí có thể mở rộng từ sinh code sang tạo file, chạy terminal, sửa lỗi và lặp lại cho đến khi đạt kết quả mong muốn.

Quy trình của Vibe Coding rất đơn giản: Bạn mở khung chat AI, gõ một câu mô tả chung chung về tính năng muốn làm (ví dụ: "Viết cho tôi một API quản lý giỏ hàng"), bấm Enter và ngồi nhìn AI tự động viết code, tạo file, chạy terminal. Nếu có lỗi, bạn lại quăng lỗi đó cho AI tự sửa cho đến khi ứng dụng chạy được thì thôi.

Ở những dự án cá nhân nhỏ, Vibe Coding đem lại cảm giác cực kỳ "chill" và năng suất. Nhưng khi áp dụng vào các hệ thống doanh nghiệp phức tạp — nơi cần sự chính xác về kiến trúc, kiểm soát rủi ro và các yêu cầu nghiệp vụ khắt khe — Vibe Coding bắt đầu bộc lộ mặt tối:

  • Trôi dạt kiến trúc (Architectural Drift): AI tự ý chọn thư viện, viết code không theo chuẩn chung của dự án.
  • Thiếu hụt trường hợp biên (Edge Cases): AI chỉ tập trung làm cho tính năng chạy thành công ở luồng chuẩn ("Happy Path"), bỏ qua xử lý lỗi mạng, đồng bộ dữ liệu hay bảo mật.
  • Chi phí sửa lỗi cực đắt: Sửa một thiết kế sai ở bước viết code tốn thời gian và công sức gấp hàng chục lần so với việc làm rõ nó ngay từ đầu. Chi phí sửa lỗi này tỉ lệ thuận với độ phức tạp của hệ thống theo công thức:
Idea → Requirement → Design → Code → Production
  $        $$          $$$      $$$$       $$$$$

Thực tế: Code là phần dễ nhất — quyết định chính xác cần xây dựng cái gì mới là nơi chúng ta thường thất bại. Để thoát khỏi "bẫy" Vibe Coding, chúng ta cần đưa quy trình bàn giao từ Product sang Engineering (Product-to-Engineering Handoff) vào trong workflow của AI Agent. Đó chính là lý do Spec-Kit ra đời.

2. Spec-Kit & Antigravity (agy): Bộ Đôi "Thiết Kế Chuẩn - Thực Thi Nhanh"

 

Nếu Google Antigravity (agy) là một chiếc xe đua F1 với khả năng thực thi mạnh mẽ, thì Spec-Kit chính là bản đồ đường đua, hệ thống chỉ dẫn và những quy tắc giúp chiếc xe đi đúng hướng. Thay vì để AI lập tức lao vào viết code, Spec-Kit đưa AI đi qua một quy trình Spec-Driven Development: từ việc hiểu vấn đề, làm rõ yêu cầu, thiết kế giải pháp cho đến chia nhỏ công việc thành các task có thể thực thi và kiểm chứng.

Quy trình làm việc của Spec-Kit:

[Vấn đề / Ý tưởng ban đầu]
   └── /speckit.constitution (Đặt luật & nguyên tắc phát triển)
   └── /speckit.specify      (Đặc tả yêu cầu — "Cái gì?")
   └── /speckit.clarify      (Làm rõ các điểm mơ hồ & edge cases)
   └── /speckit.plan         (Thiết kế kỹ thuật — "Làm như thế nào?")
   └── /speckit.tasks        (Bẻ nhỏ thành các task có thể thực thi)
   └── /speckit.analyze      (Kiểm tra consistency, coverage & compliance)
   └── /speckit.implement    (Agent bắt đầu viết code)
   └── /speckit.converge     (Đối chiếu implementation với spec/plan/tasks)

Điểm quan trọng của workflow này là AI không cần phải tự đoán toàn bộ ý định của người dùng trong lúc viết code. Các quyết định quan trọng đã được làm rõ và thể hiện qua những artifact trung gian — từ specification, technical plan cho đến tasks. Khi Antigravity Agent bắt đầu implementation, nó có một “bản thiết kế” rõ ràng hơn để dựa vào, thay vì vừa đoán yêu cầu vừa viết code.

3. Hướng Dẫn Cài Đặt Spec-Kit Và Antigravity (agy) Trên Windows

Dưới đây là các bước để bạn chuẩn bị môi trường làm việc chuẩn mực này trên Windows bằng PowerShell.

Bước 1: Giải thích về lệnh irm và iex trong PowerShell

Trong các tài liệu cài đặt bằng PowerShell, bạn sẽ thường thấy các câu lệnh có dạng:

irm https://example.com/install.ps1 | iex

Giải thích cú pháp chi tiết:

  • irm (viết tắt của Invoke-RestMethod): Lệnh có sẵn của PowerShell dùng để gửi yêu cầu HTTP/HTTPS đến một URL và tải dữ liệu (ở đây là file kịch bản cài đặt .ps1) về bộ nhớ tạm.
  • iex (viết tắt của Invoke-Expression): Lệnh dùng để thực thi (chạy) chuỗi lệnh hoặc kịch bản vừa tải về đó ngay lập tức.
  • Dấu đường ống |: Chuyển kết quả tải về từ irm thẳng sang cho iex xử lý mà không cần lưu file ra ổ cứng.

Bước 2: Cài đặt uv Package Manager

Spec-Kit khuyến nghị sử dụng uv — trình quản lý gói cực nhanh dành cho Python. Mở PowerShell dưới quyền Administrator và chạy:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Khởi động lại PowerShell sau khi cài xong và kiểm tra bằng:

uv --version

Bước 3: Cài đặt Spec-Kit (Specify CLI)

Dùng uv để cài đặt công cụ specify-cli toàn cục trên máy tính:

uv tool install specify-cli --from git+https://github.com/github/spec-kit.git

Bước 4: Cài đặt Antigravity CLI (agy)

Antigravity có 2 phiên bản: bản giao diện (IDE .exe) và bản dòng lệnh (CLI). Để Spec-Kit có thể gọi trực tiếp Antigravity trong Terminal, bạn cần cài đặt bản CLI để có file thực thi agy.exe:

irm https://antigravity.google/cli/install.ps1 | iex

Sau khi cài đặt xong, khởi động lại PowerShell và kiểm tra lệnh agy:

agy --version

Bước 5: Kiểm tra liên kết giữa Spec-Kit và agy

Chạy lệnh kiểm tra của Spec-Kit:

specify check

Nếu hệ thống liệt kê Antigravity / agy ở trạng thái Available, bạn đã sẵn sàng trải nghiệm workflow mới!


4. Mẹo Nhỏ: Đồng Bộ Tài Liệu Spec-Kit Với Artifacts Của Antigravity

Mặc định, Spec-Kit lưu trữ tài liệu trong thư mục dự án (/specs/{feature-name}/*), trong khi Antigravity lại quản lý kế hoạch trong thư mục bộ nhớ riêng của Agent để hiển thị giao diện Artifact View (Task checklist, Implementation Plan).

Để 2 công cụ này hòa hợp hoàn hảo ở bước cuối, khi gọi lệnh /speckit.implement, bạn có thể bổ sung prompt dưới đây để yêu cầu agy tự động trích xuất nội dung từ tasks.mdplan.md của Spec-Kit sang thư mục bộ nhớ của Antigravity:

- Parse tasks.md structure, extract the following information and create task.md in your brain directory to show as Artifact View to breakdown the work into checklist:
    - Task phases: Setup, Tests, Core, Integration, Polish
    - Task dependencies: Sequential vs parallel execution rules
    - Task details: ID, description, file paths, parallel markers [P]
    - Execution flow: Order and dependency requirements

- Create implementation_plan.md in your brain directory as Artifact View based on task plan. This artifact MUST contain technical details on what revisions are necessary and is meant to be reviewed by the user.

- Ask the user to review the task.md and implementation_plan.md Artifacts in your brain directory before starting execution. DO NOT skip this step!

Bằng cách này, bạn vừa lưu giữ được bộ tài liệu thiết kế có version control trong Git, vừa tận dụng được giao diện theo dõi tiến độ tuyệt vời của Antigravity IDE!

Lời Kết

Vibe Coding không phải là thứ cần loại bỏ. Khi mục tiêu là thử nghiệm nhanh, xây prototype hoặc kiểm chứng một ý tưởng, việc để AI tự do viết và iterates có thể mang lại tốc độ đáng kinh ngạc. Nhưng khi một feature bắt đầu có nhiều business rules, dependencies và rủi ro, tốc độ viết code không còn là yếu tố duy nhất cần quan tâm.

Đó là lúc Spec-Driven Development trở nên đáng giá. Thay vì chỉ yêu cầu AI “viết code cho tôi”, chúng ta chuyển sang một cách làm có cấu trúc hơn: làm rõ vấn đề → đặc tả yêu cầu → thiết kế giải pháp → chia nhỏ công việc → kiểm tra → rồi mới implementation.

Với cách tiếp cận này, SpecKit giúp định hướng và kiểm soát quá trình ra quyết định, còn Google Antigravity (agy) đảm nhiệm phần thực thi. AI vẫn viết code — nhưng code được tạo ra dựa trên một specification rõ ràng hơn, thay vì dựa vào những phỏng đoán trong quá trình coding.

Vì vậy, câu hỏi không phải là “Vibe Coding hay Spec-Driven Development?”, mà là “Feature này cần mức độ kỷ luật đến đâu?”. Với một prototype nhỏ, hãy vibe. Với một hệ thống phức tạp, hãy specify trước khi code.

Tham khảo

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.