You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Phase 3 — skills:
Route the skill VectorMatcher through internal/embedding. The skill corpus
embeds once at reload (cheap); only the query embeds per turn, so the HTTP
backend is opt-in and time-bounded:
- NewVectorMatcherWithConfig selects the backend; default stays local RP.
- For an HTTP config that omits timeout_seconds, a short 2s query timeout is
applied so the per-turn embed fails fast.
- SkillManager.MatchLazySkills is the single entry point the agent loop wires:
when a remote backend is configured it tries semantic matching first and
falls back to the keyword ScoredMatcher on no-match/timeout/down-backend;
otherwise it uses the keyword matcher directly (unchanged default). The
local RP vector matcher stays a fallback, never the primary.
Phase 4 — shared config + docs:
- New top-level `embedding` block is the shared default. Memory inherits it
unless memory.embedding overrides (back-compat); sessions read it for
semantic session_search; skills do NOT inherit it — opt in via
skills.embedding because they run on every turn.
- Resolved into ResolvedConfig.Embedding and Skills.Embedding; merge + memory
inheritance wired in the loader.
- Session init and the skill managers across all agent entry points (run,
continue, repl, serve, subagent, mcp, telegram) now take the resolved
embedding configs.
- CONFIG.md documents the shared backend, the inherit/opt-in matrix, and the
per-subsystem resilience (session fingerprint rebuild, skill fail-fast
fallback, egress warning).
Tests: HTTP-backed semantic skill match, default-RP-not-semantic, keyword
fallback when the skills backend is down, and config resolution for top-level
inheritance + per-subsystem overrides.
0 commit comments