From 973922291904592aeaf672834ece5ebbba768497 Mon Sep 17 00:00:00 2001 From: yilsem Date: Sat, 10 Oct 2026 15:52:44 +0300 Subject: [PATCH] fix(codex-link): only reject degenerate summaries, not short correct ones The size-proportional minimum (input/250, cap 4000) rejected a correct summary: a 646,955 byte thread (225k tokens, five labelled facts in a long log) was summarized by the subscription model in 1501-1701 characters, the bridge demanded 2587, and Codex could not continue the thread on the selected model. The floor now only catches broken output (input/2000, cap 300). Memory loss is prevented by who writes the summary, not by its length. Co-Authored-By: Claude Opus 5.5 --- apps/desktop/assets/codex-bridge/ozet_kopru.py | 10 ++++++---- .../assets/codex-bridge/test_ozet_kopru.py | 16 ++++++++++------ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/apps/desktop/assets/codex-bridge/ozet_kopru.py b/apps/desktop/assets/codex-bridge/ozet_kopru.py index 13a3756..0e82e11 100644 --- a/apps/desktop/assets/codex-bridge/ozet_kopru.py +++ b/apps/desktop/assets/codex-bridge/ozet_kopru.py @@ -51,11 +51,13 @@ KISA_MESAJI = ("AstraBridge: Sohbet ozeti cok kisa cikti (%d karakter, en az %d def en_az_karakter(girdi_bayt, ayar=None): """Bu buyuklukteki bir konusmanin ozeti en az kac karakter olmali. - Olcu: 10 Ekim 2026'da 1.018.151 baytlik sohbet 2201 karaktere indi ve hafiza kayboldu. - Kucuk sohbetlerde esik kuculur ki kisa ama dogru ozetler reddedilmesin.""" + Yalniz bozuk/bos sayilacak kadar kisa ozeti yakalar; ozetin yeterliligini boyuttan cikarmaz. + Olcum (10 Ekim 2026, 646.955 baytlik gunluk + bes olgu): guclu modelin dogru ozeti 1500-1700 + karakterdi; boyuta oranli yuksek esik (2587) bu dogru ozeti reddedip sohbeti kilitledi. + Hafiza kaybinin asil onlemi ozeti guclu modele yazdirmaktir (bridge.py _ozet_openai).""" ayar = ayar or {} - tavan = int(ayar.get("en_az_tavan", 4000)) - oran = max(1, int(ayar.get("en_az_oran", 250))) # her 250 bayt girdi icin 1 karakter + tavan = int(ayar.get("en_az_tavan", 300)) + oran = max(1, int(ayar.get("en_az_oran", 2000))) # her 2000 bayt girdi icin 1 karakter return max(0, min(tavan, int(girdi_bayt) // oran)) diff --git a/apps/desktop/assets/codex-bridge/test_ozet_kopru.py b/apps/desktop/assets/codex-bridge/test_ozet_kopru.py index 1490e29..7a27043 100644 --- a/apps/desktop/assets/codex-bridge/test_ozet_kopru.py +++ b/apps/desktop/assets/codex-bridge/test_ozet_kopru.py @@ -110,13 +110,17 @@ class Akis(unittest.TestCase): self.assertEqual(o.ozet_metni(coz(a.feed(ham))[1]["item"]), "ozet metni") def test_anormal_kisa_ozet_gecmisin_yerine_konmaz(self): - # 10 Ekim 2026: 1.018.151 baytlik sohbet 2201 karaktere indi; bu ozet kabul edilmemeli. - self.assertEqual(o.en_az_karakter(1018151), 4000) - self.assertEqual(o.en_az_karakter(100000), 400) + # Esik yalniz bozuk sayilacak kadar kisa ozeti yakalar. 10 Ekim 2026 olcumu: 646.955 baytlik + # sohbetin dogru ozeti 1501-1701 karakterdi ve boyuta oranli eski esik onu reddedip sohbeti kilitledi. + self.assertEqual(o.en_az_karakter(1018151), 300) + self.assertEqual(o.en_az_karakter(646955), 300) + self.assertEqual(o.en_az_karakter(100000), 50) self.assertEqual(o.en_az_karakter(0), 0) - self.assertEqual(o.en_az_karakter(1018151, {"en_az_tavan": 1500}), 1500) + self.assertEqual(o.en_az_karakter(1018151, {"en_az_tavan": 1500, "en_az_oran": 250}), 1500) + for gercek_ozet in (1501, 1648, 1701): + self.assertGreater(gercek_ozet, o.en_az_karakter(646955)) ham = sse({"type": "response.created", "response": {"id": "r1"}}, - {"type": "response.output_item.done", "item": self._mesaj("k" * 2201)}, + {"type": "response.output_item.done", "item": self._mesaj("k" * 120)}, {"type": "response.completed", "response": {"id": "r1", "status": "completed"}}) a = o.OzetAkisi(tohum="7", en_az=o.en_az_karakter(1018151)) olaylar = coz(a.feed(ham) + a.flush()) @@ -126,7 +130,7 @@ class Akis(unittest.TestCase): self.assertTrue(a.kisa) self.assertIn("REDDEDILDI", a.sonuc_notu()) # Yeterli uzunlukta ozet ayni esikle kabul edilir; kucuk sohbetin kisa ozeti de reddedilmez. - for metin, esik in (("u" * 4000, o.en_az_karakter(1018151)), ("kisa ama dogru ozet", o.en_az_karakter(3000))): + for metin, esik in (("u" * 1501, o.en_az_karakter(646955)), ("kisa ama dogru ozet", o.en_az_karakter(3000))): b = o.OzetAkisi(tohum="8", en_az=esik) ham2 = sse({"type": "response.output_item.done", "item": self._mesaj(metin)}, {"type": "response.completed", "response": {"id": "r2"}})