ishenwei c517a0bbde sync_sessions.py: add --sync-ssh for remote session sync via SSH
- 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.
2026-04-16 10:06:24 +08:00
2026-04-06 18:55:48 +08:00
2026-04-06 18:55:48 +08:00
2026-04-06 18:55:48 +08:00

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
No description provided
Readme 132 KiB
Languages
Python 93.9%
HTML 5.8%
Dockerfile 0.3%