Documentation
¶
Overview ¶
Package assemble — prompt bağlamının DETERMİNİSTİK kurulumu (K3 / AI Faz 4.5, v0.9.1187).
Planın K3 kararı: bağlam bir öncelik merdiveniyle ve kademeli budamayla kurulur; her katman "≤N satır + [kırpıldı] işareti" kuralıyla girer. Seçenek (b) (LLM ile özetleyerek yuvarlanan bağlam) ve (c) (ham JSON'u modele bırak) elendi: biri küçük modelde özet kalitesi riski + ek çağrı maliyeti, diğeri guided router'ın VARLIK SEBEBİ olan başarısızlık modu.
Bu dosya merdivenin EN ALT basamağı: konuşma geçmişi. Diğer katmanlar (hipotez kataloğu, DeepEvidence, korelasyon, KB chunk'ları) buraya taşındıkça paket büyür.
Paket bilerek stdlib-only ve şekil-bağımsız: `copilot.ChatMessage` tipini içeri almak, saf bir bütçe hesabını transport şekline bağlardı (ve copilot → ai/provider bağımlılığı zaten var; ters yönü açmak döngü riskini davet eder). Çağıran dilimleme indeksini alır, kendi tipiyle keser.
Index ¶
Constants ¶
const HistoryMaxRunes = 6000
HistoryMaxRunes — geçmişin rune bütçesi.
6000, çekmecenin KANIT bütçesiyle (drawerEvidenceMaxRunes) aynı sayı ve bu bilinçli bir oran: geçmiş, kanıttan DAHA fazla yer kaplamamalı. Bir sohbet turu prompt'ta üç şeyi birden taşıyor — sistem prompt'u, kanıt paketi ve geçmiş — ve küçük modelde en pahalı hata, taze kanıtın eski konuşmayla bağlamdan atılmasıdır. Eşitlik "geçmiş kanıtı ezemez" kuralının en sade hâli.
const HistoryTrimNote = "" /* 150-byte string literal not displayed */
HistoryTrimNote — modele söylenen kırpma işareti.
Sessiz kırpma en pahalı seçenek olurdu: model, olmayan bir konuşmayı hatırlıyormuş gibi davranır ("az önce dediğin gibi…") ve operatör modelin uydurduğunu sanır. İşaret, "hatırlamıyorum" demenin dürüst yolu.
Variables ¶
This section is empty.
Functions ¶
func ClampHistory ¶
ClampHistory — geçmişin KAÇ turunun prompt'a gireceği.
EN YENİDEN geriye doğru yürür ve bütçe dolunca durur; döndürdüğü `keep`, çağıranın kuyruktan alacağı tur sayısıdır (`msgs[len(msgs)-keep:]`). `trimmed` düşen tur sayısı — sıfırdan büyükse çağıran HistoryTrimNote'u başa eklemeli.
Sözleşmenin üç köşesi:
- EN AZ BİR tur her zaman kalır. Son tur aktif sorunun kendisi; bütçeye tek başına sığmasa bile düşürmek, cevaplanacak soruyu silmek olurdu. (Aşırı büyük tek bir turu KESMEK bu fonksiyonun işi değil — çağıran kendi alan-özel klamplarını uygular; burada karar "kaç tur".)
- Sayı tavanı da korunur (maxTurns): rune bütçesi bol olsa bile 40 kısa turluk bir konuşma küçük modelde odak kaybettirir.
- Karar yalnız GİRDİYE bağlı: aynı konuşma her zaman aynı kesimi verir. Rastgelelik ya da zaman bağımlılığı, "dün çalışıyordu" sınıfı hataların kaynağıdır.
SAF, tablo-testli.
func HasTrimNote ¶
HasTrimNote — bir metnin kırpma işaretini taşıyıp taşımadığı. Testler ve çağıranın idempotenslik kontrolü için (aynı konuşma iki kez klamplanırsa ikinci bir işaret eklenmemeli).
func RuneLens ¶
RuneLens — metin dilimini ClampHistory'nin beklediği uzunluk dizisine çevirir. Ayrı fonksiyon, çünkü çağıranın tipi (copilot.ChatMessage, provider.ChatMessage…) burada bilinmiyor ve bilinmemeli.
func TrimNoteIfNeeded ¶
TrimNoteIfNeeded — kırpma varsa işaret, yoksa boş. Çağıranın `if` yazmaması için; işareti unutmak sessiz kırpmaya geri dönmek demek.
Types ¶
This section is empty.