Memory Harness
by @taka3693
Runtime-enforced memory harness for OpenClaw. Implements 3-stage recall (session preflight, triggered recall, pre-execution gate) with intent classification,...
clawhub install memory-harness📖 About This Skill
name: memory-harness description: Runtime-enforced memory harness for OpenClaw. Implements 3-stage recall (session preflight, triggered recall, pre-execution gate) with intent classification, entity detection, memory compression, and status tracking. This harness runs automatically at the right times - NOT relying on SKILL.md text alone.
Memory Harness
A reliable memory harness that makes byterover recall happen at the right times without running heavy recall on every turn.
Architecture
user_input
-> intent classification
-> session preflight (if new session)
-> conditional targeted recall
-> planning
-> pre-execution recall gate (if execution-like)
-> execution or response
-> optional writeback
3-Stage Harness
Stage 1: Session Preflight
Runs ONLY at the start of a new session.
Fetches:
Does NOT fetch:
Output: compact session_digest (hard capped)
Stage 2: Triggered Recall
Runs targeted byterover recall only when needed.
Trigger conditions:
Skip conditions:
Recall modes:
preflight_query: start-of-session onlyentity_query: when named entities detectedcontinuation_query: for previous-session continuationconstraint_query: when advice depends on prior rulespre_execution_query: immediately before executionStage 3: Pre-Execution Recall Gate
MANDATORY before:
Checks for:
Memory Shaping
Never inject raw byterover results directly.
Pipeline: 1. retrieve 2. rank 3. dedupe 4. compress 5. inject bounded digest
Hard limits:
Status Tracking
Every recall records one of:
not_neededqueried_no_hitsqueried_low_confidencequeried_successquery_failedScripts
intent-classifier.js
Classifies turn intent as one of:
generic_qacasualcontinuationentity_referenceuser_specific_contextimplementation_requestdesign_requestexecution_requestentity-detector.js
Detects known entities in user input:
session-preflight.sh
Runs lightweight recall at session start:
targeted-recall.sh
Runs targeted recall based on intent:
pre-execution-gate.sh
Runs before execution-like actions:
memory-compress.js
Compresses and dedupes raw memory:
writeback.sh
Writes high-signal info back to memory:
Configuration
{
"memory_policy": {
"preflight_on_session_start": true,
"preflight_depth": "light",
"pre_execution_recall": true,
"max_memory_items": 5,
"max_digest_lines": 8,
"trigger_query_if": [
"mentions_known_project",
"asks_to_continue_previous_work",
"requires_user_specific_context",
"requests_code_design_or_change",
"contains_known_entity"
],
"skip_query_if": [
"generic_qa",
"casual_chat",
"self_contained_question"
]
}
}
Logging
Structured logs for observability:
turn_idsession_idintentrecall_triggerrecall_moderecall_statusrecall_item_countinjected_item_countpre_execution_gateelapsed_msKnown Entities
Default entity list (expandable):
Continuation Triggers
Japanese: 続き, 前回, 再開, 引き継ぎ, 前の, さっきの English: continue, resume, previous, earlier, last time, back to
Success Criteria
⚙️ Configuration
{
"memory_policy": {
"preflight_on_session_start": true,
"preflight_depth": "light",
"pre_execution_recall": true,
"max_memory_items": 5,
"max_digest_lines": 8,
"trigger_query_if": [
"mentions_known_project",
"asks_to_continue_previous_work",
"requires_user_specific_context",
"requests_code_design_or_change",
"contains_known_entity"
],
"skip_query_if": [
"generic_qa",
"casual_chat",
"self_contained_question"
]
}
}