Back to Openviking

OpenViking Memory

agent-plugins/skills/openviking-memory/SKILL.md

0.4.143.8 KB
Original Source

OpenViking Memory

OpenViking is a long-term semantic memory store addressed by viking:// URIs. This client has no lifecycle hooks, so nothing is recalled or captured automatically — you drive both halves of the loop with the openviking MCP tools:

  • Recall: find, search, recall, read, list, tree, grep, glob
  • Persist: remember, write, edit, add_resource
  • Maintain: forget, health

Use only the tools the session actually registered — the exact set depends on the server version, and tree, write, and edit are absent on older deployments. If no OpenViking tools are registered at all, continue without memory. Do not fabricate tool calls or fall back to raw HTTP.

Recall: at task start

  1. Decide whether the request warrants memory. Retrieve for executable or multi-step work, anything touching a system you may have seen before, and recovery from failures. Skip retrieval for small talk and one-off trivia.
  2. Build one concise query from the task goal, domain objects, intended operation, and constraints. After a failure, include the failed operation and the stable part of the error message.
  3. Call find (fast, ranked results with URI + abstract + score) with limit around 5-10. Use search when deeper intent analysis helps, or recall for a server-assembled, token-budgeted context block. Scope with target_uri when you know where to look, e.g. viking://user/memories/experiences for prior task experience.
  4. Judge results by task and environment fit, not title similarity. read the one to three exact file URIs likely to change how you execute. Ignore sidecar files such as .abstract.md, .overview.md, and .relations.json.
  5. If nothing relevant comes back, proceed without memory. Make at most one focused follow-up search when execution fails for a materially new reason.

Treat retrieved memory as advisory. Priority order: system and developer instructions, the current user request, current environment and tool evidence, then memory. Verify commands, paths, and versions against the present task; prior success never authorizes a destructive action now.

Persist: during and after work

Because capture is not automatic here, durable information is lost unless you store it. When you encounter something worth keeping, persist it in the same session:

  • remember(messages) — the default. Pass the key exchange or a short factual summary as role-tagged messages; the server extracts and files memories (preferences, entities, events, experience) on its own. Use it when the user says "remember this", states a lasting preference or decision, or when a hard-won lesson (root cause, working procedure, environment quirk) emerges.
  • write(uri, content) / edit — when you need an exact document at a known location, such as curated notes under viking://user/ or shared reference material under viking://resources/. Prefer edit over rewriting whole files. If neither tool is registered, fall back to remember.
  • add_resource — to import external documents or URLs as searchable resources.

What to persist: stable preferences and conventions, environment facts, decisions with their rationale, and reusable procedures or fixes. What not to persist: secrets and credentials, transient state, speculation, or bulk transcript dumps — store conclusions, not scrollback.

Example

User asks to fix a failing deployment:

  1. find with query deployment image pull failure private registry, target_uri: "viking://user/memories/experiences".
  2. read the most relevant experience URI; check its assumptions against the current cluster before applying its steps.
  3. Fix the issue, verify the live result.
  4. remember a short summary of the root cause and the working fix so the next session can recall it.