e-naxosMAF COURSE / COURS
English

MICROSOFT AGENT FRAMEWORK · 0.16.0-rc.1

Demo170 — Memory Drift

Les corrections portent sur module et database ; une interdiction de relancer le batch doit être cherchée dans chaque contexte.

Objectifs

Préparer la démo

Depuis la racine de la distribution complète compilée en Release. Les projets partagés Maf.Memory et Maf.DemoConnection sont nécessaires. Les réponses utilisent le chat réel, sans embeddings. Les commandes locales de lecture, reset, oubli ou sauvegarde ne demandent pas de réponse générée. Demo170 appelle directement le chat pour sa comparaison.

Projects
ProjectRole
demos/Demo170_MemoryDrift/Demo170.App.csprojApp
shared/Maf.Memory/Maf.Memory.csprojShared implementation
shared/Maf.DemoConnection/Maf.DemoConnection.csprojConnection

Lancer depuis la racine

dotnet run --project demos/Demo170_MemoryDrift/Demo170.App.csproj -c Release --no-build

Modes et manipulation

Lancer le programme : la chronologie fixe et les cinq stratégies s’exécutent automatiquement, sans menu. Relever contexte, réponses, usage fournisseur et taille de session sérialisée.

    public static IChatClient CreateRequestView(IChatClient chat)
    {
#pragma warning disable MAAI001
        return chat.AsBuilder().UseAIContextProviders(new CompactionProvider(
            new SlidingWindowCompactionStrategy(CompactionTriggers.TurnsExceed(3), minimumPreservedTurns: 3))).Build();
#pragma warning restore MAAI001
    }

    /// <summary>Reduces retained history after each completed exchange; serialization saves the reduced list.</summary>
    public static InMemoryChatHistoryProvider CreateBoundedHistory()
    {
#pragma warning disable MAAI001
        return new(new InMemoryChatHistoryProviderOptions
        {
            ChatReducer = new SlidingWindowCompactionStrategy(CompactionTriggers.TurnsExceed(3), minimumPreservedTurns: 3).AsChatReducer(),
            ReducerTriggerEvent = InMemoryChatHistoryProviderOptions.ChatReducerTriggerEvent.AfterMessageAdded

shared/Maf.Memory/ContextExperiment.cs · L11–L26 · 9a895c94534c

Code source · Maf.Memory · Dossier

Résultats et échecs utiles

Les corrections portent sur module et database ; une interdiction de relancer le batch doit être cherchée dans chaque contexte. Un résumé vide ou de plus de 700 caractères échoue sans fallback. La limite d’annulation globale est dix minutes.

Ces observations sont attendues par lecture du code à la révision publique liée. Le lot du site rejoue séparément les tests déterministes : il ne présente pas une réponse générée ou un score de fournisseur non mesuré comme une sortie observée.

Persistance et limites

Les faits de Demo150/160 et la comparaison Demo170 restent en processus. Demo130 conserve seulement le contexte SQLite ; Demo140 conserve son snapshot JSON. L’oubli d’une session ne purge pas les autres stores ou sauvegardes. Les erreurs d’admission sont visibles sans fallback. Aucun modèle n’est qualifié par les seuls tests scriptés.

dotnet test tests/Maf.Memory.Tests/Maf.Memory.Tests.csproj -m:1 -c Release --no-build --no-restore

Poursuivre et vérifier

Prérequis

Pour poursuivre

Dossier complet de la démo · README

lot008-memory-rag-1 · 2026-10-24 · 9a895c94534cd5fc6f3da883e37e5f7856e588c1