AgentKit搭建智能体记忆模块实现上下文留存
需手动集成记忆模块并配置向量数据库:首先,要检查项目结构和确保使用@agentkit/core≥0.8.3版本。然后,在配置中找到memory字段进行相关设置。接着,可选用Chroma或Pinecone作为后端。最后,注入MemoryService,并依次调用init()进行初始化、recall()进行读取、store()进行存储,以此完成读写闭环。

要在AgentKit中为智能体添加真实可用的记忆模块,让每次对话都能延续上一次的上下文、记住用户偏好或关键事实,不能只靠LLM的临时上下文窗口硬撑。
确认AgentKit项目结构与记忆支持能力
进入你的AgentKit项目根目录,检查是否存在
memory/
src/memory
运行 npm list @agentkit/core 确认版本 ≥ 0.8.3——低于此版本不支持 MemoryService 接口,强行配置会导致运行时 undefined is not a function 报错。
打开 agent.config.ts,查找 memory 字段。若该字段缺失或值为 null,后续所有记忆写入操作将静默失败,且无任何错误提示。
接入向量数据库作为长期记忆后端
方法一:使用内置Chroma适配器(推荐本地开发)
执行 npx chroma-cli start 启动本地Chroma服务;确保端口 8000 可访问,否则AgentKit初始化时会卡在连接等待,超时后降级为内存型记忆,重启后数据即丢失。
在 memory/config.ts 中配置:
export const memoryConfig = {
type: "chroma",
host: "http://localhost:8000",
collectionName: "agent-main-memory"
};
方法二:直连Pinecone(生产环境)
从Pinecone控制台复制
Environment
API Key
.env 文件:PINECONE_ENVIRONMENT=us-west1-gcp
PINECONE_API_KEY=pcsk_xxx
【collectionName 必须全小写且不含下划线】
在Agent逻辑中注入并调用记忆服务
第一步:在 src/agent.ts 顶部导入
import { MemoryService } from "@agentkit/memory";
import { memoryConfig } from "./memory/config";
第二步:实例化服务并挂载到Agent上下文
在Agent构造函数内添加:
this.memory = new MemoryService(memoryConfig);
// 必须在首次调用 .recall() 前完成 await this.memory.init()
第三步:在处理用户输入前主动检索相关记忆
调用 await this.memory.recall({ query: userInput, topK: 3 }),返回结果会自动按语义相关性排序。不手动设置 topK 将默认取 5,可能引入噪声片段干扰当前决策。
第四步:将本轮交互写入长期记忆
在生成响应后立即执行:
await this.memory.store({
content: `User: ${userInput}
AI: ${response}`,
metadata: { sessionId, timestamp: Date.now() }
});
这一步不可省略——仅调用 recall 不会自动触发写入,记忆库始终为空。
验证记忆是否真正生效
启动Agent服务后,向其发送消息:“我叫李伟,住在杭州。”
等待响应结束,立刻再发一条:“我住哪儿?”
若返回“你住在杭州”,说明记忆读写链路完整;若返回“我不知道”或复述上条消息,则检查 store() 是否被调用、Chroma服务是否存活、collectionName 是否拼写一致。
直接访问 http://localhost:8000/api/v1/collections/agent-main-memory/count,返回值大于 0 即证明数据已落库。
-
- 元宵节猜灯谜的祝福短信
- 角色扮演 |
-
- 关于柯南的沙雕网名有哪些
- 角色扮演 | 1
- 网名
-
- 最新中性名字男女通用网名有哪些
- 角色扮演 | 1
- 网名
-
- 关于蓝色说唱的网名有哪些
- 角色扮演 | 1
- 网名
-
- 我好喜欢你是什么梗?
- 角色扮演 |