Skip to content

[Bug]: OpenClaw memory_recall tool returns 404 — API path mismatch with OpenViking 0.3.2 #1189

@fkc0p

Description

@fkc0p

Bug type

Behavior bug — OpenClaw plugin compatibility issue with OpenViking 0.3.2

Summary

The OpenClaw openviking plugin's memory_recall tool calls POST /api/v1/memory/recall, which does not exist in OpenViking 0.3.2. The correct endpoint is POST /api/v1/search/search.

Meanwhile, the context engine (auto-recall via before_prompt_build) within the same plugin uses the correct /api/v1/search/search path and works fine — it successfully injects relevant-memories into every message. This means two code paths within the same OpenClaw plugin are targeting different API routes.

Steps to reproduce

  1. Install OpenClaw 2026.4.1 with OpenViking 0.3.2 (pip install openviking)
  2. Enable the openviking plugin in openclaw.json:
    "openviking": {
      "enabled": true,
      "config": {
        "mode": "local",
        "configPath": "/home/user/.openviking/ov.conf",
        "port": 1933
      }
    }
  3. Store a memory via memory_store tool → succeeds (data written to session)
  4. Wait for extraction to complete → memory appears in relevant-memories header ✅
  5. Use memory_recall tool to search for the same memory → returns "No relevant memories found" ❌

Expected behavior

memory_recall should return matching memories from OpenViking, consistent with the auto-recall context engine results.

Actual behavior

memory_recall always returns empty. OpenViking access log shows:

"POST /api/v1/memory/recall HTTP/1.1" 404

OpenViking 0.3.2 API surface (from /openapi.json) has no /api/v1/memory/* routes. The search endpoints are:

  • POST /api/v1/search/search ← correct endpoint
  • POST /api/v1/search/find
  • POST /api/v1/search/grep
  • POST /api/v1/search/glob

Evidence

Manual curl to the correct endpoint returns results:

curl -s http://127.0.0.1:1933/api/v1/search/search \
  -X POST -H "Content-Type: application/json" \
  -d '{"query":"咖啡","limit":5}'
# → returns matching memory with score 0.64

The context engine's auto-recall works correctly every time, proving data exists and is searchable.

Root cause

The OpenClaw openviking plugin (bundled in OpenClaw dist) has two separate code paths:

  1. Context engine (before_prompt_build / auto-recall) → calls /api/v1/search/search
  2. memory_recall tool → calls /api/v1/memory/recall ❌ (404)

The plugin source is maintained at examples/openclaw-plugin in this repo. The tool path appears to target an API spec that does not match OpenViking 0.3.2.

Environment

  • OpenViking: 0.3.2 (latest on PyPI as of 2026-04-02)
  • OpenClaw: 2026.4.1 (da64a97)
  • OS: Linux (Kali, kernel 6.18.12)
  • Python: 3.13

Additional notes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions