# Μαγείρεμα με diSE (μέρος 4): Συστήματα Κατασκευών που Μαθαίνουν, Προσαρμόζονται και Εξελίσσονται

<!--category-- AI, DiSE, Architecture, Bot Detection, Machine Learning, Systems Design -->
<datetime class="hidden">2025-12-08T12:00</datetime>

Οι περισσότερες αρχιτεκτονικές λογισμικού θεωρούν ότι το σύστημα είναι στατικό.

> **Σημείωση:** Αυτό είναι το Μέρος 4 στη σειρά "Cooking with DiSE." [Μέρος 1](/blog/semantidintelligence-part1), [Μέρος 2: Αποφοίτησε Μαθητευόμενα](/blog/blog-article-cooking-dise-part2-apprenticeships), και [Μέρος 3: Αναξιόπιστοι Θεοί](/blog/blog-article-cooking-dise-part3-untrustworthy-gods) για το υπόβαθρο. Αυτό το άρθρο είναι η αρχιτεκτονική επισκόπηση - και τώρα έχουμε μια εργασία C# εφαρμογή: [ως επί το πλείστον διαυγής. botdetection](/blog/botdetection-introduction).

**Βασική έννοια: Behavioural Routing.** Αυτή η αρχιτεκτονική επιτρέπει μια νέα κατηγορία - όπου διαφανείς, ρυθμιζόμενες " ομάδες" των ανιχνευτών και των συστημάτων μάθησης αντανακλαστικά κίνηση που βασίζεται σε μαθημένα πρότυπα συμπεριφοράς, όχι στατικούς κανόνες. [YARP Gateway](https://hub.docker.com/r/scottgal/mostlylucid.yarpgateway)Ή χρησιμοποιήστε το μεσαίο λογισμικό για να δημιουργήσετε συμπεριφορική δρομολόγηση απευθείας στο στρώμα εφαρμογών σας.

[TOC]

## Το Πρόβλημα: Στατικά Συστήματα σε έναν Δυναμικό Κόσμο

Για χρόνια, φτιάχνουμε λογισμικό όπως ρολόι: είσοδοι, έξοδοι, κανόνες, αγωγοί, δοκιμές, ανάπτυξη.

Αλλά τα σύγχρονα συστήματα - ειδικά τα ΑΑ-αυξανόμενα - δεν συμπεριφέρονται πλέον σαν ρολόγια.

- Οι επιτιθέμενοι αναπτύσσουν τις τεχνικές τους
- Οι χρήστες αλλάζουν τη συμπεριφορά τους
- Απαιτήσεις που παρασύρονται με την πάροδο του χρόνου
- Το περιβάλλον αλλάζει συνεχώς

Οι στατικές αρχιτεκτονικές δεν μπορούν να αντέξουν, βάζεις μια τρύπα, τρεις ακόμα εμφανίζονται, κουρδίζεις ένα κατώφλι, κάτι άλλο σπάει, πάντα αντιδράς, ποτέ δεν προσαρμόζεσαι.

**Αρχιτεκτονική DiSE** (Directed Synthetic Evolution) αντιμετωπίζει το λογισμικό με τον τρόπο που αντιμετωπίζουν οι βιολόγοι τους οργανισμούς: ως κάτι που πρέπει να προσαρμοστεί, να αυτοδιορθωθεί και να βελτιωθεί υπό πίεση.

## The Core Idea: Systems as Evolving Organizations

Παραδοσιακή αρχιτεκτονική:

```mermaid
flowchart LR
    B[Build] --> S[Ship] --> P[Patch] --> B

    style B stroke:#6366f1,stroke-width:2px
    style P stroke:#ef4444,stroke-width:2px
```

Αρχιτεκτονική DiSE:

```mermaid
flowchart LR
    P[Perceive] --> E[Evaluate] --> M[Mutate] --> S[Select] --> P

    style P stroke:#10b981,stroke-width:2px
    style M stroke:#f59e0b,stroke-width:2px
    style S stroke:#6366f1,stroke-width:2px
```

Ένα σύστημα DiSE έχει τέσσερις βασικές συμπεριφορές:

Η Συμπεριφορά Τι Κάνει Το Βιολογικό Ισοδύναμο
|-----------|--------------|----------------------|
| **Κατάλαβες;** Συγκεντρώστε σήματα από το περιβάλλον Αισθητήρια όργανα
| **Αξιολόγηση** Σήματα σκορ ενάντια στους στόχους ~ Νευρικό σύστημα ~
| **Mutate** Φτιάξε παραλλαγές στρατηγικών Γενετική μετάλλαξη.
| **Επιλογή** □ Κρατήστε ό, τι λειτουργεί, απορρίψτε ό, τι doesn apos?

Κυριολεκτικά έτσι εξελίσσεται το σύστημά σου με την πάροδο του χρόνου.

## Παράδειγμα σκυροδέματος: Ανίχνευση ρομπότ

[ως επί το πλείστον διαυγής. botdetection](https://github.com/scottgal/mostlylucid.nugetpackages/tree/main/Mostlylucid.BotDetection) είναι η πρώτη εφαρμογή C# των αρχών DiSE. Ας εντοπίσουμε την αρχιτεκτονική:

### Αντίληψη: The Blackboard Architecture

Το σύστημα χρησιμοποιεί ένα **Μαυροσανίδα ορχηστρωτής** - οι ανιχνευτές συμβάλλουν σε μια κοινή κατάσταση, ενεργοποιώντας άλλους ανιχνευτές καθώς συσσωρεύονται τα σήματα:

```csharp
// Detectors emit contributions (evidence), not verdicts
public sealed record DetectionContribution
{
    public required string DetectorName { get; init; }
    public required string Category { get; init; }

    // Positive = bot signal, Negative = human signal
    public required double ConfidenceDelta { get; init; }
    public double Weight { get; init; } = 1.0;

    public required string Reason { get; init; }
    public BotType? BotType { get; init; }

    // Signals for triggering other detectors
    public ImmutableDictionary<string, object> Signals { get; init; }
}
```

Πολλαπλοί ανιχνευτές λειτουργούν **σε παράλληλα κύματα**Το κάθε ένα συμβάλλει σε ένα αποδεικτικό στοιχείο. Το σύστημα αντιλαμβάνεται το περιβάλλον μέσω πολλών φακών:

```csharp
// Wave 0: All detectors with no trigger conditions run in parallel
// Wave N: Detectors whose triggers are now satisfied run in parallel
while (waveNumber < MaxWaves && !cancellationToken.IsCancellationRequested)
{
    var readyDetectors = availableDetectors
        .Where(d => !ranDetectors.Contains(d.Name))
        .Where(d => CanRun(d, state.Signals))
        .ToList();

    await ExecuteWaveAsync(readyDetectors, state, aggregator, ...);

    // Check for early exit on high confidence
    if (aggregator.ShouldEarlyExit)
        break;
}
```

### Αξιολόγηση: Συναίνεση βάρους με Sigmoid

Αποδεικτικά μεγέθη σε μια απόφαση με τη χρήση sigmoid μετασχηματισμό - αυτό ωθεί σωστά ισχυρά σήματα από ανιχνευτές υψηλού βάρους:

```csharp
private (double botProbability, double confidence) CalculateWeightedScore()
{
    var weighted = _contributions
        .Where(c => c.Weight > 0)
        .Select(c => (delta: c.ConfidenceDelta, weight: c.Weight))
        .ToList();

    var weightedSum = weighted.Sum(w => w.delta * w.weight);

    // Sigmoid maps any real number to (0, 1)
    // Strong human signal (-3) → ~5% bot probability
    // Neutral (0) → 50% bot probability
    // Strong bot signal (+3) → ~95% bot probability
    var botProbability = 1.0 / (1.0 + Math.Exp(-weightedSum));

    return (botProbability, confidence);
}
```

Η αξιολόγηση δεν είναι ούτε ένα μοντέλο που παίρνει μια απόφαση. **σταθμισμένη συναίνεση@ info: whatsthis** σε πολλούς εξειδικευμένους ανιχνευτές - και σε κρίσιμο βαθμό, όταν η AI δεν έχει τρέξει, η πιθανότητα είναι **Σφιγκτήρας** για να αποφευχθεί η υπερβολική αυτοπεποίθηση:

```csharp
// CRITICAL: Clamp probability when AI hasn't run
var botProbability = aiRan
    ? rawBotProbability
    : Math.Clamp(rawBotProbability, 0.20, 0.80);
```

### Early Exit: Γρήγορη Βελτιστοποίηση Διαδρομής

Το σύστημα δεν λειτουργεί πάντα όλους τους ανιχνευτές, όταν τα πρώτα στοιχεία είναι πειστικά, φεύγει γρήγορα.

```csharp
// Early exit on verified bots (good or bad)
public static DetectionContribution VerifiedGoodBot(
    string detector, string botName, string reason) => new()
{
    DetectorName = detector,
    Category = "Verification",
    ConfidenceDelta = 0,
    TriggerEarlyExit = true,
    EarlyExitVerdict = EarlyExitVerdict.VerifiedGoodBot
};
```

Στην παραγωγή, **Η υψηλή αυτοπεποίθηση ζητά έξοδο σε λιγότερο από 10ms** Ο πλήρης αγωγός λειτουργεί μόνο για αβέβαιες περιπτώσεις.

### Διακόπτες κυκλωμάτων: Αυτο-Θηλασμός

Οι ανιχνευτές μπορούν να αποτύχουν.

```csharp
// Circuit breaker per detector
private void RecordFailure(string detectorName)
{
    var state = _circuitStates.GetOrAdd(detectorName, _ => new CircuitState());
    state.FailureCount++;
    state.LastFailure = DateTimeOffset.UtcNow;

    if (state.FailureCount >= CircuitBreakerThreshold)
    {
        state.State = CircuitBreakerState.Open;
        // Detector disabled until reset time passes
    }
}
```

Οι αποτυχημένοι ανιχνευτές είναι προσωρινά απενεργοποιημένοι. **πίεση επιλογής σε επίπεδο υποδομής**.

### Μεταλλαγή: Το σύστημα εκμάθησης

Όταν το σύστημα ανιχνεύει με μεγάλη αυτοπεποίθηση, **μαθαίνει** με δημοσίευση στο λεωφορείο μαθησιακών εκδηλώσεων:

```csharp
private void PublishLearningEvent(AggregatedEvidence result, ...)
{
    var eventType = result.BotProbability >= 0.8
        ? LearningEventType.HighConfidenceDetection
        : LearningEventType.FullDetection;

    _learningBus.TryPublish(new LearningEvent
    {
        Type = eventType,
        Confidence = result.Confidence,
        Label = result.BotProbability >= 0.5,
        Metadata = new Dictionary<string, object>
        {
            ["botProbability"] = result.BotProbability,
            ["categoryBreakdown"] = result.CategoryBreakdown,
            ["contributingDetectors"] = result.ContributingDetectors
        }
    });
}
```

Αυτό τροφοδοτείται από το κατάστημα βάρους, ενημερώνοντας τον ερωτικό ανιχνευτή που έμαθε βάρη με την πάροδο του χρόνου.

## Η Γνωσιακή Στοίβα

Αντί για έναν ενιαίο εγκέφαλο "AI," το DiSE χρησιμοποιεί στρωματοποιημένη νοημοσύνη:

```mermaid
flowchart TB
    subgraph Fast["Fast Path (< 100ms)"]
        H[Static Heuristics]
        D[Detectors]
        ML[Learned Heuristic Model]
    end

    subgraph Slow["Slow Path (Async)"]
        LLM[Ollama LLM]
    end

    subgraph Learn["Learning Layer"]
        W[Weight Store]
        Rep[Reputation]
    end

    Fast --> |escalate uncertain| Slow
    Slow --> |label| Learn
    Learn --> |update weights| Fast

    style Fast stroke:#10b981,stroke-width:2px
    style Slow stroke:#6366f1,stroke-width:2px
    style Learn stroke:#f59e0b,stroke-width:2px
```

Σωλήνας Ταχύτητα Σκοπός
|-------|-------|---------|----------------------|
| **Στατική Ευριστική** Ενστικτωδώς απαντήσεις Γνωστό bot UA μοτίβα
| **Ανιχνευτές** Ανάλυση κεφαλίδας, έλεγχοι IP
| **Μαθαίνοντας Εουριστικές** Δυναμική ταξινόμηση Λογική οπισθοδρόμηση με μαθημένα βάρη
| **LLM** Βαθιά συλλογιστική Αναλύοντας νέα μοτίβα
| **Εκμάθηση** Βάθος ενημερώσεις, αλλαγές φήμης

Η βασική αντίληψη: το σύστημα μαθαίνει τα δικά του βάρη σε πραγματικό χρόνο. Δεν απαιτούνται εξωτερικά μοντέλα ML. Ο ερωτικός ανιχνευτής ξεκινά με λογικές προεπιλογές και εξελίσσεται με βάση την ανατροφοδότηση ανίχνευσης.

> **Μέλλον:** Τα μοντέλα ONNX με RAG και ενσωμάτωση προγραμματίζονται για v2. Η παραγωγή του τρέχοντος ερειστικού μοντέλου χρησιμεύει ως επισήμανση των δεδομένων κατάρτισης για μελλοντική κατάρτιση μοντέλων. Η αρχιτεκτονική έχει ήδη τα "γενετικά" αντικείμενα (συμβολές, βάρη, σήματα) που κάνουν την προσθήκη κατευθυνόμενη συνθετική εξέλιξη απλή - έχει σχεδιαστεί ως σημείο plugin.

Αυτή η βιολογική αντίληψη καθρεφτίζει:

- **Εσωτερικό ανοσοποιητικό σύστημα** → Στατική ευριστική
- **Προσαρμοζόμενο ανοσοποιητικό σύστημα** → Έμαθες ερειστικό μοντέλο
- **Κύτταρα μνήμης** → Κατάστημα βάρους + φήμη

## Ο Εουριστικός Ανιχνευτής: Μάθηση Χωρίς Εξωτερικά Μοντέλα

Αντί να μεταφέρει ένα εξωτερικό μοντέλο ML, το σύστημα μαθαίνει το δικό του ταξινομητή χρησιμοποιώντας απλή γεωλογική παλινδρόμηση με δυναμική εξαγωγή χαρακτηριστικών:

```csharp
public class HeuristicDetector : IDetector
{
    // Default weights - sensible starting points
    private static readonly Dictionary<string, float> DefaultWeights = new()
    {
        // Human-like patterns (negative = more likely human)
        ["hdr:accept-language"] = -0.6f,
        ["hdr:referer"] = -0.4f,
        ["fp:received"] = -0.7f,      // Fingerprint = strong human signal
        ["fp:legitimate"] = -0.8f,

        // Bot indicators (positive = more likely bot)
        ["ua:contains_bot"] = 0.9f,
        ["ua:headless"] = 0.8f,
        ["ua:selenium"] = 0.7f,
        ["ua:curl"] = 0.6f,
        ["accept:wildcard"] = 0.4f,
    };

    private (bool IsBot, double Probability) RunInference(Dictionary<string, float> features)
    {
        // Simple linear model: score = bias + Σ(feature * weight)
        float score = _bias;

        foreach (var (featureName, featureValue) in features)
        {
            var weight = _weights.TryGetValue(featureName, out var w)
                ? w
                : DefaultNewFeatureWeight;
            score += featureValue * weight;
        }

        // Sigmoid gives us probability
        var probability = 1.0 / (1.0 + Math.Exp(-score));
        return (probability > 0.5, probability);
    }
}
```

Τα χαρακτηριστικά εξάγονται δυναμικά από το αίτημα και τα συγκεντρωτικά στοιχεία:

```csharp
public static class HeuristicFeatureExtractor
{
    public static Dictionary<string, float> ExtractFeatures(
        HttpContext context,
        AggregatedEvidence evidence)
    {
        var features = new Dictionary<string, float>();

        // Request metadata
        features["req:header_count"] = Math.Min(headers.Count / 20f, 1f);
        features["req:cookie_count"] = Math.Min(cookies.Count / 10f, 1f);

        // Header presence
        features["hdr:accept-language"] = headers.ContainsKey("Accept-Language") ? 1f : 0f;

        // UA patterns (dynamic - only present if detected)
        if (ua.Contains("bot")) features["ua:contains_bot"] = 1f;
        if (ua.Contains("selenium")) features["ua:selenium"] = 1f;

        // Detector results (named by actual detector)
        foreach (var contrib in evidence.Contributions)
            features[$"det:{contrib.DetectorName}"] = contrib.ConfidenceDelta;

        // Client-side fingerprint - STRONG human signal
        if (hasFingerprint)
        {
            features["fp:received"] = 1f;
            features["fp:legitimate"] = 1f;
        }

        return features;
    }
}
```

Τα νέα χαρακτηριστικά παίρνουν αυτόματα προεπιλεγμένα βάρη και μαθαίνουν με την πάροδο του χρόνου. Το σύστημα ανακαλύπτει τι έχει σημασία.

## The Weight Store: Συνεχιζόμενη Μάθηση

Τα βάρη παραμένουν στο SQLite και ενημερώνονται μέσω εκθετικού μέσου όρου κίνησης:

```csharp
public class SqliteWeightStore : IWeightStore
{
    public async Task RecordObservationAsync(
        string signatureType,
        string signature,
        bool wasBot,
        double detectionConfidence,
        CancellationToken ct = default)
    {
        // EMA update: weight = weight * (1 - α) + new_value * α
        var alpha = 0.1; // Learning rate
        var weightDelta = wasBot ? detectionConfidence : -detectionConfidence;

        var sql = @"
            INSERT INTO learned_weights (signature_type, signature, weight, ...)
            VALUES (@type, @sig, @delta, ...)
            ON CONFLICT(signature_type, signature) DO UPDATE SET
                weight = weight * (1 - @alpha) + @delta * @alpha,
                confidence = MIN(1.0, confidence + @conf * 0.01),
                observation_count = observation_count + 1,
                last_seen = @now
        ";

        await ExecuteAsync(sql, ...);
    }
}
```

Αυτό είναι **μετάλλαξη μέσω παρατήρησης**Κάθε ανίχνευση διδάσκει κάτι στο σύστημα. Με τον καιρό, τα βάρη συγκλίνουν προς τις βέλτιστες τιμές για τα συγκεκριμένα μοτίβα κυκλοφορίας σας.

## Ψευδαίσθηση ως μετάλλαξη

Στο DiSE, η ψευδαίσθηση LLM δεν είναι έντομο, είναι το εκφυλιστικό υπόστρωμα της εξέλιξης.

Ένα LLM υψηλής θερμοκρασίας που προτείνει δέκα παραλλαγές ενός κανόνα ανίχνευσης δεν είναι "παραίσθηση" - είναι **μετάλλαξη του γονιδιώματος** του συστήματος:

```csharp
public async Task<List<DetectionRule>> GenerateMutationsAsync(DetectionContext context)
{
    var prompt = $"""
        Given this traffic pattern:
        {JsonSerializer.Serialize(context)}

        Generate 5 variant detection rules that might catch similar patterns.
        Return JSON array of rules with: pattern, weight, confidence.
        Be creative. Some variants should be strict, some lenient.
        """;

    var response = await _ollama.GenerateAsync(new GenerateRequest
    {
        Model = "gemma3:1b",
        Prompt = prompt,
        Options = new RequestOptions { Temperature = 0.9 } // High creativity
    });

    return ParseRules(response.Response);
}
```

Στη συνέχεια, οι μεταλλάξεις αξιολογούνται με βάση ιστορικά δεδομένα:

```csharp
public async Task<DetectionRule?> SelectFittestAsync(
    List<DetectionRule> mutations,
    List<LabeledRequest> testData)
{
    var results = new List<(DetectionRule Rule, double Fitness)>();

    foreach (var rule in mutations)
    {
        var tp = testData.Count(r => rule.Matches(r) && r.IsBot);
        var fp = testData.Count(r => rule.Matches(r) && !r.IsBot);
        var fn = testData.Count(r => !rule.Matches(r) && r.IsBot);

        // F1 score as fitness
        var precision = tp / (double)(tp + fp);
        var recall = tp / (double)(tp + fn);
        var f1 = 2 * (precision * recall) / (precision + recall);

        results.Add((rule, f1));
    }

    return results.OrderByDescending(r => r.Fitness).First().Rule;
}
```

Μόνο το ισχυρότερο επιβιώνει στην παραγωγή. Αυτό μετατρέπει LLMs από εύθραυστα chatbots σε **εξελικτικοί φορείς**.

## The Genome: Πολιτική-Βασισμένη διαμόρφωση

Στο κέντρο του DiSE είναι η **σύστημα πολιτικής** - ονομαζόμενες διαμορφώσεις που καθορίζουν τον τρόπο με τον οποίο συμπεριφέρεται η ανίχνευση:

```json
{
  "Policies": {
    "fastpath": {
      "Description": "Fast path + Heuristic for sync decisions",
      "FastPath": ["UserAgent", "Header", "Ip", "Behavioral", "ClientSide", "Inconsistency", "VersionAge"],
      "AiPath": ["Heuristic"],
      "EscalateToAi": true,
      "EarlyExitThreshold": 0.15,
      "ImmediateBlockThreshold": 0.90,
      "Weights": {
        "ClientSide": 0.2,
        "Heuristic": 1.5
      },
      "Transitions": [
        { "WhenRiskExceeds": 0.5, "WhenRiskBelow": 0.85, "GoTo": "demo" }
      ]
    },
    "demo": {
      "Description": "Full pipeline sync for demonstration",
      "FastPath": [],
      "AiPath": [],
      "BypassTriggerConditions": true,
      "ForceSlowPath": true
    }
  }
}
```

Οι πολιτικές καθορίζουν:

- **Ανιχνευτές FastPath** - να τρέξει παράλληλα, υπο-10ms
- **Μονοπάτι AI** - Ευριστικά (1-5ms) ή/και LLM (500ms+)
- **Κατώτατα όρια** - πότε να ξεκινήσετε νωρίς, πότε να μπλοκάρετε
- **Μεταβάσεις** - αυτόματη κλιμάκωση των άλλων πολιτικών όταν είναι αβέβαιη
- **Βάρος ανά πολιτική** - σημασία ανιχνευτή μελωδίας ανά περίπτωση χρήσης

Το σύστημα μπορεί **μετάβαση μεταξύ των μέσων πολιτικών που ζητούν**Αβέβαια αποτελέσματα γρήγορου μονοπατιού κλιμακώνονται στον πλήρη αγωγό demo. **προσαρμοστική δρομολόγηση** - το γονιδίωμα ανταποκρίνεται σε στοιχεία σε πραγματικό χρόνο.

Δεν στέλνεις στατικές ρυθμίσεις. **συμπεριφορικά είδη** που προσαρμόζονται στην κίνηση.

## Fitness Functions: Τι Επιβιώνει

Κάθε σύστημα DiSE βελτιστοποιεί ενάντια σε ένα τοπίο φυσικής κατάστασης:

```csharp
public class FitnessEvaluator
{
    public double Evaluate(GenomeConfig genome, EvaluationData data)
    {
        var fpRate = data.FalsePositives / (double)data.TotalHumans;
        var fnRate = data.FalseNegatives / (double)data.TotalBots;
        var latency = data.P99LatencyMs;
        var cost = data.AiCallsPerRequest * _config.CostPerAiCall;

        // Multi-objective fitness
        return 1.0
            - (fpRate * _config.FalsePositivePenalty)   // Don't block humans
            - (fnRate * _config.FalseNegativePenalty)   // Don't miss bots
            - (latency / _config.MaxLatencyMs)          // Stay fast
            - (cost / _config.MaxCostPerRequest);       // Stay cheap
    }
}
```

Δεν βελτιστοποιούμε μόνο για την ακρίβεια. **επιβίωση σε δυναμικό περιβάλλον**.

Πάρα πολύ AI → υψηλό κόστος, κακή καθυστέρηση.
Πολύ μικρή AI → κακή ανίχνευση νέων επιθέσεων.
Πάρα πολύ επιθετική → ψευδή θετικά, θυμωμένοι χρήστες.
Πολύ επιεικής → πλημμύρες bot.

Το σύστημα πρέπει να βρει μια σταθερή ισορροπία.

## AI ως Δάσκαλος, Όχι Εργαζόμενος

Ένα ώριμο σύστημα DiSE μετατοπίζει τον ΑΙ από την καυτή διαδρομή:

```mermaid
flowchart TB
    subgraph Early["Early Stage"]
        AI1[AI handles most cases]
    end

    subgraph Middle["Middle Stage"]
        AI2[AI handles edge cases]
        H1[Heuristics handle common cases]
    end

    subgraph Mature["Mature Stage"]
        AI3[AI teaches and mutates]
        H2[Heuristics handle almost everything]
        M[Memory provides context]
    end

    Early --> Middle --> Mature

    style Early stroke:#ef4444,stroke-width:2px
    style Middle stroke:#f59e0b,stroke-width:2px
    style Mature stroke:#10b981,stroke-width:2px
```

Με την πάροδο του χρόνου:

- Βελτιώνονται οι στατικοί ανιχνευτές (εκπαιδευμένοι από ετικέτες AI)
- Οι Εουριστικές γίνονται πιο ακριβείς (επιλεγμένες από φυσική κατάσταση)
- Η AI χειρίζεται μόνο την καινοτομία και τη μετάλλαξη

Η AI γίνεται:

- Η **μανιόκα** για νέες συμπεριφορές
- Η **γεννήτρια** των μεταλλάξεων
- Η **ανιχνευτής ολίσθησης**
- Η **δάσκαλος** ότι η επισήμανση των οριακών περιπτώσεων

Δεν είναι εξάρτησή μου, προσαρμοστική σκαλωσιά.

## Συμπεριφορά Ρουτίνα: Μια νέα κατηγορία

Με την [YARP Gateway](https://hub.docker.com/r/scottgal/mostlylucid.yarpgateway), αυτή η αρχιτεκτονική επιτρέπει κάτι νέο: **δρομολόγηση συμπεριφοράς**.

Παραδοσιακή δρομολόγηση είναι στατική: διαδρομή → backend. Συμπεριφορική δρομολόγηση είναι αντανακλαστική: χαρακτηριστικά κυκλοφορίας → δυναμικές αποφάσεις δρομολόγησης.

```mermaid
flowchart LR
    subgraph Gateway["YARP Gateway"]
        D[Detector Team]
        P[Policy Engine]
        R[Router]
    end

    Traffic[Traffic] --> D
    D --> P
    P --> R
    R -->|Human| App[Your App]
    R -->|Bot| Block[403]
    R -->|Uncertain| Challenge[Challenge]
    R -->|Learning| Queue[Async Analysis]

    style Gateway stroke:#10b981,stroke-width:2px
```

Οι βασικές έννοιες:

- **Ομάδες ανιχνευτών** - Διαμορφώσιμες ομάδες ανιχνευτών που συνεργάζονται, ρυθμιζόμενες ανά πολιτική
- **Διαφανείς αποφάσεις** - κάθε απόφαση δρομολόγησης μπορεί να εξηγηθεί (βλ. κατανομή της συνεισφοράς)
- **Αντιανακλαστική ρύθμιση** - το σύστημα μαθαίνει από τις αποφάσεις του και ρυθμίζει τα βάρη με την πάροδο του χρόνου
- **Προστασία σε επίπεδο κόψης** - Τα ρομπότ δεν φτάνουν ποτέ στο πίσω μέρος σου, μπλοκαρισμένα στο router

Αυτό δεν είναι απλά "ανακάλυψη ρομπότ στην άκρη." Είναι ένα νέο δρομολόγηση πρωτόγονο όπου οι ροές κυκλοφορίας διαμορφώνονται από μαθημένα πρότυπα συμπεριφοράς, όχι μόνο στατικούς κανόνες.

## Γιατί Έχει Σημασία αυτό;

Οι περισσότεροι μηχανικοί πολιτισμοί φοβούνται:

- Μη determinism
- Παράκαμψη
- Μεταλλαγή
- Ψευδαίσθηση
- Επείγουσα συμπεριφορά

Το DiSE χρησιμοποιεί αυτά ως **οικοδομικά υλικά**.

Τα στατικά συστήματα πεθαίνουν.

Κάθε βιομηχανία που ασχολείται με αντιπάλους, παρασυρόμενα, ή πίεση κλίμακας θα χρειαστεί τελικά αρχιτεκτονικές όπως αυτή:

- Ανίχνευση ρομπότ
- Κινητήρες απάτης
- Προσαρμοζόμενα τείχη προστασίας
- Ασύρματα LLM
- Αυτόνομες μικροϋπηρεσίες
- Αυτόνομα συστήματα αποσφαλμάτωσης
- **Συμπεριφορική δρομολόγηση** - διαμόρφωση της κυκλοφορίας με βάση τα μορφοποιημένα πρότυπα

## Τι δεν είναι το DiSE;

Επιτρέψτε μου να είμαι σαφής σχετικά με το τι δεν είναι αυτό:

- **Όχι "μεγάλα LLMs παντού"** Τα LLM είναι ακριβά, χρησιμοποιήστε τα στρατηγικά.
- **Δεν "αντικαταστήστε την επιχειρηματική λογική με την AI"** - Οι Εουριστικές είναι πιο γρήγοροι και πιο προβλέψιμοι.
- **Όχι "άσε το σύστημα να τρέξει άγρια"** - Η εξέλιξη κατευθύνεται, περιορίζεται, κυβερνάται.
- **Όχι "AutoML σε στεροειδή"** - Έχει να κάνει με συμπεριφορά, όχι μόνο μοντελοποίηση.

Το DiSE ελέγχεται, εξηγείται η εξέλιξη:

- Βασιζόμενοι από περιορισμούς
- Διοικούμενες από σαφείς λειτουργίες γυμναστικής
- Συνειδητοποίηση μνήμης@ title: window
- Εκδοθέν
- Ασφαλής προς ανάπτυξη

Είναι *κατευθύνεται* εξέλιξη - καθοδηγούμενη, όχι τυχαία.

## Δοκίμασέ το.

[ως επί το πλείστον διαυγής. botdetection](https://www.nuget.org/packages/mostlylucid.botdetection/) εφαρμόζει τις αρχές αυτές:

```bash
dotnet add package Mostlylucid.BotDetection
```

```csharp
builder.Services.AddBotDetection();
app.UseBotDetection();
```

Ρύθμιση για παραγωγή με ενεργοποίηση μάθησης:

```json
{
  "BotDetection": {
    "BotThreshold": 0.7,
    "Policies": {
      "default": {
        "FastPath": ["UserAgent", "Header", "Ip", "Behavioral", "ClientSide", "Inconsistency", "VersionAge"],
        "AiPath": ["Heuristic", "Llm"],
        "EscalateToAi": true,
        "EarlyExitThreshold": 0.85
      }
    },
    "AiDetection": {
      "Provider": "Heuristic",
      "Heuristic": {
        "Enabled": true,
        "LoadLearnedWeights": true,
        "EnableWeightLearning": true,
        "LearningRate": 0.01
      }
    }
  }
}
```

Ο ερωτικός ανιχνευτής μαθαίνει από κάθε αίτημα, ενημερώνοντας τα βάρη του για να ταιριάζει με τα μοτίβα κυκλοφορίας σας.

## Συμπέρασμα

DiSE Αρχιτεκτονική είναι η μετατόπιση από το λογισμικό ως μηχανές στο λογισμικό ως οργανισμοί.

Είναι η αρχιτεκτονική του:

- Δυνατότητα προσαρμογής
- Ανθεκτικότητα
- Ελεγχόμενη εξέλιξη
- Ανάφλεξη στρώματος
- Εκμάθηση με γνώμονα τη μνήμη
- Μεταλλαγή + επιλογή
- Στρατηγική συμπεριφορά

Οι στατικές αρχιτεκτονικές δεν μπορούν να συμβαδίζουν με δυναμικά περιβάλλοντα. Οι επιτιθέμενοι εξελίσσονται. Οι χρήστες εξελίσσονται. Οι απαιτήσεις εξελίσσονται.

Τα συστήματα πρέπει να εξελιχθούν επίσης.

Αν θέλετε συστήματα που απλά λειτουργούν, φτιάξτε τα με τον παλιό τρόπο.
Αν θέλεις συστήματα **Επιβίωσε.** - χτίστε τα με το DiSE.