session-logs
Search your complete conversation history stored in session JSONL files. Use this when a user references older/parent conversations or asks what was said before.
Trigger
Use this skill when the user asks about prior chats, parent conversations, or historical context that isn't in memory files.
Location
Session logs live at: ~/.openclaw/agents/<agentId>/sessions/ (use the agent=<id> value from the system prompt Runtime line).
- -
sessions.json - Index mapping session keys to session IDs <session-id>.jsonl - Full conversation transcript per session
Structure
Each .jsonl file contains messages with:
- -
type: "session" (metadata) or "message" - INLINECODE6 : ISO timestamp
- INLINECODE7 : "user", "assistant", or "toolResult"
- INLINECODE8 : Text, thinking, or tool calls (filter
type=="text" for human-readable content) - INLINECODE10 : Cost per response
Common Queries
List all sessions by date and size
CODEBLOCK0
Find sessions from a specific day
CODEBLOCK1
Extract user messages from a session
CODEBLOCK2
Search for keyword in assistant responses
CODEBLOCK3
Get total cost for a session
CODEBLOCK4
Daily cost summary
CODEBLOCK5
Count messages and tokens in a session
CODEBLOCK6
Tool usage breakdown
CODEBLOCK7
Search across ALL sessions for a phrase
CODEBLOCK8
Tips
- - Sessions are append-only JSONL (one JSON object per line)
- Large sessions can be several MB - use
head/tail for sampling - The
sessions.json index maps chat providers (discord, whatsapp, etc.) to session IDs - Deleted sessions have
.deleted.<timestamp> suffix
Fast text-only hint (low noise)
CODEBLOCK9
session-logs
搜索存储在会话JSONL文件中的完整对话历史。当用户引用较早/父级对话或询问之前说过什么时使用此功能。
触发条件
当用户询问先前的聊天记录、父级对话或不在记忆文件中的历史上下文时使用此技能。
位置
会话日志位于:~/.openclaw/agents//sessions/(使用系统提示运行时行中的agent=值)。
- - sessions.json - 将会话键映射到会话ID的索引
- .jsonl - 每个会话的完整对话记录
结构
每个.jsonl文件包含以下消息:
- - type:session(元数据)或message
- timestamp:ISO时间戳
- message.role:user、assistant或toolResult
- message.content[]:文本、思考或工具调用(过滤type==text以获取人类可读内容)
- message.usage.cost.total:每次响应的成本
常见查询
按日期和大小列出所有会话
bash
for f in ~/.openclaw/agents//sessions/*.jsonl; do
date=$(head -1 $f | jq -r .timestamp | cut -dT -f1)
size=$(ls -lh $f | awk {print $5})
echo $date $size $(basename $f)
done | sort -r
查找特定日期的会话
bash
for f in ~/.openclaw/agents//sessions/*.jsonl; do
head -1 $f | jq -r .timestamp | grep -q 2026-01-06 && echo $f
done
从会话中提取用户消息
bash
jq -r select(.message.role == user) | .message.content[]? | select(.type == text) | .text .jsonl
在助手回复中搜索关键词
bash
jq -r select(.message.role == assistant) | .message.content[]? | select(.type == text) | .text .jsonl | rg -i keyword
获取会话总成本
bash
jq -s [.[] | .message.usage.cost.total // 0] | add .jsonl
每日成本汇总
bash
for f in ~/.openclaw/agents//sessions/*.jsonl; do
date=$(head -1 $f | jq -r .timestamp | cut -dT -f1)
cost=$(jq -s [.[] | .message.usage.cost.total // 0] | add $f)
echo $date $cost
done | awk {a[$1]+=$2} END {for(d in a) print d, $a[d]} | sort -r
统计会话中的消息和令牌数
bash
jq -s {
messages: length,
user: [.[] | select(.message.role == user)] | length,
assistant: [.[] | select(.message.role == assistant)] | length,
first: .[0].timestamp,
last: .[-1].timestamp
} .jsonl
工具使用情况分析
bash
jq -r .message.content[]? | select(.type == toolCall) | .name .jsonl | sort | uniq -c | sort -rn
在所有会话中搜索短语
bash
rg -l phrase ~/.openclaw/agents//sessions/*.jsonl
提示
- - 会话是追加写入的JSONL格式(每行一个JSON对象)
- 大型会话可能达到数MB - 使用head/tail进行采样
- sessions.json索引将聊天提供者(discord、whatsapp等)映射到会话ID
- 已删除的会话带有.deleted.后缀
快速纯文本提示(低噪音)
bash
jq -r select(.type==message) | .message.content[]? | select(.type==text) | .text ~/.openclaw/agents//sessions/.jsonl | rg keyword