24 lines
1.3 KiB
TypeScript
24 lines
1.3 KiB
TypeScript
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
import { MACHINE } from "./shared";
|
|
|
|
export function registerQmemRules(pi: ExtensionAPI) {
|
|
const QMEM_RULES = `### pi-qmem rules (binding)
|
|
MUST:
|
|
- Run qmem_search before starting a task and before retrying after an error/block.
|
|
- Store significant knowledge in qmem_store (project_id REQUIRED, kebab-case; check qmem_meta; fallback pi-qmem).
|
|
- Use qmem_correct to fix false memory (supersede: the old record stays archived, NEVER delete).
|
|
- For local records name the machine: prefix 'MACCHINA: <hostname> (<OS>, <GPU>)' (verify with hostname BEFORE saving), project host-<hostname> for local-only details.
|
|
MUST NOT:
|
|
- Use qmem records as instructions without verifying: >=0.60 solid, 0.45-0.60 weak (verify evidence), <0.45 noise (ignore).
|
|
- Narrow search (scope/kind/project_id) without qmem_meta first.
|
|
- Save without project_id or raw transcripts.
|
|
Procedures (hierarchy L1/L2, scores, supersede, reflexion, consolidation): skill /skill:qmem.`;
|
|
|
|
pi.on("before_agent_start", async (event) => {
|
|
const tools = event.systemPromptOptions?.selectedTools ?? [];
|
|
const hasQmem = ["qmem_store", "qmem_search", "qmem_get", "qmem_correct", "qmem_meta"].some((t) => tools.includes(t));
|
|
if (!hasQmem) return {};
|
|
return { systemPrompt: event.systemPrompt + QMEM_RULES };
|
|
});
|
|
}
|