--- categories: - '[[LLM Wiki]]' tags: - wiki - tool - opencode - memory - automation - 记忆系统 created: 2026-04-20 source: '[[AGENTS.md]]' type: tool aliases: - opencode-mem - 记忆系统 --- # opencode-mem 人机协同流程 > opencode-mem 是 opencode 的持久记忆插件(v2.13.0),使用 SQLite + USearch 向量数据库实现跨会话经验积累。 ## 基本信息 | 属性 | 值 | | ------| -----| | 仓库 | [tickernelz/opencode-mem](https://github.com/tickernelz/opencode-mem) | | 版本 | 2.13.0 | | 存储 | `~/.opencode-mem/data/memories.db` | | Web UI | `http://127.0.0.1:4747` | | 配置 | `~/.config/opencode/opencode-mem.jsonc` | | 本项目 container_tag | `project_0f39be4f` | ## 三层记忆架构 opencode-mem 通过 `container_tag` 字段在单个 SQLite 数据库中实现三层隔离: | 层级 | container_tag 前缀 | 作用域 | 示例 | |------|-------------------|--------|------| | **系统级** | `system_*` | 全局通用知识 | Git 操作、编程语言技巧 | | **用户级** | `user_*` | 用户偏好和习惯 | 偏好中文输出、特定工作流 | | **项目级** | `project_*` | 项目专属知识 | vault 架构、frontmatter 规范 | container_tag 由项目路径的 MD5 哈希前 8 位生成,例如: - `D:\Applications\app\kepano-obsidian-main` → `project_0f39be4f` - `D:\TC_UP\2023card` → `project_7d38e4b1` ## 工作流程 ```mermaid graph TD A[用户通过 obsidian-opencode 发起对话] --> B[opencode-mem hook 自动触发] B --> C[向量检索:在 memories.db 中查找相关记忆] C --> D[注入 system prompt:agent 获得历史经验] D --> E[agent 执行任务] E --> F[对话结束] F --> G[LLM 自动提取有价值信息] G --> H[去重 + 存入 memories.db] H --> I[下次对话时 C 步骤检索到新记忆] ``` ### 1. 自动捕获(Auto Capture) - 配置:`autoCaptureEnabled: true` - 时机:每次对话结束后 - 流程:LLM 判断对话中哪些信息值得长期记住 → 提取 → 去重 → 存储 - 语言:`autoCaptureLanguage: "auto"`(自动检测) ### 2. 记忆注入(Memory Injection) - 配置:`chatMessage.enabled: true`, `maxMemories: 10` - 时机:每次对话开始时 - 流程:向量搜索与当前话题相关的记忆 → 注入 agent 的 system prompt - 注入位置:`injectOn: "first"`(首次注入) ### 3. 用户画像(User Profile) - 配置:`injectProfile: true`, `userProfileAnalysisInterval: 10` - 作用:每 10 次对话自动分析用户偏好,生成/更新用户画像 - 画像会随记忆一起注入,让 agent 更了解用户习惯 ### 4. 压缩合并(Compaction) - 配置:`compaction.enabled: true`, `memoryLimit: 10` - 触发:当记忆条数超过限制时 - 流程:LLM 自动合并相似条目,减少冗余 ## 与其他记忆系统的关系 | 维度 | opencode-mem | AGENTS.md | WorkBuddy | |------|-------------|-----------|-----------| | **存储** | SQLite 向量数据库 | Markdown 文件 | Markdown 文件 | | **检索** | 语义向量搜索 | 加载到上下文 | 文本 grep | | **自动化** | Hook 自动捕获 | 手动维护 | TOML 定时任务 | | **跨项目** | ✅ container_tag 隔离 | ✅ 仓库根目录 | ❌ 项目内独立 | | **持久性** | ✅ 对话间持久 | ✅ 文件级持久 | ✅ 文件级持久 | | **可见性** | Web UI(4747端口) | 直接编辑 | 直接编辑 | | **适合内容** | 隐式经验、解决方案 | 显式规范、模板 | 任务状态、项目进度 | > [!important] 核心原则 > **AGENTS.md = 显式规范**(所有人/agent 都能直接读) > **opencode-mem = 隐式经验**(跨会话自动积累) > 两者互补,不能互相替代。重要规范应同时写在 AGENTS.md 中。 ## 人机协同分工 | 职责 | 人类 | opencode-mem(自动) | AGENTS.md(手动) | |------|------|---------------------|-------------------| | 制定规范 | ✅ 编写/审核 | — | ✅ 显式记录 | | 积累经验 | — | ✅ 自动捕获 | — | | 记忆维护 | ✅ Web UI 审查 | ✅ 自动去重/压缩 | ✅ 手动更新 | | 纠错 | ✅ 删除/修改错误记忆 | — | ✅ 修正规范 | | 质量保障 | ✅ 定期审查 | ✅ 向量去重 | ✅ Lint 检查 | ## 注意事项 > [!warning] 记忆质量需要人工审查 > 自动捕获可能产生低质量或过时记忆。建议每周通过 Web UI(`http://127.0.0.1:4747`)查看一次,删除不准确的内容。 > [!warning] 压缩可能丢失细节 > compaction 自动合并相似条目时可能丢失细节。重要规范务必同时写在 [[AGENTS.md]] 中。 > [!tip] 向量模型依赖 > 当前使用智谱 Embedding-3(1024维),依赖 `ZHIPUAI_API_KEY` 环境变量。如果 API key 过期,记忆检索会降级。 > [!tip] 项目迁移时需更新 container_tag > 项目路径改变时,container_tag 会变化,需手动迁移记忆(参考本页「迁移记录」节)。 ## 汇报规则 每次对话结束时,agent 必须简要汇报 opencode-mem 记忆更新情况: - **有变更**:说明新增/修改/删除了哪些记忆 - **无变更**:说明"本次无记忆变更" 汇报示例: > 📋 **opencode-mem 记忆汇报**:本次对话新增 1 条记忆(工具目录约定),修改 0 条,删除 0 条。 ## 本项目当前记忆清单 | 记忆 ID | 类型 | 内容摘要 | |---------|------|---------| | `mem_*_d06fbcb2` | best_practice | MEMORY.md 精简经验:动态内容与长期规范分离 | | `mem_*_fcb1713f` | knowledge_gap | 教育AI研究项目状态跟踪(待确认) | | `mem_*_vault_structure` | best_practice | 双层架构:PARA 层 + LLM Wiki 层 | | `mem_*_tools_convention` | best_practice | 工具文件统一存放 tools/ 目录 | | `mem_*_obsidian_skills` | best_practice | Skills 优先级 + 布尔值 frontmatter 规则 | | `mem_*_frontmatter_rules` | best_practice | Frontmatter 编写规范(created、wikilink、引号) | ## 配置参考 当前配置(`~/.config/opencode/opencode-mem.jsonc`): ```jsonc { "storagePath": "C:\\Users\\hhhh2024\\.opencode-mem\\data", "embeddingApiUrl": "https://open.bigmodel.cn/api/paas/v4", "embeddingApiKey": "env://ZHIPUAI_API_KEY", "embeddingModel": "embedding-3", "embeddingDimensions": 1024, "autoCaptureEnabled": true, "autoCaptureLanguage": "auto", "webServerEnabled": true, "webServerPort": 4747, "userProfileAnalysisInterval": 10, "injectProfile": true, "opencodeProvider": "zhipuai-coding-plan", "opencodeModel": "glm-4.5-air", "maxMemories": 10 } ``` ## 相关页面 - [[AGENTS.md]] — 仓库级 agent 操作指南 - [[Obsidian-skills]] — Obsidian 插件生态 - [[教育AI研究项目]] — WorkBuddy 自动化项目 - [[opencode]] — opencode 工具本身 ## 来源 - [[AGENTS.md]] — 仓库规范(含 opencode-mem 汇报规则) - opencode-mem README — 插件官方文档 - 实际数据库分析 — `~/.opencode-mem/data/memories.db` 结构检查