Install
openclaw skills install @indigokarasu/ocas-praxisBounded behavioral refinement loop. Records outcomes, extracts micro-lessons from repeated patterns, consolidates them into capped active behavior shifts, applies shifts at runtime, and generates plain-language debriefs. Use when recording outcomes, extracting lessons, managing behavior shifts, generating runtime briefs, or producing debriefs. Do not use for general memory, personality rewriting, or knowledge storage.
openclaw skills install @indigokarasu/ocas-praxisPraxis improves future agent behavior through a bounded refinement loop. It records outcomes, extracts lessons from repeated patterns, consolidates them into a small active set of behavior shifts, and produces auditable debriefs.
Praxis is not a diary, general memory system, or self-rewriting identity layer. It is a bounded behavioral refinement loop.
Praxis owns bounded behavioral refinement: events, lessons, shifts, and debriefs.
Praxis does not own: general memory (Elephas), preference persistence (Taste), pattern discovery (Corvus), communications (Dispatch), skill evaluation (Mentor).
Praxis receives BehavioralSignal files from Corvus. Praxis decides whether to act on each signal.
praxis.event.record — record a completed event or outcome with evidencepraxis.lesson.extract — derive micro-lessons from recorded eventspraxis.shift.propose — propose a new behavior shift from lessonspraxis.shift.list — list all shifts with statuspraxis.shift.activate — activate a proposed shift (enforces cap)praxis.shift.expire — expire or reject a shift with reasonpraxis.runtime.brief — generate runtime brief with active shifts onlypraxis.debrief.generate — produce a plain-language debriefpraxis.status — event count, active shifts, cap usage, last debriefpraxis.journal — write journal for the current run; called at end of every runDefault cap: 12 active shifts. When at cap and a new shift is proposed: merge overlapping shifts, replace a weaker shift, or reject the new shift. No duplicate or contradictory active shifts.
The runtime brief is a compact list of active shifts only. Target: 3-12 items. Imperative, behavior-facing, free of historical clutter. Not a narrative log.
Praxis receives BehavioralSignal files from Corvus at: ~/openclaw/data/ocas-praxis/intake/{signal_id}.json
Praxis checks its intake directory during praxis.event.record and during any scheduled pass. Praxis decides whether to record each signal as an event and extract a lesson. It is not obligated to act on every signal.
After processing each file, move to intake/processed/.
See spec-ocas-interfaces.md for the BehavioralSignal schema and handoff contract.
~/openclaw/data/ocas-praxis/
config.json
events.jsonl
lessons.jsonl
shifts.jsonl
debriefs.jsonl
decisions.jsonl
intake/
{signal_id}.json
processed/
reports/
~/openclaw/journals/ocas-praxis/
YYYY-MM-DD/
{run_id}.json
The OCAS_ROOT environment variable overrides ~/openclaw if set.
Default config.json:
{
"skill_id": "ocas-praxis",
"skill_version": "2.0.0",
"config_version": "1",
"created_at": "",
"updated_at": "",
"shifts": {
"max_active": 12
},
"lessons": {
"min_pattern_count": 2
},
"retention": {
"days": 0,
"max_records": 10000
}
}
Universal OKRs from spec-ocas-journal.md apply to all runs.
skill_okrs:
- name: shift_traceability
metric: fraction of active shifts with at least one traced event
direction: maximize
target: 1.0
evaluation_window: 30_runs
- name: cap_compliance
metric: fraction of runs where active shift count is at or below cap
direction: maximize
target: 1.0
evaluation_window: 30_runs
- name: lesson_precision
metric: fraction of extracted lessons leading to activated shifts
direction: maximize
target: 0.50
evaluation_window: 30_runs
- name: debrief_quality
metric: fraction of debriefs rated useful by human review
direction: maximize
target: 0.80
evaluation_window: 30_runs
Action Journal — every event recording, lesson extraction, shift change, and debrief generation.
public
File | When to read
references/data_model.md | Before creating events, lessons, shifts, or debriefs
references/lesson_rules.md | Before extracting lessons from events
references/runtime_rules.md | Before generating runtime brief
references/debrief_templates.md | Before generating debriefs
references/journal.md | Before praxis.journal; at end of every run