Skip to content

fix(plugin): wire recallExcludeUris into the claude-code and codex entries - #5436

Open
chaucerj wants to merge 10 commits into
volcengine:mainfrom
chaucerj:fix/claude-codex-recall-exclude-uris
Open

chaucerj wants to merge 10 commits into
volcengine:mainfrom
chaucerj:fix/claude-codex-recall-exclude-uris

Conversation

@chaucerj

@chaucerj chaucerj commented Sep 28, 2026 •

Copy link
Copy Markdown

Description

recallExcludeUris was only honored on the context-face path (the request body's exclude_uris). The legacy raw-retrieval fallback (searchAllSources) never saw the list, so a configured subtree URI could still surface through /find results and reach the host prompt.

This PR adds the client-side mirror of the server's exclude semantics in the canonical shared library: a configured subtree URI drops both the root and everything under it, and an exact URI drops that document — so the fallback path cannot reintroduce what the request body excludes (#5402).

Scope update (rebase onto current main)

Human Involvement

Changes Made

  • examples/memory-plugin-shared/lib/recall-core.mjs: client-side subtree/exact-URI exclusion in searchAllSources (canonical source).
  • Regenerate the committed copies via the official generator (node examples/memory-plugin-shared/sync.mjs): claude-code, codex, openclaw.
  • Move the exclusion tests to the shared suite (examples/memory-plugin-shared/recall-exclude.test.mjs): request-body exclude_uris plumbing plus three raw-fallback cases (subtree root + children, no-exclusion pass-through, exact URI → nothing recalled).
  • Version bumps for all six distributed plugins (shared-lib change reaches every consumer per the release gate): claude-code 0.6.10 (plugin + package manifest), codex 0.10.11, agent-hook 0.5.9 (root + five host manifests), opencode 0.5.5, dsh 0.5.14 (package, lock, PLUGIN_VERSION), pi 0.4.10 (package, lock).

Testing

  • I have added tests that prove my fix is effective
  • New and existing unit tests pass locally

Local validation against official main 9d9bc85e:

  • recall-exclude.test.mjs + recall-core.test.mjs: 40 passed / 0 failed; the two fallback-exclusion cases fail when the filter is removed (mutation-checked) and pass with it.
  • Shared suites (agent-hook-runtime, recall-session-wiring, plugin-config, ov-http, sync): 119 passed / 0 failed.
  • node sync.mjs then git diff --exit-code: clean (committed copies match the generator, twice).
  • check-plugin-version-bumps.sh origin/main: all six plugins ok, exit 0.

Upstream CI snapshot

Current head 1d4ec8a6 (2026-10-04): plugin tests include a pre-existing OpenClaw skill-list mismatch (718/1, existing #3866) and the API/CLI integration job had not completed at last observation — not introduced by this PR.

Additional Notes

No new configuration; the existing recallExcludeUris knob gains coverage on the path that previously ignored it. Does not add subtree filtering server-side, change the context-face path, or alter cached blocks.

…tries

The shared config schema declares recallExcludeUris (env
OPENVIKING_RECALL_EXCLUDE_URIS) and buildContextSearchBody already
maps options.excludeUris to the search body's exclude_uris, but the
claude-code and codex auto-recall entries never passed it, so the
knob was silently ignored — the same gap volcengine#5312 fixed for the DSH
plugin and volcengine#5368 for the pi extension.

Both entries now pass cfg.recallExcludeUris in the recall options,
and the vendored recall-core applies the same subtree prefixes in the
client-side fallback path (searchAllSources), so the fallback cannot
reintroduce what the search body excludes.

Fixes volcengine#5402

Co-Authored-By: Claude Code <noreply@anthropic.com>
@ZaynJarvis ZaynJarvis added the agent-plugins Agent harness and plugin integrations label Sep 29, 2026

@ktz03 ktz03 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First-pass review (Integration / Claude+Codex — recallExcludeUris wiring)

Verdict: Correct plumbing follow-through for the shared exclude path. LGTM from a first-pass, with one CI hygiene note.

What checks out

  • Claude / Codex auto-recall now pass excludeUris: cfg.recallExcludeUris into the recall options (aligned with DSH / Pi).
  • Client-side fallback filter mirrors server exclude_uris (prefix + exact), so the multi-source flatten path cannot reintroduce excluded subtrees.
  • New recall-exclude.test.mjs pins body shape, non-array ignore, and the 200-cap.

Note

  • Diff does not bump host-visible plugin versions. If plugin-versions treats these entry/scripts changes as bump-worthy (same gate as other plugin PRs), please patch-bump Claude/Codex manifests (+ lock/metadata if present) on top of current main before merge.

Happy to re-check once CI reports.

The recallExcludeUris wiring changes entry scripts in both plugins;
the plugin-versions gate requires changed plugins to move their
version string (same as the DSH volcengine#5312 and pi volcengine#5368 precedents).

Co-Authored-By: Claude Code <noreply@anthropic.com>
@chaucerj

Copy link
Copy Markdown
Author

Version bumps pushed in 9840b85: claude-code .claude-plugin/plugin.json 0.6.4 → 0.6.5, codex .codex-plugin/plugin.json 0.10.5 → 0.10.6 — both manifest files are exactly what the plugin-versions gate tracks. Happy to re-check once CI reports.

🤖 Generated with Claude Code

Take upstream's 0.6.9 / 0.10.10 and re-bump to 0.6.10 / 0.10.11 so the
version-bump gate passes for the auto-recall/recall-core changes after
the rebase. Main did not touch the files this PR modifies.
The client-side subtree filter for recallExcludeUris was written into
the generated claude-code/codex copies; the sync gate regenerates those
from lib/recall-core.mjs, so the fix belongs in the canonical source.
Port it there and regenerate every committed copy (openclaw included).

Drop the auto-recall option wiring — upstream volcengine#5407 already forwarded
excludeUris in both hooks (one of the two lines here had become a
duplicate key after that merge).

Move the exclusion tests to the shared suite and cover the raw fallback
path (subtree root + children, exact URI, and the no-exclusion pass-
through), which neither volcengine#5407 nor volcengine#5616 touches.

Bump all six distributed plugins: a shared-lib change reaches every
consumer per the release gate. Targets deliberately match ktz03's
volcengine#5616 (both PRs ride the same lib); whichever lands second re-bumps.
d9352f2 (volcengine#5647) moved dsh to 0.5.15; this PR's shared-lib change still
requires a dsh bump relative to the new base, so it lands on 0.5.16.
Other plugin manifests are untouched by the new commits and keep their
targets.
volcengine#5653/volcengine#5663/volcengine#5664 moved claude-code to 0.7.1; this PR's shared-lib
change still requires a bump relative to the new base, so it lands on
0.7.2. No content conflicts — the usage-card work touches different
files than the recall exclude fallback.
volcengine#5699 moved codex to 0.11.2; the shared-lib fallback change still
requires a bump relative to the new base.
volcengine#5677/volcengine#5467 moved the agent-hook family to 0.5.11; the shared-lib
fallback change still requires a bump relative to the new base.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-plugins Agent harness and plugin integrations

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

3 participants