Session History Retriever 技能
使用 OpenClaw 的会话管理工具查看历史对话、检索消息,并引用导入到本地对话中。
核心功能
这个技能帮你:
- - 🔍 查找会话:列出所有会话,按时间、活跃度筛选
- 📖 查看历史:获取特定会话的完整消息历史
- 📤 引用导入:将历史内容发送到新会话或当前会话
- 🎯 快捷对话:基于历史上下文快速继续工作
When to Use
✅ 使用这个技能当:
- - 需要查看昨天的工作记录
- 想回顾之前的对话内容
- 需要导入历史上下文继续工作
- 查找特定会话的消息
- 审计会话使用情况
- 恢复中断的工作流
When NOT to Use
❌ 不要使用这个技能当:
- - 需要浏览器自动化(用 browser 工具)
- 需要外部 API 调用(用其他技能)
- 只是闲聊不需要历史记录
- 需要创建新会话(用 sessions_spawn)
会话列表
列出所有会话
CODEBLOCK0
会话列表输出示例
CODEBLOCK1
关键字段:
- -
key: 会话键(如 agent:main:main) - INLINECODE2 : 当前 transcript ID
- INLINECODE3 : 最后更新时间
- INLINECODE4 : 当前上下文 token 数
查看会话历史
获取完整历史
CODEBLOCK2
历史输出结构
CODEBLOCK3
引用导入到对话
发送消息到新会话
CODEBLOCK4
发送消息参数
- -
sessionKey: 目标会话键(如 agent:main:main) - INLINECODE7 : 会话标签(用于识别)
- INLINECODE8 : 要发送的消息内容
- INLINECODE9 : 目标 agent ID(可选)
- INLINECODE10 : 超时时间(秒)
常用工作流程
1. 回顾昨天的工作
CODEBLOCK5
2. 跨会话引用
CODEBLOCK6
3. 会话审计
CODEBLOCK7
会话键识别
主会话(直接聊天)
CODEBLOCK8
群组会话
CODEBLOCK9
频道会话(Discord/Slack)
CODEBLOCK10
定时任务
CODEBLOCK11
节点运行
CODEBLOCK12
会话状态检查
检查会话状态
CODEBLOCK13
实用脚本示例
查找最近 N 天的会话
CODEBLOCK14
导出会话历史为文件
CODEBLOCK15
快速继续中断的工作
CODEBLOCK16
常见问题
Q: 如何找到昨天的会话?
A: 查看
updatedAt 时间戳,昨天的会话会在时间上接近但早于今天。
Q: 会话历史被截断怎么办?
A: 使用更大的
limit 值,如
--limit 200。如果仍然被截断,说明会话很长,可能需要分次查看。
Q: 如何在多个会话间切换?
A: 使用
sessionKey 指定目标会话,或在新会话中引用旧会话的内容。
Q: 如何知道会话使用了多少 token?
A: 使用
session_status --sessionKey <key> 查看详细的 token 使用情况。
Q: 会话超过上下文限制怎么办?
A: 发送
/compact 命令让系统自动压缩旧对话,或使用
sessions_send 选择性地导入关键内容。
最佳实践
- 1. 定期整理:定期清理不活跃的会话
- 合理使用:不要导入过长的历史,只引用相关内容
- 标注清晰:使用
label 参数给会话添加描述性标签 - 及时保存:重要工作完成后,导出或保存到记忆文件
- 注意隐私:不要将敏感内容发送到新的会话
相关工具
- -
sessions_spawn - 创建新会话 - INLINECODE20 - 查看会话状态
- INLINECODE21 - 读取记忆文件
- INLINECODE22 - 读取本地文件
示例:完整工作流程
CODEBLOCK17
提示:记住,会话历史是工作记忆的重要组成部分。定期回顾和引用历史,可以让你的工作流程更加连贯高效!📚✨
Session History Retriever 技能
使用 OpenClaw 的会话管理工具查看历史对话、检索消息,并引用导入到本地对话中。
核心功能
这个技能帮你:
- - 🔍 查找会话:列出所有会话,按时间、活跃度筛选
- 📖 查看历史:获取特定会话的完整消息历史
- 📤 引用导入:将历史内容发送到新会话或当前会话
- 🎯 快捷对话:基于历史上下文快速继续工作
何时使用
✅ 使用这个技能当:
- - 需要查看昨天的工作记录
- 想回顾之前的对话内容
- 需要导入历史上下文继续工作
- 查找特定会话的消息
- 审计会话使用情况
- 恢复中断的工作流
何时不使用
❌ 不要使用这个技能当:
- - 需要浏览器自动化(用 browser 工具)
- 需要外部 API 调用(用其他技能)
- 只是闲聊不需要历史记录
- 需要创建新会话(用 sessions_spawn)
会话列表
列出所有会话
bash
列出最近的会话
sessions_list --limit 20
筛选活跃会话(最后活跃 N 分钟)
sessions_list --activeMinutes 60 --limit 10
筛选特定类型的会话
sessions_list --kinds [acp, subagent] --limit 15
会话列表输出示例
json
{
count: 1,
sessions: [
{
key: agent:main:main,
kind: other,
channel: webchat,
updatedAt: 1773620866778,
sessionId: 22e7d1aa-7f9d-4d7e-9bed-821466ed8d51,
model: Qwen3.5-9B-Q8_0.gguf,
contextTokens: 160000
}
]
}
关键字段:
- - key: 会话键(如 agent:main:main)
- sessionId: 当前 transcript ID
- updatedAt: 最后更新时间
- contextTokens: 当前上下文 token 数
查看会话历史
获取完整历史
bash
获取会话历史(最多 N 条消息)
sessions_history --sessionKey agent:main:main --limit 50
包含工具调用信息
sessions_history --sessionKey agent:main:main --limit 30 --includeTools=true
历史输出结构
json
{
sessionKey: agent:main:main,
messages: [
{
role: user,
content: [
{
type: text,
text: 昨天的文章写好了吗?
}
],
timestamp: 1773619868563
},
{
role: assistant,
content: [
{
type: text,
text: 好的,我找到了文章...
}
],
timestamp: 1773619927993
}
],
truncated: true
}
引用导入到对话
发送消息到新会话
bash
向特定会话发送消息
sessions_send --sessionKey agent:main:main --message 基于之前的讨论,继续...
使用标签引用
sessions_send --label 昨天的工作 --message 继续昨天的文章审查工作
发送消息参数
- - sessionKey: 目标会话键(如 agent:main:main)
- label: 会话标签(用于识别)
- message: 要发送的消息内容
- agentId: 目标 agent ID(可选)
- timeoutSeconds: 超时时间(秒)
常用工作流程
1. 回顾昨天的工作
bash
第一步:列出会话
sessions_list --limit 10
第二步:找到昨天的会话(通过 updatedAt 时间)
第三步:获取历史
sessions_history --sessionKey agent:main:main --limit 50
第四步:分析内容,找到相关工作
第五步:发送新消息继续
sessions_send --sessionKey agent:main:main --message 根据昨天的审查结果,继续修改...
2. 跨会话引用
bash
从旧会话提取信息
history=$(sessions_history --sessionKey agent:main:main --limit 20)
发送到新会话
sessions_send --label 历史参考 --message 以下是之前讨论的内容... $history
3. 会话审计
bash
列出所有活跃会话
sessions_list --activeMinutes 1440 --json
检查特定会话的 token 使用情况
sessions_status --sessionKey agent:main:main
查看模型使用情况
session_status --sessionKey agent:main:main
会话键识别
主会话(直接聊天)
agent::main
群组会话
agent::channel:group:
频道会话(Discord/Slack)
agent::channel:channel:
定时任务
cron:
节点运行
node-
会话状态检查
检查会话状态
bash
session_status --sessionKey agent:main:main
输出示例
{
key: agent:main:main,
model: Qwen3.5-9B-Q8_0.gguf,
contextTokens: 160000,
inputTokens: 45000,
outputTokens: 12000,
totalTokens: 57000,
updatedAt: 1773620866778
}
实用脚本示例
查找最近 N 天的会话
bash
#!/bin/bash
查找 7 天内活跃的会话
sessions_list --activeMinutes 10080 --limit 20 --json | \
jq .sessions[] | \(.key): \(.updatedAt | fromdateiso8601)
导出会话历史为文件
bash
#!/bin/bash
导出会话历史到文件
HISTORY
FILE=sessionhistory_$(date +%Y%m%d).json
sessions
history --sessionKey agent:main:main --limit 100 > $HISTORYFILE
echo 已保存至:$HISTORY_FILE
快速继续中断的工作
bash
#!/bin/bash
1. 列出会话
echo 📋 可用会话:
sessions_list --limit 10 --json
2. 选择会话后继续
echo 继续工作...
sessions_send --sessionKey agent:main:main --message 继续昨天的文章修改工作...
常见问题
Q: 如何找到昨天的会话?
A: 查看 updatedAt 时间戳,昨天的会话会在时间上接近但早于今天。
Q: 会话历史被截断怎么办?
A: 使用更大的 limit 值,如 --limit 200。如果仍然被截断,说明会话很长,可能需要分次查看。
Q: 如何在多个会话间切换?
A: 使用 sessionKey 指定目标会话,或在新会话中引用旧会话的内容。
Q: 如何知道会话使用了多少 token?
A: 使用 session_status --sessionKey
查看详细的 token 使用情况。
Q: 会话超过上下文限制怎么办?
A: 发送 /compact 命令让系统自动压缩旧对话,或使用 sessions_send 选择性地导入关键内容。
最佳实践
- 1. 定期整理:定期清理不活跃的会话
- 合理使用:不要导入过长的历史,只引用相关内容
- 标注清晰:使用 label 参数给会话添加描述性标签
- 及时保存:重要工作完成后,导出或保存到记忆文件
- 注意隐私:不要将敏感内容发送到新的会话
相关工具
- - sessionsspawn - 创建新会话
- sessionstatus - 查看会话状态
- memory_get - 读取记忆文件
- read - 读取本地文件
示例:完整工作流程
bash
场景:想继续昨天的文章审查工作
1. 查看有哪些会话
sessions_list --limit 10
2. 查看主要会话的历史
sessions_history --sessionKey agent:main:main --limit 50
3. 找到昨天关于文章审查的讨论
(搜索关键词如审查、文章、修改)
4. 基于上下文继续工作
sessions_send --sessionKey agent:main:main --message \
根据昨天审查的结果,我发现了以下问题需要