Proxy API Formatları
opencodex, tek bir yerel proxy’yi çeşitli istemci lehçelerinde sunar. Bir Codex istemcisi Responses API’sini, OpenAI uyumlu bir uygulama Chat Completions’ı ve Claude Code, her yukarı akış sağlayıcısının her formatı uygulamasını gerektirmeden Anthropic Messages’ı konuşabilir.
Normal çeviri yolu şöyledir:
istemci lehçesi → dahili Responses modeli → sağlayıcı adaptörü → sağlayıcı hat formatısağlayıcı olayları → dahili adaptör olayları → istemci lehçesiResponses temsili köprünün merkezindedir. Yerel uyumlu rotalar çevirinin bazı kısımlarını atlayabilir ve bir isteği doğrudan iletebilir, ancak kimlik doğrulama, yönlendirme, kabul kontrolü ve yanıt güvenliği yine de proxy sınırında gerçekleşir. Dinleyiciyi ve kabul anahtarlarını Yapılandırma bölümünde yapılandırın; tek bir genel model kimliği birkaç hedef arasından seçim yapması gerektiğinde Kombolar kullanın.
Üst sunucu yönlendirmeleri
Bölüm başlığı “Üst sunucu yönlendirmeleri”Kimlik bilgisi taşıyan model, görsel, video ve arama istekleri, aynı origin içindeki yönlendirmeler dâhil HTTP yönlendirmelerini otomatik izlemez. Yönlendiren bir adres yerine son API URL’sini yapılandırın. Sunucu, kimlik bilgilerini veya istek gövdesini yönlendirme hedefine yeniden göndermez. Mevcut hata işleme ve yanıt aktarma davranışı korunur; native Responses ve compact yolları, özgün 3xx ve Location değerini istemciye döndürebilir. İstemcinin yönlendirme davranışı bu sunucu aktarım politikasından ayrıdır.
Uç nokta genel bakışı
Bölüm başlığı “Uç nokta genel bakışı”| İstemci yüzeyi | Uç nokta | Başarılı akışsız sonuç | Başarılı akış veya soket sonucu |
|---|---|---|---|
| OpenAI Responses | POST /v1/responses |
Responses JSON | Responses SSE veya WebSocket üzerinden Responses JSON metin çerçeveleri |
| OpenAI Chat Completions | POST /v1/chat/completions |
chat.completion JSON |
[DONE] ile biten chat.completion.chunk SSE |
| Anthropic Messages | POST /v1/messages |
Anthropic message JSON |
Anthropic Messages SSE |
| Anthropic belirteç sayısı | POST /v1/messages/count_tokens |
{ "input_tokens": sayi } |
Geçerli değil |
| Model keşfi | GET /v1/models |
Katalog veya açıkça istenen Desktop anlık görüntüsü | Geçerli değil |
| Ses ve Realtime | POST /v1/live, POST /v1/realtime/calls |
İletilen çağrı oluşturma yanıtı | Ayrı bir yan bant WebSocket her iki yönde de çerçeveleri iletir |
| Responses sıkıştırması | POST /v1/responses/compact |
Değiştirme geçmişi JSON’ı | Geçerli değil |
POST /v1/responses
Bölüm başlığı “POST /v1/responses”Bu, yerel opencodex veri düzlemi şeklidir. İstek gövdesi boş olmayan bir model
içeren bir JSON nesnesi olmalıdır. input bir dize veya Responses öğeleri
dizisi olabilir.
Kabul edilen istek alanları
Bölüm başlığı “Kabul edilen istek alanları”| Alan | Kabul edilen şekil |
|---|---|
| Model ve girdi | Gerekli boş olmayan model; isteğe bağlı dize input veya bir öğe dizisi |
| Mesaj öğeleri | user, developer, system ve assistant mesajları; role uygun dize içeriği veya tipli içerik blokları |
| İçerik blokları | Üst öğelerinin izin verdiği yerlerde metin, girdi görselleri, girdi dosyaları, çıktı metni, retler ve akıl yürütme özeti/metin blokları |
| Araç geçmişi | function_call, function_call_output, custom_tool_call ve custom_tool_call_output öğeleri |
| Araçlar | Fonksiyon araçları artı serbest yerleşik veya barındırılan araç girdileri; tool_choice, auto, none, required, adlandırılmış fonksiyon/özel seçimler, barındırılan seçimler veya allowed_tools kabul eder |
| Akıl yürütme | reasoning.effort ve reasoning.summary (auto, concise, detailed veya none) |
| Devam ve önbellekleme | previous_response_id, store ve prompt_cache_key |
| Üretim kontrolleri | max_output_tokens, temperature, top_p, stop, presence_penalty ve frequency_penalty |
| Servis ve yürütme | stream, service_tier, parallel_tool_calls, instructions, metadata ve user |
| Genişletilmiş Responses alanları | Uyumlu rotalar için background, include, prompt, text ve truncation kabul edilir |
Bilinmeyen öğe türleri ileriye dönük uyumluluk için serbest tipli öğeler olarak kabul edilir. Çevrilen adaptörler yalnızca tanıdıkları öğe türlerini işler ve sağlayıcılarının temsil edemediği bir özelliği reddedebilir.
JSON ve SSE çıktısı
Bölüm başlığı “JSON ve SSE çıktısı”stream: true olduğunda yanıt text/event-stream olur. Köprü
response.created, çıktı öğesi ve metin/araç farkları ve tam olarak bir
terminal response.completed, response.failed veya response.incomplete
olayı gibi Responses olaylarını yayar. Normal bir akış data: [DONE] ile biter.
stream: false veya stream olmadığında aynı adaptör olayları tek bir
Responses JSON nesnesinde toplanır. Her iki form da seçilen modeli, çıktı
öğelerini, terminal durumunu ve kullanımı korur.
İstemciye yönelik Responses SSE çerçeveleri, SSE blok sınırlayıcısından önceki
ham bayt cinsinden ölçülen çerçeve başına 4 MiB ile sınırlandırılmıştır. HTTP
üzerinde sınırı aşan sonlandırılmamış bir yukarı akış çerçevesi, ardından data: [DONE] gelen sentetik bir response.failed olayıyla kapalı olarak başarısız
olur. Responses WebSocket köprüsünde aynı durum 502 websocket_protocol_error
yayar ve yukarı akış okuyucusunu iptal eder. Tam bir Responses terminal
çerçevesi yetkilidir: bu terminalden sonraki aşırı büyük veya hatalı
biçimlendirilmiş sondaki baytlar tamamlanan turu bir aktarım hatasıyla
değiştirmek yerine bırakılır.
Sağlayıcı bu ayrıntıları bildirmese bile her terminal Responses kullanım nesnesi her iki ayrıntı nesnesini de içerir:
{ "input_tokens": 0, "output_tokens": 0, "total_tokens": 0, "input_tokens_details": { "cached_tokens": 0 }, "output_tokens_details": { "reasoning_tokens": 0 }}Kullanılabilir olduğunda input_tokens_details cache_write_tokens da
içerebilir. Her zaman mevcut olan ayrıntı nesneleri katı Responses istemcileri
için bir uyumluluk garantisidir; sıfır olması “sağlayıcı böyle bir çalışma
yapmadı” anlamına gelmek zorunda değildir, “bildirilmedi” anlamına gelebilir.
Bir yanıtı istek günlüğüyle ilişkilendirme
Bölüm başlığı “Bir yanıtı istek günlüğüyle ilişkilendirme”Kabul edilen her HTTP Responses yanıtı, ocx-<32 hex> biçiminde proxy
tarafından oluşturulan bir kimlik içeren x-opencodex-request-id başlığını
taşır. Bu, yanıtı istek günlüğündeki ve kullanım raporlamasındaki satırına
bağlayan anahtardır.
Proxy bu değeri her zaman oluşturur ve arayanın sağladığı ya da yukarı akışın
döndürdüğü tüm kimliklerin üzerine yazar; bu nedenle yalnızca bu proxy’ye
özgüdür ve ilişkilendirme anahtarı olarak güvenle kullanılabilir. Başlık,
Access-Control-Expose-Headers içinde adlandırılır; bu sayede tarayıcı
JavaScript’i onu farklı kaynaktan okuyabilir — özel bir x- başlığı hatta
bulunsa bile aksi halde response.headers.get() için görünmezdir.
Kimlik doğrulama veya kaynak kabulü sırasında reddedilen Responses istekleri bu sarmalayıcıya hiç ulaşmaz ve kimlik taşımaz; dolayısıyla eksik başlık, isteğin günlüğe kaydedilmeden önce reddedildiği anlamına gelir.
Aynı yol üzerinde WebSocket yükseltmesi
Bölüm başlığı “Aynı yol üzerinde WebSocket yükseltmesi”websockets etkinleştirildiğinde bir istemci bir HTTP POST açmak yerine
/v1/responses’ı yükseltebilir. Kimlik doğrulama ve kaynak kabulü WebSocket el
sıkışması sırasında gerçekleşir. Her çerçevenin içinde tekrarlanmazlar.
İstemci JSON metin çerçeveleri gönderir:
{ "type": "response.create", "model": "saglayici/model", "input": "Hello", "tools": [], "generate": true}type dışındaki her şey Responses istek gövdesi haline gelir ve proxy tur için
akışı zorlar. Yeni bir response.create, bu soketteki önceki turu geçersiz
kılar ve iptal eder. response.processed işlem yapılmayan bir onay (no-op)
olarak kabul edilir. Ayrıştırılamayan veya ilgisiz çerçeve türleri yok sayılır.
Sunucu çerçeveleri JSON metin çerçeveleridir. Başarılı akışlı çıktı SSE zarfı
veya [DONE] olmadan SSE data: satırlarında görünecek aynı JSON yüklerini
kullanır. Akışsız dahili bir sonuç response.created, sıfır veya daha fazla
response.output_item.done çerçevesi ve ardından bir terminal çerçevesi olarak
yeniden çerçevelenir. Hatalar şu zarfı kullanır:
{ "type": "error", "status": 502, "error": { "type": "upstream_error", "message": "..." }, "headers": {}}generate: false içeren bir ısınma çerçevesi bir yukarı akışı çağırmaz. Boş bir
yanıt kimliği ve çıktı içermeyen sentetik bir response.created ve ardından
response.completed döndürür.
POST /v1/chat/completions
Bölüm başlığı “POST /v1/chat/completions”Bu uç nokta, gerekli bir model ve boş olmayan bir messages dizisi içeren
OpenAI uyumlu Chat Completions isteklerini kabul eder. Sistem, kullanıcı,
asistan ve araç mesajlarını dahili Responses öğelerine çevirir; fonksiyon
araçlarını, araç seçimini, görselleri, akıl yürütme çabasını ve desteklenen
yanıt formatlarını çevirir; normal Responses yönlendirme işlem hattını
çalıştırır; ardından sonucu geri çevirir.
Yapılandırılmış çıktı bu çevirinin bir parçasıdır: json_object veya
json_schema içeren response_format, yönlendirilen openai-chat modellerine
iletilir. POST /v1/responses üzerinde eşdeğer istek alanı text.format’tır:
yerel Responses rotaları onu ham Responses gövdesinde korur ve model bir
openai-chat sağlayıcısına yönlendiğinde response_format’a çevrilir.
Sağlayıcının noStructuredOutputModels listesinde yer alan bir model bu sohbet
hattında response_format’ı atlar; kardeş modeller çeviriyi korur.
Sınıflandırılmamış arka uçlar alanı alır ve proxy’nin yeteneklerini tahmin
etmesi yerine kendi hatalarını döndürür.
Akışsız çıktı object: "chat.completion" içerir. Akışlı çıktı object: "chat.completion.chunk" içeren SSE nesnelerini, seçenek farklarını,
finish_reason içeren bir terminal seçeneğini ve data: [DONE] kullanır. Araç
çağrısı ve kullanım bilgileri kaynak olayların bunları taşıdığı yerlere geri
çevrilir.
Dahili yürütme yolu Responses tabanlı olduğundan bir sağlayıcı adaptörü daha dar bir özellik kümesi uygulayabilir. Örneğin seçilen adaptör tarafından temsil edilemeyen bir istek özelliği anlamı sessizce değiştirilmek yerine bir hata olarak döndürülür.
POST /v1/messages ve count_tokens
Bölüm başlığı “POST /v1/messages ve count_tokens”Bu uç noktalar Claude Code ve uyumlu istemciler tarafından kullanılan Anthropic Messages lehçesini konuşur. Çoğu istek Responses’a çevrilir, normal şekilde yönlendirilir, ardından Anthropic JSON veya Anthropic SSE’ye geri çevrilir.
Yerel Anthropic doğrudan geçişi yalnızca bunların tümü doğru olduğunda uygundur:
- Claude Code yapılandırmasında yerel doğrudan geçiş devre dışı bırakılmamışsa;
- istenen model
claudeveyaanthropicile başlıyorsa; - istek yerel bir Anthropic taşıyıcısı veya
x-api-keykimlik bilgisi taşıyorsa; - geri döngü olmayan bir dinleyicide istek yalnızca
x-opencodex-api-keyiçinde geçerli proxy kabulü de taşıyorsa; ve - yapılandırılmış hiçbir takma ad veya model haritası bu model kimliğini yönlendirilen bir hedef için talep etmiyorsa.
Uygun bir istek Anthropic lehçesinde iletilir, böylece yerel beta başlıkları, düşünme imzaları ve abonelik kimliği uçtan uca kalır. Aksi takdirde Responses gidiş-dönüşünü alır.
Özel kabul başlığı asla iletilmez. Authorization veya x-api-key içinde
bulunan proxy kabul sırları da kaldırılır; ayrı bir gerçek Anthropic kimlik
bilgisi korunur. Belirsiz virgülle birleştirilmiş kimlik bilgisi başlıkları
iletilmek yerine kapalı olarak başarısız olur.
POST /v1/messages/count_tokens aynı model çözümlemesini ve doğrudan geçiş
kararını takip eder. Yerel olarak uygun bir istek Anthropic’in sayım uç
noktasına iletilir. Diğer istekler sistem içeriği, mesajlar ve araçlar üzerinden
yerel belgelenmiş tahmini kullanır ve şunu döndürür:
{ "input_tokens": 123 }Çözümlenemeyen tarih biçimli bir Desktop kimliği, keşifte yer almayan gerçek bir yerel model
kimliği de olabilir. Mevcut bilgi kimliği çözmeye yetmiyorsa Messages ve count-tokens sabit
desktop_model_mapping_unavailable hatasıyla HTTP 503 döndürür; bu, modelin geçersiz olduğunu kanıtlamaz.
Bilinmeyen eski hash takma adları HTTP 400 ile reddedilmeye devam eder. Her iki durumda da tarih
kaldırılmaz ve başka rotaya geçilmez. Bilinen kimlikler, kayıtlı eşlemeler, tam modelMap
eşleşmeleri ve tanınan gerçek yerel kimlikler aynı şekilde işlenir. Yeniden denemeden önce model
keşfini yenileyin veya bağlı hub profilini yeniden uygulayın; yalnızca tekrar denemek çözümü
garanti etmez.
GET /v1/models
Bölüm başlığı “GET /v1/models”format=desktop-config belirtilmezse aşağıdaki olağan katalog sözleşmeleri kullanılır:
| Sözleşme | Tetikleyici | Üst düzey şekil | Model kimliği davranışı |
|---|---|---|---|
| Anthropic model listesi | client_version olmadan anthropic-version başlığı veya ?flavor=anthropic |
Anthropic model bilgisi girdileriyle { "data": [...] } |
Claude Code okunabilir kimlikleri alır; Desktop profile özgü takma ad ailesini alabilir |
| Codex kataloğu | client_version sorgu parametresi |
{ "models": [...] } |
Yerel ve yönlendirilen girdiler daha zengin Codex katalog alanlarını, görünürlüğü, çabayı, WebSocket ve çoklu ajan meta verilerini taşır |
| Düz OpenAI listesi | Hiçbir tetikleyici yok | { "object": "list", "data": [...] } |
Görünür yerel kimlikler yalındır; yönlendirilen kimlikler takma adlar veya sağlayıcı/model’dir |
Desktop yapılandırma anlık görüntüsü
Bölüm başlığı “Desktop yapılandırma anlık görüntüsü”GET /v1/models?ids=desktop&format=desktop-config, user-agent’tan bağımsız olarak Desktop
anlık görüntüsünü seçer. Yanıt { "version": 1, "models": [...] } ve Cache-Control: no-store
başlığıdır. İstemci Accept: application/json, anthropic-version: 2023-06-01 ve mevcut veri
erişim kimlik bilgilerini gönderir; yönetici belirteci veya profil yüklemesi gerekmez.
Girdiler Codex katalog satırları değil, hub’ın verdiği Desktop yapılandırma modelleridir.
Bu biçim ids=cli veya herhangi bir client_version ile kullanılırsa HTTP 400 döner. Biçim
seçicisi yoksa yukarıdaki olağan sözleşmeler değişmez. Claude kapalıysa
{ "version": 1, "models": [] } döner; bağlı Desktop apply bunu kullanılamaz sayar ve yeni
profil yazmaz. Sürüm 1 yerine olağan katalog döndüren eski hub’lar desteklenmez; yerel üretilmiş
kimliklere geçilmez.
Anlık görüntü salt okunur model listesidir; anahtar döndürme veya profil yükleme API’si değildir.
Desktop anahtar taşıma, kurtarma ve bağlantıyı kesme mevcut istemci yaşam döngüsünü kullanır.
Döndürme modelleri ve seçimi korur; CLI rotation alanı committed ile rolled_back sonucunu
ayırır. Bağlantıyı kesme yönetilen ayarları geri yükler veya tanınan eski profil için standart
moda dönüşü bildirir; kullanıcı alanları ve sonraki geçerli seçimler korunur. Çatışma veya eksik
kurtarma tamamlanmış sayılmaz. Disk değişiklikleri için Desktop’ı yeniden başlatın; bağlantıyı
kesmek hub anahtarını otomatik iptal etmez. Desktop kılavuzuna bakın.
Thinking yeniden gönderimi ve önbellek, ayrı #3719 işidir.
POST /v1/live ve Realtime yan bandı
Bölüm başlığı “POST /v1/live ve Realtime yan bandı”Aşağıdaki hesap bağlantısı yerel Codex istemcileri içindir. Harici API anahtarıyla dikte ve GPT-Live kullanımı için İngilizce ses API belirtimine bakın.
Connections > API keys altında Dikte ve Canlı Ses bölümleri bulunur. Veri anahtarı yalnızca form belleğinde tutulur. Dikte seçilen dosyayı gönderir; ses bağlantısı kontrolü mikrofon kullanmadan oturum onayını bekler. Yapılandırılmış olması bağlantının başarılı olduğu anlamına gelmez.
POST /v1/live, ChatGPT/Codex App Frameless çağrı oluşturma yüzeyini kabul
eder. POST /v1/realtime/calls, OpenAI Realtime çağrı oluşturma yüzeyini kabul
eder. opencodex uygun bir OpenAI ailesi rotası seçer, yukarı akış kimlik
doğrulama modu için çağrı oluşturma isteğini normalleştirir ve sınırlı yanıtı
iletir.
Çağrı oluşturulduktan sonra istemciler desteklenen herhangi bir gelen formu kullanarak bir yan bant WebSocket’e katılabilir:
/v1/live/{callId}/v1/realtime/calls/{callId}/v1/realtime?call_id={callId}
Proxy yukarı akış katılım URL’sini normalleştirir ve ardından her iki yönde metin ve ikili çerçeveleri şeffaf bir şekilde iletir. İstemci protokol başlıkları korunurken yukarı akış kimlik doğrulaması proxy mülkiyetinde kalır.
POST /v1/responses/compact
Bölüm başlığı “POST /v1/responses/compact”Sıkıştırma, uzun bir Responses görüşmesini kısaltması gereken istemciler için değiştirme geçmişini döndürür.
| Rota türü | Davranış |
|---|---|
| Kurallı ChatGPT veya resmi OpenAI rotası | İsteği çözümlenen hesap ve model kimlik doğrulamasıyla yerel /responses/compact uç noktasına iletir |
| Diğer yönlendirilen model | Bir compaction_trigger ile dahili, akışsız, araçsız bir sıkıştırma turu çalıştırır; encrypted_content’i bir ocx1: zarfı olan tam olarak bir sentetik compaction öğesi gerektirir; bu özeti v1 değiştirme geçmişine çözer |
Yerel sıkıştırma yanıtları, bildirilen Content-Length değeri sınırı zaten aşan
yanıtlar da dahil olmak üzere maksimum 32 MiB ile arabelleğe alınır.
Sıkıştırmaya özgü hatalar şunları içerir:
| Durum | Tip veya kod | Anlamı |
|---|---|---|
| 400 | invalid_request_error |
Geçersiz JSON/gövde şekli veya eksik model |
| 404 | invalid_request_error |
İstenen model yönlendirilemez |
| 499 | client_cancelled |
İstemci iletme veya arabelleğe alma sırasında iptal etti |
| 502 | compact_response_too_large |
Yerel sıkıştırma çıktısı 32 MiB’yi aştı |
| 502 | upstream_error |
Bağlantı, okuma veya sentetik sıkıştırma turu arızası |
| 502 | invalid_response_error |
Sentetik tur tam olarak bir geçerli, boş olmayan ocx1: sıkıştırma öğesi üretmedi |
Kimlik doğrulama matrisi
Bölüm başlığı “Kimlik doğrulama matrisi”Yalnızca geri döngü bağlantısında veri düzlemi kabulü yapılandırılmış bir
anahtar gerektirmez. Uzak bir bağlantıda aşağıdaki matrisi kullanın. “Özel”,
X-OpenCodex-API-Key anlamına gelir; diğer sütunlar Authorization: Bearer ...
ve x-api-key anlamına gelir.
| Yüzey | Özel | Bearer | x-api-key |
|---|---|---|---|
/v1/responses HTTP ve WebSocket |
Kabul Edilir | Kabul Edilir | Reddedilir |
/v1/responses/compact |
Kabul Edilir | Kabul Edilir | Reddedilir |
/v1/chat/completions |
Kabul Edilir | Kabul Edilir | Reddedilir |
/v1/messages ve /v1/messages/count_tokens |
Kabul Edilir | Kabul Edilir | Kabul Edilir |
/v1/models |
Kabul Edilir | Kabul Edilir | Kabul Edilir |
/v1/live, /v1/realtime/calls ve yan bant katılımları |
Kabul Edilir | Kabul Edilir | Kabul Edilir |
Responses ailesi ve Chat istekleri, özel başlıkta veya Bearer alanında bir proxy anahtarını kabul eder. Yerel Codex rotalarında seçilen kayıtlı Codex kimlik bilgisi kabul bearer’ının yerini alır; diğer rotalarda bu bearer kaldırılır. Proxy anahtarı hiçbir zaman upstream kimlik bilgisi olarak kullanılmaz. Ayrı bir sağlayıcı bearer’ı da gönderiyorsanız proxy anahtarını özel başlığa koyun.
Anahtarı olmayan ve OAuth kullanmayan bir Cursor rotası, çağıranın ayrı bearer’ını kullanabilir; proxy sırrını veya otomatik eklenen ChatGPT main kimlik bilgisini kullanamaz. Combo/policy seçimi ve gerçekleşen shadow/thread-spawn rota değişiklikleri, çağıranın ham kimlik bilgilerini yeni hedeflere aktarmaz. Kanonik OpenAI yönlendirmesi, dahili rota değişikliğinden sonra çağıranın proxy anahtarı olmayan tek bearer’ını yalnızca JWT’si bir ChatGPT hesap claim’i içeriyorsa ve açıkça belirtilmiş herhangi bir hesap başlığı bu claim ile eşleşiyorsa geri yükleyebilir. Çağıranın kimlik doğrulamasını isteğe bağlı OpenAI sidecar’larına iletmek için tek bir JWT ve onunla eşleşen, açıkça belirtilmiş bir chatgpt-account-id gerekir. Opaque bearer’lar, açıkça belirtilmiş bir hesap başlığı olsa bile rota değişikliklerinden sonra geri yüklenmez. Diğer durumlarda son hedefin kendi yapılandırılmış, OAuth veya kayıtlı kimlik bilgisi bulunmalıdır; aksi hâlde istek yerel olarak başarısız olur. Rota değişmeden yalnızca thread-spawn işaretinin bulunması kimlik bilgilerini kaldırmaz.
Yapılandırılmış anahtarı olmayan Cursor’a gönderilen Chat isteğinde, kayıtlı main kimliğiyle isteğe bağlı tamamlama ancak bir OpenAI yardımcısı gerçekten planlandığında ve kanonik Direct adayı bulunduğunda yapılır. İlgisiz bir Cursor isteği bu yoldan native main üzerinde sahiplik almaz ve profil geçişini geciktirmez. Yardımcı kimlik bilgileri başlangıç ve profil geçişi korumalarına uyar ve Cursor bearer’ından ayrı tutulur. Pool ve belirli hesaba yönelen yardımcılar mevcut hesap seçimini korur.
Claude replay, main kimlik bilgisini yalnızca ilgili turn tarafından sahipliği alınmış bir bellek snapshot’ında tutar ve yalnızca son hedef kanonik bir ChatGPT rotasıysa geri yükler.
Yaygın hata sözlüğü
Bölüm başlığı “Yaygın hata sözlüğü”Hatalar gerektiğinde istemci lehçesinin zarfını kullanır, ancak bu durum/kod anlamları kararlıdır:
| Durum | Tip veya kod | Anlamı |
|---|---|---|
| 401 | authentication_error |
Gerekli bir proxy kabul kimlik bilgisi eksik veya geçersiz |
| 403 | origin_rejected |
Bir Responses/OpenAI veri düzlemi isteği veya WebSocket yükseltmesi izin verilmeyen bir kaynaktan geldi |
| 503 | combo_unavailable |
Seçilen komdodaki her hedef kullanılamaz, soğumada, devre dışı veya başka şekilde uygun değil |
| 400 | unreadable_encrypted_agent_task |
Şifrelenmiş bir v2 çalışan görevinin onu işleyebilecek uygun kurallı ChatGPT hedefi veya allowEncryptedV2AgentTasks: true ile açıkça güvenilen doğrudan anahtar kimlik doğrulamalı Responses hedefi yok |
| 426 | upgrade_required |
Responses WebSocket aktarımı devre dışı bırakıldı veya yükseltme başarısız oldu; HTTP kullanın |
Anthropic kaynaklı arızalar Anthropic’in hata zarfında işlenir, bu nedenle
kaynak reddi OpenAI tarzı origin_rejected gövdesi yerine bu lehçede 403
permission_error olur.
Şifrelenmiş içerik hijyeni
Bölüm başlığı “Şifrelenmiş içerik hijyeni”Proxy gerçek arka uç şifreli metnine donuk muamelesi yapar. Yapısal olarak geçerli şifreli metin bayt bayt korunur: opencodex şifresini çözmez, içeriğini çevirmez veya başka bir sağlayıcı için yeniden şifrelemez.
Bazı ajan kancaları geçmişte encrypted_content yuvasına düz metin denetim
metni yerleştirmiştir. Uyumluluk için proxy yapısal olarak geçerli Fernet
çalışmalarını değiştirmeden tutarken bu düz metni metin parçalarına ayırır. Bir
agent_message bu onarım sırasında tüm şifrelenmiş parçaları kaybederse normal
bir kullanıcı mesajı haline gelir. Geçerli bir v2 görevi gerçekten şifrelenmiş
kalırsa ancak seçilen yönlendirilen hedef yerel ChatGPT şifreli metnini
okuyamazsa opencodex bu sağlayıcıya okunamayan baytlar göndermek yerine
unreadable_encrypted_agent_task ile başarısız olur. Çalışan görevleri
etrafındaki istemci davranışı için Alt Ajan
Arayüzü sayfasına bakın.

