35 lines
779 B
Bash
35 lines
779 B
Bash
|
|
#!/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
|