OpenViking 长期记忆提取管线失效 — 2026-09-19

结论

ov add-memory 返回成功但记忆静默丢失。资源路径(ov add-resource)正常,仅记忆路径失效。

现象

$ ov add-memory "..." -o json
{"ok":true,"result":"OK"}

但 viking://user/default/memories/ 下不产生任何新文件,语义检索也搜不到。 (对比:ov add-resource 写入 viking://resources/ 正常,已验证可 find + grep 命中。)

根因

OpenViking 的长期记忆提取(openviking/session/memory/extract_loop.py)需要 LLM 调用, 而 ~/.openviking/ov.conf 缺少 vlm 配置块(当前只有 storage / embedding / query_planner / server)。

openai.OpenAIError: Missing credentials. Please pass an `api_key`, `workload_identity`,
`admin_api_key`, or set the `OPENAI_API_KEY` or `OPENAI_ADMIN_KEY` environment variable.
2026-09-13 05:37:10 ERROR - openviking.session.session - Phase 2 step long_term failed

影响范围

  • 首次出现:2026-09-13 05:37:10
  • 持续至今:server.log 中反复出现,至 2026-09-19 03:04 仍在报
  • 即 09-13 以来所有写入 OpenViking 的记忆都未落盘

修复方向

官方 setup wizard 的 ollama 预设(openviking_cli/setup_wizard.py: _ollama_vlm_config)在 ov.conf 补:

"vlm": {
  "provider": "litellm",
  "model": "ollama/<模型名>",
  "api_key": "no-key",
  "api_base": "http://${LOCALIP}:11434",
  "temperature": 0.0,
  "max_retries": 2,
  "extra_request_body": { "num_ctx": 8192 }
}

要点:

  • 本机 ollama 已有可用模型 guoxuter/ov_intent_analysis_sft:v7_q8(811MB)
  • extra_request_body 必须把 Ollama 上下文从默认 4096 提高 —— OV 的记忆提取 prompt 本身约 5k token, 默认值会静默截断对话;同时需关闭 thinking(thinking 模型否则只输出推理不产出结果)

状态

未自行修改 —— 改动 ov.conf + 重启 openviking.service 会影响用户现役记忆库(alaya 的 L3), 按用户硬约束「装外部工具/改配置先等拍板」,待用户确认后执行。

附:scope-recall 退役说明

本机 cron 任务 memory-miner(83a4143700ba)的 prompt 仍指向 ~/.hermes/scope-recall/.miner_state 与 scope_recall_store 工具,但:

  • scope-recall 插件已退役,数据于 2026-06-23 迁移至 gbrain(134 条:memory 57 / general 40 / user 20 / self-learning 8 / project 7 / ops 2)
  • 现役 L3 记忆库为 OpenViking(ov CLI,${LOCALIP}:1933)
  • 该 cron 连续失败(failure_streak 2,last_error = OpenRouter free tier 429)

→ 该 cron 的 prompt 需重写指向 OpenViking,否则每轮都空转。