Repository navigation
feat(hermes-plugin): allow capture without automatic recall - #6089
timeleft-- wants to merge 1 commit into
Conversation
|
@ZaynJarvis, could you review this Hermes-plugin change? I routed it to you based on the integration guidance in CONTRIBUTING.md and your reviews of #5917, #5884, and #5374. It adds a profile-wide The 67-line patch includes documentation and regression coverage. Six focused cases and all 413 plugin tests passed locally; the PR description contains the exact commands, installation evidence, skipped checks, and limitations. Could you confirm the configuration boundary and review the implementation? GitHub currently shows no CI checks on this fork PR; please also check whether the workflow needs maintainer approval. I could not add a formal reviewer request because this contributor account lacks permission, so I am requesting review here. |
Description
Allow a Hermes profile to keep OpenViking conversation capture and explicit memory tools while disabling automatic historical-context injection.
Before this change, keeping the provider enabled also keeps session-start and per-turn automatic recall enabled; there is no independent recall-off setting. After this change, set
memory.openviking.auto_recall: falseor the profile-scopedOPENVIKING_AUTO_RECALL=falseoverride.prefetch()returns no context before recall-related client or network I/O. The default istrue, preserving existing behavior without a migration.Why this is the appropriate fix
OpenVikingMemoryProvider.prefetch()inexamples/hermes-plugin/__init__.pyowns both automatic context paths: the session-start memory block and per-turn query recall. Capture throughsync_turn(), memory commits, and explicit tool calls use separate entrypoints. A single guard at the start ofprefetch()therefore suppresses exactly the automatic behavior while leaving those capabilities available.The guard uses the existing typed settings schema and the initialized profile's configuration/environment resolution. It does not introduce another settings parser or change profile, credential, sender, or tenant ownership. Disabling the whole provider would lose capture and tools; trimming context afterward would still incur recall I/O. A platform-specific opt-out such as #5893 cannot alone cover a profile's ordinary CLI sessions, so the two controls are complementary.
Human Involvement
The human contributor selected the upstream contribution approach and reviewed the proposed behavior. Implementation and validation were AI-assisted.
Related Issue
Fixes #6084. The issue was opened before implementation; no maintainer design approval is claimed. Complements #5893's platform-specific proposal with a profile-wide control.
Type of Change
Changes Made
auto_recallthrough the existing boolean configuration schema and environment-resolution path.The patch adds 67 lines across three files, including documentation and tests.
Testing
Validated source head:
bea02a7bc6243509c33e9ad91b89bfeceb9ed728.Test host: Hermes
7951ddd7297a284d6da48804241ee05a8a0c621c, Python 3.14.3, and the constrained plugin dependencies used by.github/workflows/hermes-plugin-tests.yml.The issue was reproduced locally through Hermes's external-provider discovery in temporary profiles, with controlled client responses. Before the implementation, four YAML/environment × empty/nonempty-query cases failed because the disabled setting still reached recall client I/O. This is provider-level regression evidence, not a live remote-server reproduction.
Exact validation commands
Checkout paths are parameterized below as
OV_ROOT(absolute OpenViking checkout path),HERMES_ROOT(absolute isolated Hermes checkout path), andVALIDATION_ROOT(absolute temporary evidence directory). The invocations and flags match the recorded validation; they do not use the user's active Hermes profile.Dependency setup, from the pinned Hermes checkout:
Focused regression and complete plugin suite, through Hermes's canonical isolated runner:
Installation, activation, correctness lint, and whitespace checks, from OpenViking:
Results:
Skipped checks and limits
GitHub showed no attached CI check results at the time of this description update. Local validation does not replace upstream CI or maintainer review.
Checklist
Screenshots (if applicable)
Not applicable; this changes provider configuration and behavior, with no UI change.
Additional Notes
This is a backward-compatible, profile-wide opt-out. It does not introduce connection changes, a new compressor, or provider-disable behavior. The separate platform-specific proposal can independently gate the same automatic-prefetch boundary.