Pular para o conteúdo

Memory Store Schema

O Memory Store é o documento raiz de todo export PAM e o único arquivo obrigatório. Ele contém todas as memórias do usuário, relações, índice de conversas, verificação de integridade e assinaturas criptográficas opcionais.

portable-ai-memory.schema.json

Schema: JSON Schema Draft 2020-12 · License: Apache 2.0

FieldTypeDescription
schemastringDeve ser "portable-ai-memory"
schema_versionstringVersão semântica. Atual: "1.0"
ownerOwnerO indivíduo proprietário dessas memórias
memoriesMemoryObject[]Array de objetos de memória — o payload primário
FieldTypeDefaultDescription
spec_uristring | nullnullURI da versão da especificação. Serve como identificador, não como recurso recuperável
export_idstring | nullnullUUID v4 deste export. Permite rastreamento e detecção de duplicatas
exported_bystring | nullnullSistema que gerou o export. Formato: system-name/major.minor.patch
export_datestringTimestamp ISO 8601 do export
relationsRelationObject[][]Relacionamentos semânticos entre memórias
conversations_indexConversationIndexEntry[][]Referências leves de conversas
integrityIntegrityBlockBloco de verificação de integridade
export_type"full" | "incremental""full"Export completo ou incremental (delta)
base_export_idstring | nullnullPara incremental: export_id do export base
sincestring | nullnullPara incremental: somente memórias posteriores a este timestamp
type_registrystring | nullnullURI do registro de tipos customizados
signatureSignatureBlocknullAssinatura criptográfica para autenticidade

Quando signature está presente (não nulo), export_id e export_date tornam-se obrigatórios (aplicado pelo schema via if/then).

O indivíduo proprietário dessas memórias. Para resolução de identidade entre plataformas, recomenda-se preencher o campo did com um W3C Decentralized Identifier.

FieldTypeRequiredDescription
idstringyesIdentificador único do proprietário (recomenda-se UUID v4)
didstring | nullnoW3C Decentralized Identifier para identidade entre plataformas
created_atstringnoTimestamp ISO 8601 de criação do registro do proprietário

Uma única unidade de memória portável — a unidade fundamental do PAM.

FieldTypeDescription
idstringIdentificador único. Recomenda-se UUID v4
typeMemoryTypeTipo de memória da taxonomia fechada
contentstringConteúdo em linguagem natural — o payload semântico primário
content_hashstringSHA-256 do conteúdo normalizado (spec §6). Padrão: ^sha256:[a-f0-9]{64}$
temporalTemporalBlockMetadados temporais. created_at é obrigatório
provenanceProvenanceBlockMetadados de origem. platform é obrigatório
FieldTypeConditionDescription
custom_typestring | nullObrigatório quando type == "custom"Identificador de tipo customizado. Deve ser null quando o tipo não é "custom"
FieldTypeDefaultDescription
statusMemoryStatus"active"Estado do ciclo de vida
summarystring | nullnullResumo curto para exibição
tagsstring[][]Tags em minúsculas. Padrão: ^[a-z0-9][a-z0-9_-]*$
confidenceConfidenceBlockPontuação de confiança computada pelo sistema
accessAccessBlockControle de acesso para cenários multi-agente
embedding_refstring | nullnullReferência à entrada no arquivo de embeddings
metadataMetadataBlockMetadados adicionais (extensível)

Taxonomia fechada de tipos de memória:

TypeDescription
factInformação objetiva e verificável sobre o usuário
preferencePreferência, gosto ou desejo declarado do usuário
skillCompetência, expertise ou habilidade demonstrada
contextContexto situacional ou temporal
relationshipRelação com outra pessoa, entidade ou organização
goalObjetivo ativo ou aspiração
instructionComo o usuário deseja ser tratado ou interpelado
identityInformação de identidade pessoal
environmentDetalhes do ambiente técnico ou físico
projectProjeto ativo ou iniciativa
customTipo extensível. Requer o campo custom_type

Estados do ciclo de vida:

StatusDescription
activeAtual e válido. Estado padrão
supersededSubstituído por uma memória mais recente
deprecatedAinda válido, mas sem prioridade
retractedExplicitamente invalidado pelo usuário
archivedRetido apenas para fins históricos
FieldTypeRequiredDescription
created_atstringyesTimestamp ISO 8601 de criação
updated_atstring | nullnoTimestamp da última atualização
valid_fromstring | nullnoQuando esta memória se torna válida
valid_untilstring | nullnoQuando esta memória expira
superseded_bystring | nullnoID da memória que substituiu esta

Rastreamento de origem para auditabilidade e resolução de conflitos entre plataformas.

FieldTypeRequiredDescription
platformstringyesIdentificador da plataforma de origem. Padrão: ^[a-z0-9_-]{2,32}$ (ex.: chatgpt, claude, gemini)
platform_user_idstring | nullnoID do usuário na plataforma de origem
conversation_refstring | nullnoReferência à entrada em conversations_index
message_refstring | nullnoReferência a uma mensagem específica
extraction_methodstring | nullnoComo a memória foi extraída: llm_inference, explicit_user_input, api_export, browser_extraction, manual
extracted_atstring | nullnoTimestamp ISO 8601 da extração
extractorstring | nullnoSistema que realizou a extração

Pontuação de confiança computada pelo sistema. NÃO é prioridade definida pelo usuário.

FieldTypeRequiredDescription
initialnumbernoConfiança no momento da extração [0.0–1.0]
currentnumbernoConfiança atual após decaimento/reforço [0.0–1.0]
decay_modelstring | nullno"time_linear", "time_exponential" ou "none"
last_reinforcedstring | nullnoTimestamp ISO 8601 do último reforço

Controle de acesso para cenários multi-agente e federados.

FieldTypeDefaultDescription
visibilitystring"private""private", "shared" ou "public"
exportablebooleantrueSe esta memória pode ser incluída em exports
shared_withAccessGrant[][]Lista de concessões de acesso
FieldTypeRequiredDescription
entitystringyesIdentificador da entidade com acesso concedido
permissionsstring[]yesArray de: "read", "write", "delete"

Metadados adicionais. Permite additionalProperties para extensibilidade.

FieldTypeDescription
languagestring | nullTag de idioma BCP 47 (ex.: "en", "pt-BR")
domainstring | nullDomínio do conhecimento (ex.: "technical", "personal")
custom fieldsanyImplementações podem adicionar campos adicionais

Um relacionamento semântico entre dois objetos de memória, formando arestas em um grafo de conhecimento.

FieldTypeRequiredDescription
idstringyesIdentificador único
fromstringyesID da memória de origem
tostringyesID da memória de destino
typestringyessupports, contradicts, extends, supersedes, related_to, derived_from
confidencenumber | nullnoConfiança neste relacionamento [0.0–1.0]
created_atstringyesTimestamp ISO 8601

Entrada de índice leve para uma conversa. O histórico completo de mensagens é armazenado externamente como arquivos complementares.

FieldTypeRequiredDescription
idstringyesIdentificador único da conversa
platformstringyesIdentificador da plataforma de origem
temporalobjectyesMetadados temporais (created_at obrigatório, updated_at opcional)
titlestring | nullnoTítulo da conversa
message_countinteger | nullnoNúmero de mensagens
tagsstring[]noTags ou tópicos. Padrão: ^[a-z0-9][a-z0-9_-]*$
derived_memoriesstring[]noIDs de memórias derivadas desta conversa (informativo)
storageStorageReferencenoReferência aos dados completos da conversa

Referência a armazenamento externo para objetos de dados grandes.

FieldTypeRequiredDescription
typestringyes"file", "database", "object_storage", "vector_db", "uri"
refstringyesCaminho, URI ou identificador para os dados armazenados
formatstring | nullnoFormato dos dados: "json", "jsonl", "csv", "parquet"

Verificação de integridade. O checksum é SHA-256 do array de memórias canonicalizado usando RFC 8785 (JCS). As memórias são ordenadas por id em ordem crescente antes da canonicalização.

FieldTypeRequiredDescription
canonicalizationstringnoPadrão: "RFC8785". Atualmente o único método suportado
checksumstringyesSHA-256 das memórias canonicalizadas. Formato: sha256:<hex>
total_memoriesintegeryesDeve ser igual ao comprimento do array memories

Assinatura criptográfica sobre o export. O payload da assinatura é {checksum, export_id, export_date, owner_id} canonicalizado com RFC 8785 (spec §18.3).

FieldTypeRequiredDescription
algorithmstringyesEd25519 (recomendado), ES256, ES384, RS256, RS384, RS512
public_keystringyesChave pública do signatário
valuestringyesAssinatura codificada em Base64url (RFC 4648 §5)
signed_atstringyesTimestamp ISO 8601
key_idstring | nullnoIdentificador da chave. Se owner.did estiver presente, recomenda-se uma DID URL