这个项目能做什么
lore 是一个本地命令行工具和 Web 浏览器,用于管理 Claude Code 在机器上写入的所有内容。Claude Code 将会话转录、内存和提示词历史记录保存在一个按项目分片的 data 目录下,且默认保留期约为 30 天。lore 对这些原始数据进行增量镜像备份并建立索引,从而为其自身的会话历史提供查询界面。
安装与平台:该项目仅需要 Bun,无需 rsync 或工具链依赖。其持续集成(CI)负责运行测试套件并在 macOS、Linux 和 Windows 上安装二进制文件。包括浏览器在内的所有指令均可在三个平台上运行。唯一的例外是 lore server supervisor,它通过 launchd 用户代理在后台运行浏览器,因此仅限 macOS,其他用户请使用 lore serve。安装脚本构建冻结二进制文件,拒绝脏工作树,且每次调用都会在 stderr 中报告其版本和提交记录。harness-corpus 脚本在 Claude Code 更新后将守护进程的形状快照为测试固定项。
数据模型与索引:well 是 Claude 项目路径下的一个目录存储,以其绝对路径命名(非字母数字字符会被扁平化),因此命名是有损的。每个会话是一个 JSONL 事件日志而非聊天日志,主要包含工具流量、思考信封和 harness 事件,以及同级的子代理转录和工作流脚本。index 命令扫描 wells,解析 JSONL 并根据修改时间和大小增量构建一个带有 spawns 和 workflows 通道的 SQLite FTS5 索引。索引是一个可派生的、可重建的产物,通过版本升级而非迁移,且拒绝打开由更高版本 lore 写入的数据库。
命令:archive 将 Claude 数据目录镜像到 lore 存档中,且不传播上游的删除操作;wells 列出带有反 slug 真实路径和标志的存储;sessions 和 session 遍历 well 的时间轴或按通道导出单个会话;search 在各通道中查询 FTS5,并可包含提示词历史主干;spawns 报告每个子代理的验证模型与请求模型,并带有漂移标志和启动成本;workflows 总结编排运行情况;polls 标记每轮都重新读取后台任务输出文件的会话,并计算价格;tools 统计工具、技能和命令的调用次数;usage 按 well、会话、模型、日、周或月分析计费 Token 类别及思考量,并提供带日期的标价等值列表;trace 将单个会话渲染为事务、步骤、工具调用和注释;agents 将实时名册与索引关联;stats 报告语料库总量、通道和警告。每个命令都支持帮助输出,许多命令接受匹配子字符串的 well 过滤器,以及一个用于精确全值匹配的标志。
浏览器:lore serve 将索引渲染为服务器端渲染的 HTML 页面,涵盖近期会话和 wells、Token 使用情况、单个 well 和会话、搜索结果以及写入提交消息的会话尾注。每个页面也可以响应 JSON,读取指令挂载在带有 OpenAPI 规范的命令路径下,且 api 指令公开与命令相同的处理器。默认端口为 4949,主机选项控制绑定,包括在存在 Tailscale 地址时使用该地址。
判定层:在确定性的、无模型的 CLI 之上,是一个可选的 wiki 工作流。wiki init 根据内置模板创建 markdown 的 git 仓库,skills add 为每个命令安装技能,以便 Claude Code 会话能够发现该 CLI。将原始材料导入 wiki、将 wiki 页面升级为 git 提交文档以及对陈旧规范进行 lint 检查,这些都是交互式 Claude 会话通过驱动 CLI 执行的协议;它们记录在设计笔记中而非作为命令发布,因此工具本身不需要 API 密钥。docs 指令索引仓库中提交的 markdown,直接从 git 对象而非工作树读取。
数据处理:它读取 Claude 数据目录,且对于 docs,读取代码根目录下的 git 对象存储;它写入 lore 主目录、可选的 wiki 仓库,以及(仅限 macOS supervisor)一个 launchd plist。除了请求 docs 索引时的显式 git fetch 和浏览器监听的端口外,没有网络活动;没有任何数据上传,也没有模型调用、遥测或账户。配置通过经过验证的环境变量完成,例如 Claude 目录、lore 主目录、代码目录、wiki 目录以及 docs 排除和辅助列表。
一个独立的、无依赖的 Python 脚本直接读取转录 JSONL,并按原因和会话后续操作报告被拒绝的工具调用,并附带描述如何审查它们的运行手册。
状态:一个以原样发布的早期个人工具,仅限本地使用,采用 MIT 许可证,没有成为产品的计划。
评论
0 评分人数达到10人后显示
登录后参与讨论。