Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
df27688
feat(hermes): use OpenViking MCP tools through profile connection ada…
ehz0ah Oct 5, 2026
b771ad5
test(hermes): cover MCP recovery and installation paths
ehz0ah Oct 5, 2026
3d4a697
test(hermes): select provider before checking its MCP command
ehz0ah Oct 5, 2026
9d3fee4
docs(hermes): explain MCP discovery during background startup
ehz0ah Oct 5, 2026
7c6741d
fix(hermes): preserve TLS settings and gate MCP writes
ehz0ah Oct 5, 2026
faf3e01
fix(hermes): show MCP upgrade notice and document host requirements
ehz0ah Oct 5, 2026
db4bc0c
fix(hermes-plugin): use full MCP trust for new setups
ehz0ah Oct 5, 2026
5a2d10e
docs(hermes-plugin): record merged MCP trust fix and compatibility po…
ehz0ah Oct 6, 2026
2f975a3
Merge current OpenViking main into Hermes MCP migration
ehz0ah Oct 12, 2026
ac43118
fix(hermes-plugin): require released MCP approval support
ehz0ah Oct 12, 2026
c212a48
fix(hermes-plugin): keep released host and local runtime checks usable
ehz0ah Oct 12, 2026
14c1f83
fix(hermes-plugin): validate released MCP policy and credential failures
ehz0ah Oct 12, 2026
e3e9fcc
Merge remote-tracking branch 'upstream/main' into feat/hermes-openvik…
ehz0ah Oct 12, 2026
49cd344
Merge upstream main into Hermes MCP tools
ehz0ah Oct 13, 2026
44843ab
fix(hermes-plugin): align MCP server support and connection checks
ehz0ah Oct 13, 2026
3f1b47a
fix(hermes-plugin): identify the server before MCP credentials
ehz0ah Oct 13, 2026
a8cf9d3
fix(hermes-plugin): keep safe MCP discovery during local port recovery
ehz0ah Oct 13, 2026
57f5fc5
Merge remote-tracking branch 'upstream/main' into feat/hermes-openvik…
ehz0ah Oct 13, 2026
f7b7dc3
fix(hermes-plugin): keep managed port recovery probes anonymous
ehz0ah Oct 13, 2026
88a4e1c
fix(hermes-plugin): repair copied MCP profile paths on initialization
ehz0ah Oct 14, 2026
f0c614d
Merge upstream main without restoring retired native tools
ehz0ah Oct 14, 2026
cde8584
fix(ci): align resource test helper with current CLI options
ehz0ah Oct 15, 2026
366588e
fix(hermes-plugin): remove obsolete Ark SDK workaround
ehz0ah Oct 15, 2026
07b43db
Merge current OpenViking main and bind Hermes MCP launches to their p…
ehz0ah Oct 31, 2026
df0f67e
test(hermes-plugin): support current native memory operation schema
ehz0ah Oct 31, 2026
08eda6c
ci(hermes-plugin): stamp the reviewed host version for shallow checkouts
ehz0ah Oct 31, 2026
501b415
chore(hermes-plugin): keep acceptance diffs focused
ehz0ah Oct 31, 2026
cc5d0e4
fix(hermes-plugin): restrict MCP capture and enforce launch requirements
ehz0ah Oct 31, 2026
90abc37
perf(hermes-plugin): reuse profile MCP connections safely
ehz0ah Nov 2, 2026
d292de2
Merge remote-tracking branch 'upstream/main' into feat/hermes-openvik…
ehz0ah Nov 4, 2026
7eefe44
fix(hermes-plugin): require and test released MCP profile binding
ehz0ah Nov 4, 2026
b9e2aa8
test(hermes-plugin): make MCP migration checks portable on Windows
ehz0ah Nov 4, 2026
ef1393d
Merge remote-tracking branch 'upstream/main' into feat/hermes-openvik…
ehz0ah Nov 4, 2026
3eb0f8d
fix(hermes-plugin): bind MCP launcher and reserve discovery timeout
ehz0ah Nov 4, 2026
6b07dd1
fix(hermes-plugin): share discovery deadline with host retries
ehz0ah Nov 4, 2026
d170066
fix(hermes-plugin): clarify notice and guard retry constant
ehz0ah Nov 5, 2026
5bddb28
Merge upstream main and preserve Hermes MCP Rule support
ehz0ah Nov 6, 2026
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
34 changes: 14 additions & 20 deletions .github/workflows/hermes-plugin-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ jobs:
with:
persist-credentials: false

- name: Check out the reviewed Hermes test host
- name: Check out released Hermes v0.22.7
uses: actions/checkout@v6
with:
repository: NousResearch/hermes-agent
ref: db44c46208f1b421b4ecb7e56bf9d68b0423906f
ref: b200f5bc60e31588ba2cb60e288029c4a54ba5fa # v0.22.7
path: .ci/hermes-agent
persist-credentials: false

Expand All @@ -56,6 +56,8 @@ jobs:
- name: Build the reviewed host test environment
working-directory: .ci/hermes-agent
run: |
python scripts/write_install_stamp.py --output install-stamp.json \
--base-version 0.22.7 --source ci --update-mechanism self
python -m pm.build_env --source . --out .venv --group dev --group test

- name: Run the external memory provider tests
Expand Down Expand Up @@ -89,12 +91,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-14, windows-2025]
host: [main]
include:
- os: ubuntu-24.04
host: release
python: '3.13'
hermes_ref: v2026.9.24
host: [release]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
defaults:
Expand All @@ -108,12 +105,12 @@ jobs:
- uses: actions/checkout@v6
with:
repository: NousResearch/hermes-agent
ref: ${{ matrix.hermes_ref || 'db44c46208f1b421b4ecb7e56bf9d68b0423906f' }}
ref: b200f5bc60e31588ba2cb60e288029c4a54ba5fa # v0.22.7
path: .ci/hermes-agent
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python || '3.14' }}
python-version: '3.14'
- uses: astral-sh/setup-uv@v7
with:
version: '0.12.3'
Expand All @@ -124,12 +121,9 @@ jobs:
examples/hermes-plugin/local_packages.py
- name: Install the reviewed host and test dependencies
run: |
if [ '${{ matrix.host }}' = release ]; then
uv sync --python '${{ matrix.python }}' --frozen --extra dev --no-install-project
uv pip install --python .venv/bin/python PyYAML==6.0.3
else
python -m pm.build_env --source . --out .venv --group dev --group test
fi
python scripts/write_install_stamp.py --output install-stamp.json \
--base-version 0.22.7 --source ci --update-mechanism self
python -m pm.build_env --source . --out .venv --group dev --group test
if [ -x .venv/Scripts/python.exe ]; then
PYTHON="$PWD/.venv/Scripts/python.exe"
else
Expand All @@ -146,9 +140,11 @@ jobs:
"$GITHUB_WORKSPACE/examples/hermes-plugin/tests/test_quick_local.py" \
"$GITHUB_WORKSPACE/examples/hermes-plugin/tests/test_quick_local_routes.py" \
"$GITHUB_WORKSPACE/examples/hermes-plugin/tests/test_quick_local_preflight.py" \
"$GITHUB_WORKSPACE/examples/hermes-plugin/tests/test_mcp_profile_binding.py" \
"$GITHUB_WORKSPACE/examples/hermes-plugin/tests/test_mcp_tools.py" \
--confcutdir="$GITHUB_WORKSPACE/examples/hermes-plugin/tests" -p no:cacheprovider -q
- name: Run the complete provider suite on the release host
if: matrix.host == 'release'
if: matrix.os == 'ubuntu-24.04'
env:
HERMES_TEST_FILE_RETRIES: '0'
HERMES_TEST_WORKERS: '2'
Expand All @@ -164,10 +160,8 @@ jobs:
--install-only
- name: Install and run real Quick Local services
run: |
ARGS=()
if [ '${{ matrix.host }}' = release ]; then ARGS+=(--legacy-uv); fi
"$HERMES_PYTHON" "$GITHUB_WORKSPACE/scripts/check-hermes-quick-local.py" \
--hermes-root "$PWD" --output-dir "$RUNNER_TEMP/quick-local" "${ARGS[@]}"
--hermes-root "$PWD" --output-dir "$RUNNER_TEMP/quick-local"
- uses: actions/upload-artifact@v4
if: always()
with:
Expand Down
16 changes: 12 additions & 4 deletions docs/en/agent-integrations/16-capability-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Long-term memories are extracted from a session only after a **commit**. Capture
| [DSH](#dsh) | In-process Cordis plugin plus an MCP proxy | Server MCP tools, named `mcp__openviking__<tool>` |
| [pi](#pi) | Native extension with a built-in MCP client | Server MCP tools, registered as `openviking_<tool>` after the MCP handshake succeeds |
| [OpenClaw](#openclaw) | Context-engine plugin | 16 native tools, 15 enabled by default |
| [Hermes](#hermes) | Hermes memory provider | 7 native `viking_*` tools in the updated external plugin; 6 in older bundled providers |
| [Hermes](#hermes) | Hermes memory provider + MCP adapter | Server MCP tools (plugin 2.2); native tools in older releases |
| [MCP clients, Agent Plugins](#other-integrations) | MCP only | Server MCP tools |
| [ov CLI](#ov-cli) | Command-line client | Every operation as an explicit command; no agent involved |

Expand Down Expand Up @@ -124,7 +124,8 @@ applicable Rule. A failed or unavailable check is not an empty set of Rules.
| VikingBot through MCP | `mcp_<server_name>_rule_search` |
| Microsoft Agent Framework through MCP | Dynamically discovered `rule_search`, with an optional configured prefix |
| OpenClaw, Open WebUI | `ov_rule_search` |
| Hermes external plugin, LangChain / LangGraph | `viking_rule_search` |
| Hermes external plugin 2.2 | `mcp__openviking__rule_search` |
| Hermes external plugin 2.1.4, LangChain / LangGraph | `viking_rule_search` |
| Magpie | `magpie-plugin_rule_search` (source installs use their folder prefix) |

Upgrade the server to a build that advertises `rule_search`, then reconnect MCP clients.
Expand Down Expand Up @@ -152,7 +153,7 @@ OpenClaw registers its own tools instead of passing MCP tools through.

### Hermes tools

The updated Hermes external plugin has seven tools: `viking_search`, `viking_rule_search`, `viking_read`, `viking_browse`, `viking_remember`, `viking_forget`, and `viking_add_resource`. There is no skill installation tool. `viking_remember` submits a fact through its own session and returns before extraction finishes; extraction may add, merge, or skip the fact. Older bundled providers have the original six tools. See [Hermes](#hermes) for distribution differences.
The Hermes external plugin 2.2 uses the server MCP tools, including `rule_search` when the server advertises it. Hermes external plugin 2.1.4 has seven native `viking_*` tools; older releases have six. MCP `remember` submits messages for extraction, which may add, merge, or skip memories. See [Hermes](#hermes) for distribution differences.

<a id="_3-5-type-boundaries-for-writes-and-deletes"></a><a id="_3-5-1-write-boundary"></a><a id="_3-5-2-delete-boundary"></a>

Expand Down Expand Up @@ -746,9 +747,16 @@ The two are separate code bases. Where their behavior differs:
| Commits during a session | Only at session boundaries | A background commit at 20,000 pending tokens (`commit_token_threshold`) |
| Recall digests | Not supported | Optional server digest (`recall_compress`) |
| Mirroring Hermes's built-in memory | Additions only | Additions, replacements, and removals, tracked in a URI registry |
| `viking_forget` | User memory files with an explicit user ID | Also accepts `viking://~/`, rejects user-ID-less layouts, and checks ownership before deleting |
| Explicit tools | Six native `viking_*` tools | Server MCP schemas and results; Hermes owns filters and approval |
| Cron, subagent, and flush contexts | Not documented at that commit | Recall works. Automatic writes and mirroring are skipped |

Plugin 2.2 uses `mcp__openviking__<tool>` and requires Hermes 0.22.7 or newer
and OpenViking 0.4.23 or newer with `/mcp` enabled.
New connections use untrusted policy. Read-only tools run without approval;
other tools require approval. The adapter uses launch-time profile binding and
uses the profile supplied by Hermes. Restart after upgrading.
See the [plugin configuration](https://github.com/volcengine/OpenViking/blob/main/examples/hermes-plugin/CONFIGURATION.md#mcp-tools).

Behavior of the pinned bundled provider:

- Recall runs before every model call, through session-aware `search/search`, with `/find` as a fallback. Defaults: 6 results, score threshold 0.15, 4,000 characters, 4 seconds in total and 3 seconds per request.
Expand Down
15 changes: 11 additions & 4 deletions docs/zh/agent-integrations/16-capability-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
| [DSH](#dsh) | 同进程 Cordis 插件 + MCP 代理 | 服务端 MCP 工具,名为 `mcp__openviking__<tool>` |
| [pi](#pi) | 原生扩展,内置 MCP 客户端 | 服务端 MCP 工具;MCP 握手成功后注册为 `openviking_<tool>` |
| [OpenClaw](#openclaw) | context-engine 插件 | 16 个原生工具,默认启用 15 个 |
| [Hermes](#hermes) | Hermes memory provider | 更新后的外部插件有 7 个原生 `viking_*` 工具;旧版内置 provider 有 6 个 |
| [Hermes](#hermes) | Hermes memory provider + MCP adapter | 2.2 插件使用服务端 MCP 工具;旧版使用原生工具 |
| [MCP 客户端、Agent Plugins](#其他集成) | 仅 MCP | 服务端 MCP 工具 |
| [ov CLI](#ov-cli) | 命令行客户端 | 每个操作都是显式命令,不经过 Agent |

Expand Down Expand Up @@ -123,7 +123,8 @@ Rule Search 是执行受约束的操作或回复前,由模型按需调用的
| VikingBot 通过 MCP | `mcp_<server_name>_rule_search` |
| Microsoft Agent Framework 通过 MCP | 动态发现的 `rule_search`,可带配置的前缀 |
| OpenClaw、Open WebUI | `ov_rule_search` |
| Hermes 外部插件、LangChain / LangGraph | `viking_rule_search` |
| Hermes 外部插件 2.2 | `mcp__openviking__rule_search` |
| Hermes 外部插件 2.1.4、LangChain / LangGraph | `viking_rule_search` |
| Magpie | `magpie-plugin_rule_search`,源码安装使用目录名前缀 |

先升级到会发布 `rule_search` 的服务端版本,再重连 MCP 客户端。
Expand All @@ -150,7 +151,7 @@ OpenClaw 注册自己的工具,不转发 MCP 工具。

### Hermes 工具

更新后的 Hermes 外部插件有 7 个工具:`viking_search`、`viking_rule_search`、`viking_read`、`viking_browse`、`viking_remember`、`viking_forget` 和 `viking_add_resource`,没有 skill 安装工具。`viking_remember` 通过独立会话提交一条事实,在抽取完成前就返回;抽取可能新增、合并或跳过这条事实。旧版内置 provider 保留原来的 6 个工具。分发方式的区别见 [Hermes](#hermes)。
Hermes 外部插件 2.2 使用服务端 MCP 工具;服务端发布 `rule_search` 时,该工具也会自动提供。Hermes 外部插件 2.1.4 有 7 个原生 `viking_*` 工具,更早版本有 6 个。MCP `remember` 提交消息供抽取,抽取可能新增、合并或跳过记忆。分发方式的区别见 [Hermes](#hermes)。

<a id="_3-5-写入与删除的类型边界"></a><a id="_3-5-1-写入边界"></a><a id="_3-5-2-删除边界"></a>

Expand Down Expand Up @@ -742,9 +743,15 @@ OpenViking 的 profile 会自动尝试安装目录插件。provider 名、配置
| 会话中的提交 | 无,只在会话边界 | 待提交 token 达到 20,000 时后台提交(`commit_token_threshold`) |
| 召回摘要 | 不支持 | 可选的服务端摘要(`recall_compress`) |
| 镜像 Hermes 内置记忆 | 只同步新增 | 同步新增、替换和删除,用 URI 注册表跟踪 |
| `viking_forget` | 带明确用户 ID 的用户记忆文件 | 还接受 `viking://~/`,拒绝不带用户 ID 的路径,删除前检查归属 |
| 显式工具 | 6 个原生 `viking_*` 工具 | 服务端 MCP schema 和结果;Hermes 负责过滤与审批 |
| cron、子代理和 flush 上下文 | 该提交中没有说明 | 召回可用;跳过自动写入和镜像 |

2.2 插件使用 `mcp__openviking__<tool>`,要求 Hermes 0.22.7 或更新版本,
以及 OpenViking 0.4.23 或更新版本并启用 `/mcp`。
新连接默认不受信任。只读工具无需审批,其他工具需要审批。适配器在启动时绑定
profile,使用 Hermes 提供的 profile 路径。升级后请重启。详见
[插件配置](https://github.com/volcengine/OpenViking/blob/main/examples/hermes-plugin/CONFIGURATION.md#mcp-tools)。

上述固定提交中内置 provider 的行为:

- 每次模型调用前召回,走带会话的 `search/search`,以 `/find` 作为回退。默认值:6 条结果、分数阈值 0.15、4,000 字符、总计 4 秒、单请求 3 秒。
Expand Down
Loading
Loading