AutoBE: Agent Lập Trình Backend AI Tạo Mã Nguồn Chạy 100% – Dự Án Nguồn Mở Đáng Chú Ý

Trong thế giới phát triển phần mềm đang ngày càng được định hình bởi trí tuệ nhân tạo, đội ngũ WrtnLabs của Wrtn Technologies đã tạo ra một công cụ đột phá: AutoBE. Đây là một agent AI nguồn mở chuyên biệt, được thiết kế để tự động hóa quy trình phát triển backend thông qua phương pháp “vibe coding” (lập trình dựa trên cảm hứng/yêu cầu ngôn ngữ tự nhiên). AutoBE không chỉ hứa hẹn tăng tốc độ phát triển mà còn mang đến một cam kết mạnh mẽ: tạo ra mã nguồn backend *luôn chạy thành công* ngay từ lần biên dịch đầu tiên.

Khám phá AutoBE ngay:

![AutoBE Banner](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb5ov81fzfr6pplabts97.jpg)

Giới thiệu AutoBE: Bước Đột Phá trong Lập Trình Backend

AutoBE, được phát triển bởi đội ngũ nghiên cứu nguồn mở tại Wrtn Technologies (một startup AI Hàn Quốc nổi tiếng với khoản huy động vốn 93 triệu USD gần đây), là một phần quan trọng trong hệ sinh thái Vibe Coding mà công ty đang xây dựng. Mục tiêu cốt lõi của AutoBE là phân tích yêu cầu của người dùng (dưới dạng ngôn ngữ tự nhiên) và tự động tạo ra các ứng dụng backend hoàn chỉnh, sử dụng một ngăn xếp công nghệ hiện đại bao gồm TypeScript, NestJS và Prisma (Postgres).

Điều làm nên sự khác biệt và nổi bật của AutoBE chính là tỷ lệ thành công 100% trong việc biên dịch mã nguồn được tạo ra. Khả năng này đạt được nhờ chiến lược phản hồi thông minh từ các trình biên dịch và công cụ xác thực tích hợp.

Bí Quyết Đằng Sau Mã Nguồn Chạy 100%

Cam kết tạo ra mã nguồn backend “chạy 100%” không phải là một lời hứa suông, mà là kết quả của một kiến trúc được thiết kế tỉ mỉ với các vòng lặp phản hồi mạnh mẽ:

  • Trình Biên Dịch Tích Hợp: AutoBE kết hợp các trình biên dịch TypeScript và Prisma ngay bên trong. Bất cứ khi nào AI tạo ra mã có lỗi biên dịch, phản hồi từ trình biên dịch sẽ được đưa trở lại cho AI để tự động sửa lỗi kỹ thuật.
  • Xác Thực OpenAPI: Bên cạnh biên dịch, AutoBE còn sử dụng các trình xác thực OpenAPI để đảm bảo các định nghĩa API tuân thủ tiêu chuẩn, giúp ngăn chặn các lỗi liên quan đến giao diện.
  • Agent Đánh Giá & Khung Kiểm Thử: Một lớp xác thực bổ sung được cung cấp bởi các agent đánh giá nội bộ và các khung kiểm thử tự động. Chúng kiểm tra tính toàn vẹn và đúng đắn của mã được tạo, đảm bảo rằng nó không chỉ biên dịch thành công mà còn hoạt động như mong đợi.

Nhờ cơ chế phản hồi và tự sửa lỗi liên tục này, AutoBE giảm thiểu đáng kể thời gian gỡ lỗi và chỉnh sửa thủ công, cho phép các nhà phát triển tập trung vào logic nghiệp vụ thay vì các lỗi cú pháp hay cấu trúc cơ bản.

AutoBE Hoạt Động Như Thế Nào: Quy Trình Phát Triển Thông Minh

AutoBE dựa trên một quy trình phát triển có cấu trúc, kết hợp các giai đoạn của mô hình thác nước (waterfall) với tính lặp lại của mô hình xoắn ốc (spiral). Điều này cho phép AutoBE liên tục cải tiến đầu ra dựa trên phản hồi, đảm bảo chất lượng cao cho mã nguồn được tạo ra. Quy trình này được chia thành năm agent chức năng cốt lõi:

Analyze (Phân tích)

Agent này chịu trách nhiệm phân tích yêu cầu từ người dùng và tạo ra các tài liệu đặc tả cấu trúc.

  • Đầu vào: Toàn bộ lịch sử hội thoại giữa người dùng và AI.
  • Đầu ra: Tài liệu đặc tả yêu cầu có cấu trúc.
  • Tính năng: Tách biệt logic nghiệp vụ và yêu cầu kỹ thuật, tạo câu hỏi làm rõ cho các yêu cầu mơ hồ, thiết lập ưu tiên và phạm vi phát triển. Agent này là nền tảng, liên tục tinh chỉnh sự hiểu biết về yêu cầu.

Prisma (Thiết kế CSDL)

Dựa trên đặc tả yêu cầu, agent Prisma tạo ra lược đồ cơ sở dữ liệu theo định dạng Prisma.

  • Đầu vào: Tài liệu đặc tả yêu cầu.
  • Đầu ra: Lược đồ DB Prisma và tài liệu ERD.
  • Tính năng: Xác thực lược đồ tự động bằng trình biên dịch Prisma tích hợp, thêm chú thích chi tiết, tạo tài liệu ERD tự động (sử dụng prisma-markdown), tối ưu hóa lược đồ qua hệ thống tự đánh giá. Quan trọng nhất là vòng lặp phản hồi từ trình biên dịch Prisma giúp AI tự sửa lỗi trong quá trình tạo lược đồ.

/// Final component information on units for sale.
/// 
/// `shopping_sale_snapshot_unit_stocks` is a subsidiary entity of 
/// {@link shopping_sale_snapshot_units} that represents a product catalog 
/// for sale, and is a kind of final stock that is constructed by selecting 
/// all {@link shopping_sale_snapshot_unit_options options} 
/// (variable "select" type) and their 
/// {@link shopping_sale_snapshot_unit_option_candidates candidate} values in 
/// the belonging unit. It is the "good" itself that customers actually 
/// purchase.
/// 
/// - Product Name) MacBook
///   - Options
///   - CPU: { i3, i5, i7, i9 }
///   - RAM: { 8GB, 16GB, 32GB, 64GB, 96GB }
///   - SSD: { 256GB, 512GB, 1TB }
///   - Number of final stocks: 4 * 5 * 3 = 60
///
/// For reference, the total number of `shopping_sale_snapshot_unit_stocks` 
/// records in an attribution unit can be obtained using Cartesian Product. 
/// In other words, the value obtained by multiplying all the candidate 
/// values that each (variable "select" type) option can have by the number 
/// of cases is the total number of final stocks in the unit. 
///
/// Of course, without a single variable "select" type option, the final 
/// stocks count in the unit is only 1.
///
/// @namespace Sales
/// @erd Carts
model shopping_sale_snapshot_unit_stocks {
  /// Primary Key.
  ///
  /// @format uuid
  id String @id @db.Uuid

  /// Belonged unit's {@link shopping_sale_snapshot_units.id}
  ///
  /// @format uuid
  shopping_sale_snapshot_unit_id String @db.Uuid

  /// Name of the final stock.
  name String @db.VarChar

  /// Nominal price.
  ///
  /// This is not real price to pay, but just a nominal price to show.
  /// If this value is greater than the `real_price`, it would be shown
  /// like seller is giving a discount.
  ///
  /// @minimum 0
  nominal_price Float @db.DoublePrecision

  /// Real price to pay.
  ///
  /// @minimum 0
  real_price Float @db.DoublePrecision

  /// Initial inventory quantity.
  ///
  /// If this stock has been sold over this quantity count, the stock can't
  /// be sold anymore, because of out of stock. In that case, the seller can
  /// supplement the inventory quantity by registering some 
  /// {@link shopping_sale_snapshot_unit_stock_supplements} records.
  ///
  /// @minimum 0
  quantity Int

  /// Sequence order in belonged unit.
  sequence Int @db.Integer
}

Interface (Thiết kế Giao diện API)

Agent này thiết kế các giao diện API dựa trên đặc tả yêu cầu và tài liệu ERD. Nó tạo ra các định nghĩa OpenAPI chính xác trước khi chuyển đổi sang mã nguồn.

  • Đầu vào: Đặc tả yêu cầu, tài liệu ERD.
  • Đầu ra: Tài liệu OpenAPI (swagger.json), mã TypeScript (DTOs, Controllers, SDK, E2E Tests) được tạo bởi OpenAPI generator (như nestia.io).
  • Tính năng: Tạo Schema OpenAPI và JSON Schema, chú thích tài liệu API chi tiết, quy trình tạo giao diện tự xác thực, chuyển đổi sang mã NestJS. Việc tạo ra Schema OpenAPI trước giúp đảm bảo tính nhất quán và chuẩn hóa trước khi sinh code.

import core from "@nestia/core";
import { Controller } from "@nestjs/common";
import typia from "typia";

import { IPage } from "@api/lib/structures/IPage";
import { IShoppingSale } from "@api/lib/structures/IShoppingSale";

@Controller("shoppings/customers/sales")
export class ShoppingCustomerSaleController {
  /**
   * List up every summarized sales.
   *
   * List up every {@link IShoppingSale.ISummary summarized sales}.
   *
   * As you can see, returned sales are summarized, not detailed. It does not
   * contain the SKU (Stock Keeping Unit) information represented by the
   * {@link IShoppingSaleUnitOption} and {@link IShoppingSaleUnitStock} types.
   * If you want to get such detailed information of a sale, use
   * `GET /shoppings/customers/sales/{id}` operation for each sale.
   *
   * > If you're an A.I. chatbot, and the user wants to buy or compose
   * > {@link IShoppingCartCommodity shopping cart} from a sale, please
   * > call the `GET /shoppings/customers/sales/{id}` operation at least once
   * > to the target sale to get detailed SKU information about the sale.
   * > It needs to be run at least once for the next steps.
   *
   * @param input Request info of pagination, searching and sorting
   * @returns Paginated sales with summarized information
   * @tag Sale
   * @autobe Generated by AutoBE - https://github.com/wrtnlabs/autobe
   */
  @core.TypedRoute.Patch()
  public async index(
    @core.TypedBody() input: IShoppingSale.IRequest,
  ): Promise<IPage<IShoppingSale.ISummary>> {
    input; // Placeholder, remove in realization
    return typia.random<IPage<IShoppingSale.ISummary>>(); // Placeholder, remove in realization
  }
}

Test (Kiểm thử Tự động)

Agent này tạo mã kiểm thử E2E (End-to-End) cho mỗi giao diện API được thiết kế.

  • Đầu vào: Giao diện API, Schema OpenAPI.
  • Đầu ra: Mã kiểm thử cho từng chức năng API.
  • Tính năng: Phân tích phụ thuộc để sắp xếp thứ tự thực thi kiểm thử, tạo kịch bản kiểm thử phức tạp, chú thích kiểm thử chi tiết, xác thực mã bằng trình biên dịch TypeScript, tối ưu hóa phạm vi kiểm thử. Agent này xây dựng dựa trên các sườn mã kiểm thử đã được tạo tự động từ Schema OpenAPI, sau đó thêm logic nghiệp vụ và các kịch bản phức tạp.

import api from "@api"; // Assume @api maps to generated client SDK
import { IShoppingSaleInquiryComment } from "@api/lib/structures/IShoppingSaleInquiryComment";
import typia, { tags } from "typia";

export const test_api_shoppings_admins_sales_reviews_comments_create =
  async (connection: api.IConnection) => {
    // Example of generating random data conforming to a type
    const output: IShoppingSaleInquiryComment =
      await api.functional.shoppings.admins.sales.reviews.comments.create(
        connection,
        // Generate valid UUIDs and data structure
        typia.random<string & tags.Format<"uuid">>(), 
        typia.random<string & tags.Format<"uuid">>(),
        typia.random<IShoppingSaleInquiryComment.ICreate>(),
      );
    // Assert the structure of the response matches the expected type
    typia.assert(output); 
  };

Mã kiểm thử được tạo tự động từ agent interface, sau đó agent test sẽ xây dựng dựa trên đó.

Realize (Hiện thực hóa)

Đây là agent cuối cùng, viết mã hiện thực hóa (logic nghiệp vụ) cho từng chức năng API.

  • Đầu vào: Đặc tả yêu cầu, lược đồ Prisma, giao diện API, mã kiểm thử.
  • Đầu ra: Mã provider/service hiện thực logic nghiệp vụ cho mỗi endpoint API.
  • Tính năng: Phản hồi biên dịch qua trình biên dịch TypeScript, phản hồi runtime qua việc thực thi mã kiểm thử, cải thiện chất lượng mã qua hệ thống tự đánh giá, tối ưu hóa logic nghiệp vụ. Agent này tổng hợp thông tin từ tất cả các giai đoạn trước để viết mã kết nối CSDL (dùng Prisma) và thực thi các quy tắc nghiệp vụ.

Agent Realize sử dụng cả phản hồi từ trình biên dịch (để đảm bảo cú pháp và kiểu dữ liệu đúng) và phản hồi từ việc chạy thử nghiệm (để đảm bảo logic hoạt động chính xác), cùng với đánh giá nội bộ để liên tục hoàn thiện mã.

Hệ Sinh Thái Vibe Coding Toàn Diện Của WrtnLabs

Điều thực sự mạnh mẽ là khả năng tích hợp liền mạch của AutoBE với hai dự án nguồn mở khác của WrtnLabs: Agentica và AutoView. Sự kết hợp này mở ra cánh cửa cho một quy trình phát triển ứng dụng toàn diện (full-stack) chỉ bằng vibe coding.

![Full-stack diagram](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fors4l8lna66bg4zfqeoh.png)

Nếu bạn đã tạo ra một máy chủ backend bằng AutoBE, bạn có thể ngay lập tức kết hợp nó với Agentica và AutoView để tự động tạo ra các phần còn lại của ứng dụng.

Agentica – Khung Agent AI Chuyên Function Calling

Agentica là một khung làm việc Agentic AI chuyên về Function Calling. Nó cho phép AI tương tác với các hệ thống bên ngoài thông qua việc gọi các hàm/API.

Khi bạn cung cấp tệp swagger.json được tạo bởi AutoBE, Agentica có thể biến nó thành một AI Chatbot có khả năng tương tác trực tiếp với backend của bạn. Agentica lấy chức năng từ ba nguồn:

  • TypeScript Class/Interface
  • Swagger/OpenAPI Document
  • MCP (Model Context Protocol) Server

import { Agentica, assertHttpController } from "@agentica/core";
import OpenAI from "openai";
import typia from "typia";

import { MobileFileSystem } from "./services/MobileFileSystem";

const agent = new Agentica({
  vendor: {
    api: new OpenAI({ apiKey: "********" }),
    model: "gpt-4o-mini", // Example model
  },
  controllers: [
    // functions from TypeScript class
    typia.llm.controller<MobileFileSystem, "chatgpt">(
      "filesystem",
      MobileFileSystem(),
    ),
    // functions from Swagger/OpenAPI - connect to AutoBE backend
    assertHttpController({
      name: "shopping",
      model: "chatgpt",
      document: await fetch( // Fetch swagger.json from AutoBE backend
        "https://shopping-be.wrtn.ai/editor/swagger.json",
      ).then(r => r.json()),
      connection: {
        host: "https://shopping-be.wrtn.ai",
        headers: { Authorization: "Bearer ********" }, // API Key for BE
      },
    }),
  ],
});
await agent.conversate("I wanna buy MacBook Pro"); // Conversate using BE APIs

AutoView – Chuyển Type Thành React Component

AutoView là công cụ tự động hóa frontend, tạo mã component React từ thông tin kiểu dữ liệu.

Tương tự Agentica, AutoView có thể sử dụng tệp swagger.json từ backend do AutoBE tạo ra để tự động sinh ra ứng dụng frontend hoặc di động. AutoView lấy thông tin kiểu từ:

  • TypeScript Type
  • JSON Schema (OpenAPI Document)

import { AutoViewAgent } from "@autoview/agent";
import fs from "fs";
import OpenAI from "openai";
import typia, { tags } from "typia";

// 1. Define your own TypeScript interface to display
interface IMember {
  id: string & tags.Format<"uuid">;
  name: string;
  age: number & tags.Minimum<0> & tags.Maximum<100>;
  thumbnail: string & tags.Format<"uri"> & tags.ContentMediaType;
}

// 2. Setup the AutoView agent
const agent = new AutoViewAgent({
  model: "chatgpt", // Example model
  vendor: {
    api: new OpenAI({ apiKey: "********" }), // OpenAI API Key
    model: "o3-mini",
    isThinkingEnabled: true,
  },
  input: {
    type: "json-schema",
    unit: typia.json.unit<IMember>(), // Use typia to get JSON Schema from TS type
  },
  transformFunctionName: "transformMember",
  experimentalAllInOne: true, // recommended for faster and less-error results
});

// 3. Get the result! (Generated React Component code)
const result = await agent.generate(); 
await fs.promises.writeFile(
  "./src/transformers/transformMember.ts", // Save the generated code
  result.transformTsCode,
  "utf8",
);

Với sự kết hợp của AutoBE, Agentica và AutoView, tầm nhìn “chỉ cần trò chuyện là trở thành nhà phát triển full-stack” đang dần trở thành hiện thực.

Khám Phá AutoBE: Sân Chơi Thực Tế và Các Dự Án Mẫu

Bạn có thể tự mình trải nghiệm sức mạnh của AutoBE ngay hôm nay thông qua sân chơi trực tuyến: https://stackblitz.com/github/wrtnlabs/autobe-playground-stackblitz

Hiện tại, phiên bản alpha của AutoBE hỗ trợ đến bước Interface (Thiết kế Giao diện API). Các tính năng đầy đủ sẽ được bổ sung trong phiên bản beta và đến phiên bản chính thức, bạn sẽ có thể trải nghiệm vibe coding full-stack với Agentica và AutoView.

Để xem các ví dụ về ứng dụng backend được tạo bởi AutoBE, hãy xem các demo tương tác dưới đây. Chúng cho thấy khả năng của AutoBE trong việc tạo mã backend sẵn sàng cho production với cấu trúc phù hợp, tài liệu API và các giao diện TypeScript. Nếu bạn không chắc chắn bắt đầu như thế nào, hãy tham khảo kịch bản ví dụ về Hệ thống Bảng tin (BBS):

  • BBS (Hệ thống Bảng tin): Demo BBS
    Kịch bản hội thoại mẫu:

    1. Tôi muốn tạo một diễn đàn thảo luận về chính trị/kinh tế. Vì tôi không rành lập trình, hãy viết báo cáo phân tích yêu cầu theo ý bạn. Báo cáo nên dài khoảng 3 trang.
    2. Thiết kế lược đồ cơ sở dữ liệu, làm ơn đừng quá phức tạp.
    3. Tạo đặc tả giao diện API.
  • E-Commerce (Thương mại điện tử): Demo E-Commerce

![AutoBE Generated Backend Application Example](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwweosg7d2u6pxjibzo3t.png)
Ví dụ về ứng dụng backend được tạo bởi AutoBE (Giao diện StackBlitz).

Lộ Trình Phát Triển Đến Tương Lai

WrtnLabs đã vạch ra một lộ trình phát triển rõ ràng cho AutoBE, hướng tới việc mang đến trải nghiệm vibe coding đáng tin cậy và toàn diện nhất.

Các Phiên Bản Tiền Phát Hành

Trước khi phát hành chính thức v1.0, AutoBE sẽ trải qua hai giai đoạn tiền phát hành:

  • Phiên bản Alpha: 2025-06-01 – Tập trung vào các agent chức năng cốt lõi (hiện tại).
  • Phiên bản Beta: 2025-07-01 – Hoàn thành tất cả các tính năng cốt lõi đã lên kế hoạch.

Trong giai đoạn này, một số hạn chế vẫn còn tồn tại như thiếu tính năng streaming (có thể gây thời gian chờ đợi lâu hơn), mức độ chi tiết sự kiện hạn chế và tài liệu chưa đầy đủ (cần tham khảo API docs, comment code, test programs).

Phát Hành Chính Thức v1.0

  • Ngày dự kiến: 2025-08-01

Phiên bản chính thức sẽ khắc phục các hạn chế của bản tiền phát hành. Sẽ có một trang web đặc tả kỹ thuật toàn diện giới thiệu khái niệm và cách sử dụng AutoBE. Hướng dẫn chi tiết về tích hợp AutoBE với Agentica (cho chatbot) và AutoView (cho frontend/mobile) cũng sẽ được cung cấp. Tính năng streaming sẽ được triển khai, cho phép người dùng theo dõi quá trình AI “suy nghĩ” và tạo mã theo thời gian thực. API sự kiện sẽ được cải thiện và tài liệu hóa đầy đủ.

Dịch Vụ Hosting Tích Hợp

  • Ngày dự kiến: 2025-12-01 (Chưa thể đảm bảo ngày chính xác)

Tầm nhìn cuối cùng là một dịch vụ hosting tích hợp cho AutoBE. Người dùng chỉ cần trò chuyện để mô tả yêu cầu, ứng dụng backend sẽ được tự động tạo, triển khai lên hạ tầng server và sẵn sàng sử dụng ngay lập tức. Dịch vụ hosting này sẽ được kết nối với Agentica và AutoView, cho phép tự động tạo và triển khai toàn bộ stack (backend, chatbot AI, frontend/mobile) chỉ qua hội thoại. Wrtn Technologies đặt mục tiêu chứng minh một tương lai của vibe coding nơi 100 lần thử tạo ra 100 lần thành công, mang lại độ tin cậy cao cho các ứng dụng production.

Tại Sao Nên Chọn AutoBE? Những Lợi Ích Nổi Bật

AutoBE không chỉ là một công cụ tạo mã AI thông thường. Những lợi ích chính mà nó mang lại bao gồm:

  • Tăng Tốc Độ Phát Triển Vượt Trội: Tự động hóa các tác vụ lặp đi lặp lại như thiết kế DB schema, tạo API endpoints và mã boilerplate, giải phóng thời gian cho nhà phát triển tập trung vào logic cốt lõi.
  • Độ Tin Cậy Mã Nguồn Cao Nhất: Cam kết 100% biên dịch thành công nhờ vòng lặp phản hồi từ trình biên dịch và xác thực là điểm mạnh độc nhất, giảm thiểu thời gian và công sức gỡ lỗi ban đầu.
  • Hệ Sinh Thái Full-Stack Tiềm Năng: Tích hợp liền mạch với Agentica và AutoView mở ra khả năng tự động hóa toàn bộ quy trình phát triển ứng dụng, từ backend, chatbot đến frontend.
  • Mã Nguồn Mở và Minh Bạch: Là dự án nguồn mở, AutoBE khuyến khích sự đóng góp từ cộng đồng và mang lại sự minh bạch trong cách mã nguồn được tạo ra.
  • Quy Trình Phát Triển Có Cấu Trúc: Dựa trên sự kết hợp của các mô hình Waterfall và Spiral, AutoBE đảm bảo một quy trình phát triển có hệ thống, dễ theo dõi và quản lý.

Lời Kết và Kêu Gọi Tham Gia

AutoBE đại diện cho một bước tiến đáng kể trong lĩnh vực phát triển phần mềm được hỗ trợ bởi AI. Với khả năng tạo mã backend chạy 100% và tầm nhìn về hệ sinh thái vibe coding full-stack, nó có tiềm năng thay đổi cách chúng ta xây dựng ứng dụng.

Đội ngũ WrtnLabs rất mong nhận được sự quan tâm và hỗ trợ của cộng đồng. Hãy ghé thăm kho mã nguồn GitHub để tìm hiểu sâu hơn, trải nghiệm sân chơi thực tế để thấy AutoBE hoạt động, và cân nhắc đóng góp để cùng xây dựng tương lai của vibe coding.

Khám phá ngay:

Chỉ mục