如何用 GitButler but agentlog skim 快速浏览分支上之前的 Agent 会话并恢复上下文
2026/9/14 11:24:05 网站建设 项目流程

如何用 GitButler but agentlog skim 快速浏览分支上之前的 Agent 会话并恢复上下文

【免费下载链接】gitbutlerThe GitButler version control client, backed by Git, powered by Tauri/Rust/Svelte项目地址: https://gitcode.com/GitHub_Trending/gi/gitbutler

你接手一个 GitButler 分支时,可能不知道之前的 Agent 会话在这个分支上讨论过什么、做过什么改动、留下什么结论。GitButler CLI(but)的but agentlog skim命令可以把分支上捕获到的所有 Agent 会话按时间顺序压缩成一份"目录视图",帮你快速恢复上下文,而不用翻完整转录。前提是你已安装 GitButler CLI,在一个应用了 GitButler 分支的 Git 仓库中操作,且该分支之前已有被捕获的 Agent 会话记录(捕获由but agentlog hook完成,它从 hook 输入读取转录并写入本地 Agentlog 元数据,支持的 Agent 见--agent参数,可选codexclaude)。

skim 输出的是什么,什么时候已经够用

skim是压缩版目录:相关会话和会话内的每一个 turn 都会出现,按时间顺序排列,但每个 turn 只做缩写,不是完整转录。输出包含以下部分:

  • 目标行:Skim for branch <target-key>,标明本次按哪个目标发现会话;
  • 覆盖统计:显示了多少相关会话、多少个 turn、其中多少个与该目标直接相关;
  • 每个会话的块:turn 数、记录数、最后捕获时间、状态(local-onlypublished);
  • 每个 turn 一行:时间、记录数、自动标签(如implementeddecidedreviewedtestedrenamedinstallednext)以及user: .../assistant: ...预览;
  • 结尾固定提示:This is a skim: all related sessions and turns, abbreviated. For exact detail, use but agentlog show <session> --turn <turn> from JSON output.

官方技能文档(SKILL.md)给出的判断原则是:如果skim的信息足以回答一个轻量状态问题,直接基于它总结并停止;只有当skim太薄、含糊、缺少动机(why)、或你需要精确证据时,才继续下钻。

主路径:在当前分支上运行 skim

不需要先跑git branch --show-current之类的命令——不带参数时,skim会自动发现当前应用的 GitButler 分支(内部通过but --json status解析):

but agentlog skim

两种结果:

  • 找到了会话:输出以Skim for branch <target-key>开头,随后是会话列表。这时你可以通过每个 turn 的预览和标签判断之前做过什么、结论是什么;
  • 没有会话:输出No related agent sessions found.,说明该分支下没有可关联的捕获会话。此时如果怀疑是目标发现出了问题,用but status检查 GitButler 状态。

注意:agentlog子命令在 CLI 帮助树中是隐藏的,直接输入命令即可使用,不要依赖顶层 help 去发现它。

skim 不够时:用 JSON 取 handle,再用 show 下钻

人类可读的skim输出默认不打印 session/turn 的完整标识,这些 handle 只存在于 JSON 输出里。需要下钻时按文档流程操作:

# 重新以 JSON 运行 skim,从结果中取 session_key 和 turn_key but --json agentlog skim

JSON 中每个会话保留完整session_key,每个 turn 保留完整turn_key,同时target_kindtarget_keycoveragesessions[].turns等字段与人类输出对应。然后:

# 按 turn 粒度查看一个会话发生了什么 but agentlog show <session-key> --limit 20 # 查看某一个 turn 内部的精确记录 but agentlog show <session-key> --turn <turn-key> --limit 20

show不带--turn时回答"这个会话里发生了什么"(turn 粒度);带--turn时回答"这个 turn 内部精确发生了什么"(记录粒度,包含timestampkindroletexttool_nametool_input等字段)。--limit默认 20,只有当当前窗口没有覆盖到相关 turn 或 setup 时才调大。技能文档同时提醒:不要对每个候选会话都 dump 记录,从show <session-key> --limit 20开始、总结预览即可。

指定其他目标:branch / review / change

只有当用户明确给出目标时才传目标参数,否则一律先跑不带参数的skim

but agentlog skim branch <branch-name-or-ref> but agentlog skim review <review-id-or-pull-request-key> but agentlog skim change <change-id-or-key>

三者分别对应 GitButler 的分支引用、review(pull/merge request 形态)和 change id 目标。技能文档明确要求不要用普通 Git 的gitbutler/workspace分支作为 agentlog 目标。

边界与限制

  • skim是"完整但缩写":包含每个相关会话和每个 turn,但不包含每条记录,也不是完整转录。引用时应该说"以缩写形式浏览了完整 turn 历史",而不是说"恢复了完整上下文"。
  • 裸仓库(bare repo)不支持默认分支发现(skim不带参数时需要可解析的 workdir);但显式指定branch等目标的 skim 和show可以读取裸仓库元数据。
  • skim会读取local-onlypublished两种状态的会话,输出中每个会话都会标注状态。
  • 匹配到的会话应视为"相关证据"而非"归属"——表述上用"与分支 X 相关的会话",而不是"分支 X 的会话"。

【免费下载链接】gitbutlerThe GitButler version control client, backed by Git, powered by Tauri/Rust/Svelte项目地址: https://gitcode.com/GitHub_Trending/gi/gitbutler

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询