fix(codex-link): show added models as provider/model, drop the 9R mark
User decision (10 Oct 2026): combos keep their own name; single models read as short provider/model with the version kept (cc/opus-5-5, agy/gemini-3.8-flash-high, bekci/kurnaz). No-think copies show their real provider with a "(no-think)" suffix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9a54705ed5
commit
ac0fdcf355
4 files changed
+78
-26
No files matched your search
@@ -84,34 +84,61 @@ def ide_yapilandirma(agent=AGENT):
|
||||
return base.rstrip("/"), varsayilan, adlar
|
||||
|
||||
|
||||
DOKUZ_ISARET = "9R · "
|
||||
AITURK_EKI = " (AITURK)"
|
||||
|
||||
|
||||
def _isaret(ad):
|
||||
"""Gecidin dogrudan 9Router'dan gelen tekil modele koydugu kisa isaret korunur (kullanici karari,
|
||||
9 Ekim 2026: "9Router" yazisi uzun, hic yazmamak da sorun; "9R" olarak kisa gorunsun)."""
|
||||
return DOKUZ_ISARET if (ad or "").startswith(DOKUZ_ISARET) else ""
|
||||
# Gecidin kisa saglayici kodu -> kullanicinin gormek istedigi kod (10 Ekim 2026: "agy/gemini").
|
||||
_SAGLAYICI_KISA = {"ag": "agy"}
|
||||
# Saglayici kodu zaten soyledigi icin model adinin basinda tekrar edilmeyen uretici adi ("cc/opus-5-5").
|
||||
_TEKRAR = ("claude-",)
|
||||
DUSUNMESIZ = "no-think-"
|
||||
|
||||
|
||||
def kisa_ad(ad):
|
||||
"""Codex secicisinde gorunecek ad: yalniz kullanicinin ekledigi saglayici + model adi
|
||||
(kullanici istegi, 9 Ekim 2026). "OmniRoute · " / "9Router · " gibi gecit onekleri ve aradaki
|
||||
saglayici halkalari gosterilmez: "nano/qwen/qwen3.8-27b" -> "nano/qwen3.8-27b",
|
||||
"OmniRoute · ag/gemini-3.8-flash" -> "ag/gemini-3.8-flash", combo adi oldugu gibi kalir."""
|
||||
on = _isaret(ad)
|
||||
"""Gecit onekleri ("OmniRoute · ", "9Router · ", "9R · ") ve aradaki saglayici halkalari atilir:
|
||||
"nano/qwen/qwen3.8-27b" -> "nano/qwen3.8-27b", "9R · ag/gemini-3.8-flash" -> "ag/gemini-3.8-flash",
|
||||
combo adi oldugu gibi kalir. Kullanici karari (10 Ekim 2026): "9R" yazilmaz."""
|
||||
ad = (ad or "").split(" · ")[-1].strip()
|
||||
parcalar = [p for p in ad.split("/") if p]
|
||||
if len(parcalar) <= 2:
|
||||
return on + ("/".join(parcalar) or ad)
|
||||
return on + parcalar[0] + "/" + parcalar[-1]
|
||||
return "/".join(parcalar) or ad
|
||||
return parcalar[0] + "/" + parcalar[-1]
|
||||
|
||||
|
||||
def adlandir(girdiler, dolu=()):
|
||||
def gorunen_ad(kimlik, ad, tur="model"):
|
||||
"""Secicide gorunen ad (kullanici karari, 10 Ekim 2026): combo yalniz kendi adiyla; tek model
|
||||
"saglayici/model" kalibinda, kisa ve surumlu: "9R · cc/claude-opus-5-5" -> "cc/opus-5-5",
|
||||
"9R · ag/gemini-3.8-flash-high" -> "agy/gemini-3.8-flash-high", "Agnes 2.0 Flash" (agnes-agnes-2.0-flash)
|
||||
-> "agnes/agnes-2.0-flash", "kurnaz" (bekci-kurnaz) -> "bekci/kurnaz". Dusunmesiz kopya asil
|
||||
saglayicisiyla gorunur: "no-think/claude-opus-5-5" -> "cc/opus-5-5 (no-think)"."""
|
||||
yalin = kisa_ad(ad)
|
||||
if tur == "combo":
|
||||
return yalin
|
||||
kim, ek = kimlik or "", ""
|
||||
if kim.startswith(DUSUNMESIZ):
|
||||
kim, ek = kim[len(DUSUNMESIZ):], " (no-think)"
|
||||
if kim.startswith("9router-"):
|
||||
kim = kim[len("9router-"):]
|
||||
saglayici, _, model = yalin.partition("/")
|
||||
if not model or ek:
|
||||
kod, _, kalan = kim.partition("-")
|
||||
if not kod or not kalan:
|
||||
return yalin
|
||||
saglayici, model = kod, model or kalan
|
||||
model = model.replace(" ", "-")
|
||||
for tekrar in _TEKRAR:
|
||||
if model.lower().startswith(tekrar) and len(model) > len(tekrar):
|
||||
model = model[len(tekrar):]
|
||||
return f"{_SAGLAYICI_KISA.get(saglayici.lower(), saglayici)}/{model}{ek}"
|
||||
|
||||
|
||||
def adlandir(girdiler, dolu=(), turler=None):
|
||||
"""[(kimlik, tam_ad)] -> {kimlik: gorunen_ad}. Kisa adlar cakisirsa aradaki halkalar geri konur;
|
||||
yine cakisirsa kimligin sonu eklenir. `dolu`: baska kaynaktan gelen, zaten kullanilan adlar."""
|
||||
kisa = {k: kisa_ad(a) for k, a in girdiler}
|
||||
tam = {k: _isaret(a) + (a or "").split(" · ")[-1].strip() for k, a in girdiler}
|
||||
yine cakisirsa kimligin sonu eklenir. `dolu`: baska kaynaktan gelen, zaten kullanilan adlar.
|
||||
`turler` ({kimlik: "combo"|"model"}) verilirse adlar gorunen_ad kuraliyla yazilir."""
|
||||
if turler is None:
|
||||
kisa = {k: kisa_ad(a) for k, a in girdiler}
|
||||
else:
|
||||
kisa = {k: gorunen_ad(k, a, turler.get(k, "model")) for k, a in girdiler}
|
||||
tam = {k: (a or "").split(" · ")[-1].strip() for k, a in girdiler}
|
||||
sayac = {}
|
||||
for v in list(kisa.values()) + list(dolu):
|
||||
sayac[v.lower()] = sayac.get(v.lower(), 0) + 1
|
||||
@@ -175,8 +202,6 @@ def sirala_codex(modeller, ekler):
|
||||
slug = m.get("slug", "")
|
||||
bilgi = bilgiler.get(slug, {})
|
||||
ad = kisa_ad(m.get("display_name") or slug)
|
||||
if ad.startswith(DOKUZ_ISARET):
|
||||
ad = ad[len(DOKUZ_ISARET):]
|
||||
if bilgi.get("kind") == "combo":
|
||||
return (0, ad.casefold(), "", slug)
|
||||
if slug.startswith("ide/"):
|
||||
@@ -208,7 +233,7 @@ ACIKLAMA_SINIRI = 30
|
||||
_AILE = (("opus", "opus"), ("sonnet", "sonnet"), ("haiku", "haiku"), ("astra", "astra"), ("terra", "terra"),
|
||||
("luna", "luna"), ("sol", "sol"), ("gemini", "gemini"), ("qwen", "qwen"), ("glm", "glm"),
|
||||
("abliterated", "abliterated"), ("deepseek", "deepseek"), ("llama", "llama"), ("gemma", "gemma"))
|
||||
_SAGLAYICI = {"cc": "Claude", "cx": "Codex", "ag": "Antigravity", "nano": "NanoGPT", "hf": "HuggingFace",
|
||||
_SAGLAYICI = {"cc": "Claude", "cx": "Codex", "ag": "Antigravity", "agy": "Antigravity", "nano": "NanoGPT", "hf": "HuggingFace",
|
||||
"huggingface": "HuggingFace", "agnes": "Agnes", "bekci": "Bekçi"}
|
||||
_SANSURSUZ = re.compile(r"uncensored|abliterat|obliterat|derestrict|heretic|unshackled", re.I)
|
||||
|
||||
@@ -264,9 +289,7 @@ def aciklama(kimlik, ad, tur, kayit=None):
|
||||
if uyeler:
|
||||
return _sigdir("Sıralı: ", _yapraklar(topoloji), ">")
|
||||
return "Takım"
|
||||
kisa = kisa_ad(ad)
|
||||
if kisa.startswith(DOKUZ_ISARET):
|
||||
kisa = kisa[len(DOKUZ_ISARET):]
|
||||
kisa = gorunen_ad(kimlik, ad, "model")
|
||||
kod = kisa.split("/")[0].lower() if "/" in kisa else (kimlik or "").split("-")[0].lower()
|
||||
parcalar = [_SAGLAYICI.get(kod, kod) or "Tek model"]
|
||||
if _SANSURSUZ.search(kisa) or _SANSURSUZ.search(kimlik or ""):
|
||||
|
||||
Reference in new issue
Block a user