التوثيق

طبقة الذكاء العلمي

ست خوارزميات ضغط مبنية على نظرية المعلومات ونظرية الرسم البياني والميكانيكا الإحصائية.

lean-ctx يتجاوز مطابقة الأنماط. ست خوارزميات تعمل معاً لتقرر ما يُحتفظ به وما يُحذف وأين يُوضع - كل ذلك تلقائياً.

هذه الخوارزميات تشغّل طبقة الذكاء المستقلة. تنشط أثناء كل استدعاء ctx_read وctx_preload وctx_overview.

كيف تتفاعل الطبقات

الخوارزميةتقرربناءً على
Spectral Relevanceأي الملفات مهمةرسم الاعتماديات + PageRank
Boltzmann Allocationعدد الرموز لكل ملفتخصص المهمة + درجة الصلة
Predictive Surpriseأي السطور تُحتفظالإنتروبيا المتقاطعة لرموز BPE
MMR Deduplicationأي السطور زائدةتشابه Jaccard ثنائي الحرف
Semantic Chunkingكيفية ترتيب المخرجاتحدود AST + تدفق الانتباه
BPE Optimizationكيفية ترميز النص النهائيقواعد ضغط على مستوى الرموز

تسجيل المفاجأة التنبؤية

المفاجأة التنبؤية تقيس الإنتروبيا المتقاطعة مقابل تكرار رموز BPE.

كيف يعمل

  1. كل سطر يُرَمَّز باستخدام o200k_base.
  2. لكل رمز، يقدّر احتمال زيبفيان التكرار المتوقع.
  3. تُحسب الإنتروبيا المتقاطعة.
  4. السطور التي تقل عن عتبة المفاجأة هي مرشحة للإزالة.

مثال

// Low surprise (boilerplate) - candidate for removal:
return Ok(());                    // surprise: 0.12
use std::collections::HashMap;   // surprise: 0.18

// High surprise (unique logic) - always preserved:
let decay = (-alpha * dist as f64).exp();   // surprise: 0.89
scores[j] += heat[i] * decay / degree;      // surprise: 0.94

لماذا يهم هذا

المفاجأة التنبؤية تزيل 15-30% من الكود النموذجي أكثر من إنتروبيا مستوى الأحرف.


انتشار الصلة الطيفية

Spectral Relevance تجد الملفات المتصلة هيكلياً بالملفات ذات الصلة.

كيف يعمل

خوارزميتان للرسم البياني تعملان على رسم اعتماديات المشروع:

  1. انتشار الحرارة - الملفات الأولية المطابقة تتلقى "حرارة" أولية تنتشر عبر حواف الاستيراد.
  2. مركزية PageRank - الملفات المستوردة من ملفات عديدة تتلقى درجات مركزية أعلى.

درجة الصلة النهائية: 0.7 × حرارة + 0.3 × pagerank.

مثال

Task: "fix authentication bug"

Direct matches:       auth.ts, login.ts
Heat diffusion adds:  middleware.ts (imports auth.ts)
                      session.ts (imported by auth.ts)
PageRank promotes:    db.ts (imported by 18 files - structural hub)

Result: 5 files preloaded instead of 2, covering the full blast radius.

بدون إعدادات

رسم الاعتماديات يُبنى تلقائياً عند الاستخدام الأول.


تخصيص سياق بولتزمان

تخصيص بولتزمان يستخدم الميكانيكا الإحصائية لتوزيع الرموز بشكل مثالي.

كيف يعمل

  1. كل ملف لديه درجة صلة Ei.
  2. يُشتق معامل حرارة β من المهمة.
  3. ميزانيات الرموز تتبع توزيع بولتزمان: budgeti = total × (eβ·Ei / Σ eβ·Ej)
  4. يُفرض حد أدنى وأقصى للميزانيات (128-4096 رمز لكل ملف).

مثال

Task: "fix the JWT validation in auth middleware"
Task specificity: 0.85 (specific) → β = 4.2

File            | Relevance | Budget | Mode
auth.ts         |      0.92 |  3,200 | full
middleware.ts   |      0.78 |  1,800 | full
session.ts      |      0.45 |    420 | map
db.ts           |      0.31 |    180 | signatures
routes.ts       |      0.22 |    128 | signatures
                                ─────
Total:                         5,728 tokens (within 8,000 budget)

Reciprocal Rank Fusion (RRF) Cache Eviction

lean-ctx uses Reciprocal Rank Fusion for cache eviction decisions, replacing the earlier Boltzmann-inspired weighted scoring. RRF handles incomparable signals (time in seconds, frequency as counts, size in tokens) without arbitrary weight tuning.

AspectLegacy (Boltzmann)Current (RRF)
Signal handlingMixed units in one formula (0.4×recency + 0.3×frequency + 0.3×size)Each signal ranked independently, then fused
Weight tuningRequires manual weight calibration (arbitrary 0.4/0.3/0.3)No weights - only K=60 (standard IR parameter)
Edge casesLarge files dominate due to log-scaling of sizeFair treatment - each signal contributes equally via rank

Formula: RRF(d) = Σ 1/(K + ranki(d)) - entries with the lowest fused score are evicted first. This produces monotonically correct ordering regardless of signal magnitude differences.


التقطيع الدلالي مع جسور الانتباه

نماذج اللغة تعاني من مشكلة "الضياع في الوسط".

كيف يعمل

  1. اكتشاف القطع - تُجمّع سطور المصدر في قطع دلالية.
  2. ترتيب الصلة - القطع المطابقة تُرقّى إلى الأعلى.
  3. جسور الانتباه - بين القطع، يدرج lean-ctx علامات جسر.
  4. مراسي الذيل - آخر 2-3 سطور تُكرر في النهاية.

مثال

// Without chunking (flat output):
import { db } from '../pages/docs/db';
import { hash } from '../pages/docs/crypto';
const MAX_RETRIES = 3;
export function createUser(...) { ... }
export function validateToken(...) { ... }    ← lost in the middle
export function deleteUser(...) { ... }

// With semantic chunking (task: "fix token validation"):
export function validateToken(...) { ... }    ← promoted to top
---
export function createUser(...) { ... }
export function deleteUser(...) { ... }
---
import { db } from '../pages/docs/db';
const MAX_RETRIES = 3;
---
// anchor: validateToken signature                ← tail anchor

إزالة التكرار MMR

MMR تزيل التكرار مع الحفاظ على المعلومات الفريدة.

كيف يعمل

  1. لكل سطر، تُحسب تشابه Jaccard ثنائي الحرف.
  2. درجة MMR توازن بين الصلة والتكرار: MMR(l) = λ × relevance(l) - (1 - λ) × max_similarity(l, selected)
  3. السطور ذات MMR < 0 تُكبت.

التأثير

MMR يزيل 10-25% من المحتوى المكرر.


تحسين الرموز المحاذي لـ BPE

مرور أخير يُحسّن النص الخام لـ مُرَمِّز BPE.

قواعد التحسين

قبلبعدتوفير الرموز
function fn رمز واحد لكل ظهور
-> ->2 ← 1 رمز
=> => 2 ← 1 رمز
{ }{}2 ← 1 رمز
(4 مسافات) (مسافتان)~50% توفير في المسافة البادئة
'static عمر 'staticحذف حيث آمنرمزان لكل ظهور

كيف يعمل

كل قاعدة هي استبدال نص بسيط يُطبق بعد جميع مراحل الضغط الأخرى.

التأثير

تحسين BPE يوفر عادة 3-8% رموز إضافية.


التحقق من التأثير

شغّل lean-ctx benchmark run في مشروعك لقياس التأثير المشترك.

$ lean-ctx benchmark run
──────────────────────────────────────────
BENCHMARK - /Users/you/project
──────────────────────────────────────────
Files:       143
Total:       285,401 → 42,810 tokens (85% reduction)
Avg/file:    1,997 → 300 tokens

Preservation:
  AST:         98.2%
  Identifiers: 97.4%
  Lines:       96.1%

Mode breakdown:
  full:        68% of files
  map:         22% of files
  signatures:   8% of files
  aggressive:   2% of files

التعرف المنظم على النية

يصنف lean-ctx كل تفاعل إلى StructuredIntent - تمثيل قائم على الفتحات يحتوي على نوع المهمة والثقة والملفات المستهدفة والنطاق وتلميح اللغة والإلحاح وفعل الإجراء.

يتم التعرف على 9 أنواع مهام: Explore، Generate، FixBug، Refactor، Test، Review، Config، Deploy وDocument.

IntentScope يمتد من SingleFile إلى ProjectWide - يحدد مدى اتساع جمع السياق.

كيف يعمل

يتكيف الضغط حسب النية: مهام FixBug تعطي الأولوية لسطور الخطأ، مهام Explore تستخدم تنظيفاً خفيفاً، ومهام Generate تركز على التوقيعات والأنواع.

محدد الوضع التلقائي لـ ctx_read يستخدم نوع المهمة النشط لتحسين قراره.

مثال

Query: "fix the NaN bug in entropy.rs"

StructuredIntent:
  task_type:    FixBug (confidence: 0.95)
  targets:      ["entropy.rs"]
  scope:        SingleFile
  language:     Rust
  urgency:      0.8
  action_verb:  "fix"

→ Compression: Information Bottleneck filter (error lines boosted)
→ Mode:        task (error-focused extraction)
→ Suggestions: tests/entropy_test.rs (deficit detection)

هندسة خط أنابيب السياق

يعالج خط أنابيب السياق المعلومات عبر ست طبقات متميزة: InputIntentRelevanceCompressionTranslationDelivery.

كيف يعمل

Input → Intent → Relevance → Compression → Terse Engine → Delivery
  │        │          │            │              │              │
  │        │          │            │              │              └─ Final output to LLM
  │        │          │            │              └─ 4-layer terse pipeline (see below)
  │        │          │            └─ AST-aware compression per intent
  │        │          └─ Graph heat + relevance scoring
  │        └─ StructuredIntent classification
  └─ Raw file content / shell output

مقاييس كل طبقة تتبع التوكنات المدخلة والمخرجة ونسبة الضغط ووقت المعالجة.

4-Layer Terse Engine

The terse engine applies four composable compression layers, controlled by compression_level (Off / Lite / Standard / Max). Each layer is independently verified by Lean4 proofs (TerseQuality, TerseEngine — part of 82 total theorems).

LayerNameWhat it does
1DictionaryCommon token substitutions and abbreviations (functionfn, returnret)
2ResidualWhitespace normalization, blank-line collapse, boilerplate removal
3ScoringInformation-theoretic ranking — keeps high-surprise blocks, prunes low-entropy filler
4PipelineCEP v1 protocol: delta-only output, structured notation (+/-/~), token budgets

سجل السياق وإدارة الضغط

ContextLedger يتتبع كل ملف يُرسل إلى الذكاء الاصطناعي: المسار ووضع الضغط والتوكنات الأصلية والتوكنات المرسلة والطابع الزمني.

كيف يعمل

ثلاثة مستويات ضغط: None (أقل من 70% استخدام)، Compress (70–90%) وEvict (أكثر من 95%).

مثال

Context Window: 128,000 tokens
Loaded: 89,600 tokens (70% utilization)
Pressure: None → safe

After loading 3 more files:
Loaded: 115,200 tokens (90% utilization)
Pressure: Compress → downgrade non-target files

Re-Injection Plan:
  utils.rs:    full → signatures  (save 2,400 tokens)
  helpers.rs:  full → map         (save 1,800 tokens)
  config.rs:   full → signatures  (save 1,200 tokens)
  Protected:   auth.rs, login.ts  (target files)

كشف عجز السياق يحدد المعلومات المفقودة ويقترح ملفات ذات صلة.

إعادة الحقن الذكية تولد خطة لتحرير ميزانية السياق عن طريق تخفيض الملفات غير المستهدفة.


ذكاء متعدد الوكلاء

عندما يتعاون عدة وكلاء ذكاء اصطناعي، يوفر lean-ctx عمليات تسليم منظمة وعمق سياق قائم على الأدوار ومشاركة المعرفة بين الوكلاء.

كيف يعمل

HandoffPackage يجمع سجل الجلسة الحالي والنية المنظمة ولقطة السياق في وحدة قابلة للنقل.

يتم التعرف على سبعة أدوار للوكلاء: Coder، Reviewer، Planner، Explorer، Debugger، Tester وOrchestrator.

مثال

Agent "coder-1" (role: Coder):
  max_files_full: 8
  preferred_mode: full
  context_budget: 80%

Agent "reviewer-1" (role: Reviewer):
  max_files_full: 3
  preferred_mode: signatures
  context_budget: 60%

Shared Knowledge:
  K:discovery:auth_bug = "null check missing in line 42"
  K:decision:fix_approach = "add Option<T> wrapper"
  → reviewer-1 inherits these facts without re-reading files

مشاركة المعرفة بين الوكلاء تسمح للوكلاء بتبادل حقائق منظمة عبر لوحة ملاحظات مشتركة.


Community Detection (Louvain)

The core::community module clusters files by their dependency graph using the Louvain algorithm. This groups tightly-coupled files into communities, enabling more intelligent context selection — files in the same community as your target are prioritized for preloading and receive higher relevance scores during task-driven reads.

Code Smell Detection

The ctx_smells tool detects long functions, deep nesting, and high cyclomatic complexity using the core::smells module. Detected smells are scored with graph-enriched weighting — files with high PageRank or many dependents receive amplified smell scores, surfacing maintenance hotspots that have the widest blast radius across the codebase.


انظر أيضاً