历史会话归纳

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

把散落在本机会话记录里的历史对话,整理成一份可读的归纳报告。适用场景:用户贴出一张会话列表截图要求归纳;用户说「总结一下我之前问过的某件事」;或检索工具查不到近期会话时。工作方式是自动探测并定位本地的会话记录文件,逐行解析(JSON 格式),提取会话标题与对话轮次,按需归纳并输出一份自包含的 HTML 报告。全程本地解析,数据不出本机,不依赖任何外部服务,也不需要 API Key。适用于 WorkBuddy 桌面端。

一句话选型结论

按资料字段整理

历史会话归纳是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_9f79cc57/session-recap
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_9f79cc57仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791623498
正文体量8.3 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
历史会话归纳当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

8.3 KB
模型实际读到的说明书原文,来自技能仓库

session-recap · 从本地会话记录归纳历史对话

什么时候用

  • 用户贴出一张会话列表截图(只有标题 + 「N 小时前」),要求归纳这几个对话的内容。
  • 用户说「总结一下我之前问过的 XX」「归纳最近这几个对话」。
  • conversation_search 返回空或结果不相关(近期会话尚未进索引,这是常态)。

边界

本技能读取的是使用者本机自身的会话记录,仅用于归纳使用者自己的历史对话。
不要把提取出的内容发往任何外部服务,也不要对非本机的记录使用本技能。

核心思路

conversation_search 只能检索到已索引的会话,通常落后于当前。本机落盘的会话记录文件才是权威来源 —— 但它存在哪儿,得先自己找出来。

0. 先探测记录存放地(每次探,别写死路径)

记录文件的存放位置随客户端版本、平台、安装方式而变。任何写死的路径都会过期,也会让你在不存在的目录上空转。做法是用当前这个会话自身当锚点去反查:

为什么用当前会话当锚点:它此刻必定有记录落盘,而且你掌握它的一切(工作目录、会话标题、用户刚说过的话)。拿它去校验候选,一次就能定准。

探测顺序(命中即停):

  1. 圈候选。客户端数据通常落在用户主目录下、名字与客户端相关的目录里。限深度扫近期改动过的 .jsonl,别全盘 find:
    bash export PATH="/usr/bin:/bin:$PATH" find ~ -maxdepth 4 -name "*.jsonl" -newermt "-30 days" 2>/dev/null | head -50
  2. 认形态,并排掉干扰项。会话记录目录一般长这样:
    - 一个会话一个文件,文件名是 UUID,后缀 .jsonl
    - 同目录常伴同名元数据(.meta.json)与回滚文件(.ndjson)—— 这两个不是会话记录
    - ⚠️ 会扫到假货:按日期或固定名命名的日志类 .jsonl
    (审计日志、spool 队列等,形如 2026-09-20.jsonl、manifest.jsonl)。
    判别只看两点:文件名是不是 UUID + 里面有没有 ai-title。日志文件两条都不满足。
    - 目录名常由会话工作目录的路径转换而来(分隔符换成同一符号)—— 可作旁证,
    但别当唯一依据:转换规则有细节陷阱(连续分隔符怎么折叠、盘符大小写),
    实测推错一个字符就落空。目录名里带创建时间戳时,直接按时间戳找更快更稳。
  3. 三重校验(三条全中才算找到,缺一条就是找错地方了;实测这套判据一次就能定准):
    - 标题对得上 —— 能读到 ai-title,且与你这次会话的标题一致
    - 内容对得上 —— 能读到你这次收到的用户消息原文;消息条数 > 0,且首条 role 是 user
    - 时间对得上 —— 文件 mtime ≈ 现在(活动中的会话在被持续写入,通常只差几秒)
    - 任何一条不满足 → 换个候选重来,不要凑合
  4. 定下来复用。把探到的根路径写进临时脚本顶部常量,同一次会话内一直用,别每步重探。
  5. 探不到就问用户,别猜一个目录硬读。

jsonl 行结构(每行一个 JSON)

type 含义
ai-title 会话标题,字段是 aiTitle —— 用它和截图标题做匹配
message 对话轮次,有 role(user/assistant)和 content(数组)
reasoning / function_call / function_call_result 推理与工具调用,一般不需要
file-history-snapshot 文件快照,忽略

content 是数组,元素 {type: "input_text" | "output_text" | "text", text: "..."},
也可能直接是字符串(需兼容)。

用户消息前面挂着一大段 <system-reminder> 注入块,必须剥掉,
否则真正的提问会被淹没。

操作步骤

1. 从候选里挑出目标会话

记录根已在 §0 定位。截图只给了标题 + 相对时间,所以按这个顺序筛:

  • 遍历记录根下所有 .jsonl,取每条的 ai-title 与截图标题做前缀匹配。
  • 标题匹配不上(极新的会话还没生成 ai-title)→ 退化为按 mtime 倒序取最近若干个,
    再读首条用户消息与截图人工比对。
  • 一张截图可能对应多个会话,全部命中后再逐条归纳。

2. 提取内容(必用 Python,别用 Grep/Read)

重要:记录文件是「一条消息一整行」的长行 JSONL,单行动辄上万字符、总量可达数十 MB,
Grep / Read 容易截断或读不动。一律用 Python 脚本流式逐行解析,稳定得多。

Bash 环境下 head/dirname 可能 not found,脚本开头先 export PATH="/usr/bin:/bin:$PATH"。
Python 用客户端自带的受管版本(别依赖系统 Python):
先 which python 试一次,不行就在家目录下客户端相关目录里找 python 可执行文件。
输出中文时 sys.stdout.reconfigure(encoding='utf-8')。

import json, os, re

SR = re.compile(r"<system-reminder.*?</system-reminder>", re.S)

def clean(t):
    t = SR.sub("", t or "")
    i = t.find("<system-reminder")      # 处理未闭合的残留
    if i != -1:
        t = t[:i]
    t = re.sub(r"<image_local_path>.*?</image_local_path>", "[图片]", t, flags=re.S)
    return re.sub(r"\n{3,}", "\n\n", t).strip()

def texts(c):
    if isinstance(c, str):
        return [c]
    return [x.get("text", "") for x in (c or [])
            if isinstance(x, dict) and x.get("type") in ("input_text", "output_text", "text")]

def load(fp):
    title, turns = None, []
    with open(fp, "r", encoding="utf-8", errors="replace") as f:
        for line in f:
            line = line.strip()
            if not line:
                continue
            try:
                o = json.loads(line)
            except Exception:
                continue
            if o.get("type") == "ai-title":
                title = o.get("aiTitle")
            elif o.get("type") == "message":
                c = clean("\n".join(texts(o.get("content"))))
                if c:
                    turns.append((o.get("role"), c))
    return title, turns

3. 按用户需要组装

  • 只要「用户问了什么」→ 过滤 role == "user",每条截断 400–700 字。
  • 要「结论」→ 取对应 assistant 消息截断 2000–2500 字。
  • 长会话只看最后几条助手回复就够了,能拿到最终结论。

4. 与截图标题对齐

截图里的时间(「34 分钟前」)大概率对不上目录时间戳(目录名是创建时间,
界面显示的通常是最后活动时间)。用 ai-title 匹配标题,别靠时间猜。

坑

  1. 目录名(如 2026-09-18-14-30-31)是会话创建日,会话可能跨天续用 —— 文件 mtime 才是最后活动时间。
  2. 一个截图里可能出现「今天创建 + 前几天创建但今天还在用」的混合,别默认都在今天。
  3. ai-title 只在会话第一条消息后生成,极新的会话可能还是 None。
  4. 临时脚本写完就删,不要留在用户工作区。
  5. 归纳类需求默认产出一份自包含 HTML 报告并 present_files,对话里只给结论摘要。
    样式优先遵循用户已有的偏好(配色、字体、是否禁 CDN);用户没给偏好时,
    用简洁浅色主题、不引外部资源(离线可用)。

常见问题

5 问
答案由本站依据条目字段整理
历史会话归纳怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_9f79cc57/session-recap。安装方式为未标注。装完刷新技能列表或重开客户端。

历史会话归纳支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

历史会话归纳权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

历史会话归纳收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

历史会话归纳用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。