MemPalace v3.7.1 修复挖取完整性与重连问题
MemPalace 发布 v3.7.1 完整性补丁,修复摄取在命名管道上挂起、部分挖取被永久跳过、chromadb 重连复用陈旧 HNSW 缓存,以及 MCP 在 SIGTERM/SIGHUP 下未释放写租约四类问题。
MemPalace 于 2026-08-14 发布 v3.7.1,作为 3.7.0 之后的完整性补丁版本,集中修复四类问题。
命名管道导致摄取挂起:os.walk 和 glob 会把 FIFO 当作普通文件名列出,MemPalace 依据后缀决定是否读取,于是名为 notes.md 的管道会让 mine 在打开时无限等待写入方,后面的 S_ISREG 类型检查无法执行。mine --mode convos、sweep、init、compress 和 split 也会通过各自的读取器同样阻塞。此次在四处打开操作加入 O_NONBLOCK,使原有的类型检查得以生效,管道按文件模式被拒绝;目录遍历则直接跳过非普通文件并输出 SKIP 提示行。普通文件读取内容保持一致;读取器打破写租约这一唯一受标志影响的情形,会重新检查文件类型并在不加该标志的情况下重试。mine --mode extract 因零大小检查原本不受影响。
项目重挖取不再静默跳过不完整文件:process_file 修补了四处缺口。多批次 upsert 现在为每条 drawer 写入 chunk_total,使 file_already_mined 能区分全部提交与首批后崩溃;source_mtime 与内容读取来自同一次 fstat,避免读取后追加的内容被永久掩盖;陈旧 drawer 清理失败会中止该文件而非半覆盖;即便重挖取结束为零 drawer,closets 也会被清理。中途 upsert 失败会删除该来源的部分 drawers 与 closets 后重新抛出,下次挖取会重试。
会话挖取完整性对齐项目路径:会话 drawer 也开始写入 chunk_total,中途失败同样清理部分 drawers,prefetch_mined_set 会省略不完整分组,防止批量“已归档”跳过把中断记录中缺失的对话永久遗漏。
重连时清除陈旧 chromadb 缓存:当对等端或重建改动了磁盘上的 chroma.sqlite3,mcp_server._get_client 与 ChromaBackend._client 会在重新打开前清除 chromadb 按路径键控的 SharedSystemClient 缓存,否则陈旧的内存 HNSW 段会被复用并可能覆盖对等端写入。
MCP 在 SIGTERM/SIGHUP 下释放写租约:此前租约仅通过 atexit 释放,而 CPython 在这些信号的默认处置下会跳过它,导致锁文件指向已死进程。main() 现在安装处理函数并通过 sys.exit 退出,从而走通原有的 atexit 释放路径。
版本安装方式为 pip install -U mempalace==3.7.1。
来源与核对说明
- mempalace/mempalace ↗https://github.com/MemPalace/mempalace/releases/tag/v3.7.1
本文经 AI 整理及独立自动校对,未做运行验证;自动校对仍可能遗漏问题,请以原始资料为准。
这篇内容对你有帮助吗?
点赞人数由服务器记录,收藏保存在当前浏览器。
继续阅读
LiteLLM v1.107.0-dev.2 发布:校验镜像签名并汇总代理与模型桥接修复 →
daily_stock_analysis 发布 v3.29.0:整合选股核心与分享图能力 →