- Add --sync-ssh HOST --sync-source-path PATH to sync sessions from
a remote host without needing to install the script there.
- Key changes:
* ssh_list_dir(): enumerate subdirs only (fixes 'sessions' file in agents/)
* ssh_list_files(): use ls -p to filter directories; strip remote_dir prefix
* ssh_stat_mtime_batch(): single SSH call via Python stdin, works on
both Linux and macOS, avoids xargs command-line length limits
* sync_sessions_via_ssh(): parallel mtime fetch per agent dir, then
SSH-read & parse only new/modified files
* parse_jsonl_content(): shared parser for both local files and SSH content
- Session sync now unified: run from macmini, targets macmini/ubuntu1/ubuntu2.
- Cron sync also updated to use ssh_stat_mtime_batch for efficiency.
agent-base
OpenClaw Session Archive - 多 Agent 会话解析与归档系统。
Architecture
Three nodes (Mac Mini, Ubuntu1, Ubuntu2) run a sync script that parses local JSONL session files and pushes structured data to a central Django API. The Django service runs in Docker Compose and stores data in a remote PostgreSQL + TimescaleDB instance on NAS.
Quick Start
# 1. Configure environment
cp .env.example .env
# Edit .env with your database credentials and Django settings
# 2. Build and start
docker compose build
docker compose run --rm web python manage.py migrate
docker compose run --rm web python manage.py createsuperuser
docker compose up -d
# 3. Access
# Django Admin: http://<host>:8000/admin/
# API: http://<host>:8000/api/sessions/bulk_upsert/
Running Tests
pip install -r requirements-dev.txt
pytest -v
Client Sync Script
Deploy scripts/sync_sessions.py on each node:
python sync_sessions.py --remote-url http://<django-host>:8000/api/sessions/bulk_upsert/
Set SOURCE_NODE environment variable on each node (macmini, ubuntu1, ubuntu2).
Daily Export
In Django Admin, select sessions and choose "Export selected sessions to Markdown" action.
Description
Languages
Python
93.9%
HTML
5.8%
Dockerfile
0.3%