Memory.listThreads()
La méthode listThreads() récupère des fils avec prise en charge de la pagination et filtrage facultatif selon resourceId, metadata ou les deux.
Exemples d’utilisationLien direct vers Exemples d’utilisation
Lister tous les fils avec paginationLien direct vers Lister tous les fils avec pagination
const result = await memory.listThreads({
page: 0,
perPage: 10,
})
Récupérer tous les fils sans paginationLien direct vers Récupérer tous les fils sans pagination
Utilisez perPage: false pour récupérer en une seule fois tous les fils correspondants.
attention
Utilisez la pagination, en particulier pour les jeux de données volumineux. Employez cette option avec prudence.
const result = await memory.listThreads({
filter: { resourceId: 'user-123' },
perPage: false,
})
Filtrer selon resourceIdLien direct vers filter-by-resourceid
const result = await memory.listThreads({
filter: { resourceId: 'user-123' },
page: 0,
perPage: 10,
})
Filtrer selon les métadonnéesLien direct vers Filtrer selon les métadonnées
const result = await memory.listThreads({
filter: { metadata: { category: 'support', priority: 'high' } },
page: 0,
perPage: 10,
})
Filtre combiné (resourceId et métadonnées)Lien direct vers Filtre combiné (resourceId et métadonnées)
const result = await memory.listThreads({
filter: {
resourceId: 'user-123',
metadata: { status: 'active' },
},
page: 0,
perPage: 10,
})
ParamètresLien direct vers Paramètres
filter?:
{ resourceId?: string; metadata?: Record<string, unknown> }
Objet de filtrage facultatif. resourceId filtre les fils selon l’ID de la ressource. metadata filtre les fils selon des paires clé-valeur de métadonnées (logique AND : toutes doivent correspondre)
page?:
number
Numéro de page à récupérer (indexé à partir de 0)
perPage?:
number | false
Nombre maximal de fils à renvoyer par page, ou false pour tous les récupérer
orderBy?:
{ field: 'createdAt' | 'updatedAt', direction: 'ASC' | 'DESC' }
Configuration du tri avec le champ et le sens (valeur par défaut : { field: 'createdAt', direction: 'DESC' })
Valeur renvoyéeLien direct vers Valeur renvoyée
result:
Promise<StorageListThreadsOutput>
Promise résolue avec les résultats paginés des fils et leurs métadonnées
L’objet renvoyé contient :
threads: tableau d’objets représentant les filstotal: nombre total de fils correspondant au filtrepage: numéro de la page actuelle (identique au paramètre d’entréepage)perPage: nombre d’éléments par page (identique au paramètre d’entréeperPage)hasMore: booléen indiquant si d’autres résultats sont disponibles
Exemple d’utilisation avancéeLien direct vers Exemple d’utilisation avancée
src/test-memory.ts
import { mastra } from './mastra'
const agent = mastra.getAgent('agent')
const memory = await agent.getMemory()
let currentPage = 0
const perPage = 25
let hasMorePages = true
// Fetch all active threads for a user, sorted by creation date
while (hasMorePages) {
const result = await memory?.listThreads({
filter: {
resourceId: 'user-123',
metadata: { status: 'active' },
},
page: currentPage,
perPage: perPage,
orderBy: { field: 'createdAt', direction: 'ASC' },
})
if (!result) {
console.log('No threads')
break
}
result.threads.forEach(thread => {
console.log(`Thread: ${thread.id}, Created: ${thread.createdAt}`)
})
hasMorePages = result.hasMore
currentPage++ // Move to next page
}
Filtrage selon les métadonnéesLien direct vers Filtrage selon les métadonnées
Le filtre de métadonnées utilise la logique AND : toutes les paires clé-valeur indiquées doivent correspondre pour qu’un fil soit inclus dans les résultats :
// This will only return threads where BOTH conditions are true:
// - category === 'support'
// - priority === 'high'
await memory.listThreads({
filter: {
metadata: {
category: 'support',
priority: 'high',
},
},
})