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(
ovCLI,${LOCALIP}:1933) - 该 cron 连续失败(failure_streak 2,last_error = OpenRouter free tier 429)
→ 该 cron 的 prompt 需重写指向 OpenViking,否则每轮都空转。