Tous les produits
Search
Centre de documentation

Tablestore:Limitations and notes

Dernière mise à jour :Oct 13, 2026

Les quotas et limites suivants s'appliquent aux régions Memory Storage, aux magasins de mémoire, aux écritures, aux recherches, à la consolidation de la mémoire (Dream), aux tâches asynchrones, au 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 dans les régions Chine (Pékin), Chine (Shanghai), Chine (Hangzhou), Chine (Shenzhen), Chine (Hong Kong) et Singapour.

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 extractInstructions

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. Vous pouvez définir ces instructions lors de l'appel à CreateMemoryStore ou les modifier 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 relatives au Scope

Opération

Exigence relative au Scope

Joker * autorisé

Ajouter des mémoires

appId est requis. Les niveaux inférieurs vides sont automatiquement définis sur __default__.

Non

Rechercher des mémoires à long terme

appId et tenantId sont requis.

Autorisé pour agentId et runId

Interroger des mémoires à court terme

Les quatre niveaux du Scope sont requis.

Non

Obtenir une mémoire à long terme

Les quatre niveaux du Scope sont requis.

Non

Mettre à jour une mémoire à long terme

Les quatre niveaux du Scope sont requis.

Non

Supprimer une mémoire à long terme

Les quatre niveaux du Scope sont requis.

Non

Lister des mémoires à long terme

Spécifiez le Scope par niveau.

Oui

Lister les valeurs du Scope (ListMemoryStoreScopes)

Spécifiez le Scope par niveau.

Oui

Interroger les tâches d'extraction (ListMemoryTasks)

Spécifiez le Scope par niveau.

Oui

Interroger les audits de requête

Spécifiez le Scope par niveau.

Oui

Les jokers doivent respecter la hiérarchie du 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

Scope

Les quatre niveaux, appId, tenantId, agentId et runId, sont requis. Le joker * n'est pas pris en charge.

Chemin du fichier

Le chemin canonique doit commencer par / et peut atteindre 800 octets en UTF-8. Le chemin ne peut pas être le répertoire racine ni contenir de segments de chemin vides, ., .. ou de caractères NUL.

Contenu du fichier

Texte UTF-8 valide uniquement

Taille du fichier

Jusqu'à 100 Kio (102 400 octets) par fichier

Fichiers actuels dans un Scope

Jusqu'à 2 000 fichiers par défaut

Pagination de la liste des fichiers

limit a pour valeur par défaut 100 et peut aller jusqu'à 500.

Écritures simultanées

expectedSha256 est facultatif. Si plusieurs rédacteurs modifient le fichier, transmettez le condensé issu de la dernière lecture.

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 simultanée 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 messages

Jusqu'à 20

Longueur totale du contenu des messages

Jusqu'à 32 000 octets en UTF-8

Longueur du text

Jusqu'à 32 000 octets en UTF-8

Longueur de messageId

Jusqu'à 256 caractères

Nombre de clés metadata

Jusqu'à 16

Longueur de la clé metadata

Jusqu'à 64 caractères

Longueur de la valeur metadata

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 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. Vous pouvez également appeler GetMemoryTask et transmettre le requestId renvoyé par AddMemories pour interroger l'état de la tâche d'extraction asynchrone et les ID des unités de mémoire extraites.

Valeurs par défaut de recherche

Paramètre

Valeur par défaut

Description

topK

10

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.

enableRerank

true

Indique si le reclassement est activé.

includeEvidence

false

Indique si les preuves sources à court terme doivent être incluses dans le champ evidence de chaque résultat.

minSimilarity

0

Seuil de pertinence dans la plage 0~1. Une valeur de 0 désactive le filtrage. Une valeur supérieure à 0 filtre les résultats dont les scores de pertinence sont inférieurs au seuil. Lorsque le reclassement est activé, le score correspond au score de pertinence du reclassement. Sinon, le score correspond à la similarité cosinus normalisée.

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 du 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 les mémoires stockées, tout en extrayant 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 d'éléments scopes

Obligatoire. Jusqu'à 20.

maxSessions

0~100

maxMessages

0~20000

maxMemories

0~5000

expandedScopeLimit

0~1000

Longueur de instructions

Jusqu'à 4 000 octets en UTF-8

actionIds pour ApplyMemoryDreamActions

Jusqu'à 100 par requête

Valeurs d'énumération

Champ

Valeurs

taskType

memory (par défaut) / skill / profile

applyMode

proposal (par défaut) / safe_auto. Pris en charge uniquement lorsque taskType=memory.

scopeOutputMode

preserve_scope (par défaut) / promote_scope

Clés confidenceThresholds

add / update / merge. Les valeurs vont de 0~1. DELETE ne prend pas en charge de seuil de confiance automatique.

État de la tâche (champ status de la tâche)

queued / running / planning / applying / completed / completed_with_failures / failed / cancelled

Type d'action (champ action)

ADD / UPDATE / DELETE / MERGE / NOOP / EMIT_SKILL / EMIT_PROFILE

État de l'action (champ status de l'action)

proposed / applied / skipped / failed

Lorsque applyMode=proposal, la tâche génère des actions dans l'état proposed. Appelez ApplyMemoryDreamActions pour appliquer explicitement les actions. Lorsque le mode safe_auto est utilisé, le service applique automatiquement les actions sûres qui respectent les 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

ListMemoryTasks

50

100

ListMemoryStoreScopes

100

100

ListMemoryDreamTasks

50

100

ListMemoryDreamActions

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 relatives à la mémoire ne renvoient qu'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 jeton nextToken présent dans 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 enregistré dans le fichier de configuration local.

Si vous configurez manuellement un endpoint et un nom d'instance par la suite, la CLI utilise l'instance explicitement configurée.

Versions des SDK et de la CLI

SDK ou outil

Version requise

SDK Python

tablestore >= 6.4.7 (les versions 6.4.5 et ultérieures prennent en charge les API de mémoire de base ; les versions 6.4.7 et ultérieures prennent en charge les API de tâche et de consolidation de mémoire)

SDK Node.js

tablestore >= 5.6.5

Agent Storage SDK pour Python

tablestore-agent-storage >= 1.0.10

Agent Storage SDK pour TypeScript

@tablestore/agent-storage >= 0.0.11

Agent Storage SDK pour Go

github.com/aliyun/tablestore-agent-storage-sdk/go

CLI

@tablestore/tablestore-agent-cli >= 0.2.5

Remarques sur les plugins d'agent

Par défaut, les plugins Hermes et OpenClaw effectuent des recherches across les agents et les sessions du locataire actuel, en utilisant agentId=* et runId=*. Si votre activité métier n'autorise pas le partage des mémoires entre agents ou sessions, utilisez le SDK pour contrôler la portée de recherche ou modifiez la configuration du plugin.

Limites de mise à niveau progressive et de retour arrière

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'octets 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.

Privilégiez 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 complète héritée peut écraser ou supprimer les nouveaux champs. Pour revenir sur le comportement de l'application, passez à 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.