@futdevpro/fdp-agent-memory 1.1.112 → 1.1.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/fdp-agent-memory",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.113",
|
|
4
4
|
"description": "Local-first, vector-backed multi-table agent memory exposed as an MCP server (read/write/capabilities). Public, FDP-Templates-free, no auth.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
@@ -140,6 +140,18 @@ exports.CONFIG_CATALOG = {
|
|
|
140
140
|
+ 'A tiszta-szemantikus találat (lexical 0) SOHA nem süllyed (×1). READ-time (nincs re-embed). `0` = pure-vektor '
|
|
141
141
|
+ '(régi viselkedés). Default 0.6.',
|
|
142
142
|
},
|
|
143
|
+
'read.scanSummaryWeight': {
|
|
144
|
+
type: 'number', default: 1.0, min: 0.0, max: 10.0, levels: ALL_LEVELS,
|
|
145
|
+
description: 'A `source.type:"scan-summary"` (auto-generált projekt-összefoglaló: `project-identity` + '
|
|
146
|
+
+ '`fs-summary`) chunkok EFFEKTÍV statikus weight-SAPKÁJA read-időben (2026-07-26 dispatch-eval): e '
|
|
147
|
+
+ 'generikus entry-k `weight:3` (project-identity) / `weight:2` (fs-summary) → `finalScore ~2.2` még '
|
|
148
|
+
+ 'lexicalScore 0-0.2 mellett is elnyomta a szemantikailag+lexikailag relevánsabb doksikat. E cap a '
|
|
149
|
+
+ 'scan-summary effektív weight-jét `min(weight, scanSummaryWeight)`-re szorítja (factor = cap/weight), '
|
|
150
|
+
+ 'hogy a STATIKUS weight NE tudja legyőzni a relevanciát. `1.0` = tiszta relevancia-rangsor (nincs statikus '
|
|
151
|
+
+ 'boost); az identity-jellegű query-ken a summary a MAGAS cosine-ja miatt így is felszínre kerül (nincs '
|
|
152
|
+
+ 'regresszió). READ-time (nincs re-embed); a nyers cosine + a `weight` DTO-mező NEM változik, csak a ranking. '
|
|
153
|
+
+ 'A stored weight ALÁ csökkenteni is lehet (<1) az agresszívabb leszorításhoz; ≥ stored weight = kikapcsolva.',
|
|
154
|
+
},
|
|
143
155
|
'read.denseResultRatio': {
|
|
144
156
|
type: 'number', default: 2.0, min: 1.0, max: 50.0, levels: ALL_LEVELS,
|
|
145
157
|
description: 'Dense-jelzés ratio-kapuja: totalRelevant >= ratio*topK → denseResults (dsgn-005 §4.2).',
|
|
@@ -398,6 +398,22 @@ class FAM_Retrieval_ControlService {
|
|
|
398
398
|
importSourceFactor(source, importSourceWeight) {
|
|
399
399
|
return source?.type === 'import' ? importSourceWeight : 1;
|
|
400
400
|
}
|
|
401
|
+
/**
|
|
402
|
+
* Scan-summary read-idejű weight-SAPKA (2026-07-26 dispatch-eval): az auto-generált projekt-összefoglaló
|
|
403
|
+
* (`source.type:'scan-summary'` — EGYSZERRE fedi a `project-identity` weight:3 ÉS az `fs-summary` weight:2
|
|
404
|
+
* entry-ket) statikus weight-boost-ját neutralizálja. Mérve: e generikus chunkok `finalScore ~1.3-2.2`-vel a
|
|
405
|
+
* TOP-hitek lettek OFF-topic query-ken is (lexicalScore 0-0.2), elnyomva a relevánsabb doksikat. A factor a
|
|
406
|
+
* effektív weight-et `min(weight, scanSummaryWeight)`-re szorítja (weight > cap → `cap/weight`, különben ×1),
|
|
407
|
+
* így a STATIKUS weight NEM tudja legyőzni a szemantikai + lexikai relevanciát. `scanSummaryWeight=1.0` (default)
|
|
408
|
+
* → tiszta relevancia-rangsor; az identity-query-ken a summary a MAGAS cosine miatt így is felszínre kerül. Minden
|
|
409
|
+
* NEM-scan-summary source érintetlen (×1). READ-time, a nyers `score` (relevancia) változatlan.
|
|
410
|
+
*/
|
|
411
|
+
scanSummaryFactor(source, weight, scanSummaryWeight) {
|
|
412
|
+
if (source?.type !== 'scan-summary' || weight <= scanSummaryWeight) {
|
|
413
|
+
return 1;
|
|
414
|
+
}
|
|
415
|
+
return scanSummaryWeight / weight;
|
|
416
|
+
}
|
|
401
417
|
/**
|
|
402
418
|
* Memory Activation Model decay-szorzó (dsgn-013 §3) — CSAK a `memory` táron, ha engedélyezett. A frissen/gyakran
|
|
403
419
|
* FELIDÉZETT memória felül-, a régóta érintetlen alul-rangsorol, de a `floorWeight > 0` miatt SOSEM esik ki. A
|
|
@@ -437,6 +453,7 @@ class FAM_Retrieval_ControlService {
|
|
|
437
453
|
// finalScore = score × weight × chunkF × sourceF × decayF × (1 + keywordWeight × lexicalScore).
|
|
438
454
|
const chunkFactor = this.chunkTypeFactor(set.entry.chunkType, set.importChunkWeight);
|
|
439
455
|
const sourceFactor = this.importSourceFactor(set.entry.source, set.importSourceWeight);
|
|
456
|
+
const summaryFactor = this.scanSummaryFactor(set.entry.source, set.weight, set.config.scanSummaryWeight);
|
|
440
457
|
const decayFactor = this.memoryDecayFactor(set.entry, set.table, set.config, set.nowMs);
|
|
441
458
|
const lexicalScore = set.config.keywordWeight > 0
|
|
442
459
|
? fam_lexical_match_util_1.FAM_LexicalMatch_Util.score(set.queryTerms, {
|
|
@@ -449,7 +466,7 @@ class FAM_Retrieval_ControlService {
|
|
|
449
466
|
table: set.table,
|
|
450
467
|
score: set.vectorHit.score,
|
|
451
468
|
weight: set.weight,
|
|
452
|
-
finalScore: set.vectorHit.score * set.weight * chunkFactor * sourceFactor * decayFactor * keywordBoost,
|
|
469
|
+
finalScore: set.vectorHit.score * set.weight * chunkFactor * sourceFactor * summaryFactor * decayFactor * keywordBoost,
|
|
453
470
|
lexicalScore: lexicalScore,
|
|
454
471
|
content: set.includeContent ? set.entry.content : undefined,
|
|
455
472
|
contentHash: set.entry.contentHash,
|
|
@@ -655,6 +672,7 @@ class FAM_Retrieval_ControlService {
|
|
|
655
672
|
const relevanceFloor = await this.resolveNumber(config, 'read.relevanceFloor', ctx, 0.5);
|
|
656
673
|
const importChunkWeight = await this.resolveNumber(config, 'read.importChunkWeight', ctx, 0.4);
|
|
657
674
|
const importSourceWeight = await this.resolveNumber(config, 'read.importSourceWeight', ctx, 0.85);
|
|
675
|
+
const scanSummaryWeight = await this.resolveNumber(config, 'read.scanSummaryWeight', ctx, 1.0);
|
|
658
676
|
const keywordWeight = await this.resolveNumber(config, 'read.keywordWeight', ctx, 0.6);
|
|
659
677
|
const denseResultRatio = await this.resolveNumber(config, 'read.denseResultRatio', ctx, 2.0);
|
|
660
678
|
const denseResultAbsMin = await this.resolveNumber(config, 'read.denseResultAbsMin', ctx, 25);
|
|
@@ -679,6 +697,7 @@ class FAM_Retrieval_ControlService {
|
|
|
679
697
|
relevanceFloor: relevanceFloor,
|
|
680
698
|
importChunkWeight: importChunkWeight,
|
|
681
699
|
importSourceWeight: importSourceWeight,
|
|
700
|
+
scanSummaryWeight: scanSummaryWeight,
|
|
682
701
|
keywordWeight: keywordWeight,
|
|
683
702
|
denseResultRatio: denseResultRatio,
|
|
684
703
|
denseResultAbsMin: denseResultAbsMin,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/fdp-agent-memory",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.113",
|
|
4
4
|
"description": "Local-first, vector-backed multi-table agent memory exposed as an MCP server (read/write/capabilities). Public, FDP-Templates-free, no auth.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|