149 lines
3.9 KiB
Markdown
149 lines
3.9 KiB
Markdown
# Demo
|
|
|
|
memabra now has a polished wrap-up workflow in addition to the lower-level demo app.
|
|
|
|
## Quick run
|
|
|
|
If you installed the repo in editable mode, prefer the dedicated CLI command:
|
|
|
|
```bash
|
|
source venv/bin/activate
|
|
memabra
|
|
```
|
|
|
|
The legacy developer entrypoint still works too:
|
|
|
|
```bash
|
|
source venv/bin/activate
|
|
python -m src.memabra.cli
|
|
```
|
|
|
|
This runs the online-learning loop: it seeds demo tasks, trains a challenger router, evaluates it against a benchmark suite, promotes it if thresholds are met, and prints a JSON report.
|
|
|
|
You can override the default artifact directory and minimum trajectory threshold:
|
|
|
|
```bash
|
|
source venv/bin/activate
|
|
memabra run --base-dir /custom/artifacts --min-new-trajectories 5
|
|
```
|
|
|
|
You can also enable episodic retrieval by rebuilding the case index from saved trajectories:
|
|
|
|
```bash
|
|
source venv/bin/activate
|
|
memabra run --rebuild-case-index
|
|
```
|
|
|
|
You can check system status, list versions, or roll back without running a learning cycle:
|
|
|
|
```bash
|
|
source venv/bin/activate
|
|
memabra status
|
|
memabra version list
|
|
memabra version rollback 20260414-123456
|
|
```
|
|
|
|
If you want operator-friendly output instead of raw JSON, use `--format text`:
|
|
|
|
```bash
|
|
source venv/bin/activate
|
|
memabra status --format text
|
|
memabra version list --format text
|
|
memabra version rollback 20260414-123456 --format text
|
|
memabra run --dry-run --format text
|
|
```
|
|
|
|
The text formatter is aimed at operators: status output includes the latest report timing/outcome, version listings highlight the currently active router version, and workflow output is grouped into summary/baseline/challenger/deltas/decision sections with normalized yes/no and fixed-precision metrics.
|
|
|
|
You can also call it programmatically:
|
|
|
|
```bash
|
|
source venv/bin/activate
|
|
python - <<'PY'
|
|
from src.memabra.cli import run_online_learning_workflow
|
|
result = run_online_learning_workflow()
|
|
print(result)
|
|
PY
|
|
```
|
|
|
|
The online-learning workflow will:
|
|
1. build a demo app
|
|
2. seed example tasks (if no trajectories exist yet)
|
|
3. run one online-learning cycle
|
|
4. train a challenger router
|
|
5. evaluate it against the baseline on a fixed benchmark suite
|
|
6. promote it only if the promotion policy accepts
|
|
7. persist a training report under `training-reports/`
|
|
8. print a JSON report
|
|
|
|
## Python API
|
|
|
|
```python
|
|
from src.memabra.cli import run_wrapup_workflow, run_online_learning_workflow
|
|
|
|
# Legacy wrap-up demo
|
|
result = run_wrapup_workflow()
|
|
print(result)
|
|
|
|
# Safe online-learning loop with benchmark-gated promotion
|
|
result = run_online_learning_workflow()
|
|
print(result)
|
|
```
|
|
|
|
## Lower-level demo app
|
|
|
|
You can still drive the app manually:
|
|
|
|
```bash
|
|
source venv/bin/activate
|
|
python - <<'PY'
|
|
from src.memabra.app import build_demo_app
|
|
app = build_demo_app()
|
|
|
|
for prompt in [
|
|
'Use my telegram preference for this answer.',
|
|
'Check the current system status.',
|
|
'Deploy this service with the usual workflow.',
|
|
]:
|
|
trajectory = app.run_task(prompt, channel='telegram', user_id='oza')
|
|
print(prompt)
|
|
print(trajectory['decisions'][0]['decision_type'], trajectory['outcome']['status'], trajectory['reward']['total'])
|
|
print([event['event_type'] for event in trajectory['events']])
|
|
print('---')
|
|
|
|
print(app.replay_summary())
|
|
PY
|
|
```
|
|
|
|
## Output locations
|
|
|
|
By default the workflows write to:
|
|
- `docs/projects/memabra/demo-artifacts/trajectories/`
|
|
- `docs/projects/memabra/demo-artifacts/memories/`
|
|
- `docs/projects/memabra/demo-artifacts/router-versions/`
|
|
- `docs/projects/memabra/demo-artifacts/training-reports/`
|
|
|
|
## What this proves
|
|
|
|
The alpha is able to demonstrate the whole loop:
|
|
- retrieval
|
|
- routing
|
|
- execution
|
|
- persistence
|
|
- replay
|
|
- training
|
|
- evaluation
|
|
- router versioning
|
|
- benchmark-gated promotion
|
|
- auditable training reports
|
|
|
|
## Limits
|
|
|
|
This is still an alpha:
|
|
- learning is lightweight, not a deep model
|
|
- storage is JSON-file based
|
|
- promotion policy thresholds are manually configured
|
|
- tool/skill integration is still narrower than a production agent platform
|
|
|
|
But it is now a safe, self-improving alpha, not just a pile of modules.
|