0
0
Lập trình
Admin Team
Admin Teamtechmely

Giới thiệu Disko - Phát triển với AWS Kiro

Đăng vào 2 tháng trước

• 9 phút đọc

Chủ đề:

#ai#kiro#hackathon

Giới thiệu Disko

Trong bối cảnh ngày càng phát triển của công nghệ, các doanh nhân độc lập (solopreneurs) cần một công cụ nhẹ nhàng để thể hiện tiến độ công việc với khách hàng. Disko là một bảng công khai minh bạch, cho phép ý tưởng được chuyển động từ "Parking" → "Now" → "Next" → "Later" → "Release". Khách hàng có thể thấy được sự tiến triển, trong khi bạn tập trung vào việc ra mắt sản phẩm.

Tại sao chọn Kiro?

Kiro gọi đây là phát triển dựa trên thông số (spec-driven development) - từ việc "code theo cảm hứng" (vibe coding) sang mã có thể áp dụng được bằng cách cấu trúc ý định ngay từ đầu. Trên trang sản phẩm có mô tả cách mà các thông số, hooks của agent và tự động hóa công việc cùng nhau hoạt động: kiro.dev.

Lợi ích của việc viết thông số

  • Học hỏi: Việc viết thông số buộc bạn phải có tầm nhìn sản phẩm rõ ràng, tiêu chí chấp nhận và định nghĩa hoàn tất. Bạn học được khi diễn đạt hệ thống trước khi xây dựng nó.
  • Tận dụng: Sử dụng quy trình từ thông số → thiết kế → tác vụ và các hooks của agent để tự động hóa nhật ký thay đổi, tài liệu, và các công việc lặp lại để bạn có thể duy trì dòng chảy công việc.
  • Giao hàng nhanh: Với phạm vi đã được khóa trong thông số, bạn tránh được vòng lặp nhắc lại và lệch hướng. Những giai đoạn ngắn (48–96 giờ) giúp đưa ra các tính năng đã hoàn thành.

Vòng lặp thông số đến xây dựng (với Kiro)

Kiro đã giúp tôi biến một gợi ý đơn lẻ thành các thông số sống động. Việc viết thông số buộc tôi phải có một tầm nhìn sản phẩm rõ ràng và một định nghĩa cụ thể về việc hoàn tất - nếu một tính năng không có trong thông số, nó sẽ không được phát hành. Tôi đã giữ ba tài liệu trong repo:

  • Yêu cầu: vai trò, tiêu chí chấp nhận, kỳ vọng UI (.kiro/specs/disko-board/requirements.md).
  • Thiết kế: kiến trúc, mô hình, điểm cuối và thành phần (.kiro/specs/disko-board/design.md).
  • Tác vụ: kế hoạch được sắp xếp theo các yêu cầu (.kiro/specs/disko-board/tasks.md).

Cách tiếp cận của Kiro - "biến gợi ý của bạn thành các yêu cầu rõ ràng, thiết kế hệ thống và các tác vụ riêng biệt" - chính là điều đã làm cho 4 ngày trở nên khả thi. Đó là cấu trúc ngăn chặn sự hỗn loạn và lệch hướng. Tham khảo: Kiro – IDE AI cho từ prototype đến production.

Những gì đã được phát hành trong 4 ngày

  • Quản lý bảng: tạo/lập danh sách/xóa, chuyển sang công khai; liên kết công khai tự động.
  • Quản lý ý tưởng: CRUD, RICE (Reach, Impact, Confidence, Effort), thay đổi trạng thái.
  • Bảng kéo và thả: Parking, Now, Next, Later, Release, Won’t Do.
  • Bảng công khai: chỉ đọc qua liên kết bảo mật; các trường chỉ dành cho quản trị viên bị ẩn.
  • Bảng phát hành: sắp xếp và lọc các mục đã phát hành.
  • Phản hồi: nút thích + biểu tượng cảm xúc (giới hạn tỷ lệ), cập nhật thời gian thực.
  • Mời qua email: chia sẻ bảng công khai chỉ với một cú nhấp chuột.
  • Thời gian thực: WebSockets cho cập nhật ý tưởng và phản hồi.

Hành trình 4 ngày

  • Ngày 1 - Nền tảng
    • Khung dự án bằng Go với Gin, kết nối driver MongoDB v2, middleware xác thực Clerk, tạo mẫu và thư mục sạch sẽ.
    • Viết yêu cầu và thiết kế với tiêu chí chấp nhận; khóa phạm vi ngay từ đầu.
  • Ngày 2 - Bảng và ý tưởng
    • API bảng (tạo/lập danh sách/cập nhật/xóa + liên kết công khai) và API ý tưởng (CRUD + xác minh RICE).
    • Mẫu bảng tư nhân và dashboard; các module JS cơ bản.
  • Ngày 3 - Dòng chảy và chế độ công khai
    • Tương tác kéo và thả trên bảng và chuyển trạng thái vào Release.
    • Chế độ xem bảng công khai với khả năng hiển thị trường an toàn và bảng phát hành với sắp xếp/lọc.
  • Ngày 4 - Thời gian thực, phản hồi và hoàn thiện
    • WebSockets cho cập nhật ý tưởng/ phản hồi, widget phản hồi với giới hạn tỷ lệ, mời qua email.
    • Nhật ký thay đổi, phiên bản hiển thị, đồng bộ tài liệu, và đơn giản hóa UI.

Cách Kiro tăng tốc giao hàng

  • Tiêu chí chấp nhận → mã: Mỗi tính năng liên kết với một WHEN/THEN trong yêu cầu.
  • Thiết kế làm mốc: Nguồn thông tin duy nhất cho các điểm cuối và mô hình giúp tránh lệch hướng.
  • Tác vụ có thể theo dõi: Kiểm tra tiến độ nhanh chóng và dễ dàng cắt giảm phạm vi dưới áp lực thời gian.
  • Dòng chảy thân thiện với agent: Khi cần thiết, các tác vụ nền (tài liệu/ghi chú phiên bản) có thể được tự động hóa với các hooks của agent (xem kiro.dev về “Tự động hóa các tác vụ với hooks của agent”).

Nguyên tắc của Kiro về "nhiều ngữ cảnh, ít lặp lại" và chỉ đạo thông số có nghĩa là tôi có thể tập trung vào các quyết định, không phải giải thích lại ý định.

Tốc độ, cụ thể: nơi Kiro tiết kiệm thời gian

  • Rõ ràng từ thông số đầu tiên
    • Việc viết thông số một lần đã tránh được hàng chục cuộc trao đổi qua lại trong quá trình thực hiện.
    • Các quyết định như “mẫu được render trên server hay SPA” đã được ghi lại sớm và giữ vững.
  • Tái sử dụng thiết kế
    • Các điểm cuối/mô hình đã được định nghĩa trong thiết kế chảy trực tiếp vào các handlers và mẫu.
  • Thực thi tác vụ
    • Danh sách tác vụ phục vụ như một hàng đợi thực thi; dễ dàng thực hiện song song công việc UI + API một cách an toàn.
  • Hooks tự động hóa
    • Cập nhật tài liệu và nhật ký thay đổi là các công việc lặp lại - lý tưởng cho các hooks của agent như đã đề xuất trên kiro.dev.

Kiro so với vibe coding: lợi ích

  • Từ tầm nhìn đến vận tốc
    • Các thông số buộc tầm nhìn sản phẩm và một định nghĩa cụ thể về việc hoàn tất; vibe coding thường lệch lạc theo từng gợi ý.
  • Khả năng theo dõi
    • Mỗi thay đổi đều gắn liền với yêu cầu và tác vụ; vibe coding thiếu một cuộc kiểm toán bền vững từ ý định đến mã.
  • Hội tụ, không dao động
    • Chỉ đạo thông số giúp giảm thiểu việc nhắc lại và làm lại; các phiên vibe thường lặp đi lặp lại về từ ngữ, không phải kết quả.
  • Tự chủ an toàn hơn
    • Hooks của agent thực hiện các công việc có thể tự động hóa (tài liệu, kiểm tra, phiên bản) theo quy tắc; vibe coding trộn lẫn ý định và thực thi một cách ngẫu nhiên.
  • Hội nhập đội ngũ
    • Yêu cầu/thiết kế/tác vụ là tài liệu sống; các bản sao của vibe coding không mở rộng như một ngữ cảnh chung.
  • Cắt giảm phạm vi có thể dự đoán
    • Tiêu chí chấp nhận rõ ràng giúp dễ dàng cắt giảm mà không phá vỡ câu chuyện sản phẩm; vibe coding ẩn giấu phạm vi trong chat.
  • Vệ sinh hoạt động
    • Nhật ký thay đổi, phiên bản và ghi chú là một phần của quy trình; vibe coding thường quên những điều này trừ khi bạn nhớ yêu cầu.
  • Cấu trúc đơn giản hơn chiến thắng
    • Kỷ luật thông số của Kiro kết hợp tốt với KISS/DNR; vibe coding có xu hướng tích lũy sự phức tạp ngẫu nhiên.

Giá trị cho các nhà phát triển (độc lập và đội ngũ)

  • Các nhà phát triển độc lập
    • Giảm mệt mỏi trong quyết định: các thông số xác định mục tiêu, các agent xử lý công việc nặng nhọc.
    • Tăng tốc độ: các tác vụ rõ ràng → ít đường vòng → nhiều tính năng hơn được phát hành.
    • Vệ sinh tích hợp: nhật ký thay đổi, phiên bản và ghi chú luôn nhất quán.
    • Tập trung vào sản phẩm: dành thời gian cho RICE, UX, và vòng phản hồi, không phải boilerplate.
  • Đội ngũ
    • Ngữ cảnh chung: yêu cầu/thiết kế/tác vụ hoạt động như một nguồn thông tin duy nhất.
    • Hội nhập: các đồng đội mới nhanh chóng làm quen với các thông số thay vì cuộn qua lịch sử chat.
    • Tính nhất quán: các hooks của agent tự động thực thi chính sách tài liệu/kiểm tra/phiên bản.
    • Sự đồng thuận: các tiêu chí chấp nhận ngăn chặn sự mở rộng phạm vi và giảm thiểu làm lại.
    • Khả năng kiểm toán: từ ý định → thiết kế → mã giúp việc đánh giá và hồi tưởng dễ dàng hơn.

Bài học rút ra

  • Thông số tăng tốc độ: Chúng nén các quyết định và loại bỏ sự mơ hồ trong quá trình xây dựng.
  • Thông số buộc phải có tầm nhìn sản phẩm và một sản phẩm hoàn chỉnh; phạm vi luôn trung thực.
  • KISS + DNR có thể mở rộng: Các gói rõ ràng, các chức năng nhỏ, và truy cập DB trực tiếp là nhanh chóng.
  • Nhật ký quan trọng: Nhật ký có mục đích trên các đường đi init/auth/network giúp tăng tốc độ chẩn đoán.
  • Phiên bản mà người dùng thấy: Một phiên bản hiển thị giúp giảm bớt sự nhầm lẫn khi phát hành.
  • Mặc định giảm ma sát: Các mặc định RICE giúp việc tạo ý tưởng nhanh chóng.

Kết luận và các bước tiếp theo

  • Bắt đầu với một thông số một trang.
    • Viết vai trò, tiêu chí chấp nhận và định nghĩa hoàn tất. Giữ phạm vi nhỏ (một bảng, một dòng chảy).
  • Tạo thiết kế và tác vụ trong Kiro.
    • Sử dụng các thông số để tạo một thiết kế hệ thống và danh sách tác vụ. Xem xét các tác vụ như hàng đợi thực thi.
  • Giữ cho đơn giản.
    • Ưu tiên KISS/DNR: Go + Gin, driver MongoDB v2, mẫu Go, và các module JS nhỏ.
  • Thêm các rào cản sớm.
    • Cấu hình hooks của agent để tự động hóa nhật ký thay đổi, phiên bản và tài liệu. Thêm kiểm tra/lint ở những nơi dễ dàng.
  • Phát hành trong vài ngày, không phải vài tuần.
    • Giới hạn thời gian từ 48–96 giờ. Xuất bản một bản demo công khai (ví dụ: https://kiro.nomadis.com) và lặp lại từ phản hồi.
  • Đối với đội ngũ
    • Thực hiện các đánh giá thông số nhẹ nhàng. Biến tiêu chí chấp nhận thành nguồn thông tin duy nhất. Sử dụng hooks để củng cố vệ sinh (tài liệu/kiểm tra/phiên bản). Theo dõi ý định → thiết kế → mã để đảm bảo khả năng kiểm toán.

Nếu phát triển dựa trên thông số là điều bạn hứng thú, hãy khám phá tài liệu của Kiro, đặc biệt là về các thông số và hooks của agent: kiro.dev.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào