Cách AI tự động cập nhật đặc tả API với Apidog CLI

Hãy để một tác nhân AI cập nhật an toàn thông số kỹ thuật API của bạn bằng Apidog CLI: làm việc trên một nhánh AI biệt lập, xử lý các cập nhật như một quá trình đọc-sửa-ghi hoàn chỉnh, và chỉ hợp nhất sau khi được con người xem xét.

Ashley Innocent

Ashley Innocent

15 tháng 7 2026

Cách AI tự động cập nhật đặc tả API với Apidog CLI

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Chỉnh sửa đặc tả API bằng tay là một công việc tỉ mỉ, phức tạp. Đổi tên một trường, thêm giá trị enum, thắt chặt một cờ bắt buộc. Mỗi thay đổi đều nhỏ, nhưng mỗi thay đổi đó phải được đặt đúng chỗ mà không làm hỏng các điểm cuối tham chiếu đến nó. Đó là công việc chính xác, máy móc và chính xác là loại nhiệm vụ bạn sẽ giao cho một tác nhân AI, nếu bạn có thể tin tưởng nó không phá hỏng toàn bộ lược đồ.

Bạn có thể. CLI của Apidog cung cấp cho tác nhân mọi thứ cần thiết để thay đổi đặc tả một cách có trách nhiệm: xác thực lược đồ trước mỗi lần ghi, một nhánh biệt lập để làm việc và một yêu cầu hợp nhất để bạn xem xét.

nút

Đây là bản hướng dẫn về thay đổi đi kèm với việc để tác nhân tạo tài liệu API. Việc tạo là bổ sung và có rủi ro thấp; cập nhật một hợp đồng hiện có là nơi các biện pháp bảo vệ quan trọng, vì vậy phần lớn hướng dẫn này là về cách thực hiện mà không làm hỏng bất cứ điều gì.

Ý nghĩa của “cập nhật đặc tả” trong CLI

Đặc tả của bạn trong Apidog là tập hợp các điểm cuối và lược đồ dữ liệu trong một dự án. Việc cập nhật nó có nghĩa là một trong ba lệnh sau:

Trước khi bạn hướng tác nhân vào bất kỳ lệnh nào trong số này, có hai hành vi bạn phải hiểu, bởi vì làm sai chúng là cách một đặc tả bị hỏng. Đầu tiên là mô hình quyền, và thứ hai là một lỗi khó nhận biết có thể âm thầm xóa dữ liệu.

Cạm bẫy sẽ làm bạn mắc lỗi: cập nhật là thay thế hoàn toàn

Đây là điều quan trọng nhất để dạy tác nhân của bạn. Các lệnh `update` của CLI **không phải** là JSON Patch. Chúng gửi trực tiếp các trường bạn cung cấp; chúng không hợp nhất các mục mảng theo ID. Nếu bạn gửi một bản cập nhật với một mảng `parameters` một phần với ý định thay đổi một tham số, bạn không chỉnh sửa tham số đó. Bạn thay thế toàn bộ mảng chỉ bằng cái bạn đã gửi, và phần còn lại sẽ biến mất.

Trình tự đúng luôn là đọc-sửa đổi-ghi trên đối tượng *hoàn chỉnh*:

# 1. Lấy tài nguyên hiện tại đầy đủ
apidog endpoint get <endpointId> --project <projectId>

# 2. Chỉnh sửa cấu trúc hoàn chỉnh cục bộ (giữ lại mọi trường bạn không thay đổi)

# 3. Xác thực toàn bộ đối tượng với lược đồ
apidog cli-schema get endpoint-create
apidog cli-schema validate endpoint-create --file ./endpoint-full.json

# 4. Ghi lại đối tượng hoàn chỉnh
apidog endpoint update <endpointId> --project <projectId> --file ./endpoint-full.json

Hãy đưa điều này vào hướng dẫn của tác nhân một cách rõ ràng: *không bao giờ gửi một đối tượng một phần để `update`; luôn luôn lấy toàn bộ tài nguyên, sửa đổi nó và gửi lại toàn bộ.* Một tác nhân bỏ qua bước `get` sẽ âm thầm loại bỏ các trường. Một tác nhân chạy `cli-schema validate` trước sẽ bắt được lỗi của chính nó trước khi chúng đến dự án.

Con đường an toàn: để tác nhân làm việc trên một nhánh AI

Bạn có thể cấp cho tác nhân quyền chỉnh sửa trực tiếp trên nhánh chính của mình. Đừng làm vậy, ít nhất là lúc đầu. Apidog có một cơ chế cách ly được xây dựng có chủ đích, đó là **nhánh AI**, được thiết kế chính xác cho điều này: một tác nhân sửa đổi tài nguyên mà không chạm vào nhánh nguồn, và không có gì được hợp nhất trở lại cho đến khi bạn cho phép. Hãy coi nó như một yêu cầu kéo (pull request) cho đặc tả API của bạn.

Bước 1: Tạo nhánh AI

apidog branch create --project <projectId> --type ai \
  --from main --name "ai/20260713-from-main-refund-fields"

Quy ước đặt tên là `ai/YYYYMMDD-from-source-feature` để nguồn gốc và mục đích của nhánh dễ hiểu ngay từ cái nhìn đầu tiên. Giá trị `--from` phải là nhánh chính của bạn hoặc một nhánh sprint thông thường, không phải là một nhánh chung. Một chi tiết tiện lợi: một nhánh AI không có sự khác biệt nào so với nguồn của nó sẽ tự động được lưu trữ sau 24 giờ, vì vậy các thử nghiệm bị bỏ dở sẽ tự dọn dẹp.

Bước 2: Nhập các tài nguyên mà tác nhân sẽ chỉnh sửa

Một nhánh AI bắt đầu trống. Nó không tự động sao chép nhánh nguồn. Trước khi tác nhân có thể chỉnh sửa một điểm cuối hoặc lược đồ *hiện có*, hãy kéo tài nguyên đó vào nhánh bằng `pick-to`:

apidog branch pick-to --project <projectId> --type ai \
  --from main --to "ai/20260713-from-main-refund-fields" \
  --endpoint-ids <ids>

Các tài nguyên mà tác nhân *tạo* mới trên nhánh không cần điều này; chỉ những tài nguyên hiện có mà nó định sửa đổi hoặc xóa. Đây là bước mà mọi người thường quên: bỏ qua nó, và tác nhân sẽ có một nhánh trống rỗng và không có gì để chỉnh sửa.

Bước 3: Để tác nhân thực hiện thay đổi

Bây giờ tác nhân chạy vòng lặp đọc-sửa đổi-ghi từ trước, nhưng với `--branch` trỏ đến nhánh AI. Mọi chỉnh sửa được gói gọn:

apidog endpoint get <endpointId> --project <projectId> \
  --branch "ai/20260713-from-main-refund-fields"

apidog endpoint update <endpointId> --project <projectId> \
  --branch "ai/20260713-from-main-refund-fields" \
  --file ./endpoint-full.json

Nhánh chính của bạn không bị chạm đến trong suốt thời gian này. Nếu tác nhân làm sai điều gì đó, phạm vi ảnh hưởng chỉ là một nhánh dùng một lần.

Bước 4: Xem xét, sau đó hợp nhất

Các thay đổi trên nhánh AI không bao giờ được ghi lại tự động. Khi tác nhân hoàn thành, *bạn* quyết định điều gì sẽ xảy ra. Nếu mục tiêu được bảo vệ, hãy mở một yêu cầu hợp nhất thay vì hợp nhất trực tiếp:

apidog merge-request --help
apidog branch merge --project <projectId> --type ai \
  --from "ai/20260713-from-main-refund-fields" --to main --endpoint-ids <ids>

Xem xét sự khác biệt, phê duyệt, và thay đổi đã được kiểm tra sẽ xuất hiện trên nhánh chính. Hợp nhất trực tiếp từ CLI yêu cầu quyền chỉnh sửa trực tiếp trên cả nhánh nguồn và nhánh đích; nếu nhánh chính được bảo vệ, hãy ưu tiên `merge-request` và phê duyệt nó trong ứng dụng Apidog.

Một ví dụ thực tế: đổi tên một trường an toàn

Các quy tắc trừu tượng thì dễ gật đầu đồng ý nhưng khó áp dụng. Đây là một ví dụ cụ thể. Giả sử bạn muốn đổi tên `amount` thành `amountCents` trên mô hình dữ liệu `Refund`, bởi vì bạn đang chuyển sang sử dụng số tiền là số nguyên (cent).

Bạn nói với tác nhân: *“Đổi tên trường `amount` trên lược đồ Refund thành `amountCents` và biến nó thành một số nguyên.”* Theo các quy tắc của nó, tác nhân sẽ:

# 1. Lấy lược đồ HIỆN TẠI ĐẦY ĐỦ trên nhánh AI
apidog schema get <refundSchemaId> --project $PID --branch "ai/20260713-from-main-refund-fields"

Nó nhận lại đối tượng hoàn chỉnh và chỉnh sửa toàn bộ `jsonSchema`, giữ nguyên mọi trường mà nó không chạm vào:

{
  "name": "Refund",
  "jsonSchema": {
    "type": "object",
    "required": ["orderId", "amountCents"],
    "properties": {
      "orderId": { "type": "string" },
      "amountCents": { "type": "integer" },
      "reason": { "type": "string" }
    }
  }
}

Lưu ý điều *không* xảy ra: nó không chỉ gửi một thuộc tính đã thay đổi. Nó đã gửi toàn bộ lược đồ với `orderId` và `reason` còn nguyên vẹn, bởi vì `update` thực hiện thay thế. Sau đó:

# 2. Xác thực đối tượng hoàn chỉnh
apidog cli-schema validate schema-create --file ./refund-full.json

# 3. Ghi nó trở lại nhánh AI
apidog schema update <refundSchemaId> --project $PID \
  --branch "ai/20260713-from-main-refund-fields" --file ./refund-full.json

Bạn xem xét sự khác biệt trên nhánh AI (một trường được đổi tên, không có gì khác bị xáo trộn) và hợp nhất. Đó là toàn bộ quy trình: đối tượng đầy đủ, được xác thực, trên một nhánh, hợp nhất sau khi xem xét.

Đánh dấu các thay đổi gây phá vỡ trước khi hợp nhất

Đổi tên một trường bắt buộc là một thay đổi gây phá vỡ: bất kỳ client nào gửi `amount` giờ đây sẽ thất bại trong việc xác thực. Một bộ hướng dẫn tốt cho tác nhân sẽ khiến mô hình *nói ra* điều đó thay vì hợp nhất một cách im lặng. Thêm điều này vào các quy tắc của tác nhân:

Trước khi hợp nhất bất kỳ thay đổi đặc tả nào, hãy phân loại nó:
- Không phá vỡ (trường tùy chọn mới, điểm cuối mới, ràng buộc nới lỏng) → tóm tắt và tiếp tục với yêu cầu hợp nhất.
- Phá vỡ (trường đổi tên/bị xóa, trường bắt buộc mới, kiểu thắt chặt) → DỪNG LẠI.
  Báo cáo thay đổi gây phá vỡ và các điểm cuối bị ảnh hưởng, và đợi sự chấp thuận rõ ràng của con người.

Nhánh AI là điều làm cho việc thực thi điều này an toàn: bởi vì không có gì tự động hợp nhất, “dừng lại và báo cáo” là một điểm kiểm tra thực sự, không phải là một cuộc chạy đua chống lại một thao tác ghi đã xảy ra.

Thay vào đó, cập nhật từ một tệp OpenAPI

Đôi khi thay đổi đã tồn tại dưới dạng tệp OpenAPI, được tạo từ mã, chỉnh sửa ở nơi khác hoặc được một nhóm khác chuyển giao cho bạn. Thay vì thực hiện lại từng chỉnh sửa theo trường, tác nhân có thể nhập tệp để đối chiếu nó với dự án:

apidog import --project <projectId> --format openapi --file ./openapi.json \
  --branch "ai/20260713-from-main-refund-fields"

`import` chấp nhận OpenAPI 3.x, Swagger 2.0, Postman và nhiều định dạng khác. Hãy chạy nó trên một nhánh AI trước để bạn có thể xem xét những thay đổi của đặc tả sắp tới trước khi nó đến nhánh chính. Sau khi hợp nhất, xuất lại đặc tả đã đối chiếu để xác nhận kết quả:

apidog export --project <projectId> --format openapi --oas-version 3.1 --output ./openapi.json

Cách này tốt nhất khi nguồn chân lý nằm ngoài Apidog và bạn đang đồng bộ hóa nó vào. Cách `update` từng trường tốt nhất khi Apidog *là* nguồn chân lý và bạn đang thực hiện một thay đổi có chọn lọc.

Khi tác nhân làm sai: hoàn tác

Lý do để làm việc trên một nhánh AI là lỗi lầm dễ dàng được hoàn tác. Nếu tác nhân tạo ra một thay đổi mà bạn không muốn, bạn chưa bao giờ hợp nhất nó, vì vậy nhánh chính vẫn đúng. Chỉ cần lưu trữ nhánh và tiếp tục:

apidog branch archive "ai/20260713-from-main-refund-fields" --project <projectId> --type ai

Bởi vì một nhánh AI không có sự khác biệt nào được chấp nhận dù sao cũng tự động lưu trữ sau 24 giờ, ngay cả một thử nghiệm bị quên lãng cũng tự dọn dẹp. So sánh điều đó với một tác nhân chỉnh sửa trực tiếp nhánh chính, trong đó một `update` tồi tệ sẽ có hiệu lực ngay lập tức và giải pháp duy nhất của bạn là thùng rác hoặc hoàn tác thủ công. Nhánh không phải là sự quan liêu; nó là nút hoàn tác.

Một lưu ý về quyền hạn

Nếu một lệnh `update` hoặc `import` bị chặn, dự án đã tắt Quyền Chỉnh sửa AI Bên ngoài. Đó là một cổng kiểm soát có chủ ý, và quy trình nhánh AI ở trên là câu trả lời cho điều đó: tác nhân chỉnh sửa một nhánh biệt lập và bạn phê duyệt việc hợp nhất. Nếu bạn muốn cấp quyền chỉnh sửa trực tiếp, công tắc nằm trong Cài đặt Dự án → Cài đặt Tính năng → Cài đặt Tính năng AI (phiên bản Apidog client 2.8.32+). Khi một tác nhân gặp phải rào cản quyền hạn, đừng để nó âm thầm chọn một cách giải quyết; hãy đưa ra lựa chọn đó cho một con người.

Những vướng mắc thường gặp

Câu hỏi thường gặp

Tổng kết

Để tác nhân cập nhật đặc tả API của bạn là an toàn khi ba điều sau đúng: nó hoạt động trên một nhánh AI biệt lập, nó coi mỗi bản cập nhật là một thao tác đọc-sửa đổi-ghi hoàn chỉnh thay vì một bản vá, và một con người phê duyệt việc hợp nhất. CLI của Apidog cung cấp cho bạn cả ba điều này dưới dạng lệnh, có nghĩa là toàn bộ vòng lặp (chỉnh sửa, xác thực, xem xét) có thể được lập trình và kiểm tra, và một thay đổi không tốt chỉ cần một lệnh `archive` là biến mất.

Thiết lập nhánh AI, giao cho tác nhân quy tắc đọc-sửa đổi-ghi và điểm kiểm tra thay đổi gây phá vỡ, và việc bảo trì đặc tả trở thành một sự khác biệt mà bạn phê duyệt thay vì công việc tỉ mỉ mà bạn cứ trì hoãn. Tải Apidog để có CLI, và kết hợp điều này với việc để tác nhân tạo tài liệu của bạn để bao quát toàn bộ vòng lặp tạo và bảo trì.

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API