# Changelog 本项目遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/)。 ## [Unreleased] ### 新特性 - **可插拔嵌入后端**:新增 `embedProvider: ollama | nous`(默认 `ollama`)。`nous` 走任意 OpenAI 兼容的 `/v1/embeddings` 端点(默认 `https://inference-api.nousresearch.com/v1`,模型 `qwen/qwen3-embedding-8b`,4096 维)。 配套配置:`embedApiKey` / `embedApiKeyFile`(从文件里读第一个 `sk-…`,让密钥不进配置)、`embedBaseUrl` / `embedModel`。 密钥解析顺序:`embedApiKey` → `NOUS_API_KEY` → `embedApiKeyFile`。 - **`minSimilarity` 可配置**(默认 0.65):语义召回的相似度门槛,短中文记忆偏松时建议上调。 ### 修复 - **会话注入的 `source.form` 由 `recall` 改为 `snapshot`**:`sections` 只在 `form: 'snapshot'` 下合法 (v0→v1 会话格式校验 `payload-validation.ts` 抛 "sections require snapshot form"),否则含记忆注入的旧会话会拒绝加载。 - **`Config` 显式声明 `embedProvider` 等键**:此前部署里读的是未在 schema 中声明的键,行为取决于 schema 是否剥离未知字段。 - **package.json 规范化**:恢复标准 2 空格 JSON(曾被 PowerShell `ConvertTo-Json` 重写成 4 空格 / `\u003e` 转义), 移除指向不存在文件的 `types` 声明,`files` 里的 `README.zh-CN.md` 改为 `README.en.md`(该文件已在 v0.2.0 重命名)。 ## [0.2.0] - 2026-08-15 v4 记忆系统正式发布:标题分级 + 两级注入 + 首轮一次 + 匹配优化,Agent 无需主动调用工具即可"自然携带"记忆。 ### 新特性 - **标题优先注入**:记忆以总结标题(附 id)注入而非全文,提示词更紧凑;细节通过 `view` 工具按 id 展开 - **两级注入**:`injectLevel: session` 记忆会话常驻(会话首轮注入一次);`auto` 记忆按话题检索注入 - **首轮一次注入**:固定记忆在会话第一步注入后进入历史,不再每轮重复渲染(省 token、利于前缀缓存) - **匹配优化**:泛词降权(文件/测试/文档等 0.5 命中)、关键词 ≥2 token 命中门槛、检索门控跳过测试闲聊("别管/只是测试") - **动态注入排除固定集**:`selectForInjection` 只从 `forceInject` + `session` 记忆中选择,避免重复注入 - **来源标注**:注入记忆带"来自记忆库(非对话历史)"前缀,模型不会误认为对话内容 ### 改进 - 全部记忆条目补显式 `title` 字段(不损失含义的总结,自动推导第一句优先) - 重复记忆合并(同主题条目自动去重) - README 双语重写(中文乱码修复,GBK 二次编码问题根治) ### 修复 - README 中文乱码(PowerShell 5.1 Get-Content/Set-Content GBK 二次编码破坏 UTF-8) - 关键词误匹配:"更新记忆系统文档"误命中无关条目("文档"单 2-gram) ## [0.1.0] - 2026-08-13 初始交付:跨会话记忆插件。 - YAML 存储(memory.yaml)+ 序列化写入队列(无丢失更新) - `remember` / `recall` / `view` / `list` / `forget` / `pin` 工具 - HybridSearch:关键词 2-gram + ollama 本地 embedding(qwen3-embedding:0.6b),RRF 融合 - 损坏文件隔离 + 备份、原子写入、mtime 缓存失效 - `forceInject` 强制注入(行为铁则常驻)