资讯动态

OpenCode增强记忆系统加持,关键信息全局掌控

发布时间:2026/8/13 20:54:12 来源:尧图企业网站定制
OpenCode Memory System为 AI 编程助手打造跨会话记忆系统 目录项目背景技术架构核心功能快速开始技术细节性能优化实战案例未来展望项目背景为什么需要记忆系统这段时间在使用 OpenCode 时经常会碰到AI 遗忘各种关键信息就得不厌其烦地跟他提醒实在忍不了了决定为OpenCode手搓一个记忆增强系统解决以下痛点❌跨会话遗忘每次对话都是从零开始AI 不记得你之前的偏好、决策、技术栈❌重复输入每次都要重新说明项目使用 FastAPI PostgreSQL、“偏好订阅制商业模式”❌缺乏上下文AI 无法理解项目历史决策导致建议不一致❌知识碎片化重要信息散落在不同会话中难以整合OpenCode Memory System旨在解决这些问题为 AI 编程助手提供持久化记忆能力。技术架构整体架构图┌─────────────────────────────────────────────────────┐ │ 用户对话输入 │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ AutoDetector自动识别引擎 │ │ ├─ 关键词触发检测 │ │ ├─ 正则模式匹配 │ │ └─ 置信度评估 │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ MemoryManager核心管理类 │ │ ├─ 手动保存 │ │ ├─ 自动保存 │ │ ├─ 检索管理 │ │ └─ 统计导出 │ └─────────────────────────────────────────────────────┘ ↓ ┌──────────────┬──────────────────┬─────────────────┐ │ SQLite │ ChromaDB │ ONNX Runtime │ │ 元数据库 │ 向量数据库 │ Embedding服务 │ │ ├─ 记忆ID │ ├─ HNSW索引 │ ├─ 模型加载 │ │ ├─ 内容 │ ├─ 384维向量 │ ├─ 3ms推理 │ │ ├─ 类型 │ ├─ 余弦相似度 │ └─ 本地缓存 │ │ ├─ 时间 │ └─ 作用域过滤 │ │ │ └─ 元数据 │ │ │ └──────────────┴──────────────────┴─────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ Retriever检索引擎 │ │ ├─ 相似度检索 │ │ ├─ 按类型检索 │ │ ├─ 最近记忆检索 │ │ └─ 格式化输出 │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ 返回相关记忆给 AI/用户 │ └─────────────────────────────────────────────────────┘技术栈选择组件技术选型选择理由EmbeddingONNX Runtime all-MiniLM-L6-v2加载快0.2秒推理快3ms模型小90MB向量数据库ChromaDB 1.5.9本地嵌入式HNSW索引支持多条件过滤元数据库SQLite轻量级本地存储无需额外服务自动检测关键词触发 正则匹配简单高效可扩展性强开发语言Python 3.14生态丰富易于集成核心功能1. 自动识别记忆内容系统能自动检测用户对话中值得记忆的内容用户消息:项目使用 FastAPI PostgreSQL 架构选择 DeepSeek V4 Flash 作为 LLM自动检测结果:✓ project_context:项目使用 FastAPI PostgreSQL 架构✓ decision:选择 DeepSeek V4 Flash 作为 LLM✓ constraint:必须使用 DeepSeek V4 Flash支持的记忆类型user_preference: 用户偏好喜欢、偏好、习惯project_context: 项目上下文技术栈、架构、数据库decision: 决策选择、决定、采用方案constraint: 限制必须、仅使用、不超过goal: 目标需求、希望、要实现feedback: 反馈修复、改进、优化2. 语义相似度检索不同于传统的关键词匹配使用向量语义相似度检索# 传统关键词匹配无法找到搜索DeepSeek→ ✗ 无法匹配使用 DeepSeek V4 Flash# 语义相似度检索能找到搜索DeepSeek→ ✓ 找到决定使用 DeepSeek V4 Flash 作为 LLM相似度:0.533. 跨会话记忆持久化记忆数据存储在本地不同会话间共享~/.opencode/memory/ ├── global_metadata.db # SQLite 元数据库 ├── global_vectors/ # ChromaDB 向量数据库 └── global_raw/ # 原始文本备份4. 多种检索方式# 相似度检索manager.retrieve_relevant(架构,top_k5,min_similarity0.5)# 按类型检索manager.retrieve_by_type(DeepSeek,memory_typedecision)# 最近记忆检索manager.retrieve_recent(days7,limit10)# 关键词搜索manager.search_by_keywords(订阅,limit20)快速开始安装依赖pipinstall--user--break-system-packages\onnxruntime transformers chromadb sqlite3 numpy初始化数据库cd/home/gomeswang/studio/opencode-memory ./memory init输出✓ 数据库初始化成功: /home/gomeswang/.opencode/memory/global_metadata.db ✓ 数据库初始化成功保存记忆手动保存./memory save用户偏好订阅制商业模式价格 ¥99-199/月\--typeuser_preference自动检测保存./memory auto项目使用 FastAPI PostgreSQL 架构选择 DeepSeek V4 Flash输出✓ 自动保存 3 条记忆 - mem_e2907c38_20260506_234249 - mem_f39f2aa9_20260506_234249 - mem_8f5113e7_20260506_234249检索记忆./memory searchDeepSeek--top-k3--min-similarity0.3输出找到 3 条相关记忆: 1. [decision] 相似度: 0.61 内容: 选择 DeepSeek V4 Flash 作为 LLM 2. [project_context] 相似度: 0.57 内容: 架构选择 DeepSeek V4 Flash 作为 LLM 3. [project_context] 相似度: 0.45 内容: 项目使用 FastAPI PostgreSQL 架构选择 DeepSeek V4 Flash 作为 LLM查看统计./memory stats输出 记忆统计信息 总计: 4 条 最近7天: 4 条 按类型分布: project_context: 2 decision: 1 user_preference: 1 按作用域分布: global: 4导出记忆./memoryexport--formatmarkdown--outputmemories.md技术细节EmbeddingService 实现ONNX Runtime为什么选择 ONNX Runtime传统sentence-transformers使用 PyTorch存在以下问题❌ 模型加载慢多进程池初始化超时❌ 推理速度慢CPU 上 100ms❌ 内存占用大PyTorch 运行时ONNX Runtime 解决方案importonnxruntimeasortfromtransformersimportAutoTokenizer# 加载 tokenizer本地缓存tokenizerAutoTokenizer.from_pretrained(sentence-transformers/all-MiniLM-L6-v2,local_files_onlyTrue# 强制使用本地缓存)# 加载 ONNX 模型model_path~/.cache/huggingface/hub/sentence-transformers/all-MiniLM-L6-v2/onnx/model.onnxsessionort.InferenceSession(model_path)# 推理inputstokenizer(text,return_tensorsnp,return_token_type_idsTrue)outputssession.run(None,{input_ids:inputs[input_ids],attention_mask:inputs[attention_mask],token_type_ids:inputs[token_type_ids]})# Mean poolingembeddingoutputs[0].mean(axis1).squeeze()性能对比指标sentence-transformers (PyTorch)ONNX Runtime模型加载超时120秒0.19秒 ⚡单条推理100ms2-3ms ⚡批量推理50ms/条1ms/条 ⚡内存占用~500MB~150MB ⚡ChromaDB 向量数据库配置{vector_db:{type:chromadb,path:~/.opencode/memory/global_vectors,collection_name:opencode_memory_global,index_type:hnsw,metric:cosine}}HNSW 算法优势⚡ 检索速度快O(log N) 高召回率95% 内存占用小无需存储全量距离矩阵多条件过滤语法ChromaDB 1.5.x# 单条件过滤resultscollection.query(query_embeddings[embedding],where{scope:global})# 多条件过滤$and 操作符resultscollection.query(query_embeddings[embedding],where{$and:[{scope:global},{tags:{$contains:decision}}]})AutoDetector 自动识别逻辑关键词触发检测trigger_keywords{decision:[选择,决定,采用,方案,决策],config:[配置,密钥,API,设置,环境],knowledge:[重要,关键,注意,要点,最佳],preference:[喜欢,偏好,习惯,常用],workflow:[流程,步骤,命令,操作]}# 检测逻辑forcategory,keywordsintrigger_keywords.items():forkeywordinkeywords:ifkeywordinuser_message:# 提取包含关键词的句子sentencesextract_sentences(user_message,keyword)matches.append({type:category,content:sentence,confidence:0.7})正则模式匹配patterns{user_preference:[r我喜欢(.),r我偏好(.),r用户偏好(.)],constraint:[r必须(.),r限制(.),r仅使用(.)],decision:[r决定(.),r选择(.),r采用(.)方案]}性能优化1. 模型缓存策略使用local_files_onlyTrue强制使用本地缓存避免网络延迟tokenizerAutoTokenizer.from_pretrained(sentence-transformers/all-MiniLM-L6-v2,local_files_onlyTrue# 0.03秒加载)对比网络加载tokenizerAutoTokenizer.from_pretrained(sentence-transformers/all-MiniLM-L6-v2# 38秒加载网络延迟)2. 批量推理优化批量处理多条文本减少 tokenizer 调用次数# 单条推理慢fortextintexts:embeddingmodel.encode(text)# 3ms × N# 批量推理快embeddingsmodel.encode(texts)# 1ms × N性能提升批量处理 10 条文本总耗时从 30ms 降低到 10ms。3. ChromaDB 索引优化使用 HNSW 算法Hierarchical Navigable Small Worldcollectionclient.get_or_create_collection(nameopencode_memory_global,metadata{hnsw:space:cosine}# 余弦相似度)检索性能100 条记忆5ms1000 条记忆10ms10000 条记忆20ms4. 禁用多进程池设置环境变量避免 tokenizer 多进程池初始化超时exportTOKENIZERS_PARALLELISMfalse实战案例案例1项目配置记忆场景用户在不同会话中多次说明项目配置# 第一次会话用户:项目使用 FastAPI PostgreSQL数据库端口 5432./memory auto项目使用 FastAPI PostgreSQL数据库端口 5432✓ 自动保存2条记忆# 第二次会话2天后用户:项目的技术栈是什么./memory search技术栈找到2条相关记忆: -[project_context]项目使用 FastAPI PostgreSQL -[constraint]数据库端口5432AI回答: 根据记忆项目使用 FastAPI PostgreSQL数据库端口5432。案例2决策历史记录场景团队决策历史记录# 决策1./memory save决定使用订阅制商业模式价格 ¥99-199/月--typedecision# 决策2./memory save选择 DeepSeek V4 Flash 作为 LLM成本低速度快--typedecision# 决策3./memory save采用 B 方案记忆作用域全局项目--typedecision# 查询决策历史./memory search商业模式决策--typedecision 找到1条决策: -[decision]决定使用订阅制商业模式价格 ¥99-199/月案例3用户偏好追踪场景追踪用户编程偏好./memory save用户喜欢使用 Tailwind CSS 进行前端开发--typeuser_preference ./memory save用户偏好订阅制商业模式--typeuser_preference ./memory save用户习惯使用 Git 进行版本控制--typeuser_preference# AI 推荐时参考用户偏好./memory search前端开发建议找到1条偏好: -[user_preference]用户喜欢使用 Tailwind CSS 进行前端开发 AI: 根据您的偏好建议使用 Tailwind CSS React 组件方案。未来展望1. LLM集成DeepSeek V4 Flash将记忆系统集成到 DeepSeek V4 Flash# 当前对话 相关记忆 → DeepSeek V4 Flashpromptf 当前用户问题:{user_query}相关历史记忆:{format_memories(relevant_memories)}请基于历史记忆回答用户问题 responsedeepseek_api.chat(prompt)2. 工作流记忆记录操作流程和步骤workflow_memory{type:workflow,steps:[git clone https://github.com/xxx/project,cd project npm install,npm run dev],context:项目启动流程}3. 项目知识库为每个项目创建独立知识库# 项目作用域记忆./memory save淘宝客服智能体使用 RAG 技术\--scopeproject\--project-path /home/user/taobao-ai-agent4. 记忆质量评分自动评估记忆质量quality_scorecalculate_quality(memory)# 评估维度# - 访问频率使用次数# - 时间衰减旧记忆权重降低# - 用户反馈点赞/删除# - 相关性与其他记忆的关联度5. 记忆关联图谱构建记忆间关系网络memory_relations{mem_001:[mem_002,mem_003],# mem_001 与 mem_002、mem_003 相关relation_type:cause_effect,# 因果关系strength:0.8# 关联强度}总结OpenCode Memory System是一个轻量级、高性能的跨会话记忆系统解决了 AI 编程助手健忘的问题。核心优势⚡性能优异模型加载0.19秒推理3ms检索10ms本地部署无需云服务数据完全本地化智能识别自动检测6种记忆类型语义检索向量相似度检索超越关键词匹配易于管理CLI命令接口10个常用命令适用场景AI 编程助手OpenCode、Cursor、Copilot项目知识管理团队决策记录用户偏好追踪工作流程记录参考资料ONNX Runtime官方文档ChromaDB官方文档sentence-transformers模型库HNSW算法原理作者: gomes发布时间: 2026-05-06标签: AI, 记忆系统, 向量检索, OpenCode, Python

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价