54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Markiert Engramme mit niedriger Confidence (<0.5) und ohne Bestätigung
|
|
als 'needs_review' in metadata. Kann später manuell Review-Warteschlange abarbeiten.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import sqlite3
|
|
import sys
|
|
from datetime import datetime, timezone
|
|
from pathlib import Path
|
|
|
|
BRAIN_DIR = Path("/root/.openclaw/workspace/second-brain")
|
|
DB_PATH = BRAIN_DIR / "data" / "brain.sqlite"
|
|
|
|
def run():
|
|
conn = sqlite3.connect(str(DB_PATH))
|
|
conn.row_factory = sqlite3.Row
|
|
c = conn.cursor()
|
|
|
|
# Engramme: confidence < 0.5 UND nicht confirmed (verdict != confirmed_true)
|
|
c.execute("""
|
|
SELECT id, metadata_json, correctness_json FROM engrams
|
|
WHERE json_extract(metadata_json, '$.confidence') < 0.5
|
|
AND (json_extract(correctness_json, '$.verdict') IS NULL
|
|
OR json_extract(correctness_json, '$.verdict') != 'confirmed_true')
|
|
""")
|
|
rows = c.fetchall()
|
|
|
|
marked = 0
|
|
for r in rows:
|
|
meta = json.loads(r["metadata_json"] or "{}")
|
|
tags = meta.get("tags", [])
|
|
if "needs_review" not in tags:
|
|
tags.append("needs_review")
|
|
meta["tags"] = tags
|
|
c.execute("UPDATE engrams SET metadata_json = ?, modified_at = ? WHERE id = ?",
|
|
(json.dumps(meta), datetime.now(timezone.utc).isoformat(), r["id"]))
|
|
marked += 1
|
|
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
print(json.dumps({
|
|
"success": True,
|
|
"time": datetime.now(timezone.utc).isoformat(),
|
|
"marked_for_review": marked,
|
|
}, indent=2, ensure_ascii=False))
|
|
|
|
if __name__ == "__main__":
|
|
run()
|