session-logs by steipete/clawdis
npx skills add https://github.com/steipete/clawdis --skill session-logs搜索存储在会话 JSONL 文件中的完整对话历史记录。当用户引用较早/父级对话或询问之前说过什么时,请使用此技能。
当用户询问之前的聊天记录、父级对话或不在内存文件中的历史上下文时,请使用此技能。
会话日志位于:~/.openclaw/agents/<agentId>/sessions/(使用系统提示 Runtime 行中的 agent=<id> 值)。
sessions.json - 将会话键映射到会话 ID 的索引文件<session-id>.jsonl - 每个会话的完整对话记录每个 .jsonl 文件包含以下字段的消息:
type: "session"(元数据)或 "message"timestamp: ISO 时间戳广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
message.role: "user"、"assistant" 或 "toolResult"message.content[]: 文本、思考或工具调用(筛选 type=="text" 以获取人类可读内容)message.usage.cost.total: 每次响应的成本for f in ~/.openclaw/agents/<agentId>/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
for f in ~/.openclaw/agents/<agentId>/sessions/*.jsonl; do
head -1 "$f" | jq -r '.timestamp' | grep -q "2026-01-06" && echo "$f"
done
jq -r 'select(.message.role == "user") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl
jq -r 'select(.message.role == "assistant") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl | rg -i "keyword"
jq -s '[.[] | .message.usage.cost.total // 0] | add' <session>.jsonl
for f in ~/.openclaw/agents/<agentId>/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
jq -s '{
messages: length,
user: [.[] | select(.message.role == "user")] | length,
assistant: [.[] | select(.message.role == "assistant")] | length,
first: .[0].timestamp,
last: .[-1].timestamp
}' <session>.jsonl
jq -r '.message.content[]? | select(.type == "toolCall") | .name' <session>.jsonl | sort | uniq -c | sort -rn
rg -l "phrase" ~/.openclaw/agents/<agentId>/sessions/*.jsonl
head/tail 进行采样sessions.json 索引文件将聊天服务提供商(discord、whatsapp 等)映射到会话 ID.deleted.<timestamp> 后缀jq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.openclaw/agents/<agentId>/sessions/<id>.jsonl | rg 'keyword'
每周安装量
518
代码仓库
GitHub 星标数
334.4K
首次出现时间
Jan 24, 2026
安全审计
安装于
openclaw467
gemini-cli456
opencode456
codex452
cursor447
github-copilot444
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.
Use this skill when the user asks about prior chats, parent conversations, or historical context that isn't in memory files.
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 sessionEach .jsonl file contains messages with:
type: "session" (metadata) or "message"timestamp: ISO timestampmessage.role: "user", "assistant", or "toolResult"message.content[]: Text, thinking, or tool calls (filter type=="text" for human-readable content)message.usage.cost.total: Cost per responsefor f in ~/.openclaw/agents/<agentId>/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
for f in ~/.openclaw/agents/<agentId>/sessions/*.jsonl; do
head -1 "$f" | jq -r '.timestamp' | grep -q "2026-01-06" && echo "$f"
done
jq -r 'select(.message.role == "user") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl
jq -r 'select(.message.role == "assistant") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl | rg -i "keyword"
jq -s '[.[] | .message.usage.cost.total // 0] | add' <session>.jsonl
for f in ~/.openclaw/agents/<agentId>/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
jq -s '{
messages: length,
user: [.[] | select(.message.role == "user")] | length,
assistant: [.[] | select(.message.role == "assistant")] | length,
first: .[0].timestamp,
last: .[-1].timestamp
}' <session>.jsonl
jq -r '.message.content[]? | select(.type == "toolCall") | .name' <session>.jsonl | sort | uniq -c | sort -rn
rg -l "phrase" ~/.openclaw/agents/<agentId>/sessions/*.jsonl
head/tail for samplingsessions.json index maps chat providers (discord, whatsapp, etc.) to session IDs.deleted.<timestamp> suffixjq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.openclaw/agents/<agentId>/sessions/<id>.jsonl | rg 'keyword'
Weekly Installs
518
Repository
GitHub Stars
334.4K
First Seen
Jan 24, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykFail
Installed on
openclaw467
gemini-cli456
opencode456
codex452
cursor447
github-copilot444
AI Elements:基于shadcn/ui的AI原生应用组件库,快速构建对话界面
56,200 周安装