perf(qmem): A2 schemi tool in inglese compatto — testo model-visible 2242→462 token (-79%) col tokenizer Qwen3.8; nomi/parametri/enum/default invariati, promptGuidelines duplicate rimosse (già in QMEM_RULES)
This commit is contained in:
+15
-25
@@ -1,49 +1,39 @@
|
||||
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
||||
import { Type } from "typebox";
|
||||
import { gatewayRequest, loadConfig, MACHINE } from "../shared";
|
||||
import { gatewayRequest, loadConfig } from "../shared";
|
||||
|
||||
export function registerQmemCorrect(pi: ExtensionAPI) {
|
||||
pi.registerTool({
|
||||
name: "qmem_correct",
|
||||
label: "Qmem memory correct",
|
||||
description:
|
||||
"Corregge una memoria falsa o superata: crea un NUOVO record che supersede il vecchio (che resta " +
|
||||
"in archivio marcato superseded, mai eliminato). Passa memory_id se lo conosci (dalla risposta di " +
|
||||
"qmem_search), oppure query per individuare automaticamente il record attivo più rilevante. Il testo " +
|
||||
"corretto sostituisce quello vecchio nella ricerca semantica. Usalo quando hai evidenza verificata che " +
|
||||
"una memoria è falsa: contraddizione con fonte autorevole, conferma dell'utente o esito di un'azione. " +
|
||||
"Con query: rifiuta se lo score del top-1 è sotto la soglia (correctMinScore, default 0.60) per evitare " +
|
||||
"di supersedere il record sbagliato — in quel caso verifica e riprova con memory_id esplicito.",
|
||||
promptGuidelines: [
|
||||
"qmem_correct: correggi solo con evidenza verificata (fonte autorevole, conferma utente, esito di azione) — mai per semplice dubbio o opinione.",
|
||||
"qmem_correct: il vecchio record resta in archivio marcato superseded — mai eliminare (tranne duplicati esatti).",
|
||||
`qmem_correct: se il record corretto riguarda una macchina, dichiara nel testo la MACCHINA di riferimento (prefisso 'MACCHINA: <hostname> (<OS>, <GPU>)'). Macchina corrente (rilevata dall'estensione): ${MACHINE}.`,
|
||||
],
|
||||
"Correct a false record by creating a superseding version; the old record remains archived. " +
|
||||
"Requires verified evidence. Prefer memory_id; query matching requires score >=0.60.",
|
||||
parameters: Type.Object({
|
||||
memory_id: Type.Optional(Type.String({ description: "UUID del record attivo da supersedere (dalla risposta di qmem_search)." })),
|
||||
query: Type.Optional(Type.String({ description: "Query per trovare il record da correggere (usata solo se memory_id non è fornito)." })),
|
||||
corrected_text: Type.String({ description: "Il testo corretto e verificato che sostituisce quello falso." }),
|
||||
reason: Type.Optional(Type.String({ description: "Motivo della correzione (visibile in audit e sul vecchio record)." })),
|
||||
memory_id: Type.Optional(Type.String({ description: "Active record UUID." })),
|
||||
query: Type.Optional(Type.String({ description: "Lookup query; used only without memory_id." })),
|
||||
corrected_text: Type.String({ description: "Verified replacement text." }),
|
||||
reason: Type.Optional(Type.String({ description: "Correction reason." })),
|
||||
kind: Type.Optional(
|
||||
Type.Union(
|
||||
[Type.Literal("decision"), Type.Literal("fact"), Type.Literal("episode"), Type.Literal("preference")],
|
||||
{ description: "Tipo del nuovo record (default: eredita dal record superseduto)." },
|
||||
{ description: "New kind; inherits by default." },
|
||||
),
|
||||
),
|
||||
project_id: Type.Optional(Type.String({ description: "Progetto del nuovo record (default: eredita dal record superseduto)." })),
|
||||
project_id: Type.Optional(Type.String({ description: "New project; inherits by default." })),
|
||||
confidence: Type.Optional(
|
||||
Type.Union([Type.Literal("high"), Type.Literal("medium"), Type.Literal("low")], {
|
||||
description: "Affidabilità del nuovo record (default: eredita dal record superseduto).",
|
||||
description: "Confidence; inherits by default.",
|
||||
}),
|
||||
),
|
||||
agent_id: Type.Optional(Type.String({ description: "Nome dell'agente che corregge (solo provenienza)." })),
|
||||
parent_id: Type.Optional(Type.String({ description: "UUID del record genitore (default: eredita dal record superseduto se presente)." })),
|
||||
agent_id: Type.Optional(Type.String({ description: "Writer provenance." })),
|
||||
parent_id: Type.Optional(Type.String({ description: "Parent UUID; inherits by default." })),
|
||||
level: Type.Optional(
|
||||
Type.Union([Type.Literal("L1_ROOT"), Type.Literal("L2_SUBTOPIC"), Type.Literal("L3_DETAIL")], {
|
||||
description: "Livello gerarchico del nuovo record.",
|
||||
description: "Hierarchy level.",
|
||||
}),
|
||||
),
|
||||
topic: Type.Optional(Type.String({ description: "Topic ID gerarchico del nuovo record." })),
|
||||
topic: Type.Optional(Type.String({ description: "Hierarchy topic ID." })),
|
||||
links: Type.Optional(
|
||||
Type.Array(
|
||||
Type.Object({
|
||||
@@ -51,7 +41,7 @@ export function registerQmemCorrect(pi: ExtensionAPI) {
|
||||
predicate: Type.Optional(Type.String()),
|
||||
weight: Type.Optional(Type.Number()),
|
||||
}),
|
||||
{ description: "Collegamenti relazionali espliciti." },
|
||||
{ description: "Related records." },
|
||||
),
|
||||
),
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user