引入 A_Memorix 插件 v2.0.0:新增大量运行时组件、存储/模式更新、检索能力提升、管理工具、导入/调优工作流以及相关文档。关键新增内容包括:lifecycle_orchestrator、SDKMemoryKernel/运行时初始化器、新的存储层与 metadata_store 变更(SCHEMA_VERSION v8)、检索增强(双路径检索、图关系召回、稀疏 BM25),以及多种工具服务(episode/person_profile/relation/segmentation/tuning/search execution)。同时新增 Web 导入/摘要导入器及大量维护脚本。还更新了插件清单、embedding API 适配器、plugin.py、requirements/pyproject,以及主入口文件,使新插件接入项目。该变更为 2.0.0 版本发布做好准备,实现统一的 SDK Tool 接口并扩展整体运行能力。
719 lines
32 KiB
Markdown
719 lines
32 KiB
Markdown
# 更新日志 (Changelog)
|
||
|
||
## [2.0.0] - 2026-03-18
|
||
|
||
本次 `2.0.0` 为架构收敛版本,主线是 **SDK Tool 接口统一**、**管理工具能力补齐**、**元数据 schema 升级到 v8** 与 **文档口径同步到 2.0.0**。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`1.0.1` → `2.0.0`
|
||
- 元数据 schema:`7` → `8`
|
||
|
||
### 🚀 重点能力
|
||
|
||
- Tool 接口统一:
|
||
- `plugin.py` 统一通过 `SDKMemoryKernel` 对外提供 Tool 能力。
|
||
- 保留基础工具:`search_memory / ingest_summary / ingest_text / get_person_profile / maintain_memory / memory_stats`。
|
||
- 新增管理工具:`memory_graph_admin / memory_source_admin / memory_episode_admin / memory_profile_admin / memory_runtime_admin / memory_import_admin / memory_tuning_admin / memory_v5_admin / memory_delete_admin`。
|
||
- 检索与写入治理增强:
|
||
- 检索/写入链路支持 `respect_filter + user_id/group_id` 的聊天过滤语义。
|
||
- `maintain_memory` 支持 `freeze` 与 `recycle_bin`,并统一到内核维护流程。
|
||
- 导入与调优能力收敛:
|
||
- `memory_import_admin` 提供任务化导入能力(上传、粘贴、扫描、OpenIE、LPMM 转换、时序回填、MaiBot 迁移)。
|
||
- `memory_tuning_admin` 提供检索调优任务(创建、轮次查看、回滚、apply_best、报告导出)。
|
||
- V5 与删除运维:
|
||
- 新增 `memory_v5_admin`(`reinforce/weaken/remember_forever/forget/restore/status`)。
|
||
- 新增 `memory_delete_admin`(`preview/execute/restore/list/get/purge`),支持操作审计与恢复。
|
||
|
||
### 🛠️ 存储与运行时
|
||
|
||
- `metadata_store` 升级到 `SCHEMA_VERSION = 8`。
|
||
- 新增/完善外部引用与运维记录能力(包括 `external_memory_refs`、`memory_v5_operations`、`delete_operations` 相关数据结构)。
|
||
- `SDKMemoryKernel` 增加统一后台任务编排(自动保存、Episode pending 处理、画像刷新、记忆维护)。
|
||
|
||
### 📚 文档同步
|
||
|
||
- `README.md`、`QUICK_START.md`、`CONFIG_REFERENCE.md`、`IMPORT_GUIDE.md` 已切换到 `2.0.0` 口径。
|
||
- 文档主入口统一为 SDK Tool 工作流,不再以旧版 slash 命令作为主说明路径。
|
||
|
||
## [1.0.1] - 2026-03-07
|
||
|
||
本次 `1.0.1` 为 `1.0.0` 发布后的热修复版本,主线是 **图谱 WebUI 取数稳定性修复**、**大图过滤性能修复** 与 **真实检索调优链路稳定性修复**。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`1.0.0` → `1.0.1`
|
||
- 配置版本:`4.1.0`(不变)
|
||
|
||
### 🛠️ 代码修复
|
||
|
||
- 图谱接口稳定性:
|
||
- 修复 `/api/graph` 在“磁盘已有图文件但运行时尚未装载入内存”场景下返回空图的问题,接口现在会自动补加载持久化图数据。
|
||
- 修复问题数据集下 WebUI 打开图谱页时看似“没有任何节点”的现象;根因不是图数据消失,而是后端过滤路径过慢。
|
||
- 图谱过滤性能:
|
||
- 优化 `/api/graph?exclude_leaf=true` 的叶子过滤逻辑,改为预计算 hub 邻接关系,不再对每个节点反复做高成本边权查询。
|
||
- 优化 `GraphStore.get_neighbors()` 并补充入邻居访问能力,避免稠密矩阵展开导致的大图性能退化。
|
||
- 检索调优稳定性:
|
||
- 修复真实调优任务在构建运行时配置时深拷贝 `plugin.config`,误复制注入的存储实例并触发 `cannot pickle '_thread.RLock' object` 的问题。
|
||
- 调优评估改为跳过顶层运行时实例键,仅保留纯配置字段后再附加运行时依赖,真实 WebUI 调优任务可正常启动。
|
||
|
||
### 📚 文档同步
|
||
|
||
- 同步更新 `README.md`、`CHANGELOG.md`、`CONFIG_REFERENCE.md` 与版本元数据(`plugin.py`、`__init__.py`、`_manifest.json`)。
|
||
- README 新增 `v1.0.1` 修复说明,并补充“调优前先做 runtime self-check”的建议。
|
||
|
||
## [1.0.0] - 2026-03-06
|
||
|
||
本次 `1.0.0` 为主版本升级,主线是 **运行时架构模块化**、**Episode 情景记忆闭环**、**聚合检索与图召回增强**、**离线迁移 / 运行时自检 / 检索调优中心**。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`0.7.0` → `1.0.0`
|
||
- 配置版本:`4.1.0`(不变)
|
||
|
||
### 🚀 重点能力
|
||
|
||
- 运行时重构:
|
||
- `plugin.py` 大幅瘦身,生命周期、后台任务、请求路由、检索运行时初始化拆分到 `core/runtime/*`。
|
||
- 配置 schema 抽离到 `core/config/plugin_config_schema.py`,`_manifest.json` 同步扩展新配置项。
|
||
- 检索与查询增强:
|
||
- `KnowledgeQueryTool` 拆分为 query mode + orchestrator,新增长 `aggregate` / `episode` 查询模式。
|
||
- 新增图辅助关系召回、统一 forward/runtime 构建与请求去重桥接。
|
||
- Episode / 运维能力:
|
||
- `metadata_store` schema 升级到 `SCHEMA_VERSION = 7`,新增 `episodes` / `episode_paragraphs` / rebuild queue 等结构。
|
||
- 新增 `release_vnext_migrate.py`、`runtime_self_check.py`、`rebuild_episodes.py` 与 Web 检索调优页 `web/tuning.html`。
|
||
|
||
### 📚 文档同步
|
||
|
||
- 版本号同步到 `plugin.py`、`__init__.py`、`_manifest.json`、`README.md` 与 `CONFIG_REFERENCE.md`。
|
||
- 新增 `RELEASE_SUMMARY_1.0.0.md`
|
||
|
||
## [0.7.0] - 2026-03-04
|
||
|
||
本次 `0.7.0` 为中版本升级,主线是 **关系向量化闭环(写入 + 状态机 + 回填 + 审计)**、**检索/命令链路增强** 与 **导入任务能力补齐**。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`0.6.1` → `0.7.0`
|
||
- 配置版本:`4.1.0`(不变)
|
||
|
||
### 🚀 重点能力
|
||
|
||
- 关系向量化闭环:
|
||
- 新增统一关系写入服务 `RelationWriteService`(metadata 先写、向量后写,失败进入状态机而非回滚主数据)。
|
||
- `relations` 侧补齐 `vector_state/retry_count/last_error/updated_at` 等状态字段,支持 `none/pending/ready/failed` 统一治理。
|
||
- 插件新增后台回填循环与统计接口,可持续修复关系向量缺失并暴露覆盖率指标。
|
||
- 检索与命令链路增强:
|
||
- 检索主链继续收敛到 `search/time` forward 路由,`legacy` 仅保留兼容别名。
|
||
- relation 查询规格解析收口,结构化查询与语义回退边界更清晰。
|
||
- `/query stats` 与 tool stats 补充关系向量化统计输出。
|
||
- 导入与运维增强:
|
||
- Web Import 新增 `temporal_backfill` 任务入口与编排处理。
|
||
- 新增一致性审计与离线回填脚本,支持灰度修复历史数据。
|
||
|
||
### 📚 文档同步
|
||
|
||
- 同步更新 `README.md`、`CONFIG_REFERENCE.md` 与本日志版本信息。
|
||
- `README.md` 新增关系向量审计/回填脚本使用说明,并更新 `convert_lpmm.py` 的关系向量重建行为描述。
|
||
|
||
## [0.6.1] - 2026-03-03
|
||
|
||
本次 `0.6.1` 为热修复小版本,重点修复 WebUI 插件配置接口在 A_Memorix 场景下的 `tomlkit` 节点序列化兼容问题。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`0.6.0` → `0.6.1`
|
||
- 配置版本:`4.1.0`(不变)
|
||
|
||
### 🛠️ 代码修复
|
||
|
||
- 新增运行时补丁 `_patch_webui_a_memorix_routes_for_tomlkit_serialization()`:
|
||
- 仅包裹 `/api/webui/plugins/config/{plugin_id}` 及其 schema 的 `GET` 路由。
|
||
- 仅在 `plugin_id == "A_Memorix"` 时,将返回中的 `config/schema` 通过 `to_builtin_data` 原生化。
|
||
- 保持 `/api/webui/config/*` 全局接口行为不变,避免对其他插件或核心配置路径产生副作用。
|
||
- 在插件初始化时执行该补丁,确保 WebUI 读取插件配置时返回结构可稳定序列化。
|
||
|
||
### 📚 文档同步
|
||
|
||
- 同步更新 `README.md`、`CONFIG_REFERENCE.md` 与本日志中的版本信息及修复说明。
|
||
|
||
## [0.6.0] - 2026-03-02
|
||
|
||
本次 `0.6.0` 为中版本升级,主线是 **Web Import 导入中心上线与脚本能力对齐**、**失败重试机制升级**、**删除后 manifest 同步** 与 **导入链路稳定性增强**。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`0.5.1` → `0.6.0`
|
||
- 配置版本:`4.0.1` → `4.1.0`
|
||
|
||
### 🚀 重点能力
|
||
|
||
- 新增 Web Import 导入中心(`/import`):
|
||
- 上传/粘贴/本地扫描/LPMM OpenIE/LPMM 转换/时序回填/MaiBot 迁移。
|
||
- 任务/文件/分块三级状态展示,支持取消与失败重试。
|
||
- 导入文档弹窗读取(远程优先,失败回退本地)。
|
||
- 失败重试升级为“分块优先 + 文件回退”:
|
||
- `POST /api/import/tasks/{task_id}/retry_failed` 保持原路径,语义升级。
|
||
- 支持对 `extracting` 失败分块进行子集重试。
|
||
- `writing`/JSON 解析失败自动回退为文件级重试。
|
||
- 删除后 manifest 同步失效:
|
||
- 覆盖 `/api/source/batch_delete` 与 `/api/source`。
|
||
- 返回 `manifest_cleanup` 明细,避免误命中去重跳过重导入。
|
||
|
||
### 📂 变更文件清单(本次发布)
|
||
|
||
新增文件:
|
||
|
||
- `core/utils/web_import_manager.py`
|
||
- `scripts/migrate_maibot_memory.py`
|
||
- `web/import.html`
|
||
|
||
修改文件:
|
||
|
||
- `CHANGELOG.md`
|
||
- `CONFIG_REFERENCE.md`
|
||
- `IMPORT_GUIDE.md`
|
||
- `QUICK_START.md`
|
||
- `README.md`
|
||
- `__init__.py`
|
||
- `_manifest.json`
|
||
- `components/commands/debug_server_command.py`
|
||
- `core/embedding/api_adapter.py`
|
||
- `core/storage/graph_store.py`
|
||
- `core/utils/summary_importer.py`
|
||
- `plugin.py`
|
||
- `requirements.txt`
|
||
- `server.py`
|
||
- `web/index.html`
|
||
|
||
删除文件:
|
||
|
||
- 无
|
||
|
||
### 📚 文档同步
|
||
|
||
- 同步更新 `README.md`、`QUICK_START.md`、`CONFIG_REFERENCE.md`、`IMPORT_GUIDE.md` 与本日志。
|
||
- `IMPORT_GUIDE.md` 新增 “Web Import 导入中心” 专区,统一说明能力范围、状态语义与安全边界。
|
||
|
||
## [0.5.1] - 2026-02-23
|
||
|
||
本次 `0.5.1` 为热修订小版本,重点修复“随主程序启动的后台任务拉起”“空名单过滤语义”以及“知识抽取模型选择”。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`0.5.0` → `0.5.1`
|
||
- 配置版本:`4.0.0` → `4.0.1`
|
||
|
||
### 🛠️ 代码修复
|
||
|
||
- 生命周期接入主程序事件:
|
||
- 新增 `a_memorix_start_handler`(`ON_START`)调用 `plugin.on_enable()`;
|
||
- 新增 `a_memorix_stop_handler`(`ON_STOP`)调用 `plugin.on_disable()`;
|
||
- 解决仅注册插件但未触发生命周期时,定时导入任务不启动的问题。
|
||
- 聊天过滤空列表策略调整:
|
||
- `whitelist + []`:全部拒绝;
|
||
- `blacklist + []`:全部放行。
|
||
- 知识抽取模型选择逻辑调整(`import_command._select_model`):
|
||
- `advanced.extraction_model` 现在支持三种语义:任务名 / 模型名 / `auto`;
|
||
- `auto` 优先抽取相关任务(`lpmm_entity_extract`、`lpmm_rdf_build` 等),并避免误落到 `embedding`;
|
||
- 当配置无法识别时输出告警并回退自动选择,提高导入阶段的模型选择可预期性。
|
||
|
||
### 📚 文档同步
|
||
|
||
- 同步更新 `README.md`、`CONFIG_REFERENCE.md` 与 `CHANGELOG.md`。
|
||
- 同步修正文档中的空名单过滤行为描述,保持与当前代码一致。
|
||
|
||
## [0.5.0] - 2026-02-15
|
||
|
||
本次 `0.5.0` 以提交 `66ddc1b98547df3c866b19a3f5dc96e1c8eb7731` 为核心,主线是“人物画像能力上线 + 工具/命令接入 + 版本与文档同步”。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`0.4.0` → `0.5.0`
|
||
- 配置版本:`3.1.0` → `4.0.0`
|
||
|
||
### 🚀 人物画像主特性(核心)
|
||
|
||
- 新增人物画像服务:`core/utils/person_profile_service.py`
|
||
- 支持 `person_id/姓名/别名` 解析。
|
||
- 聚合图关系证据 + 向量证据,生成画像文本并版本化快照。
|
||
- 支持手工覆盖(override)与 TTL 快照复用。
|
||
- 存储层新增人物画像相关表与 API:`core/storage/metadata_store.py`
|
||
- `person_profile_switches`
|
||
- `person_profile_snapshots`
|
||
- `person_profile_active_persons`
|
||
- `person_profile_overrides`
|
||
- 新增命令:`/person_profile on|off|status`
|
||
- 文件:`components/commands/person_profile_command.py`
|
||
- 作用:按 `stream_id + user_id` 控制自动注入开关(opt-in 模式)。
|
||
- 查询链路接入人物画像:
|
||
- `knowledge_query_tool` 新增 `query_type=person`,支持 `person_id` 或别名查询。
|
||
- `/query person` 与 `/query p` 接入画像查询输出。
|
||
- 插件生命周期接入画像刷新任务:
|
||
- 启动/停止统一管理 `person_profile_refresh` 后台任务。
|
||
- 按活跃窗口自动刷新画像快照。
|
||
|
||
### 🛠️ 版本与 schema 同步
|
||
|
||
- `plugin.py`:`plugin_version` 更新为 `0.5.0`。
|
||
- `plugin.py`:`plugin.config_version` 默认值更新为 `4.0.0`。
|
||
- `config.toml`:`config_version` 基线同步为 `4.0.0`(本地配置文件)。
|
||
- `__init__.py`:`__version__` 更新为 `0.5.0`。
|
||
- `_manifest.json`:`version` 更新为 `0.5.0`,`manifest_version` 保持 `1` 。
|
||
- `manifest_utils.py`:仓库内已兼容更高 manifest 版本;但插件发布默认保持 `manifest_version=1` 。
|
||
|
||
### 📚 文档同步
|
||
|
||
- 更新 `README.md`、`CONFIG_REFERENCE.md`、`QUICK_START.md`、`USAGE_ARCHITECTURE.md`。
|
||
- 0.5.0 文档主线改为“人物画像能力 + 版本升级 + 检索链路补充说明”。
|
||
|
||
## [0.4.0] - 2026-02-13
|
||
|
||
本次 `0.4.0` 版本整合了时序检索增强与后续检索链路增强、稳定性修复和文档同步。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`0.3.3` → `0.4.0`
|
||
- 配置版本:`3.0.0` → `3.1.0`
|
||
|
||
### 🚀 新增
|
||
|
||
- 新增 `core/retrieval/sparse_bm25.py`
|
||
- `SparseBM25Config` / `SparseBM25Index`
|
||
- FTS5 + BM25 稀疏检索
|
||
- 支持 `jieba/mixed/char_2gram` 分词与懒加载
|
||
- 支持 ngram 倒排回退与可选 LIKE 兜底
|
||
- `DualPathRetriever` 新增 sparse/fusion 配置注入:
|
||
- embedding 不可用时自动 sparse 回退;
|
||
- `hybrid` 模式支持向量路 + sparse 路并行候选;
|
||
- 新增 `FusionConfig` 与 `weighted_rrf` 融合。
|
||
- `MetadataStore` 新增 FTS/倒排能力:
|
||
- `paragraphs_fts`、`relations_fts` schema 与回填;
|
||
- `paragraph_ngrams` 倒排索引与回填;
|
||
- `fts_search_bm25` / `fts_search_relations_bm25` / `ngram_search_paragraphs`。
|
||
|
||
### 🛠️ 组件链路同步
|
||
|
||
- `plugin.py`
|
||
- 新增 `[retrieval.sparse]`、`[retrieval.fusion]` 默认配置;
|
||
- 初始化并向组件注入 `sparse_index`;
|
||
- `on_disable` 支持按配置卸载 sparse 连接并释放缓存。
|
||
- `knowledge_search_action.py` / `query_command.py` / `knowledge_query_tool.py`
|
||
- 统一接入 sparse/fusion 配置;
|
||
- 统一注入 `sparse_index`;
|
||
- `stats` 输出新增 sparse 状态观测。
|
||
- `requirements.txt`
|
||
- 新增 `jieba>=0.42.1`(未安装时自动回退 char n-gram)。
|
||
|
||
### 🧯 修复与行为调整
|
||
|
||
- 修复 `retrieval.ppr_concurrency_limit` 不生效问题:
|
||
- `DualPathRetriever` 使用配置值初始化 `_ppr_semaphore`,不再被固定值覆盖。
|
||
- 修复 `char_2gram` 召回失效场景:
|
||
- FTS miss 时增加 `_fallback_substring_search`,优先 ngram 倒排回退,按配置可选 LIKE 兜底。
|
||
- 提升可观测性与兼容性:
|
||
- `get_statistics()` 对向量规模字段兼容读取 `size -> num_vectors -> 0`,避免属性缺失导致异常。
|
||
- `/query stats` 与 `knowledge_query` 输出包含 sparse 状态(enabled/loaded/tokenizer/doc_count)。
|
||
|
||
### 📚 文档
|
||
|
||
- `README.md`
|
||
- 新增检索增强说明、稀疏行为说明、时序回填脚本入口。
|
||
- `CONFIG_REFERENCE.md`
|
||
- 补齐 sparse/fusion 参数与触发规则、回退链路、融合实现细节。
|
||
|
||
### ⏱️ 时序检索与导入增强
|
||
|
||
#### 时序检索能力(分钟级)
|
||
|
||
- 新增统一时序查询入口:
|
||
- `/query time`(别名 `/query t`)
|
||
- `knowledge_query(query_type=time)`
|
||
- `knowledge_search(query_type=time|hybrid)`
|
||
- 查询时间参数统一支持:
|
||
- `YYYY/MM/DD`
|
||
- `YYYY/MM/DD HH:mm`
|
||
- 日期参数自动展开边界:
|
||
- `from/time_from` -> `00:00`
|
||
- `to/time_to` -> `23:59`
|
||
- 查询结果统一回传 `metadata.time_meta`,包含命中时间窗口与命中依据(事件时间或 `created_at` 回退)。
|
||
|
||
#### 存储与检索链路
|
||
|
||
- 段落存储层支持时序字段:
|
||
- `event_time`
|
||
- `event_time_start`
|
||
- `event_time_end`
|
||
- `time_granularity`
|
||
- `time_confidence`
|
||
- 时序命中采用区间相交逻辑,并遵循“双层时间语义”:
|
||
- 优先 `event_time/event_time_range`
|
||
- 缺失时回退 `created_at`(可配置关闭)
|
||
- 检索排序规则保持:语义优先,时间次排序(新到旧)。
|
||
- `process_knowledge.py` 新增 `--chat-log` 参数:
|
||
- 启用后强制使用 `narrative` 策略;
|
||
- 使用 LLM 对聊天文本进行语义时间抽取(支持相对时间转绝对时间),写入 `event_time/event_time_start/event_time_end`。
|
||
- 新增 `--chat-reference-time`,用于指定相对时间语义解析的参考时间点。
|
||
|
||
#### Schema 与文档同步
|
||
|
||
- `_manifest.json` 同步补齐 `retrieval.temporal` 配置 schema。
|
||
- 配置 schema 版本升级:`config_version` 从 `3.0.0` 提升到 `3.1.0`(`plugin.py` / `config.toml` / 配置文档同步)。
|
||
- 更新 `README.md`、`CONFIG_REFERENCE.md`、`IMPORT_GUIDE.md`,补充时序检索入口、参数格式与导入时间字段说明。
|
||
|
||
## [0.3.3] - 2026-02-11
|
||
|
||
本次更新为 **语言一致性补丁版本**,重点收敛知识抽取时的语言漂移问题,要求输出严格贴合原文语言,不做翻译改写。
|
||
|
||
### 🛠️ 关键修复
|
||
|
||
#### 抽取语言约束
|
||
|
||
- `BaseStrategy`:
|
||
- 移除按 `zh/en/mixed` 分支的语言类型判定逻辑;
|
||
- 统一为单一约束:抽取值保持原文语言、保留原始术语、禁止翻译。
|
||
- `NarrativeStrategy` / `FactualStrategy`:
|
||
- 抽取提示词统一接入上述语言约束;
|
||
- 明确要求 JSON 键名固定、抽取值遵循原文语言表达。
|
||
|
||
#### 导入链路一致性
|
||
|
||
- `ImportCommand` 的 LLM 抽取提示词同步强化“优先原文语言、不要翻译”要求,避免脚本与指令导入行为不一致。
|
||
|
||
#### 测试与文档
|
||
|
||
- 更新 `test_strategies.py`,将语言判定测试调整为统一语言约束测试,并验证提示词中包含禁止翻译约束。
|
||
- 同步更新注释与文档描述,确保实现与说明一致。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`0.3.2` → `0.3.3`
|
||
|
||
## [0.3.2] - 2026-02-11
|
||
|
||
本次更新为 **V5 稳定性与兼容性修复版本**,在保持原有业务设计(强化→衰减→冷冻→修剪→回收)的前提下,修复关键链路断裂与误判问题。
|
||
|
||
### 🛠️ 关键修复
|
||
|
||
#### V5 记忆系统契约与链路
|
||
|
||
- `MetadataStore`:
|
||
- 统一 `mark_relations_inactive(hashes, inactive_since=None)` 调用契约,兼容不同调用方;
|
||
- 补充 `has_table(table_name)`;
|
||
- 增加 `restore_relation(hash)` 兼容别名,修复服务层恢复调用断裂;
|
||
- 修正 `get_entity_gc_candidates` 对孤立节点参数的处理(支持节点名映射到实体 hash)。
|
||
- `GraphStore`:
|
||
- 清理 `deactivate_edges` 重复定义并统一返回冻结数量,保证上层日志与断言稳定。
|
||
- `server.py`:
|
||
- 修复 `/api/memory/restore` relation 恢复链路;
|
||
- 清理不可达分支并统一异常路径;
|
||
- 回收站查询在表检测场景下不再出现错误退空。
|
||
|
||
#### 命令与模型选择
|
||
|
||
- `/memory` 命令修复 hash 长度判定:以 64 位 `sha256` 为标准,同时兼容历史 32 位输入。
|
||
- 总结模型选择修复:
|
||
- 解决 `summarization.model_name = auto` 误命中 `embedding` 问题;
|
||
- 支持数组与选择器语法(`task:model` / task / model);
|
||
- 兼容逗号分隔字符串写法(如 `"utils:model1","utils:model2",replyer`)。
|
||
|
||
#### 生命周期与脚本稳定性
|
||
|
||
- `plugin.py` 修复后台任务生命周期管理:
|
||
- 增加 `_scheduled_import_task` / `_auto_save_task` / `_memory_maintenance_task` 句柄;
|
||
- 避免重复启动;
|
||
- 插件停用时统一 cancel + await 收敛。
|
||
- `process_knowledge.py` 修复 tenacity 重试日志级别类型错误(`"WARNING"` → `logging.WARNING`),避免 `KeyError: 'WARNING'`。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`0.3.1` → `0.3.2`
|
||
|
||
## [0.3.1] - 2026-02-07
|
||
|
||
本次更新为 **稳定性补丁版本**,主要修复脚本导入链路、删除安全性与 LPMM 转换一致性问题。
|
||
|
||
### 🛠️ 关键修复
|
||
|
||
#### 新增功能
|
||
|
||
- 新增 `scripts/convert_lpmm.py`:
|
||
- 支持将 LPMM 的 `parquet + graph` 数据直接转换为 A_Memorix 存储结构;
|
||
- 提供 LPMM ID 到 A_Memorix ID 的映射能力,用于图节点/边重写;
|
||
- 当前实现优先保证检索一致性,关系向量采用安全策略(不直接导入)。
|
||
|
||
#### 导入链路
|
||
|
||
- 修复 `import_lpmm_json.py` 依赖的 `AutoImporter.import_json_data` 公共入口缺失/不稳定问题,确保外部脚本可稳定调用 JSON 直导入流程。
|
||
|
||
#### 删除安全
|
||
|
||
- 修复按来源删除时“同一 `(subject, object)` 存在多关系”场景下的误删风险:
|
||
- `MetadataStore.delete_paragraph_atomic` 新增 `relation_prune_ops`;
|
||
- 仅在无兄弟关系时才回退删除整条边。
|
||
- `delete_knowledge.py` 新增保守孤儿实体清理(仅对本次候选实体执行,且需同时满足无段落引用、无关系引用、图无邻居)。
|
||
- `delete_knowledge.py` 改为读取向量元数据中的真实维度,避免 `dimension=1` 写回污染。
|
||
|
||
#### LPMM 转换修复
|
||
|
||
- 修复 `convert_lpmm.py` 中向量 ID 与 `MetadataStore` 哈希不一致导致的检索反查失败问题。
|
||
- 为避免脏召回,转换阶段暂时跳过 `relation.parquet` 的直接向量导入(待关系元数据一一映射能力完善后再恢复)。
|
||
|
||
### 🔖 版本信息
|
||
|
||
- 插件版本:`0.3.0` → `0.3.1`
|
||
|
||
## [0.3.0] - 2026-01-30
|
||
|
||
本次更新引入了 **V5 动态记忆系统**,实现了符合生物学特性的记忆衰减、强化与全声明周期管理,并提供了配套的指令与工具。
|
||
|
||
### 🧠 记忆系统 (V5)
|
||
|
||
#### 核心机制
|
||
|
||
- **记忆衰减 (Decay)**: 引入"遗忘曲线",随时间推移自动降低图谱连接权重。
|
||
- **访问强化 (Reinforcement)**: "越用越强",每次检索命中都会刷新记忆活跃度并增强权重。
|
||
- **生命周期 (Lifecycle)**:
|
||
- **活跃 (Active)**: 正常参与计算与检索。
|
||
- **冷冻 (Inactive)**: 权重过低被冻结,不再参与 PPR 计算,但保留语义映射 (Mapping)。
|
||
- **修剪 (Prune)**: 过期且无保护的冷冻记忆将被移入回收站。
|
||
- **多重保护**: 支持 **永久锁定 (Pin)** 与 **限时保护 (TTL)**,防止关键记忆被误删。
|
||
|
||
#### GraphStore
|
||
|
||
- **多关系映射**: 实现 `(u,v) -> Set[Hash]` 映射,确保同一通道下的多重语义关系互不干扰。
|
||
- **原子化操作**: 新增 `decay`, `deactivate_edges` (软删), `prune_relation_hashes` (硬删) 等原子操作。
|
||
|
||
### 🛠️ 指令与工具
|
||
|
||
#### Memory Command (`/memory`)
|
||
|
||
新增全套记忆维护指令:
|
||
|
||
- `/memory status`: 查看记忆系统健康状态(活跃/冷冻/回收站计数)。
|
||
- `/memory protect <query> [hours]`: 保护记忆。不填时间为永久锁定(Pin),填时间为临时保护(TTL)。
|
||
- `/memory reinforce <query>`: 手动强化记忆(绕过冷却时间)。
|
||
- `/memory restore <hash>`: 从回收站恢复误删记忆(仅当节点存在时重建连接)。
|
||
|
||
#### MemoryModifierTool
|
||
|
||
- **LLM 能力增强**: 更新工具逻辑,支持 LLM 自主触发 `reinforce`, `weaken`, `remember_forever`, `forget` 操作,并自动映射到 V5 底层逻辑。
|
||
|
||
### ⚙️ 配置 (`config.toml`)
|
||
|
||
新增 `[memory]` 配置节:
|
||
|
||
- `half_life_hours`: 记忆半衰期 (默认 24h)。
|
||
- `enable_auto_reinforce`: 是否开启检索自动强化。
|
||
- `prune_threshold`: 冷冻/修剪阈值 (默认 0.1)。
|
||
|
||
### 💻 WebUI (v1.4)
|
||
|
||
实现了与 V5 记忆系统深度集成的全生命周期管理界面:
|
||
|
||
- **可视化增强**:
|
||
- **冷冻状态**: 非活跃记忆以 **虚线 + 灰色 (Slate-300)** 显示。
|
||
- **保护状态**: 被 Pin 或保护的记忆带有 **金色 (Amber) 光晕**。
|
||
- **交互升级**:
|
||
- **记忆回收站**: 新增 Dock 入口与专用面板,支持浏览删除记录并一键恢复。
|
||
- **快捷操作**: 边属性面板新增 **强化 (Reinforce)**、**保护 (Protect/Pin)**、**冷冻 (Freeze)** 按钮。
|
||
- **实时反馈**: 操作后自动刷新图谱布局与样式。
|
||
|
||
---
|
||
|
||
## [0.2.3] - 2026-01-30
|
||
|
||
本次更新主要集中在 **WebUI 交互体验优化** 与 **文档/配置的规范化**。
|
||
|
||
### 🎨 WebUI (v1.3)
|
||
|
||
#### 加载与同步体验升级
|
||
|
||
- **沉浸式加载**: 全新设计的加载遮罩,采用磨砂玻璃背景 (`backdrop-filter`) 与呼吸灯文字动效,提升视觉质感。
|
||
- **精准状态反馈**: 优化加载逻辑,明确区分“网络同步”与“拓扑计算”阶段,解决数据加载时的闪烁问题。
|
||
- **新手引导**: 在加载界面新增基础操作提示,降低新用户上手门槛。
|
||
|
||
#### 全功能帮助面板
|
||
|
||
- **操作指南重构**: 全面翻新“操作指南”面板,新增 Dock 栏功能详解、编辑管理操作及视图配置说明。
|
||
|
||
### 🛠️ 工程与规范
|
||
|
||
#### plugin.py
|
||
|
||
- **配置描述补全**: 修复了 `config_section_descriptions` 中缺失 `summarization`, `schedule`, `filter` 节导致的问题。
|
||
- **版本号**: `0.2.2` → `0.2.3`
|
||
|
||
### ⚙️ 核心与服务
|
||
|
||
#### Core
|
||
|
||
- **量化逻辑修正**: 修正了 `_scalar_quantize_int8` 函数,确保向量值正确映射到 `[-128, 127]` 区间,提高量化精度。
|
||
|
||
#### Server
|
||
|
||
- **缓存一致性**: 在执行删除节点/边等修改操作后,显式清除 `_relation_cache`,确保前端获取的关系数据实时更新。
|
||
|
||
### 🤖 脚本与数据处理
|
||
|
||
#### process_knowledge.py
|
||
|
||
- **策略模式重构**: 引入了 `Strategy-Aware` 架构,支持通过 `Narrative` (叙事), `Factual` (事实), `Quote` (引用) 三种策略差异化处理文本(准确说是确认实装)(默认采用 Narrative模式)。
|
||
- **智能分块纠错**: 新增“分块拯救” (`Chunk Rescue`) 机制,可在长叙事文本中自动识别并提取内嵌的歌词或诗句。
|
||
|
||
#### import_lpmm_json.py
|
||
|
||
- **LPMM 迁移工具**: 增加了对 LPMM OpenIE JSON 格式的完整支持,能够自动计算 Hash 并迁移实体/关系数据,确保与 A_Memorix 存储格式兼容。
|
||
|
||
#### Project
|
||
|
||
- **构建清理**: 优化 `.gitignore` 规则
|
||
|
||
---
|
||
|
||
## [0.2.2] - 2026-01-27
|
||
|
||
本次更新专注于提高 **网络请求的鲁棒性**,特别是针对嵌入服务的调用。
|
||
|
||
### 🛠️ 稳定性与工程改进
|
||
|
||
#### EmbeddingAPI
|
||
|
||
- **可配置重试机制**: 新增 `[embedding.retry]` 配置项,允许自定义最大重试次数和等待时间。默认重试次数从 3 次增加到 10 次,以更好应对网络波动。
|
||
- **配置项**:
|
||
- `max_attempts`: 最大重试次数 (默认: 10)
|
||
- `max_wait_seconds`: 最大等待时间 (默认: 30s)
|
||
- `min_wait_seconds`: 最小等待时间 (默认: 2s)
|
||
|
||
#### plugin.py
|
||
|
||
- **版本号**: `0.2.1` → `0.2.2`
|
||
|
||
---
|
||
|
||
## [0.2.1] - 2026-01-26
|
||
|
||
本次更新重点在于 **可视化交互的全方位重构** 以及 **底层鲁棒性的进一步增强**。
|
||
|
||
### 🎨 可视化与交互重构
|
||
|
||
#### WebUI (Glassmorphism)
|
||
|
||
- **全新视觉设计**: 采用深色磨砂玻璃 (Glassmorphism) 风格,配合动态渐变背景。
|
||
- **Dock 菜单栏**: 底部新增 macOS 风格 Dock 栏,聚合所有常用功能。
|
||
- **显著性视图 (Saliency View)**: 基于 **PageRank** 算法的“信息密度”滑块,支持以此过滤叶子节点,仅展示核心骨干或全量细节。
|
||
- **功能面板**:
|
||
- **❓ 操作指南**: 内置交互说明与特性介绍。
|
||
- **🔍 悬浮搜索**: 支持按拼音/ID 实时过滤节点。
|
||
- **📂 记忆溯源**: 支持按源文件批量查看和删除记忆数据。
|
||
- **📖 内容字典**: 列表化展示所有实体与关系,支持排序与筛选。
|
||
|
||
### 🛠️ 稳定性与工程改进
|
||
|
||
#### EmbeddingAPI
|
||
|
||
- **鲁棒性增强**: 引入 `tenacity` 实现指数退避重试机制。
|
||
- **错误处理**: 失败时返回 `NaN` 向量而非零向量,允许上层逻辑安全跳过。
|
||
|
||
#### MetadataStore
|
||
|
||
- **自动修复**: 自动检测并修复 `vector_index` 列错位(文件名误存)的历史数据问题。
|
||
- **数据统计**: 新增 `get_all_sources` 接口支持来源统计。
|
||
|
||
#### 脚本与工具
|
||
|
||
- **用户体验**: 引入 `rich` 库优化终端输出进度条与状态显示。
|
||
- **接口开放**: `process_knowledge.py` 新增 `import_json_data` 供外部调用。
|
||
- **LPMM 迁移**: 新增 `import_lpmm_json.py`,支持导入符合 LPMM 规范的 OpenIE JSON 数据。
|
||
|
||
#### plugin.py
|
||
|
||
- **版本号**: `0.2.0` → `0.2.1`
|
||
|
||
---
|
||
|
||
## [0.2.0] - 2026-01-22
|
||
|
||
> [!CAUTION]
|
||
> **不完全兼容变更**:v0.2.0 版本重构了底层存储架构。由于数据结构的重大调整,**旧版本的导入数据无法在新版本中完全无损兼容**。
|
||
> 虽然部分组件支持自动迁移,但为确保数据一致性和检索质量,**强烈建议在升级后重新使用 `process_knowledge.py` 导入原始数据**。
|
||
|
||
本次更新为**重大版本升级**,包含向量存储架构重写、检索逻辑强化及多项稳定性改进。
|
||
|
||
### 🚀 核心架构重写
|
||
|
||
#### VectorStore: SQ8 量化 + Append-Only 存储
|
||
|
||
- **全新存储格式**: 从 `.npy` 迁移至 `vectors.bin`(float16 增量追加)和 `vectors_ids.bin`,大幅减少内存占用。
|
||
- **原生 SQ8 量化**: 使用 Faiss `IndexScalarQuantizer(QT_8bit)`,替代手动 int8 量化逻辑。
|
||
- **L2 Normalization 强制化**: 所有向量在存储和检索时统一执行 L2 归一化,确保 Inner Product 等价于 Cosine 相似度。
|
||
- **Fallback 索引机制**: 新增 `IndexFlatIP` 回退索引,在 SQ8 训练完成前提供检索能力,避免冷启动无结果问题。
|
||
- **Reservoir Sampling 训练采样**: 使用蓄水池采样收集训练数据(上限 10k),保证小数据集和流式导入场景下的训练样本多样性。
|
||
- **线程安全**: 新增 `threading.RLock` 保护并发读写操作。
|
||
- **自动迁移**: 支持从旧版 `.npy` 格式自动迁移至新 `.bin` 格式。
|
||
|
||
### ✨ 检索功能增强
|
||
|
||
#### KnowledgeQueryTool: 智能回退与多跳路径搜索
|
||
|
||
- **Smart Fallback (智能回退)**: 当向量检索置信度低于阈值 (默认 0.6) 时,自动尝试提取查询中的实体进行多跳路径搜索(`_path_search`),增强对间接关系的召回能力。
|
||
- **结果去重 (`_deduplicate_results`)**: 新增基于内容相似度的安全去重逻辑,防止冗余结果污染 LLM 上下文,同时确保至少保留一条结果。
|
||
- **语义关系检索 (`_semantic_search_relation`)**: 支持自然语言查询关系(无需 `S|P|O` 格式),内部使用 `REL_ONLY` 策略进行向量检索。
|
||
- **路径搜索 (`_path_search`)**: 新增 `GraphStore.find_paths` 调用,支持查找两个实体间的间接连接路径(最大深度 3,最多 5 条路径)。
|
||
- **Clean Output**: LLM 上下文中不再包含原始相似度分数,避免模型偏见。
|
||
|
||
#### DualPathRetriever: 并发控制与调试模式
|
||
|
||
- **PPR 并发限制 (`ppr_concurrency_limit`)**: 新增 Semaphore 控制 PageRank 计算并发数,防止 CPU 峰值过载。
|
||
- **Debug 模式**: 新增 `debug` 配置项,启用时打印检索结果原文到日志。
|
||
- **Entity-Pivot 关系检索**: 优化 `_retrieve_relations_only` 策略,通过检索实体后扩展其关联关系,替代直接检索关系向量。
|
||
|
||
### ⚙️ 配置与 Schema 扩展
|
||
|
||
#### plugin.py
|
||
|
||
- **版本号**: `0.1.3` → `0.2.0`
|
||
- **默认配置版本**: `config_version` 默认值更新为 `2.0.0`
|
||
- **新增配置项**:
|
||
- `retrieval.relation_semantic_fallback` (bool): 是否启用关系查询的语义回退。
|
||
- `retrieval.relation_fallback_min_score` (float): 语义回退的最小相似度阈值。
|
||
- **相对路径支持**: `storage.data_dir` 现在支持相对路径(相对于插件目录),默认值改为 `./data`。
|
||
- **全局实例获取**: 新增 `A_MemorixPlugin.get_global_instance()` 静态方法,供组件可靠获取插件实例。
|
||
|
||
#### config.toml / \_manifest.json
|
||
|
||
- **新增 `ppr_concurrency_limit`**: 控制 PPR 算法并发数。
|
||
- **新增训练阈值配置**: `embedding.min_train_threshold` 控制触发 SQ8 训练的最小样本数。
|
||
|
||
### 🛠️ 稳定性与工程改进
|
||
|
||
#### GraphStore
|
||
|
||
- **`find_paths` 方法**: 新增多跳路径查找功能,支持 BFS 搜索指定深度内的实体间路径。
|
||
- **`find_node` 方法**: 新增大小写不敏感的节点查找。
|
||
|
||
#### MetadataStore
|
||
|
||
- **Schema 迁移**: 自动添加缺失的 `is_permanent`, `last_accessed`, `access_count` 字段。
|
||
|
||
#### 脚本与工具
|
||
|
||
- **新增脚本**:
|
||
- `scripts/diagnose_relations_source.py`: 诊断关系溯源问题。
|
||
- `scripts/verify_search_robustness.py`: 验证检索鲁棒性。
|
||
- `scripts/run_stress_test.py`, `stress_test_data.py`: 压力测试套件。
|
||
- `scripts/migrate_canonicalization.py`, `migrate_paragraph_relations.py`: 数据迁移工具。
|
||
- **目录整理**: 将大量旧版测试脚本移动至 `deprecated/` 目录。
|
||
|
||
### 🗑️ 移除与废弃
|
||
|
||
- 废弃 `vectors.npy` 存储格式(自动迁移至 `.bin`)。
|
||
|
||
---
|
||
|
||
## [0.1.3] - 上一个稳定版本
|
||
|
||
- 初始发布,包含基础双路检索功能。
|
||
- 手动 Int8 向量量化。
|
||
- 基于 `.npy` 的向量存储。
|