Skip to content

fix(memory): /memory on and memory_search unreachable in live session despite valid identity and init stamp #311

Description

@LeXwDeX

现象(v1.0.23 实机)

  • /memory on 反复返回 Memory remains off(/init 前后均如此)
  • memory_search 工具返回 Memory search is unavailable for this session
  • 全程日志零 WARN(无 MEMORY command failed / needs manual repair / configured MEMORY model is unavailable

已排除的假设(逐项实证)

假设 证据 结论
项目未初始化 活库 opencode.db 行 e81c016b:time_initialized=1786934694133(/init 于 02:44:54Z 成功盖章,事件链 project.ts:424→prompt.ts:2133 工作正常) ❌ 排除
global identity 行 id=e81c016b…(真实 git remote 身份),非 global ❌ 排除
子会话守卫 会话 ses_fe5ff616… parent_id 为空 ❌ 排除
旧二进制 /usr/local/bin/opencode mtime=08-17 09:51 = v1.0.23;origin/main prompt.ts:2340 含 Memory.node ❌ 排除
memory.jsonc 死键 topic_limit_floor config.ts:186 注释明示 Schema.Struct 容忍多余属性 ❌ 排除
Memory home 损坏/legacy 冲突 home 目录存在且为空;仓库工作树无遗留 memory 文件;无 unresolved 警告 ❌ 排除
查错 DB 初诊误查 opencode-local.db(陈旧行);活库为 opencode.db ✅ 已纠正

症状指向

两条路径(prompt.ts:1879 拦截器 / memory-search.ts:36)都在 Effect.serviceOption(Memory.Service) 返回 None 时无警告地给出相同答复——Memory 服务在实机会话栈中不可达,尽管 Memory.node 在 SessionPrompt 节点清单(prompt.ts:2340)。

疑区

  1. 实机交付的会话层装配与源码 defaultLayer 存在变体差异(某条装配路径漏掉 Memory.node 或其依赖)
  2. Memory 层构建失败被某处静默吞掉(InstanceState/LayerNode 边界)
  3. 实例上下文错配导致服务在错误键下注册

复现

v1.0.23 + 有 git remote 的已初始化项目:/init/memory onMemory remains off;同会话 memory_search → unavailable。

验收

/memory on 返回 Memory onmemory_search 可召回;或当服务确实缺失时,两处守卫给出带原因的明确错误(而非静默 remains off)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions