How to use OpenViking
Inject OpenViking long-term memory into DSH: automatically recall relevant context before each step, asynchronously persist the entire conversation to disk, and provide the mcp__openviking__* toolset with viking:// URI protection.
This article is auto-derived from indexed fields (wiki / faq / compatibility_json), not freshly AI-generated.
This article is derived from the plugin's already-indexed fields (wiki / faq / compatibility_json / readme), not freshly generated by AI. Source field is noted at the end of each section.
Quick start
OpenViking
— source: plugin_wiki.wiki_content
Install & verify
dsh plugin --profile web add @openviking/dsh-memory-plugin
Run the command above in your DSH Web Profile. Then enable the plugin in the plugin list.
— source: plugins.install
Key points
- L0 (Abstract): a one-sentence summary for quick relevance checks.
- L1 (Overview): core information and usage scenarios for planning.
- L2 (Details): the full original data, read only when needed.
- Agent experience (tau2-bench): experience memory lifts task success by +6.87pp (retail) and +11.87pp (airline) over the same LLM without memory.
- Client configuration (
ov config), standalone CLI installs (npm / cargo), and advanced usage such as index rebuilding: CLI setup
— source: plugin_wiki.readme_en (fallback readme_raw)
FAQ
Which OpenViking service does it connect to by default after installation?
Defaults to connecting to the local OpenViking service (http://127.0.0.1:1933). You can override this using the OPENVIKING_URL environment variable, the ~/.openviking/ovcli.conf config file, or setting the endpoint in cordis.patch.yml.
Which version of DSH is required?
Requires DSH 0.1.0-rc.6 or higher in the 0.1.x series. It locks the core package to >=0.1.0-rc.6 <0.2.0; running on 0.2.x will fail to load due to peerDependencies mismatch.
Will conversations be lost when offline?
No, messages won't be lost. When the OpenViking service is unreachable or writes fail, messages are serialized to a local write queue (~/.openviking/pending/, permissions 0o600), automatically replayed on the next session startup, with a maximum of 3 retries or cleanup after 7 days.
What is viking://? Can DSH's built-in read tool open it directly?
viking:// is OpenViking's virtual database URI, not a local file path. The plugin intercepts DSH's erroneous calls to viking:// for read/glob/grep/bash/edit/write/str_replace_editor during the tools/pre-execute phase, directing the model to use the mcp__openviking__* toolset instead.
Will memories be cleared after uninstalling the plugin?
No. Memories are stored on the OpenViking server side; uninstalling the plugin only stops automatic recall and collection, without deleting already-persisted data; to completely delete, call mcp__openviking__forget with the accurate viking:// URI.
Is it necessary to install the OpenViking server?
Yes. The plugin is just a client bridge and requires a reachable OpenViking server (default http://127.0.0.1:1933) to complete recall and writes; when the server is unreachable, all write operations fall back to the local write queue.
Is API Key configuration required?
Not mandatory. Production mode (trusted-mode) requires setting OPENVIKING_API_KEY or OPENVIKING_BEARER_TOKEN, along with OPENVIKING_ACCOUNT/OPENVIKING_USER; in the default local configuration, empty keys can also connect to the local service.
Will live-recall.test.mjs run in CI?
Skipped by default. It's an end-to-end use case and only executes when OPENVIKING_E2E=1 is set with real service credentials; in CI, it's only enabled after the server secret is integrated.
— source: plugin_wiki.faq_json
Compatibility
- DSH: 0.1.0-rc.6+(锁定 <0.2.0)
- Node: ^22.19.0 || >=24
— source: plugin_wiki.compatibility_json
Pitfalls
Review the upstream repo before installing. This guide is auto-derived from indexed fields and may lag the latest release. If anything contradicts the official docs, treat the upstream source as authoritative.
— source: general rule