Files
openclaw/scripts/sync-dialogs-to-memory.sh
2026-03-01 17:44:19 +03:00

35 lines
779 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SESS_DIR="$HOME/.openclaw/agents/main/sessions"
OUT_DIR="/home/openclaw/.openclaw/workspace/memory/dialogs"
OUT_FILE="$OUT_DIR/$(date +%F).md"
mkdir -p "$OUT_DIR"
LATEST_JSONL=$(ls -1t "$SESS_DIR"/*.jsonl 2>/dev/null | head -n1 || true)
if [[ -z "${LATEST_JSONL:-}" ]]; then
exit 0
fi
TMP=$(mktemp)
{
echo "# Диалоги за $(date +%F)"
echo
echo "Источник: $LATEST_JSONL"
echo
jq -r '
select(.type=="message")
| .timestamp as $ts
| .message.role as $role
| (.message.content // [])[]?
| select(.type=="text")
| "## [\($ts)] \($role)\n\(.text)\n"
' "$LATEST_JSONL"
} > "$TMP"
if [[ ! -f "$OUT_FILE" ]] || ! cmp -s "$TMP" "$OUT_FILE"; then
mv "$TMP" "$OUT_FILE"
else
rm -f "$TMP"
fi