Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion agent-plugins/skills/openviking-skills/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ when the `ov` CLI is installed, otherwise tell the user.
survive in the frontmatter. Put anything else (version, author, ...)
under `metadata:` or it is dropped.
2. Check the name on the target root with
`read(uris="<root>/<name>/SKILL.md")`, where `<root>` is
`read(uri="<root>/<name>/SKILL.md")`, where `<root>` is
`viking://~/skills`, or `viking://agent/skills` when sharing. If it
exists, `add_skill` replaces it without asking: show the user what would
change and install only after they confirm, or pick another name.
Expand Down
2 changes: 1 addition & 1 deletion agent-plugins/skills/ov-resources/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ decide where to look without reading everything.
| roughly what it is about | `find(query, target_uri="viking://resources")` |
| an exact word, name, or error string | `grep(uri, pattern=[...])` |
| a file name or extension | `glob(pattern, uri)` e.g. `**/*.pdf` |
| where it is | `list(uri)` and `read(uris)` |
| where it is | `list(uri)` and `read(uri)`, or `read(uris=[...])` for several files |

Default to `find`. Scope it with `target_uri` as soon as you know which
resource you are in — narrower scopes give better hits. Use `search` instead
Expand Down
2 changes: 1 addition & 1 deletion docs/en/guides/06-mcp-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ The built-in MCP tools are listed below. Use the connected server's `tools/list`
|------|-------------|----------------|
| `find` | Fast semantic retrieval without session context. `context_type="skill"` on its own switches to package-level skill retrieval: one hit per skill package, its URI pointing at that package's `SKILL.md` and its summary taken from the skill itself, even when an auxiliary file inside the package is what matched. Without `target_uri` it searches both your own skills and the account-shared `viking://agent/skills`. Mixing `skill` with another context type keeps the generic retrieval path | `query`, `target_uri` (optional), `limit`, `min_score`, `level` (optional), `context_type` (optional), `read_content` (optional — inline each hit's content), `events_time_decay_protection` (optional) |
| `search` | Deep semantic retrieval; `mode="context"` assembles injection-ready context and replaces the former `recall` tool. `list` mode also returns one hit per skill package, its URI pointing at `SKILL.md` and its summary taken from the package itself, but `limit` applies before that merge, so a package matching in several files takes several slots and fewer than `limit` results come back | `query`, `mode` (`list` or `context`), `target_uri` (list mode only), `session_id` (optional), `limit`, `min_score`, `level` (list mode), `context_type` (optional), `events_time_decay_protection` (optional in both modes), plus context-mode `quotas`, `purpose`, `max_tokens`, `detail` or `detail_by_category`, `dedup_turns`, `exclude_uris`, `peer_scope`, scalar `other_peer_penalty` or `other_peer_penalties` by category, and `rewrite` (`off` or `auto`) |
| `read` | Read one or more `viking://` URIs. PNG, JPEG, GIF, and WebP return native MCP image content; WAV, MP3, FLAC, OGG, and M4A return native audio content. Video is not supported because MCP has no standard video content block; use `download` for the original bytes | `uris` (single string or array), `offset`, `limit` (text lines) |
| `read` | Read one or more `viking://` URIs. PNG, JPEG, GIF, and WebP return native MCP image content; WAV, MP3, FLAC, OGG, and M4A return native audio content. Video is not supported because MCP has no standard video content block; use `download` for the original bytes | `uri` (one file) or `uris` (array, several files in one call), `offset`, `limit` (text lines) |
| `download` | Return a short-lived, single-use URL for fetching the original bytes of one file (any type, including PDF, images, archives, audio and video) with `curl`; it does not return the content. Directories are not supported | `uri` |
| `list` | List entries under a `viking://` directory | `uri`, `recursive`, `offset`, `limit`, `sort_by`, `sort_order` (optional) |
| `tree` | Show the recursive directory tree under a `viking://` URI, indented by depth — use when you need a full picture of the file tree (prefer `list` for a single level, `glob` for filename patterns) | `uri` (optional), `level_limit` (default 3), `node_limit` (default 1000), `offset`, `limit`, `include_abstract` (optional — also show each directory's summary; for a skill directory that is its name and description) |
Expand Down
2 changes: 1 addition & 1 deletion docs/zh/guides/06-mcp-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ claude mcp add --transport http openviking \
|------|------|----------|
| `find` | 无 session 上下文的快速语义检索。只传 `context_type="skill"` 时改走包级 skill 检索:每个 skill 包只返回一条命中,URI 指向该包的 `SKILL.md`,摘要取自 skill 本身,即使命中的是包内辅助文件也是如此;不传 `target_uri` 时同时检索自己的 skill 和账户共享的 `viking://agent/skills`。`skill` 与其它 context_type 混用时仍走通用检索路径 | `query`, `target_uri`(可选), `limit`, `min_score`, `level`(可选), `context_type`(可选), `read_content`(可选——直接内联每条命中的内容), `events_time_decay_protection`(可选) |
| `search` | 深度语义检索;`mode="context"` 组装可直接注入的上下文,并替代原 `recall` 工具。`list` 模式下每个 skill 包也只出一条命中,URI 指向 `SKILL.md`、摘要取自包本身,但 `limit` 在合并之前生效,所以一个包在多个文件上命中时会占掉多个名额,返回条数少于 `limit` | `query`, `mode`(`list` 或 `context`), `target_uri`(仅 list 模式), `session_id`(可选), `limit`, `min_score`, `level`(list 模式), `context_type`(可选), `events_time_decay_protection`(两种模式均可选),以及 context 模式的 `quotas`, `purpose`, `max_tokens`, `detail` 或 `detail_by_category`, `dedup_turns`, `exclude_uris`, `peer_scope`, 标量 `other_peer_penalty` 或按类别设置的 `other_peer_penalties`, `rewrite`(`off` 或 `auto`) |
| `read` | 读取一个或多个 `viking://` URI 的内容。PNG、JPEG、GIF、WebP 返回 MCP 原生图片内容;WAV、MP3、FLAC、OGG、M4A 返回原生音频内容。MCP 没有标准视频内容块,因此暂不支持视频;需要原始字节时用 `download` | `uris`(单个字符串或数组), `offset`, `limit`(文本行数) |
| `read` | 读取一个或多个 `viking://` URI 的内容。PNG、JPEG、GIF、WebP 返回 MCP 原生图片内容;WAV、MP3、FLAC、OGG、M4A 返回原生音频内容。MCP 没有标准视频内容块,因此暂不支持视频;需要原始字节时用 `download` | `uri`(读一个文件)或 `uris`(数组,一次读多个文件), `offset`, `limit`(文本行数) |
| `download` | 返回一个短时有效、只能使用一次的 URL,用 `curl` 获取单个文件的原始字节(任意类型,包括 PDF、图片、压缩包、音频和视频);不返回文件内容。不支持目录 | `uri` |
| `list` | 列出 `viking://` 目录下的条目 | `uri`, `recursive`(可选) |
| `tree` | 以缩进形式展示 `viking://` URI 下的递归目录树——当需要全面了解文件树结构时使用(单层列表用 `list`,按文件名查找用 `glob`) | `uri`(可选), `level_limit`(默认 3), `node_limit`(默认 1000), `include_abstract`(可选——同时展示每个目录的摘要;skill 目录的摘要就是它的名字和描述) |
Expand Down
2 changes: 1 addition & 1 deletion examples/agent-hook-plugin/hosts/codebuddy/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "openviking-memory",
"version": "0.5.29",
"version": "0.5.30",
"description": "Long-term semantic memory for the CodeBuddy Code CLI, powered by OpenViking. Injects relevant context at session start and on each prompt, and captures the conversation back into OpenViking.",
"author": {
"name": "OpenViking",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ when the `ov` CLI is installed, otherwise tell the user.
survive in the frontmatter. Put anything else (version, author, ...)
under `metadata:` or it is dropped.
2. Check the name on the target root with
`read(uris="<root>/<name>/SKILL.md")`, where `<root>` is
`read(uri="<root>/<name>/SKILL.md")`, where `<root>` is
`viking://~/skills`, or `viking://agent/skills` when sharing. If it
exists, `add_skill` replaces it without asking: show the user what would
change and install only after they confirm, or pick another name.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schemaVersion": 1,
"id": "openviking-memory",
"version": "0.5.29",
"version": "0.5.30",
"clients": [
"cursor"
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ when the `ov` CLI is installed, otherwise tell the user.
survive in the frontmatter. Put anything else (version, author, ...)
under `metadata:` or it is dropped.
2. Check the name on the target root with
`read(uris="<root>/<name>/SKILL.md")`, where `<root>` is
`read(uri="<root>/<name>/SKILL.md")`, where `<root>` is
`viking://~/skills`, or `viking://agent/skills` when sharing. If it
exists, `add_skill` replaces it without asking: show the user what would
change and install only after they confirm, or pick another name.
Expand Down
2 changes: 1 addition & 1 deletion examples/agent-hook-plugin/hosts/kimicode/kimi.plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "openviking-memory",
"version": "0.5.29",
"version": "0.5.30",
"description": "Long-term semantic memory for Kimi Code CLI, powered by OpenViking.",
"author": {
"name": "OpenViking",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schemaVersion": 1,
"id": "openviking-memory",
"version": "0.5.29",
"version": "0.5.30",
"clients": [
"kimicode"
],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schemaVersion": 1,
"id": "openviking-memory",
"version": "0.5.29",
"version": "0.5.30",
"clients": [
"trae",
"trae-cn"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schemaVersion": 1,
"id": "openviking-memory",
"version": "0.5.29",
"version": "0.5.30",
"clients": [
"zcode"
],
Expand Down
2 changes: 1 addition & 1 deletion examples/agent-hook-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "agent-hook-plugin",
"version": "0.5.29",
"version": "0.5.30",
"description": "Long-term semantic memory for Cursor, TRAE, TRAE CN, ZCode, Kimi Code and CodeBuddy Code — powered by OpenViking. Auto-recall relevant memories and capture the conversation as it happens.",
"author": {
"name": "OpenViking",
Expand Down
2 changes: 1 addition & 1 deletion examples/agent-hook-plugin/tests/codebuddy.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ test("a file tool pointed at a viking:// URI is denied with a usable reason", ()
assert.equal(out.hookSpecificOutput.permissionDecision, "deny");
const reason = out.hookSpecificOutput.permissionDecisionReason;
assert.match(reason, /MCP read/);
assert.match(reason, /read\(uris=/);
assert.match(reason, /read\(uri=/);
});

test("a write to a skill URI is redirected to add_skill", () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "openviking-memory",
"version": "0.7.20",
"version": "0.7.21",
"description": "Long-term semantic memory for Claude Code, powered by OpenViking. Auto-recall relevant memories at session start and capture important information during conversations.",
"author": {
"name": "OpenViking",
Expand Down
2 changes: 1 addition & 1 deletion examples/claude-code-memory-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "claude-code-openviking-memory",
"version": "0.7.20",
"version": "0.7.21",
"description": "OpenViking memory plugin for Claude Code — semantic long-term memory",
"type": "module",
"scripts": {
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ when the `ov` CLI is installed, otherwise tell the user.
survive in the frontmatter. Put anything else (version, author, ...)
under `metadata:` or it is dropped.
2. Check the name on the target root with
`read(uris="<root>/<name>/SKILL.md")`, where `<root>` is
`read(uri="<root>/<name>/SKILL.md")`, where `<root>` is
`viking://~/skills`, or `viking://agent/skills` when sharing. If it
exists, `add_skill` replaces it without asking: show the user what would
change and install only after they confirm, or pick another name.
Expand Down
2 changes: 1 addition & 1 deletion examples/codex-memory-plugin/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "openviking-memory",
"version": "0.11.18",
"version": "0.11.19",
"description": "Long-term semantic memory for Codex, powered by OpenViking. Recall on UserPromptSubmit, incremental add_message on Stop (per turn), commit on SessionEnd (Codex >= 0.145) and on PreCompact, with an idle/ended sweep on SessionStart as the fallback for signals, crashes and older Codex builds. Includes a local stdio MCP proxy that reads OpenViking credentials from env/ovcli.conf.",
"author": {
"name": "OpenViking",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ when the `ov` CLI is installed, otherwise tell the user.
survive in the frontmatter. Put anything else (version, author, ...)
under `metadata:` or it is dropped.
2. Check the name on the target root with
`read(uris="<root>/<name>/SKILL.md")`, where `<root>` is
`read(uri="<root>/<name>/SKILL.md")`, where `<root>` is
`viking://~/skills`, or `viking://agent/skills` when sharing. If it
exists, `add_skill` replaces it without asking: show the user what would
change and install only after they confirm, or pick another name.
Expand Down
4 changes: 2 additions & 2 deletions examples/dsh-memory-plugin/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion examples/dsh-memory-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@openviking/dsh-memory-plugin",
"version": "0.5.31",
"version": "0.5.32",
"description": "OpenViking memory and context bundle for DeepSeek Harness",
"icon": "./icon.svg",
"type": "module",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ when the `ov` CLI is installed, otherwise tell the user.
survive in the frontmatter. Put anything else (version, author, ...)
under `metadata:` or it is dropped.
2. Check the name on the target root with
`read(uris="<root>/<name>/SKILL.md")`, where `<root>` is
`read(uri="<root>/<name>/SKILL.md")`, where `<root>` is
`viking://~/skills`, or `viking://agent/skills` when sharing. If it
exists, `add_skill` replaces it without asking: show the user what would
change and install only after they confirm, or pick another name.
Expand Down
8 changes: 4 additions & 4 deletions examples/memory-plugin-shared/lib/uri-guard.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ export function addSkillExample(uri, { call = "add_skill", edited = false } = {}
export const DEFAULT_TOOL_HINTS = {
read: {
tool: "OpenViking MCP read",
example: (uri) => `read(uris="${uri}")`,
example: (uri) => `read(uri="${uri}")`,
},
glob: {
tool: "OpenViking MCP glob or list",
Expand Down Expand Up @@ -151,15 +151,15 @@ export const DEFAULT_TOOL_HINTS = {
},
bash: {
tool: "OpenViking MCP read or search",
example: (uri) => `read(uris="${uri}")`,
example: (uri) => `read(uri="${uri}")`,
},
runcommand: {
tool: "OpenViking MCP read or search",
example: (uri) => `read(uris="${uri}")`,
example: (uri) => `read(uri="${uri}")`,
},
shell: {
tool: "OpenViking MCP read or search",
example: (uri) => `read(uris="${uri}")`,
example: (uri) => `read(uri="${uri}")`,
},
};

Expand Down
2 changes: 1 addition & 1 deletion examples/memory-plugin-shared/uri-guard.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ test("evaluateUriGuard denies a guarded tool and passes everything else", () =>
const denied = evaluateUriGuard("Read", { file_path: "viking://resources/a.md" })
assert.equal(denied?.uri, "viking://resources/a.md")
assert.match(denied?.reason ?? "", /Use OpenViking MCP read instead/)
assert.match(denied?.reason ?? "", /Example: read\(uris="viking:\/\/resources\/a\.md"\)/)
assert.match(denied?.reason ?? "", /Example: read\(uri="viking:\/\/resources\/a\.md"\)/)

assert.equal(evaluateUriGuard("Read", { file_path: "/tmp/a.md" }), null)
assert.equal(evaluateUriGuard("Task", { file_path: "viking://resources/a.md" }), null)
Expand Down
2 changes: 1 addition & 1 deletion examples/opencode-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@openviking/opencode-plugin",
"version": "0.5.23",
"version": "0.5.24",
"author": "@openviking",
"description": "Unified OpenCode plugin for OpenViking repository retrieval and long-term memory",
"type": "module",
Expand Down
2 changes: 1 addition & 1 deletion examples/opencode-plugin/skills/openviking-skills/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ when the `ov` CLI is installed, otherwise tell the user.
survive in the frontmatter. Put anything else (version, author, ...)
under `metadata:` or it is dropped.
2. Check the name on the target root with
`read(uris="<root>/<name>/SKILL.md")`, where `<root>` is
`read(uri="<root>/<name>/SKILL.md")`, where `<root>` is
`viking://~/skills`, or `viking://agent/skills` when sharing. If it
exists, `add_skill` replaces it without asking: show the user what would
change and install only after they confirm, or pick another name.
Expand Down
4 changes: 2 additions & 2 deletions examples/pi-coding-agent-extension/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion examples/pi-coding-agent-extension/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "openviking-pi-extension",
"version": "0.4.26",
"version": "0.4.27",
"description": "OpenViking memory and context extension for the pi coding agent",
"private": true,
"type": "module",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ when the `ov` CLI is installed, otherwise tell the user.
survive in the frontmatter. Put anything else (version, author, ...)
under `metadata:` or it is dropped.
2. Check the name on the target root with
`read(uris="<root>/<name>/SKILL.md")`, where `<root>` is
`read(uri="<root>/<name>/SKILL.md")`, where `<root>` is
`viking://~/skills`, or `viking://agent/skills` when sharing. If it
exists, `add_skill` replaces it without asking: show the user what would
change and install only after they confirm, or pick another name.
Expand Down
2 changes: 1 addition & 1 deletion examples/skills/openviking-skills/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ when the `ov` CLI is installed, otherwise tell the user.
survive in the frontmatter. Put anything else (version, author, ...)
under `metadata:` or it is dropped.
2. Check the name on the target root with
`read(uris="<root>/<name>/SKILL.md")`, where `<root>` is
`read(uri="<root>/<name>/SKILL.md")`, where `<root>` is
`viking://~/skills`, or `viking://agent/skills` when sharing. If it
exists, `add_skill` replaces it without asking: show the user what would
change and install only after they confirm, or pick another name.
Expand Down
Loading
Loading