Lỗi tích hợp: Antigravity Browser bị định tuyến nhầm sang Kiro

Khi kích hoạt Antigravity MITM trên 9Router, các request từ Browser Subagent bị nhận diện nhầm và định tuyến sang provider Kiro thay vì Gemini Flash, gây lỗi kết nối khi không có cấu hình Kiro.

📋 Prompt để nhờ AI fix cho lẹ

🤖 Prompt để nhờ AI fix cho lẹ

Bạn chỉ cần bấm Copy prompt này rồi dán vào bất kỳ AI Code Assistant nào (như Claude 3.7 / GPT-4o / Codex / Antigravity) để AI tự động fix code trong repo 9Router:

Prompt Template (Optimized for AI Coding Agents)

Môi trường thử nghiệm

Cách tái hiện (Reproduction Steps)

  1. Cài đặt 9Router v0.5.50 sạch hoặc xóa toàn bộ credentials của provider Kiro trong db.json.
  2. Bật Antigravity MITM (kiểm tra hosts file đã chuyển hướng generativelanguage.googleapis.com về localhost/127.0.0.1).
  3. Sử dụng Antigravity IDE gọi Browser Subagent mở bất kỳ website nào (ví dụ: lumentree.pages.dev).
  4. Quan sát lỗi trả về trong console hoặc logs.

Kết quả mong muốn (Expected)

Request từ Browser Subagent của Antigravity được giải mã/định tuyến chính xác sang tài khoản Antigravity hoạt động (sử dụng model gemini-3-flash hoặc gemini-3-flash-agent).

Kết quả thực tế (Actual)

9Router phân loại request thành provider kiro. Do không tìm thấy credentials Kiro đang hoạt động, router chặn request và báo lỗi: No active credentials for provider: kiro.

Bằng chứng kỹ thuật (Technical Evidence)

Lỗi khi gọi Browser Subagent (Không có Kiro credentials)
No active credentials for provider: kiro
Lỗi đệ quy (Nếu cố tình ép fallback đằng sau credential selection)
request failed with empty body (code 500)
Kết quả test direct request bằng model gemini-3-flash
HTTP/1.1 200 OK
{
  "id": "chatcmpl-...",
  "model": "gemini-3-flash",
  "choices": [...]
}

Phân tích nguyên nhân (Root Cause Analysis)

Khi request đi qua MITM của 9Router, việc phân loại model (model/provider alias resolution) diễn ra trước bước lấy thông tin xác thực. Bằng cách nào đó, 9Router hiểu nhầm model identifier từ Browser của Antigravity thành một model thuộc provider kiro. Khi DB không có connection nào của Kiro, router trả về lỗi 404/403 trước khi request kịp chuyển tiếp.

Bản vá Workaround đã xác minh

Chúng tôi đã vá trực tiếp file bundle server của 9Router tại app/.next-cli-build/server/chunks/112.js. Bằng cách ép chuẩn hóa (normalize) model sang ag/gemini-3-flash ngay từ đầu hàm định tuyến nếu provider được nhận diện nhầm là Kiro:

Workaround logic (112.js)
async function x(a,b,c=null,d=null,e=null){
  if((await (0,h.mA)(b)).provider === "kiro"){
    s.warn("FALLBACK", "Normalizing Kiro to ag/gemini-3-flash");
    b = "ag/gemini-3-flash";
  }
  let p = await (0,h.mA)(b);
  ...
}

Sau khi áp dụng bản vá này và restart 9Router, Browser Subagent của Antigravity đã kết nối thành công và tải trang hoàn tất.