crexs commited on
Commit
ac21903
·
verified ·
1 Parent(s): 18a2271

sync: update core/dmu_scoring.py

Browse files
Files changed (1) hide show
  1. core/dmu_scoring.py +28 -6
core/dmu_scoring.py CHANGED
@@ -25,12 +25,20 @@ import time
25
  # ------------------------------------------------------------------ #
26
 
27
  MPS_WEIGHTS = {
28
- "decay": 0.25,
29
- "reinf": 0.20,
30
- "contextual": 0.20,
31
- "recency_bias": 0.15,
32
- "novelty": 0.10,
33
- "state_align": 0.10,
 
 
 
 
 
 
 
 
34
  }
35
 
36
  # Gamma for decay shaping.
@@ -111,6 +119,12 @@ def compute_mps(
111
  # ---- State alignment ---- #
112
  state_align = _state_alignment_score(memory, current_state)
113
 
 
 
 
 
 
 
114
  # ---- Additive MPS ---- #
115
  mps = (
116
  MPS_WEIGHTS["decay"] * decay
@@ -119,6 +133,7 @@ def compute_mps(
119
  + MPS_WEIGHTS["recency_bias"] * recency_bias
120
  + MPS_WEIGHTS["novelty"] * novelty_gated
121
  + MPS_WEIGHTS["state_align"] * state_align
 
122
  )
123
  mps = max(0.0, min(1.0, mps))
124
 
@@ -130,6 +145,7 @@ def compute_mps(
130
  "recency_bias": recency_bias,
131
  "novelty": novelty_gated,
132
  "state_align": state_align,
 
133
  "final_mps": mps,
134
  "mode": current_mode,
135
  }
@@ -275,6 +291,8 @@ class _DMUMemory:
275
  novelty_score: float = 0.5,
276
  tags: list = None,
277
  extra_flags: dict = None,
 
 
278
  ):
279
  self.content = content
280
  self.id = memory_id or str(hash(content))[:8]
@@ -283,6 +301,8 @@ class _DMUMemory:
283
  self.novelty_score = novelty_score
284
  self.tags = tags or []
285
  self.extra_flags = extra_flags or {}
 
 
286
  self.score = 0.0
287
  self.score_components = {}
288
 
@@ -314,6 +334,8 @@ def _chromadb_results_to_memories(chromadb_results):
314
  reinforcement_score=meta.get("reinforcement_score", 0.5),
315
  novelty_score=meta.get("novelty_score", 0.5),
316
  tags=meta.get("tags", []),
 
 
317
  )
318
  )
319
  return memories
 
25
  # ------------------------------------------------------------------ #
26
 
27
  MPS_WEIGHTS = {
28
+ "decay": 0.2125,
29
+ "reinf": 0.17,
30
+ "contextual": 0.17,
31
+ "recency_bias": 0.1275,
32
+ "novelty": 0.085,
33
+ "state_align": 0.085,
34
+ "source_reliability": 0.15,
35
+ }
36
+
37
+ PROVENANCE_SCORES = {
38
+ "user_explicit": 1.0,
39
+ "bot_inference": 0.6,
40
+ "conflicting_block": 0.2,
41
+ "corrupted_block": 0.1,
42
  }
43
 
44
  # Gamma for decay shaping.
 
119
  # ---- State alignment ---- #
120
  state_align = _state_alignment_score(memory, current_state)
121
 
122
+ # ---- Source reliability ---- #
123
+ provenance = getattr(memory, "provenance", "user_explicit")
124
+ source_reliability = getattr(memory, "source_reliability", 1.0)
125
+ prov_score = PROVENANCE_SCORES.get(provenance, 0.5)
126
+ reliability_term = prov_score * source_reliability
127
+
128
  # ---- Additive MPS ---- #
129
  mps = (
130
  MPS_WEIGHTS["decay"] * decay
 
133
  + MPS_WEIGHTS["recency_bias"] * recency_bias
134
  + MPS_WEIGHTS["novelty"] * novelty_gated
135
  + MPS_WEIGHTS["state_align"] * state_align
136
+ + MPS_WEIGHTS["source_reliability"] * reliability_term
137
  )
138
  mps = max(0.0, min(1.0, mps))
139
 
 
145
  "recency_bias": recency_bias,
146
  "novelty": novelty_gated,
147
  "state_align": state_align,
148
+ "source_reliability": reliability_term,
149
  "final_mps": mps,
150
  "mode": current_mode,
151
  }
 
291
  novelty_score: float = 0.5,
292
  tags: list = None,
293
  extra_flags: dict = None,
294
+ provenance: str = "user_explicit",
295
+ source_reliability: float = 1.0,
296
  ):
297
  self.content = content
298
  self.id = memory_id or str(hash(content))[:8]
 
301
  self.novelty_score = novelty_score
302
  self.tags = tags or []
303
  self.extra_flags = extra_flags or {}
304
+ self.provenance = provenance
305
+ self.source_reliability = source_reliability
306
  self.score = 0.0
307
  self.score_components = {}
308
 
 
334
  reinforcement_score=meta.get("reinforcement_score", 0.5),
335
  novelty_score=meta.get("novelty_score", 0.5),
336
  tags=meta.get("tags", []),
337
+ provenance=meta.get("provenance", "user_explicit"),
338
+ source_reliability=float(meta.get("source_reliability", 1.0)),
339
  )
340
  )
341
  return memories