2026-07-31T23:43:22.636Z

OpenClaw MEMORY.md 缺失:诊断第一个失败层

在修复 OpenClaw 内存之前,分离工作区漂移、文件缺失、私有会话范围、引导截断和陈旧搜索。

如果 OpenClaw 说 MEMORY.md 丢失,请不要创建或恢复该文件,直到您知道哪个工作区和会话产生了该症状。最短的可靠诊断是: 1. 确定受影响座席的活动工作空间; 2. 证明 MEMORY.md 是该工作区中的常规文件; 3. 确认允许会话加载私有长期内存; 4. 区分缺失的引导标记和截断的注入副本; 5. 仅在引导检查通过后才测试搜索新鲜度。 这些检查回答不同的问题。重新索引无法修复错误的工作区。重新创建文件无法修复有意的共享会话排除。增加提示预算无法恢复磁盘上不存在的文件。 OpenClaw当前的文档使边界异常清晰:工作区中的 Markdown 文件是持久源, MEMORY.md 是在会话开始时加载的策划的长期层,并且详细 memory/YYYY MM DD.md 音符是通过记忆工具检索的,而不是每次都注入。这一设计创造了不止一种“失踪”的合法含义。 首先证明哪个工作区是活动的 OpenClaw的默认工作空间通常是 ~/.openclaw/workspace ,但这只是默认值。配置文件可以选择后缀的工作空间, OPENCLAW WORKSPACE DIR 可以覆盖默认值,非默认代理可以有自己的配置工作区。旧目录或同级目录中的文件是真实的,但与使用另一个目录的会话无关。 向运行时询问其解析值,而不是从 shell 的当前目录中推断它们: 从该输出中选择受影响的代理。然后检查元数据,而不是内容: 在 macOS 上,使用 stat f 'type=%HT bytes=%z modified=%Sm' 反而。在本地运营商证据中保留准确的私有路径;导出的健康收据只需要一个不透明的工作区 ID, activeWorkspaceMatches , fileExists , regularFile 、字节数和修改时间。 顺序很重要: 活动工作空间与检查的路径不匹配: 分类 WRONG WORKSPACE 。修复代理或配置文件配置,或者在检查两个副本后有意迁移文件。不要默默地覆盖任一工作区。 活动路径匹配但文件不存在: 分类 MISSING ON DISK 。确定该代理是否确实需要精心策划的长期记忆。 MEMORY.md 是可选的; openclaw setup workspace <path 可以播种缺失的默认值而不覆盖现有文件。 路径存在,但不是合格的常规文件: 分类 UNSUPPORTED FILE TYPE 。这与沙箱播种尤其相关。当前工作区文档称,沙箱种子副本接受常规工作区内文件,并忽略在源工作区外部解析的符号链接或硬链接别名。 该文件是活动工作区中的常规文件: 不称存储层损坏。转到会话范围和引导证据。 第一阶段可防止常见的错误修复:找到合理的修复方法 MEMORY.md 磁盘上的某个位置并假设受影响的代理使用它。 文件可以存在但在一次提示中仍然不存在 下一个问题不是“shell 可以读取文件吗?”这是“做了什么 OpenClaw 这次会议注射吗?” 在受影响的会话中,使用: 上下文报告区分原始文件大小和注入大小并公开截断。 openclaw doctor 还可以报告引导程序问题。将结果记录为一个小枚举 present , missing marker , truncated , 或者 not loaded ——而不是将记忆文本复制到事故单中。 当前的 OpenClaw 行为创建了三个重要的分支: 缺少标记并不是崩溃。 当引导文件不存在时, OpenClaw 注入丢失文件标记并继续。该标记是有关会话构建时已解析工作空间的证据。它比代理“不记得”的自然语言声明更强大,但它仍然无法告诉您文件缺失的原因。 截断的副本不是丢失的文件。 OpenClaw 当超出引导预算时,将文件完整地保留在磁盘上,同时截断注入的副本。记录的默认值是每个文件 20,000 个字符,引导文件的默认值是 60,000 个字符。如果 /context detail 报告截断、分类 BOOTSTRAP TRUNCATED 。将详细材料移至 memory/ .md ,缩短策划层,或在考虑即时成本后故意提高限制。恢复文件并不能解决任何问题。 私有内存可以故意超出范围。 工作区指南说要加载 MEMORY.md 仅在主要的私人会话中,不在共享或群组环境中。存在于磁盘上但未加载到共享会话中的文件是 SCOPE EXCLUDED ,并非不健康。更改该边界以使检查变为绿色可能会泄漏私人上下文。 实际规则是: 这种优先顺序故意将隐私置于可用性之前。操作员不应通过注入私有持久内存来“修复”共享会话。 将引导加载和内存搜索保持在单独的通道中 MEMORY.md 启动注入和 memory search 是相关的,但它们不是相同的机制。当索引检索过时时,整理的文件可以出现在主会话提示中。相反,内存搜索可以返回每日笔记,而引导副本 MEMORY.md 丢失或被截断。 只有在工作区、文件资格、范围和引导程序注入通过之后,您才应该运行: 使用为测试创建的金丝雀,而不是从长期记忆中复制的私人句子。记录索引是否新鲜以及是否返回了金丝雀的不透明记录ID。不要导出该短语。简短秘密的原始摘要也是不安全的,因为它可以离线猜测。 两种下游分类很有用: SEARCH STALE : 文件已加载,但索引报告挂起或脏状态。重新索引在这里是相关的。 RETRIEVAL MISS : 索引声称是新鲜的,但已知的金丝雀不返回。检查源覆盖率、后端配置和查询行为。 两个州都没有理由更换 MEMORY.md 。仅在文件和引导程序运行状况得到验证后才开始搜索修复。 历史的 OpenClaw 问题 9307 是关于合并层的有用警告:其 OpenClaw 2026.2.2 3 报告包含两者 ENOENT 读取内存文件和单独的观察者/搜索同步失败。没有证据表明当前版本中存在相同的错误 OpenClaw。有证据表明,一个事件可能包含多个失效层。 在接触生产之前重现决策 以下分类器不使用内存内容并对第一个失败层的优先级进行编码: 我按照确切的优先顺序重播了八个装置:健康的主会话、缺失的文件、错误的工作空间、拒绝的沙箱链接、共享会话排除、截断的引导程序副本、脏索引和新鲜索引金丝雀未命中。所有八个都产生了预期的分类。 该实验揭示了主要的操作结果:六种不健康状态可以被人描述为“记忆缺失”,但每种状态都需要不同的反应。 分类后使用此修复矩阵: 分类 最小合理行动 确认 WRONG WORKSPACE 更正所选代理/配置文件路径或执行经过审核的迁移 新的主会话解析预期的不透明工作区 ID MISSING ON DISK 仅在需要时播种或创建可选的整理文件 新的会话报告 present ,不仅仅是一个成功的写入命令 UNSUPPORTED FILE TYPE 将别名替换为已批准的常规工作区文件 沙盒和主机会话就资格达成一致 SCOPE EXCLUDED 保护隐私边界 主私有会话加载它;共享会话不 BOOTSTRAP LOAD FAILURE 检查权限、运行时视图和引导准备 /context detail 报告非零注入副本 BOOTSTRAP TRUNCATED 策划或有意调整即时预算 所需的动作敏感金丝雀保留在注射部分 SEARCH STALE 根据活跃后端重建或等待索引 索引新鲜度和金丝雀检索均通过 RETRIEVAL MISS 检查源覆盖范围和检索配置 相同的有界金丝雀通过不透明 ID 返回 不要停留在“命令成功”上。结果是一个新的会话收据,显示预期的工作空间、合格的文件、正确的范围、非缺失的引导状态,以及(仅在需要搜索时)当前索引和金丝雀检索。 仍然存在一个限制:这张收据证明了运输和可用性,而不是语义真相。它无法确定记住的决定是正确的、当前的或仍然被授权的。动作敏感内存仍然需要所有者、范围、有效期和批准边界。 在哪里 Sidewisp 适合 这是人工智能代理健康层应提供的证据契约:第一个失败层、影响、新鲜度、置信度、最小安全操作和操作后验证。不应该上传 MEMORY.md 、显示私有路径或在预期内存行为返回之前调用重新索引恢复。 Sidewisp 目前处于私密预览阶段。 其生产监控引擎和 OpenClaw 适配器未在当前网站存储库中提供,因此 Sidewisp 目前不检查或修复这种情况。产品方向是在现有运行时添加健康层,并保留人类对恢复的权力。你可以 加入私人预览等候名单 如果该边界符合您操作代理的方式。 主要来源 OpenClaw 内存概述 — 文件角色、启动加载、索引每日笔记和引导截断。 OpenClaw 代理工作区 — 工作区分辨率、沙箱种子资格、缺失标记、即时预算和私人会话范围。 OpenClaw 问题 9307 — 历史 2026.2.2 3 事件证据,仅保留该版本边界。