feat(context): add recall fusion and zvec workspace adapters

Introduce RRF-based recall fusion for personal/episodic/temporal paths,
zvec-grep workspace shadow probing for code executors, and a local
headroom proxy starter aligned with the fusion plan defaults.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-09-09 21:28:04 +08:00
parent 49a1a68a29
commit 40e4a527fe
11 changed files with 677 additions and 1 deletions
+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/env node
/**
* Local zvec-grep workspace smoke (loopback/dev only).
*/
import { searchZvecWorkspace } from '../memind-zvec-workspace.mjs';
const query = process.env.MEMIND_ZVEC_SMOKE_QUERY ?? 'context budget';
const mode = process.env.MEMIND_ZVEC_WORKSPACE_MODE ?? 'shadow';
const result = searchZvecWorkspace({
query,
env: {
...process.env,
MEMIND_ZVEC_WORKSPACE_MODE: mode,
},
});
console.log('ZVEC_WORKSPACE_PROBE:');
console.log(` mode=${result.mode}`);
console.log(` query=${result.query}`);
console.log(` hits=${result.hitCount ?? 0}`);
if (result.skipped) {
console.error(`ZVEC_WORKSPACE_FAIL: ${result.reason}`);
process.exit(1);
}
if (!result.hits?.length) {
console.error('ZVEC_WORKSPACE_FAIL: no hits (run zg index in repo root first)');
process.exit(1);
}
console.log(`ZVEC_WORKSPACE_OK: top=${result.hits[0].path}:${result.hits[0].startLine}`);
+63
View File
@@ -0,0 +1,63 @@
#!/usr/bin/env node
/**
* Start headroom proxy for local MeMind loopback dev.
*
* Usage:
* node scripts/start-headroom-proxy-local.mjs
*
* Requires:
* - headroom-ai installed (uv tool install headroom-ai[proxy])
* - deepseek-no-think compat proxy on :18036
*/
import { spawn } from 'node:child_process';
import {
resolveDeepseekNoThinkProxyBaseUrl,
} from '../deepseek-no-think-proxy.mjs';
import {
probeHeadroomProxyReachable,
resolveHeadroomProxyBaseUrl,
resolveHeadroomProxyPort,
resolveHeadroomUpstreamBaseUrl,
} from '../memind-headroom-policy.mjs';
const upstream = resolveHeadroomUpstreamBaseUrl();
const port = resolveHeadroomProxyPort();
const proxyBase = resolveHeadroomProxyBaseUrl();
async function main() {
const reachable = await probeHeadroomProxyReachable({ baseUrl: proxyBase });
if (reachable) {
console.log(`HEADROOM_LOCAL_ALREADY_RUNNING: ${proxyBase}`);
console.log(` upstream=${upstream}`);
return;
}
console.log('HEADROOM_LOCAL_START:');
console.log(` proxy=${proxyBase}`);
console.log(` upstream=${upstream}`);
console.log(` compat=${resolveDeepseekNoThinkProxyBaseUrl()}`);
console.log(' constraints: HEADROOM_OUTPUT_SHAPER=0, no wrap/learn');
const child = spawn(
'headroom',
['proxy', '--port', String(port)],
{
stdio: 'inherit',
env: {
...process.env,
OPENAI_BASE_URL: upstream,
HEADROOM_OUTPUT_SHAPER: '0',
MEMIND_HEADROOM_MODE: process.env.MEMIND_HEADROOM_MODE ?? 'shadow',
},
},
);
child.on('exit', (code, signal) => {
process.exit(code ?? (signal ? 1 : 0));
});
}
main().catch((error) => {
console.error(`HEADROOM_LOCAL_FAIL: ${error.message}`);
process.exit(1);
});