Les quotas et limites suivants s'appliquent aux régions Memory Storage, aux magasins de mémoire, aux écritures, aux recherches, à la consolidation de mémoire (Dream), aux tâches asynchrones, au périmètre (Scope), aux versions du SDK et de la CLI, ainsi qu'aux plugins d'agent.
Disponibilité du service et limites des ressources
Régions
Memory Storage est disponible uniquement dans les régions Chine (Pékin) et Chine (Hangzhou).
Limites des magasins de mémoire
|
Élément |
Limite |
|
Caractères autorisés dans le nom du magasin de mémoire |
Lettres, chiffres et traits de soulignement uniquement |
|
Longueur du nom du magasin de mémoire |
Jusqu'à 32 caractères |
|
Longueur de la description du magasin de mémoire |
Jusqu'à 1 024 octets en UTF-8 |
|
Longueur des instructions d'extraction personnalisées |
Jusqu'à 4 096 caractères |
Après avoir créé un magasin de mémoire, attendez la fin de l'initialisation de l'index avant d'écrire ou de rechercher des données.
extractInstructions spécifie des instructions d'extraction de mémoire personnalisées au niveau du magasin de mémoire. Ces instructions sont injectées dans l'invite d'extraction et influencent l'extraction ultérieure de la mémoire à long terme dans le magasin de mémoire. Définissez ces instructions lors de l'appel à CreateMemoryStore ou modifiez-les en appelant UpdateMemoryStore. Pour effacer les instructions, transmettez une chaîne vide. Si vous omettez ce champ, les instructions existantes restent inchangées.
Limites des opérations de mémoire
Règles de périmètre (Scope)
|
Opération |
Exigence de périmètre (Scope) |
Joker |
|
Ajouter des mémoires |
|
Non |
|
Rechercher des mémoires à long terme |
|
Autorisé pour |
|
Interroger des mémoires à court terme |
Les quatre niveaux de périmètre (Scope) sont requis. |
Non |
|
Obtenir une mémoire à long terme |
Les quatre niveaux de périmètre (Scope) sont requis. |
Non |
|
Mettre à jour une mémoire à long terme |
Les quatre niveaux de périmètre (Scope) sont requis. |
Non |
|
Supprimer une mémoire à long terme |
Les quatre niveaux de périmètre (Scope) sont requis. |
Non |
|
Lister des mémoires à long terme |
Spécifiez le périmètre (Scope) par niveau. |
Oui |
|
Lister les valeurs de périmètre (Scope) ( |
Spécifiez le périmètre (Scope) par niveau. |
Oui |
|
Interroger les tâches d'extraction ( |
Spécifiez le périmètre (Scope) par niveau. |
Oui |
|
Interroger les audits de requêtes |
Spécifiez le périmètre (Scope) par niveau. |
Oui |
Les jokers doivent respecter la hiérarchie du périmètre (Scope). Après avoir utilisé * à un niveau donné, tous les niveaux suivants doivent également utiliser * ou rester vides. Par exemple, app-001/user-001/*/* est valide, mais app-001/*/agent-001/* ne l'est pas.
Limites de la mémoire de fichier et de l'affichage des fichiers
|
Élément |
Limite ou comportement |
|
Périmètre (Scope) |
Les quatre niveaux, |
|
Chemin du fichier |
Le chemin canonique doit commencer par |
|
Contenu du fichier |
Texte UTF-8 valide uniquement |
|
Taille du fichier |
Jusqu'à 100 Kio (102 400 octets) par fichier |
|
Fichiers actuels dans un périmètre (Scope) |
Jusqu'à 2 000 fichiers par défaut |
|
Pagination de la liste des fichiers |
|
|
Écritures concurrentes |
|
|
Caviardage des versions historiques |
Irréversible. Le caviardage efface uniquement les versions historiques sélectionnées et ne modifie pas le fichier actuel. |
|
Affichages de fichiers |
Lecture seule. Gérez les mémoires à l'aide d'interfaces structurées telles que le SDK ou la CLI. |
Si le contenu du fichier, le chemin ou le nombre de fichiers dépasse la limite correspondante, le service renvoie respectivement PAYLOAD_TOO_LARGE, VALIDATION_ERROR ou QUOTA_EXCEEDED. Si le condensé d'une écriture concurrente ne correspond pas, le service renvoie SHA_MISMATCH. Lisez le dernier fichier avant de décider de réessayer.
Limites d'écriture de mémoire
|
Élément |
Limite |
|
Nombre de |
Jusqu'à 20 |
|
Longueur totale du contenu des |
Jusqu'à 32 000 octets en UTF-8 |
|
Longueur du |
Jusqu'à 32 000 octets en UTF-8 |
|
Longueur de |
Jusqu'à 256 caractères |
|
Nombre de clés |
Jusqu'à 16 |
|
Longueur de la clé |
Jusqu'à 64 caractères |
|
Longueur de la valeur |
Jusqu'à 1 024 caractères |
Fournissez au moins l'un des éléments suivants : messages ou text. Le joker * n'est pas autorisé dans le périmètre (Scope) lors de l'ajout de mémoires.
Visibilité des écritures asynchrones
AddMemories.sync a pour valeur par défaut false, ce qui active les écritures asynchrones. Les écritures asynchrones deviennent visibles comme suit :
Les messages bruts sont écrits en premier et peuvent être interrogés immédiatement en tant que mémoires à court terme.
L'extraction de la mémoire à long terme s'exécute en arrière-plan.
Une fois l'extraction de la mémoire à long terme et l'actualisation de l'index terminées, les mémoires peuvent être récupérées en appelant
SearchMemories.
Pour afficher immédiatement les résultats d'extraction après une écriture lors d'un test, définissez sync sur true. Un bref délai d'actualisation de l'index peut toujours se produire avant que les mémoires à long terme ne soient consultables après la fin d'une écriture synchrone. Appelez également GetMemoryTask et transmettez le requestId renvoyé par AddMemories pour interroger l'état de la tâche d'extraction asynchrone et les identifiants des unités de mémoire extraites.
Valeurs par défaut de recherche
|
Paramètre |
Valeur par défaut |
Description |
|
|
|
Nombre maximal de résultats à renvoyer. La valeur par défaut est 10 et le maximum est 50. Le filtrage par pertinence ou la déduplication sémantique peuvent entraîner un nombre de résultats inférieur à topK. |
|
|
|
Indique si le reclassement est activé. |
|
|
|
Indique si les preuves sources à court terme doivent être incluses dans le champ |
|
|
|
Seuil de pertinence dans la plage |
Lorsque vous recherchez des mémoires à long terme, appId et tenantId sont requis. Vous pouvez utiliser le joker * pour agentId et runId.
Interrogations de mémoires à court terme
ListMemoryStoreMessages interroge les messages de session bruts. Les quatre niveaux de périmètre (Scope), appId, tenantId, agentId et runId, sont requis. Les jokers ne sont pas pris en charge.
Utilisez cette API pour :
Afficher les messages de session bruts.
Rejouer une session spécifique.
Dépanner l'extraction de la mémoire à long terme.
Limites de la consolidation de mémoire (Dream)
La consolidation de mémoire (Dream) est une tâche asynchrone qui affine et fusionne davantage les mémoires stockées, et extrait des compétences et des profils. Les API associées sont CreateMemoryDreamTask, GetMemoryDreamTask, ListMemoryDreamTasks, ListMemoryDreamActions, ApplyMemoryDreamActions et CancelMemoryDreamTask.
Limites de CreateMemoryDreamTask
|
Élément |
Limite |
|
Nombre de |
Requis. Jusqu'à 20. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Longueur des |
Jusqu'à 4 000 octets en UTF-8 |
|
|
Jusqu'à 100 par requête |
Valeurs d'énumération
|
Champ |
Valeurs |
|
|
|
|
|
|
|
|
|
|
Clés |
|
|
État de la tâche ( |
|
|
Type d'action ( |
|
|
État de l'action ( |
|
Lorsque applyMode=proposal, la tâche génère des actions dans l'état proposed. Appelez ApplyMemoryDreamActions pour appliquer explicitement les actions. Lorsque safe_auto est utilisé, le service applique automatiquement les actions sûres qui satisfont aux seuils de confiance. Les actions EMIT_SKILL et EMIT_PROFILE sont écrites directement par la tâche Dream et ne nécessitent pas d'application manuelle.
Tâches asynchrones et pagination des listes
|
API |
Limite par défaut |
Limite maximale |
|
|
50 |
100 |
|
|
100 |
100 |
|
|
50 |
100 |
|
|
100 |
100 |
Les valeurs d'état des tâches d'extraction pour ListMemoryTasks.status ou task.status renvoyées par GetMemoryTask sont queued / running / completed / failed / needs_reconcile.
GetMemoryTask et ListMemoryTasks dépendent de l'index des tâches. Après la première écriture, le service nécessite un certain temps pour construire l'index des tâches. Pendant cette période, ces API peuvent renvoyer 409 CONFLICT avec le message ingest task index is still building, please retry shortly. Réessayez ultérieurement.
CLI, SDK et plugins
Pagination de la CLI
Les commandes de liste de la CLI liées à la mémoire renvoient une seule page de résultats et ne récupèrent pas automatiquement les pages suivantes. Pour récupérer la page suivante, utilisez le nextToken issu de la réponse.
Exemple :
tablestore-agent-cli memory list-units \
--store agent_memory \
--app-id app-001 \
--next-token <token>
Création automatique d'instance Tablestore
Si ots_endpoint et ots_instance_name ne sont pas configurés, la CLI crée et réutilise automatiquement une instance Tablestore gérée dans la région Chine (Pékin) ou Chine (Hangzhou) lorsque vous exécutez la commande doctor ou effectuez une opération. La création de l'instance prend un certain temps et le résultat est écrit dans le fichier de configuration local.
Si vous configurez manuellement un point de terminaison et un nom d'instance ultérieurement, la CLI utilise l'instance explicitement configurée.
Versions du SDK et de la CLI
|
SDK ou outil |
Version requise |
|
SDK Python |
|
|
SDK Node.js |
|
|
Agent Storage SDK pour Python |
|
|
Agent Storage SDK pour TypeScript |
|
|
Agent Storage SDK pour Go |
|
|
CLI |
|
Remarques sur les plugins d'agent
Par défaut, les plugins Hermes et OpenClaw effectuent des recherches parmi les agents et les sessions du locataire actuel, en utilisant agentId=* et runId=*. Si votre activité professionnelle n'autorise pas le partage de mémoires entre agents ou sessions, utilisez le SDK pour contrôler le périmètre (Scope) de recherche ou modifiez la configuration du plugin.
Limites de mise à niveau progressive et de restauration
Les trois commutateurs suivants sont désactivés par défaut et fonctionnent de manière indépendante :
memory_unit_v2_write_enabled=false: le service ne génère ni n'accepte les champs d'écriture V2.memory_unit_v2_projection_enabled=false: le service conserve le format d'octet hérité pour les projections de fichiers.search_session_affinity_mode=off: le service conserve le comportement de recherche à voie unique hérité et les champs de réponse associés.
Procédez à un déploiement serveur en premier lieu. Commencez par mettre à niveau tous les réplicas vers une version capable de lire les colonnes V2 et de reconnaître contextScope ainsi que les nouveaux champs de réponse, tout en maintenant les commutateurs désactivés. Une fois tous les réplicas hérités supprimés, les clients peuvent commencer à envoyer contextScope. Ensuite, changez le mode en shadow puis en on. Les serveurs hérités rejettent strictement les champs inconnus. Si les clients envoient contextScope avant que tous les réplicas ne soient mis à niveau, le cluster en version mixte renvoie une erreur HTTP 400.
N'activez pas les écritures V2 ni les projections de fichiers V2 dans un cluster en version mixte. Après l'écriture d'une ligne V2, ne revenez pas directement à un analyseur ou un rédacteur hérité qui ne reconnaît pas les colonnes V2. Une écriture de ligne entière héritée peut écraser ou supprimer les nouveaux champs. Pour restaurer le comportement de l'application, revenez à une version compatible capable de lire les données V2 avec tous les nouveaux commutateurs désactivés, plutôt que de revenir à un binaire antérieur à V2.