Thêm provider tương thích OpenAI tùy chỉnh vào Zed.

Updated 2026-07-29

Zed đọc provider tùy chỉnh trực tiếp từ settings.json. Khai báo một khối language_models.openai_compatible với api_url đặt là https://api.apisrouter.com/v1, liệt kê các model id bạn muốn, và tất cả sẽ xuất hiện trong picker model của agent panel dưới một key duy nhất.

Câu trả lời nhanh: một khối trong settings.json.

Zed hỗ trợ provider tương thích OpenAI tùy chỉnh ngay từ gốc. Thêm một entry provider dưới language_models.openai_compatible trong settings.json, đặt api_url thành https://api.apisrouter.com/v1, và khai báo mỗi model bạn muốn dưới available_models cùng tên và kích thước context. Các model xuất hiện ngay trong dropdown model của agent panel. API key cố tình không nằm trong settings.json. Zed lưu nó trong keychain hệ thống khi bạn nhập qua UI cài đặt provider, hoặc đọc từ một biến môi trường suy ra từ tên key provider: một provider tên apisrouter sẽ đọc APISROUTER_API_KEY. Biến môi trường được ưu tiên hơn giá trị trong keychain.

{
  "language_models": {
    "openai_compatible": {
      "apisrouter": {
        "api_url": "https://api.apisrouter.com/v1",
        "available_models": [
          {
            "name": "claude-sonnet-4-6",
            "display_name": "Claude Sonnet 4.6",
            "max_tokens": 200000
          }
        ]
      }
    }
  }
}

Cách Zed phân giải provider và model tùy chỉnh.

Zed (zed-industries trên GitHub, khoảng 87K sao) là một editor hiệu năng cao với agent panel biết lập kế hoạch, chỉnh sửa file, và chạy tool. Kiểu provider openai_compatible của nó nói giao thức /v1/chat/completions chuẩn, chính xác là những gì một gateway đa vendor phục vụ, nên không có plugin hay extension nào chen giữa editor và endpoint. Provider key bạn chọn ("apisrouter" ở trên) đảm nhiệm hai vai trò. Nó đặt tên provider trong cài đặt agent panel, và nó sinh ra tên biến môi trường mà Zed kiểm tra để tìm key, viết hoa kiểu snake_case với hậu tố _API_KEY. Quy tắc đặt tên đó đáng nhớ trước khi debug bất cứ điều gì: đổi tên provider thì tên biến mong đợi cũng đổi theo. available_models là một allowlist. Zed không thể tự liệt kê model của một endpoint tùy chỉnh, nên chỉ những id bạn khai báo mới chọn được, mỗi id là một chuỗi chính xác kể cả hậu tố phiên bản. Khi endpoint phía sau api_url phục vụ đồng thời id Claude, GPT, Gemini, và Kimi, một khối provider biến picker của agent panel thành một bảng chuyển mạch đa vendor sau một key. Một lưu ý về phạm vi: tính năng edit predictions của Zed dùng model riêng dành cho nó và được cấu hình tách biệt; một provider tùy chỉnh cấp năng lượng cho agent panel và inline assistant, không phải edit predictions.

Cài đặt đầy đủ: model, kích thước context, và capability.

Mỗi entry available_models nhận nhiều hơn một cái tên. max_tokens khai báo context window của model, và max_output_tokens giới hạn độ dài sinh; Zed dùng các con số này để quản lý thread agent dài, nên khai báo một model context dài với max_tokens nhỏ sẽ âm thầm lãng phí dư địa của model. Đối tượng capabilities cho Zed biết model hỗ trợ gì: đặt tools là true cho bất cứ model nào bạn định dùng để điều khiển agent panel, và chỉ bật images cho những model thực sự nhận input ảnh. Với key, con đường đáng tin cậy trên một editor desktop là UI cài đặt provider, lưu giá trị vào keychain hệ thống. Con đường biến môi trường cũng hoạt động, kèm một lưu ý sẽ nói ở phần debug: ứng dụng GUI khởi chạy từ dock không kế thừa shell profile của bạn.

{
  "language_models": {
    "openai_compatible": {
      "apisrouter": {
        "api_url": "https://api.apisrouter.com/v1",
        "available_models": [
          {
            "name": "claude-sonnet-4-6",
            "display_name": "Claude Sonnet 4.6",
            "max_tokens": 200000,
            "max_output_tokens": 64000,
            "capabilities": { "tools": true, "images": false }
          },
          {
            "name": "claude-opus-4-7",
            "display_name": "Claude Opus 4.7",
            "max_tokens": 200000,
            "capabilities": { "tools": true }
          },
          { "name": "gpt-5.5", "display_name": "GPT-5.5", "max_tokens": 200000 },
          { "name": "kimi-k2.7-code", "display_name": "Kimi K2.7 Code", "max_tokens": 200000 }
        ]
      }
    }
  }
}

Chọn model cho agent panel.

Vì mọi model đã khai báo nằm trong cùng một picker, quy trình thực tế là so sánh trên công việc thật thay vì benchmark: chạy cùng một loại việc qua hai ứng viên vào những ngày khác nhau và để nhật ký usage theo từng key định giá từng cái. Đổi model trong Zed là một lựa chọn dropdown, nên chi phí của thử nghiệm bằng không cấu hình.

  • Agent panel gánh vác công việc kỹ thuật thực sự: đọc file, lập kế hoạch chỉnh sửa nhiều bước, chạy tool trên các thread dài. Một model coding frontier (claude-sonnet-4-6, claude-opus-4-7, gpt-5.5) thuộc về vị trí này.
  • Các id được tinh chỉnh cho coding như kimi-k2.7-code đáng khai báo dù không phải mặc định của bạn; chuyển sang chúng cho một phiên nặng về refactor chỉ là một lựa chọn trong picker, không phải sửa cấu hình.
  • Các model context dài như gemini-3.1-pro-preview xứng đáng có chỗ khi các thread thường xuyên kéo file lớn hoặc context cả module vào một cuộc hội thoại.
  • Inline assist sống ngắn hơn agent thread, nên một id tầm trung nhanh giữ cho các phép biến đổi một lượt luôn nhạy mà không đốt token frontier cho những lần viết lại một dòng.

Trả theo mức sử dụng · thấp hơn giá chính thức

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

Mô hìnhGiá chính thứcGiá của chúng tôi
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
Claude Opus 4.7$5.00 / $25.00 per M$4.00 / $20.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
Kimi K2.7 Code$0.95 / $4.00 per M$1.00 / $4.00 per M
Gemini 3.1 Pro Preview$2.00 / $12.00 per M$1.60 / $9.60 per M

Các lỗi thường gặp riêng của provider tùy chỉnh trong Zed.

Key nằm trong settings.json mà không có gì hoạt động. Zed cố tình không đọc API key từ settings.json. Nhập key qua UI cài đặt provider, hoặc export biến môi trường suy ra; một key dán vào JSON bị bỏ qua. Biến môi trường đã đặt nhưng Zed vẫn hỏi key. Tên biến được suy ra từ provider key, viết hoa snake_case kèm _API_KEY, nên một provider tên apisrouter cần APISROUTER_API_KEY, không phải OPENAI_API_KEY. Và trên macOS, một app khởi chạy từ dock không bao giờ đọc shell profile của bạn, nên các export trong profile vô hình với nó. Khởi chạy Zed từ terminal bằng lệnh zed, hoặc dùng con đường keychain và bỏ qua vấn đề này hoàn toàn. Một model bị thiếu trong picker. available_models là một allowlist; một id bạn nghĩ là có nhưng chưa khai báo thì đơn giản là không tồn tại. Id là chuỗi chính xác kể cả hậu tố phiên bản, và danh sách /v1/models của gateway là chính tả xác thực để copy. Agent không dùng được tool. Nếu khối capabilities của một model ghi tools là false, Zed sẽ không cho dùng tool với nó. Khai báo capabilities khớp với những gì model thực sự hỗ trợ. api_url thiếu /v1. Client tự thêm các route path như /chat/completions vào base bạn cung cấp, nên https://api.apisrouter.com/v1 là đúng còn host trần thì không. Một lỗi kiểu 404 trên một khối vốn đúng gần như luôn là do điều này.

Ai định tuyến Zed qua một gateway.

  • Lập trình viên sống trong editor và muốn Claude, GPT, và Kimi trong một picker của agent panel thay vì duy trì credential provider riêng cho từng vendor.
  • Kỹ sư so sánh model coding trên các chỉnh sửa thực. Mỗi ứng viên là một entry đã khai báo và một lựa chọn dropdown; không cần tài khoản mới cho mỗi thử nghiệm.
  • Đội nhóm chuẩn hóa một secret duy nhất. Một APISROUTER_API_KEY trong tài liệu onboarding thay thế danh sách key riêng từng vendor, và usage theo từng key cho thấy mỗi chỗ ngồi tiêu bao nhiêu.
  • Người dùng ghép một model agent frontier với một model inline-assist nhanh từ vendor khác, điều mà cấu hình một-vendor không thể diễn đạt được.
  • Lập trình viên không có quyền truy cập thanh toán của một vendor nào đó. Truy cập dựa trên nạp tiền không yêu cầu thẻ loại bỏ sự phụ thuộc đăng ký theo từng provider.

Xác minh endpoint và debug thread đầu tiên.

Trước khi bắt đầu một agent thread, hãy liệt kê những gì gateway phục vụ. Các id trả về bởi /v1/models chính xác là chuỗi mà các entry available_models phải dùng. Lỗi ở thread đầu tiên khá nhất quán. Một lỗi 401 nghĩa là key mà Zed phân giải sai hoặc thiếu: kiểm tra entry trong keychain ở cài đặt provider, hoặc xác nhận biến môi trường suy ra được tiến trình Zed nhìn thấy chứ không chỉ terminal của bạn. Một lỗi model-not-found từ gateway nghĩa là một tên đã khai báo không khớp với id được phục vụ, kể cả hậu tố phiên bản. Nếu khối provider hoàn toàn không xuất hiện trong cài đặt, hãy kiểm tra JSON; settings.json chấp nhận comment nhưng không chấp nhận lỗi cấu trúc. Khi request đã chạy, console APIsRouter hiển thị model theo từng request, số token, và chi phí. Agent thread là khối lượng công việc context dài, nhiều lượt, và việc thấy thread nào và model nào tiêu token là cách bạn quyết định model mặc định của mình có xứng đáng với vị trí đó không.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

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

Zed có thể dùng model Claude, GPT, và Kimi qua một provider tùy chỉnh không?

Có. Một provider tùy chỉnh là một api_url cộng một allowlist available_models. Khi endpoint phục vụ nhiều vendor, khai báo một entry cho mỗi id và mọi model đã khai báo xuất hiện trong picker của agent panel dưới cùng provider và key, chọn được theo từng thread.

API key nằm ở đâu với một provider tùy chỉnh trong Zed?

Không nằm trong settings.json. Nhập nó qua UI cài đặt provider, lưu vào keychain hệ thống, hoặc export biến môi trường suy ra từ provider key của bạn: một provider tên apisrouter đọc APISROUTER_API_KEY. Biến môi trường được ưu tiên hơn giá trị trong keychain.

Vì sao Zed bỏ qua API key tôi đã export trong shell profile?

App GUI khởi chạy từ dock không bao giờ đọc shell profile của bạn, nên export đó vô hình với chúng. Khởi chạy Zed từ terminal bằng lệnh zed để nó kế thừa biến, hoặc dùng UI cài đặt và để keychain giữ key.

Vì sao model của tôi bị thiếu trong picker của agent panel?

Model provider tùy chỉnh phải được khai báo tường minh; Zed không thể tự liệt kê một endpoint tùy chỉnh. Kiểm tra available_models chứa đúng chuỗi id, kể cả hậu tố phiên bản, và copy id từ response /v1/models của gateway thay vì gõ theo trí nhớ.

max_tokens và max_output_tokens điều khiển gì trong available_models?

max_tokens khai báo context window của model và max_output_tokens giới hạn độ dài sinh. Zed dùng chúng để quản lý thread agent dài, nên đặt max_tokens đúng bằng những gì model thực sự hỗ trợ; khai thấp hơn sẽ lãng phí context mà model thực có.

Provider tùy chỉnh có thay đổi edit predictions của Zed không?

Không. Edit predictions chạy trên model riêng của Zed và được cấu hình tách biệt. Một provider tương thích OpenAI tùy chỉnh cấp năng lượng cho agent panel và inline assistant, nơi traffic /v1/chat/completions đi đến.