scripts/auto_triage.py: fetches candidate memories, asks a triage model (claude -p, default sonnet) to classify each as promote / reject / needs_human, and executes the verdict via the API. Trust model: - Auto-promote: model says promote AND confidence >= 0.8 AND dedup-checked against existing active memories for the project - Auto-reject: model says reject - needs_human: everything else stays in queue for manual review The triage model receives both the candidate content AND a summary of existing active memories for the same project, so it can detect duplicates and near-duplicates. The system prompt explicitly lists the rejection categories learned from the first two manual triage passes (stale snapshots, impl details, planned-not-implemented, process rules that belong in ledger not memory). deploy/dalidou/batch-extract.sh now runs extraction (Step A) then auto-triage (Step B) in sequence. The nightly cron at 03:00 UTC will run the full pipeline: backup → cleanup → rsync → extract → triage. Only needs_human candidates reach the human. Supports --dry-run for preview without executing. Supports --model override for multi-model triage (e.g. opus for higher-quality review, or a future Gemini/Ollama backend). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 line
9.0 KiB
JSON
1 line
9.0 KiB
JSON
{"memories":[{"id":"7d4bdab5-3a8b-4e85-a1b1-117d6d5c094e","memory_type":"project","content":"AtoCore extraction must stay off the hot capture path; batch endpoint only","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:16"},{"id":"af4dbc85-e5bd-4aac-927b-5ecee4497ec4","memory_type":"project","content":"Auto-promote gate: confidence ≥0.8 AND no duplicate in active memories","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:16"},{"id":"a6d9c14d-e64c-4e9d-aeeb-c9667c5fbda0","memory_type":"project","content":"AtoCore LLM extraction pipeline deployed on Dalidou host, runs via cron at 03:00 UTC via scripts/batch_llm_extract_live.py","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:05"},{"id":"06a43be1-026a-4085-b3e1-76348fd78250","memory_type":"project","content":"LLM extractor runs host-side (not in container) because claude CLI not available in container environment","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:05"},{"id":"5458852f-6001-44d9-960b-71f6ef5b93b5","memory_type":"project","content":"Host-side extraction script scripts/batch_llm_extract_live.py uses pure stdlib, no atocore imports for deployment simplicity","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:05"},{"id":"6ba13dc3-2157-46ec-bd75-9bf9bd37aef1","memory_type":"project","content":"POST /admin/extract-batch accepts mode: rule|llm, POST /interactions/{id}/extract now mode-aware","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:05"},{"id":"40db1e3f-c748-40e1-a224-01ad65b0e4fd","memory_type":"knowledge","content":"claude CLI 2.0.60 removed --no-session-persistence flag, extraction sessions now persist in claude history","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:05"},{"id":"e66efb99-9b3b-4056-8f65-2dcaa773eb7f","memory_type":"adaptation","content":"Durable memory extraction candidates must be <200 chars, stand-alone, typed as project|knowledge|preference|adaptation","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:05"},{"id":"557329d4-ddf1-4b0e-b628-aa29a88a243b","memory_type":"adaptation","content":"Memory extraction confidence defaults to 0.5, raise to 0.6 only for unambiguous committed claims","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:05"},{"id":"4ca2545d-9437-48a8-b197-6da6b716f12a","memory_type":"project","content":"Live Dalidou is on commit 39d73e9, not e2895b5","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"3c3c6cff-7a2b-41d6-b69a-ba12683d4bc2","memory_type":"project","content":"Live harness is reproducible at 16/18 PASS","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"119a2d0f-2405-45cb-b54c-984ffc12c6ea","memory_type":"project","content":"Live active memories count is 36","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"4e7e0c38-1080-4631-a8b7-1a1216ed141e","memory_type":"project","content":"Wave 2 project-state entries on live: p04=5, p05=6, p06=6","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"8304fce1-7bbc-4e55-8c12-c5f127067235","memory_type":"project","content":"R6 is fixed by commit 39d73e9","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"9a27d81c-4e7f-41f0-9b49-7e296eaae91f","memory_type":"project","content":"R9: R6 fix only covers empty project fallback; wrong non-empty model project can still override known interaction scope","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"e9ace741-e8b1-4234-9641-4d023725d8d7","memory_type":"project","content":"R10: Phase 8 is baseline-complete but not primary-complete; OpenClaw client covers narrow read-oriented slice of API","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"6a3a5e36-c0a9-4943-a01e-3f44075d8a52","memory_type":"project","content":"Phase 8 is decent baseline integration milestone but not primary-ready yet","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"5f59595a-942d-43fb-b251-1dbe5e1358fc","memory_type":"project","content":"4-step roadmap complete: extractor → harness → Wave 2 → OpenClaw","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"80a3b9ef-aee1-482c-9979-06de3b8bdbc4","memory_type":"project","content":"Codex audit loop proven across two full round-trips in one session","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"72f0525b-8542-43c9-8ea0-597069238490","memory_type":"project","content":"Session end state: 36 active memories, 17 project-state entries, 16/18 harness, 280 tests, main at 54d84b5","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:46"},{"id":"fbdd3e86-5522-4abc-ad03-1e50ff7df05c","memory_type":"project","content":"AtoCore extraction stays off the hot capture path; LLM extraction runs as scheduled batch, not inline with POST /interactions.","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:37"},{"id":"cc4d9c8f-4c44-46e4-af29-927cdb5e3706","memory_type":"project","content":"AtoCore auto-triage trust model: auto-promote only when confidence ≥0.8 AND no duplicate active memory; else needs_human.","project":"atocore","confidence":0.6,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:37"},{"id":"826d6f52-21c2-4afd-bd0e-4c157be5bf74","memory_type":"project","content":"Multi-model triage: use different model for triage reviewer than extractor (sonnet for extract)","project":"atocore","confidence":0.5,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:16"},{"id":"feb56ac9-597d-4c46-a327-ea8fc9cbbd80","memory_type":"project","content":"R9 fix: when interaction has known project, prefer it over model's non-matching project unless model's is registered","project":"atocore","confidence":0.5,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:16"},{"id":"5760012e-ebd0-4283-9011-186e39e2efa1","memory_type":"project","content":"R7 ranking fix: add overlap-density as secondary signal (overlap_count / memory_token_count)","project":"atocore","confidence":0.5,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:16"},{"id":"aa0f82f5-f6b6-4e3d-9e2e-fb83d901204a","memory_type":"project","content":"Extraction pipeline skips interactions with response_chars < 50 to avoid low-signal content","project":"atocore","confidence":0.5,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 15:47:05"},{"id":"df19f021-8111-4441-87b4-5d6630d6c67b","memory_type":"project","content":"AtoCore triage uses independent model from extractor (extractor: sonnet, triage: different model or different prompt).","project":"atocore","confidence":0.5,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:37"},{"id":"a143ceb0-4ffb-498a-bd43-7120edba57f2","memory_type":"project","content":"AtoCore ranking scorer adds overlap-density (overlap_count / memory_tokens) as secondary signal to fix short-memory ranking.","project":"atocore","confidence":0.5,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:37"},{"id":"8d47092c-86be-41d6-9e4f-3a0bc7c1c9c9","memory_type":"project","content":"AtoCore project trust: when interaction has known project and model returns different project, prefer interaction's project unless model's is registered.","project":"atocore","confidence":0.5,"status":"candidate","reference_count":0,"last_referenced_at":"","updated_at":"2026-04-12 14:59:37"}],"types":["identity","preference","project","episodic","knowledge","adaptation"],"statuses":["candidate","active","superseded","invalid"]} |