1. Xache Protocol为AI智能体构建可验证记忆与集体智能的底层协议如果你正在开发AI智能体无论是个人助手、企业客服机器人还是复杂的多智能体协作系统一个核心的痛点很快就会浮现记忆。传统的聊天记录或简单的向量数据库往往难以支撑智能体在长期、多轮、多任务场景下的“认知连续性”。它们记不住用户的偏好无法从历史对话中提炼结构化知识更难以与其他智能体安全、可信地共享经验。这正是Xache Protocol试图解决的底层问题。它不是一个简单的存储服务而是一套为AI智能体设计的、融合了可验证记忆、临时工作记忆、知识图谱、集体智能与链上声誉的完整基础设施。简单来说它想让你的AI智能体变得更“聪明”、更“可信”并且拥有自己的“社交网络”和“成长轨迹”。2. 核心架构与设计哲学为什么是Xache在深入代码之前理解Xache的设计哲学至关重要。这决定了它与其他方案的差异以及它是否适合你的项目。2.1 从“存储”到“认知”的范式转变大多数AI记忆方案停留在“存”和“取”的层面比如将对话历史存入向量数据库然后通过语义搜索召回。Xache的核心理念是“认知优先”。它认为智能体的记忆系统应该模拟人类的认知过程而不仅仅是数据存储。工作记忆Ephemeral Context 这对应人类大脑的“短期记忆”。在一个会话比如一次用户咨询中智能体需要一块临时的“草稿纸”来记录当前对话的上下文、临时事实、待办任务等。Xache提供了6个命名的“插槽”conversation,facts,tasks,cache,scratch,handoff让智能体可以结构化地管理这些临时信息并在会话结束后选择性地将重要内容“固化”为长期记忆。这解决了传统方案中上下文窗口有限、临时信息与永久信息混杂的问题。长期记忆与可验证性Memory with Receipts 长期记忆不仅仅是存储数据更重要的是信任。Xache为每一次存储操作生成一个密码学收据Merkle证明。这意味着你可以向第三方用户、其他智能体、审计方证明“某个智能体在某个时间点确实存储了这段记忆”且内容未被篡改。这对于构建需要问责和审计的金融、法律或医疗领域的智能体至关重要。知识图谱Knowledge Graph 记忆的更高阶形式是知识。Xache内置了从非结构化文本对话记录、文档中自动提取实体人、组织、概念和关系管理、位于、使用的能力并构建成可查询的知识图谱。这使得智能体不仅能“记得”对话原文还能“理解”其中的事实网络并回答“谁管理哪个团队”这类复杂问题。2.2 集体智能与声誉经济单个智能体的能力是有限的。Xache引入了“集体智能”层允许智能体在保护隐私的前提下向一个共享池贡献有效的“启发式”或“模式”例如“当用户询问退款政策时最佳实践是先查询订单状态”。贡献者会获得链上声誉基于ERC-8004标准这个声誉可以跨平台携带。这意味着一个在客服场景中积累了高声誉的智能体其“经验值”在进入一个新的游戏或创作平台时依然被认可。这为AI智能体创造了一个良性的“经验经济”生态。2.3 零知识语义搜索隐私与功能的平衡语义搜索是记忆系统的核心功能但将用户查询的明文和向量发送到云端存在隐私风险。Xache的“Memory Probe”功能实现了零知识语义搜索。它会在本地将查询文本转换为一种称为“认知指纹”的格式主题哈希压缩嵌入再将这个指纹发送到服务器进行匹配。服务器在不知道原始查询内容的情况下就能返回最相关的记忆列表。这个过程完全免费鼓励开发者在存储和检索前先进行“探测”提升效率。2.4 按量付费与无状态架构Xache采用x402协议进行加密微支付完全按使用量计费例如存储一次记忆$0.002检索一次$0.003。没有月费、没有最低消费。SDK会自动处理支付流程。这种模式非常适合初创项目或使用量波动大的应用将基础设施成本与业务价值直接挂钩。同时其API设计是无状态的易于与任何现有的智能体框架集成。3. 快速上手指南从零到一集成Xache理论说再多不如动手试。我们以构建一个具有记忆功能的个人学习助手为例演示如何用TypeScript SDK快速集成Xache。3.1 环境准备与初始化首先你需要一个以太坊兼容的钱包地址和对应的私钥用于身份标识和支付。Xache支持Base和Solana链。你可以使用MetaMask创建一个新钱包用于测试务必使用测试网并妥善保管私钥。# 初始化项目并安装依赖 npm init -y npm install xache/sdk dotenv创建.env文件存放你的私钥切勿提交到版本控制PRIVATE_KEY你的钱包私钥0x开头初始化Xache客户端// index.ts import { XacheClient } from xache/sdk; import * as dotenv from dotenv; dotenv.config(); // 初始化客户端 const client new XacheClient({ apiUrl: https://api.xache.xyz, // 生产环境API did: did:agent:evm:${process.env.WALLET_ADDRESS}, // 去中心化身份标识 privateKey: process.env.PRIVATE_KEY!, // 用于签名交易 }); // 一个简单的健康检查 async function healthCheck() { try { // 可以尝试一个低成本操作如查询集体智能列表 const collectiveList await client.collective.list({ limit: 1 }); console.log(✅ Xache 客户端连接成功); } catch (error) { console.error(❌ 连接失败:, error.message); } } healthCheck();注意did:agent:evm:是Xache使用的去中心化标识符格式它将你的区块链钱包地址转化为智能体的唯一身份ID。私钥仅用于在本地对交易进行签名不会发送给Xache服务器符合Web3的安全实践。3.2 实现核心记忆功能我们的学习助手需要记住用户的学习偏好和已掌握的知识点。// memoryManager.ts import { XacheClient } from xache/sdk; export class LearningAssistantMemory { constructor(private client: XacheClient) {} // 1. 存储用户偏好长期记忆 async storeUserPreference(userId: string, preferences: Recordstring, any) { const result await this.client.memory.store({ data: { userId, type: user_preference, preferences, timestamp: new Date().toISOString(), }, storageTier: hot, // 访问频繁的数据用‘hot’层 context: user:${userId}:preferences, metadata: { category: preference, source: learning_assistant_v1, }, }); console.log(偏好已存储。存储键: ${result.storageKey}, 收据ID: ${result.receiptId}); return result; } // 2. 存储学到的知识点长期记忆 async storeLearnedConcept(userId: string, topic: string, explanation: string, sources: string[]) { const result await this.client.memory.store({ data: { userId, topic, explanation, sources, mastered: false, // 初始未掌握 lastReviewed: new Date().toISOString(), }, storageTier: warm, // 知识点可能定期复习用‘warm’层 context: user:${userId}:knowledge, metadata: { category: knowledge, topic, difficulty: intermediate, // 可自定义元数据便于后续筛选 }, }); console.log(知识点“${topic}”已存储。记忆ID: ${result.memoryId}); return result; } // 3. 零知识语义搜索查找相关知识点 async findRelatedKnowledge(userQuery: string, userId: string, limit 5) { const matches await this.client.memory.probe({ query: userQuery, category: knowledge, // 限定在‘knowledge’类别中搜索 scope: user:${userId}:knowledge, // 限定在该用户的上下文中搜索 limit, }); console.log(找到 ${matches.matches.length} 条相关记忆); return matches.matches; // 返回匹配的记忆片段 } }实操要点解析storageTierhot热存储用于高频访问数据延迟最低warm温存储用于中等访问频率cold冷存储用于归档数据成本最低。根据数据的访问模式选择可以优化成本。context 这是一个强大的多租户和访问控制机制。你可以用user:{id}、project:{name}等格式来隔离不同用户或项目的数据。后续的probe操作可以通过scope参数限定搜索范围确保数据安全。metadata 尽量为记忆添加丰富的、结构化的元数据。这不会影响语义搜索的核心相关性但能为后续的过滤、统计和基于规则的检索提供极大便利。3.3 管理会话上下文临时工作记忆当用户开始一次学习会话时助手需要跟踪当前对话的临时状态。// sessionManager.ts export class LearningSession { private sessionKey: string | null null; constructor(private client: XacheClient) {} // 创建新会话 async startSession(userId: string, topic: string) { const session await this.client.ephemeral.createSession({ ttlSeconds: 7200, // 会话有效期2小时 maxWindows: 3, // 最多可续期3次 metadata: { userId, mainTopic: topic, }, }); this.sessionKey session.sessionKey; console.log(会话已创建密钥: ${this.sessionKey}); // 初始化会话槽位 await this.client.ephemeral.writeSlot(this.sessionKey, conversation, { history: [], currentTopic: topic, }); await this.client.ephemeral.writeSlot(this.sessionKey, tasks, { pending: [explain_basic_concept, provide_example, quiz], completed: [], }); await this.client.ephemeral.writeSlot(this.sessionKey, facts, { userStatedGoal: 学习关于 ${topic} 的知识, assumedLevel: beginner, }); return session; } // 在会话中记录对话轮次 async recordConversationTurn(role: user | assistant, content: string) { if (!this.sessionKey) throw new Error(会话未开始); const convSlot await this.client.ephemeral.readSlot(this.sessionKey, conversation); convSlot.history.push({ role, content, time: new Date().toISOString() }); await this.client.ephemeral.writeSlot(this.sessionKey, conversation, convSlot); } // 标记任务完成 async completeTask(taskName: string) { if (!this.sessionKey) throw new Error(会话未开始); const tasksSlot await this.client.ephemeral.readSlot(this.sessionKey, tasks); const index tasksSlot.pending.indexOf(taskName); if (index -1) { tasksSlot.pending.splice(index, 1); tasksSlot.completed.push(taskName); await this.client.ephemeral.writeSlot(this.sessionKey, tasks, tasksSlot); console.log(任务“${taskName}”已完成。); } } // 结束会话并将重要内容提升为长期记忆 async endAndPromoteSession() { if (!this.sessionKey) throw new Error(会话未开始); // 1. 从会话中提取关键事实和总结 const facts await this.client.ephemeral.readSlot(this.sessionKey, facts); const conversation await this.client.ephemeral.readSlot(this.sessionKey, conversation); // 2. 调用Xache的提取功能用LLM自动总结学习要点 const extraction await this.client.extraction.extract({ trace: JSON.stringify(conversation.history), // 传入对话历史 instructions: 从这段辅导对话中提取出用户学到的核心概念、存在的误解以及学习风格偏好。以JSON格式输出。, provider: openai, // 使用自带的OpenAI密钥 model: gpt-4o-mini, }); // 3. 将提取的总结存储为长期记忆 if (extraction.learnings) { const learnings JSON.parse(extraction.learnings); await this.client.memory.store({ data: { type: session_summary, topic: facts.userStatedGoal, keyLearnings: learnings.coreConcepts, misconceptions: learnings.misconceptions, learningStyle: learnings.learningStyle, sessionFacts: facts, }, storageTier: warm, context: user:${facts.userId}:session_summaries, }); console.log(会话总结已存入长期记忆。); } // 4. 将整个会话提升为持久记忆原始对话数据 const promoted await this.client.ephemeral.promoteSession(this.sessionKey); console.log(会话已结束${promoted.memoriesCreated} 条临时记忆已转为持久记忆。); this.sessionKey null; } }经验分享槽位设计 合理利用6个命名槽位。conversation记录原始对话流facts记录会话中推导出的确定事实tasks管理待办和已完成事项cache存放临时计算结果scratch用于完全临时的草稿handoff用于在多智能体间传递上下文。清晰的分工能让逻辑更简洁。会话提升策略 不是所有临时记忆都值得永久保存。promoteSession会将所有槽位数据转为独立的长期记忆。更好的做法是像上面一样先用extractionAPI提炼精华只存储结构化总结再选择性提升原始数据。这能节省存储成本并提升记忆质量。TTL与续期 设置合理的ttlSeconds默认1小时和maxWindows默认5次。智能体可以在会话活跃时调用renewSession来延长有效期避免会话意外过期导致上下文丢失。3.4 构建与查询知识图谱让助手不仅能记忆还能理解概念之间的关系。// knowledgeGraphManager.ts export class KnowledgeGraphManager { constructor(private client: XacheClient) {} // 从文本如学习资料中提取实体和关系构建图谱 async extractFromMaterial(text: string, domain: string education) { const graph await this.client.graph.extract({ trace: text, domain, // 指定领域有助于LLM更准确地提取 provider: managed, // 使用Xache托管的LLM服务省去自己管理API密钥 }); console.log(提取出 ${graph.entities.length} 个实体和 ${graph.relationships.length} 条关系。); // 可选将提取的图谱保存到Xache便于后续查询 const loadResult await this.client.graph.load({ entities: graph.entities, relationships: graph.relationships, }); console.log(知识图谱已加载图谱ID: ${loadResult.graphId}); return { graph, graphId: loadResult.graphId }; } // 向图谱中手动添加一个知识点实体 async addManualEntity(entityName: string, properties: Recordstring, any) { await this.client.graph.addEntity({ id: concept:${entityName.toLowerCase().replace(/\s/g, _)}, name: entityName, type: Concept, properties, }); console.log(实体“${entityName}”已添加。); } // 用自然语言查询图谱 async askGraph(question: string) { const answer await this.client.graph.ask({ question, // 可以指定一个特定的graphId否则在所有图谱中搜索 }); console.log(问答结果: ${answer.answer}); if (answer.supportingFacts) { console.log(支持事实:, answer.supportingFacts); } return answer; } // 查询某个实体周围的关系子图 async querySubgraph(entityName: string, depth: number 2) { const subgraph await this.client.graph.query({ entityName, depth, }); console.log(实体“${entityName}”的${depth}度关系子图:); console.log(JSON.stringify(subgraph, null, 2)); return subgraph; } }核心技巧领域Domain参数 在extract时提供domain如engineering,medicine,education能显著提升实体和关系提取的准确性因为LLM会调用针对该领域优化的提示词。图谱的合并与历史 Xache支持merge操作可以自动合并重复的实体如“机器学习”和“ML”。所有图谱操作都有完整的历史记录你可以通过historyAPI查询图谱在任意时间点的状态这对于审计和调试非常有用。askvsqueryask是高级的自然语言问答适合最终用户query是更精确的图查询适合开发者获取结构化数据。4. 与主流AI框架深度集成Xache的强大之处在于它“开箱即用”地融入了现有的AI开发生态。你不需要重写大量代码就能为你的LangChain、CrewAI或AutoGen应用赋予记忆和认知能力。4.1 在LangChain中作为记忆后端假设你有一个基于LangChain的聊天机器人现在想让它拥有长期记忆。// langchain-integration.ts import { XacheClient } from xache/sdk; import { XacheMemory } from xache/langchain; import { ChatOpenAI } from langchain/openai; import { ConversationChain } from langchain/chains; import { BufferMemory } from langchain/memory; // 1. 创建Xache记忆实例 const xacheMemory new XacheMemory({ client: new XacheClient({ apiUrl: https://api.xache.xyz, did: did:agent:evm:0x..., privateKey: ..., }), sessionId: user_123_session_001, // 唯一的会话ID context: user:123, // 用户级数据隔离 memoryKey: chat_history, // 对应LangChain记忆的key }); // 2. 创建LLM和链使用XacheMemory const model new ChatOpenAI({ temperature: 0.7 }); const chain new ConversationChain({ llm: model, memory: xacheMemory, // 替换默认的BufferMemory }); // 3. 运行对话。所有历史将自动通过Xache存储和读取 const response1 await chain.call({ input: 我喜欢科幻小说尤其是《三体》。 }); console.log(response1.response); const response2 await chain.call({ input: 我刚刚提到的那本科幻小说作者是谁 }); // XacheMemory会自动从长期记忆中检索出《三体》的相关信息注入到当前对话的上下文提示词中。 console.log(response2.response);集成优势XacheMemory实现了LangChain的BaseChatMemory接口。它会在后台自动将每轮对话存储到Xache并在新对话开始时根据当前输入语义搜索相关的历史记忆动态地构建上下文窗口。你无需手动管理记忆的存储和检索逻辑。4.2 在CrewAI中为智能体团队赋予共享记忆在CrewAI的多智能体协作场景中让智能体们共享一个记忆和知识库至关重要。# crewai_integration.py import os from crewai import Agent, Task, Crew, Process from langchain_openai import ChatOpenAI from xache import XacheClient from langchain_xache import XacheMemory # 1. 初始化Xache客户端和记忆 xache_client XacheClient( api_urlhttps://api.xache.xyz, diddid:agent:evm:0x..., private_keyos.environ[PRIVATE_KEY] ) shared_memory XacheMemory( clientxache_client, session_idproject_alpha_crew, contextproject:alpha, # 整个项目共享一个上下文 memory_keycrew_shared_history ) # 2. 创建具有记忆能力的智能体 llm ChatOpenAI(modelgpt-4o, temperature0.3) researcher Agent( role资深研究员, goal深入研究用户指定的主题并发现前沿见解, backstory你是一位严谨的学者擅长从海量信息中提炼关键。, llmllm, memoryTrue, # 启用个体记忆 shared_memoryshared_memory, # 启用共享记忆 verboseTrue ) writer Agent( role技术作家, goal根据研究员的发现撰写清晰、易懂的技术文章, backstory你是一位能将复杂概念转化为通俗文字的优秀作家。, llmllm, memoryTrue, shared_memoryshared_memory, # 与研究员共享同一记忆库 verboseTrue ) # 3. 创建任务 research_task Task( description深入研究“联邦学习在医疗AI中的应用现状与挑战”。, agentresearcher, expected_output一份包含关键发现、技术难点和主要参与者的研究报告。 ) write_task Task( description基于研究员的研究报告撰写一篇面向技术经理的博客文章。, agentwriter, expected_output一篇约1000字、结构清晰、有案例支撑的博客文章。, context[research_task] # 作家任务依赖于研究员任务 ) # 4. 运行团队 crew Crew( agents[researcher, writer], tasks[research_task, write_task], processProcess.sequential, memoryshared_memory, # 为整个Crew设置共享记忆 ) result crew.kickoff() print(result)工作流程解析研究员执行任务时其发现和收集的资料会被存储到project:alpha这个共享上下文中。作家开始工作时它不仅有自己的记忆还能通过shared_memory访问到研究员存入的所有信息。Xache的语义搜索能力确保作家能快速找到与“撰写博客”最相关的研究发现无需研究员显式传递大量数据。整个Crew的协作过程任务分配、结果传递也可以被记录到共享记忆中形成可追溯的项目日志。4.3 通过MCP Server赋能AI桌面助手Claude Desktop / Cursor对于非开发者或想快速体验的用户MCPModel Context Protocol服务器是最便捷的方式。安装后你的Claude或Cursor助手将直接获得24个与Xache交互的工具。# 全局安装MCP服务器 npm install -g xache/mcp-server配置Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):{ mcpServers: { xache: { command: npx, args: [-y, xache/mcp-server], env: { XACHE_WALLET_ADDRESS: 0xYourWalletAddress, XACHE_PRIVATE_KEY: your-private-key } } } }重启Claude Desktop后你的助手就能记忆 “帮我把今天开会关于Q2目标的要点记下来。” - 调用memory_store工具。检索 “我之前记过关于‘服务器迁移’的计划吗” - 调用memory_probe进行语义搜索。构建知识库 “从这篇技术文章中提取关键人物和他们的贡献。” - 调用graph_extract。问答 “根据我们之前存储的所有项目文档我们的核心竞争优势是什么” - 调用graph_ask。MCP的核心价值 它将Xache的所有复杂功能变成了AI助手可以理解和直接使用的“技能”。你无需编写任何代码就能让AI助手具备持久化、可查询的记忆和知识库能力。5. 实战构建一个完整的“学习伙伴”智能体让我们把上面的模块组合起来构建一个端到端的示例。// learningCompanion.ts import { XacheClient } from xache/sdk; import { LearningAssistantMemory, LearningSession, KnowledgeGraphManager } from ./modules; // 假设模块已导出 import { ChatOpenAI } from langchain/openai; import { LLMChain } from langchain/chains; import { PromptTemplate } from langchain/core/prompts; class LearningCompanion { private client: XacheClient; private memoryManager: LearningAssistantMemory; private sessionManager: LearningSession; private graphManager: KnowledgeGraphManager; private llmChain: LLMChain; constructor(walletAddress: string, privateKey: string) { this.client new XacheClient({ apiUrl: https://api.xache.xyz, did: did:agent:evm:${walletAddress}, privateKey }); this.memoryManager new LearningAssistantMemory(this.client); this.sessionManager new LearningSession(this.client); this.graphManager new KnowledgeGraphManager(this.client); const llm new ChatOpenAI({ temperature: 0.7 }); const prompt PromptTemplate.fromTemplate( 你是一位耐心的学习伙伴。根据以下已知信息和当前对话回答用户的问题。 已知信息 {context} 当前对话历史 {chat_history} 用户问题{question} 请给出详细、准确的回答 ); this.llmChain new LLMChain({ llm, prompt }); } async startLearningSession(userId: string, topic: string) { console.log(开始“${topic}”学习会话。); await this.sessionManager.startSession(userId, topic); // 从长期记忆中加载用户偏好和已有知识 const prefs await this.memoryManager.findRelatedKnowledge(user ${userId} preferences, userId, 1); const priorKnowledge await this.memoryManager.findRelatedKnowledge(topic, userId, 3); const context 用户偏好${prefs.length 0 ? JSON.stringify(prefs[0].data) : 未知}。 已有相关知识${priorKnowledge.map(k k.data.topic).join(; )}。 ; await this.sessionManager.recordConversationTurn(assistant, 欢迎回来我将根据你的偏好和已有知识带你学习“${topic}”。); return context; } async processUserQuery(userId: string, query: string) { // 1. 从当前会话和长期记忆中检索最相关的上下文 const sessionContext await this.sessionManager.getCurrentContext(); // 假设有这个方法获取会话事实 const relevantMemories await this.memoryManager.findRelatedKnowledge(query, userId, 5); const memoryContext relevantMemories.map(m 记忆${JSON.stringify(m.data)}).join(\n); // 2. 构建LLM提示词 const fullContext 会话背景${JSON.stringify(sessionContext)}\n${memoryContext}; // 3. 调用LLM生成回答这里简化实际需管理聊天历史 const response await this.llmChain.call({ context: fullContext, chat_history: , // 实际应从会话的‘conversation’槽位获取 question: query, }); const answer response.text; // 4. 记录本轮对话 await this.sessionManager.recordConversationTurn(user, query); await this.sessionManager.recordConversationTurn(assistant, answer); // 5. 检查是否从对话中提取出了新知识点并存入图谱 const extraction await this.client.extraction.extract({ trace: 用户问${query}\n助手答${answer}, instructions: 提取对话中涉及的新概念、定义或事实。, provider: openai, }); if (extraction.learnings) { const learnings JSON.parse(extraction.learnings); for (const concept of learnings.newConcepts || []) { await this.graphManager.addManualEntity(concept.name, { definition: concept.definition, source: dialogue }); } } console.log(助手${answer}); return answer; } async endSessionAndReview(userId: string) { // 1. 结束会话提升记忆 await this.sessionManager.endAndPromoteSession(); // 2. 基于本次会话的所有内容更新知识图谱 const sessionSummary await this.memoryManager.findRelatedKnowledge(session_summary ${userId}, userId, 1); if (sessionSummary.length 0) { const summary sessionSummary[0].data; await this.graphManager.extractFromMaterial(JSON.stringify(summary.keyLearnings), education); } // 3. 向集体智能贡献本次有效的辅导模式可选 await this.client.collective.contribute({ heuristic: 当用户学习“${summary?.topic}”类概念时先关联其已有知识“${summary?.sessionFacts?.assumedLevel}”再引入新概念的模式效果较好。, domain: education, confidence: 0.8, }); console.log(学习会话已结束记忆已保存知识已更新。); } } // 使用示例 (async () { const companion new LearningCompanion(0xYourAddress, your-private-key); const userId user_001; await companion.startLearningSession(userId, 机器学习中的梯度下降算法); await companion.processUserQuery(userId, 什么是梯度); await companion.processUserQuery(userId, 它和导数有什么区别); await companion.processUserQuery(userId, 能用一个生活中的例子解释梯度下降吗); await companion.endSessionAndReview(userId); })();这个“学习伙伴”演示了Xache多个模块的协同工作会话管理跟踪学习过程长期记忆回顾用户偏好和旧知识语义搜索动态关联信息知识图谱积累结构化知识最后还能向集体智能贡献经验。6. 成本优化、问题排查与最佳实践将Xache用于生产环境需要关注成本、稳定性和性能。6.1 成本优化策略Xache按操作次数计费精细化管理能有效控制成本。操作策略存储 (store)分层存储将频繁访问的数据如用户档案设为hot历史日志设为cold。批量操作支持storeMany将多条记忆一次存储减少API调用和交易费用。检索 (retrieve)善用probeprobe搜索是免费的。在不确定是否需要完整检索一条记忆时先probe根据返回的匹配度和摘要决定是否retrieve。临时会话 (ephemeral)合理设置TTL根据会话平均时长设置ttlSeconds避免设置过长导致资源占用。及时清理会话结束后如果不需提升为长期记忆应主动删除或等待其自动过期。知识图谱 (graph)离线提取批量加载如果有一大批文档需要构建图谱可以先用本地LLM或Xache的extractionAPI按次收费批量提取实体关系再通过graph.load一次导入比多次调用graph.extract更经济。集体智能 (collective)贡献有价值信息贡献(contribute)需要付费确保你贡献的是高质量、可泛化的模式这样不仅能提升集体质量你也能因他人的查询(query)获得潜在的声誉收益。6.2 常见问题与排查1. 错误Invalid DID or signature原因 钱包地址或私钥配置错误或私钥对应的地址与DID中的地址不匹配。排查 检查did字符串中的地址部分是否与私钥导出的地址完全一致包括大小写。确保私钥字符串正确没有多余的0x前缀或换行符。2. 错误Insufficient balance原因 钱包在指定链Base或Solana上的余额不足无法支付单次操作的费用。排查 前往对应链的区块浏览器查询钱包地址余额。Xache操作费用极低通常不到1美分但需要确保钱包有少量原生代币如Base上的ETH来支付Gas费。3. 语义搜索 (probe) 结果不相关原因 查询语句太模糊或记忆存储时未添加有效的category和metadata。排查优化查询使用更具体的关键词或短语。优化记忆存储时为data字段使用描述性强的文本并填充metadata如category: bug_report,tags: [frontend, ui]。probe会同时搜索数据和元数据。使用scope将搜索范围限定在特定的context内减少噪音。4. 临时会话 (ephemeral) 数据丢失原因 会话已过期TTL到期且未续期或达到了maxWindows续期上限。排查调用ephemeral.status(sessionKey)检查会话状态。对于长会话在代码中定期如在每轮交互后检查剩余时间并调用renewSession进行续期。重要数据及时调用promoteSession或手动存储到长期记忆。5. 知识图谱ask回答不准确原因 图谱中缺乏相关信息或问题过于复杂。排查先用graph.query查看相关实体和关系是否存在确保图谱数据质量。尝试将复杂问题拆解成多个简单问题。确保extract时提供了正确的domain参数以提高初始提取的准确性。6.3 安全与隐私最佳实践私钥管理 绝对不要将私钥硬编码在客户端代码或前端。在服务器端应用中使用环境变量或安全的密钥管理服务如AWS Secrets Manager, HashiCorp Vault。在浏览器环境中考虑使用智能合约钱包或MPC解决方案避免私钥暴露。上下文隔离 充分利用context参数。为每个用户、每个租户、每个项目使用独立的上下文如context: user:alicecompany.com。这既是数据隔离的安全措施也能让语义搜索更精准。敏感数据处理 对于高度敏感的个人信息PII考虑在客户端先进行加密或脱敏再将密文或哈希值存储到Xache。Xache提供可验证性但不提供端到端加密存储。审计与合规 利用Xache的密码学收据功能。定期导出重要操作的收据作为数据存证满足审计要求。图谱的history功能也能用于追踪知识的变化过程。6.4 性能调优批量操作 对于数据导入场景优先使用storeMany,graph.load等批量接口。异步与非阻塞 SDK的所有主要API都是异步的。确保在你的应用中使用async/await或Promises避免阻塞主线程。缓存策略 对于极少变化的“热”数据如用户配置可以在本地内存或Redis中建立短期缓存减少对Xacheretrieve的调用。监控与告警 监控你的应用对Xache API的调用频率和错误率。设置告警在费用异常增长或API错误率升高时及时通知。Xache Protocol为AI智能体带来的远不止一个记忆数据库。它是一套完整的认知基础设施通过可验证的记忆、结构化的知识、共享的智能和便携的声誉正在构建AI智能体之间以及人机协作的新范式。从简单的对话记忆到复杂的多智能体知识共享网络它的模块化设计允许你从一个小功能开始逐步构建起属于你的智能体的“第二大脑”。