Skip to content

feat(Log): Log 视图新增 Checkpointer 选项并默认剔除自动快照提交#38

Merged
ThreeFish-AI merged 2 commits into
feature/1.x.xfrom
ThreeFish-AI/log-view-checkpointer-tab
Jun 30, 2026
Merged

feat(Log): Log 视图新增 Checkpointer 选项并默认剔除自动快照提交#38
ThreeFish-AI merged 2 commits into
feature/1.x.xfrom
ThreeFish-AI/log-view-checkpointer-tab

Conversation

@ThreeFish-AI

Copy link
Copy Markdown
Owner

背景

Hyper Git 的 Log 视图在 Conductor 等 AI Agent 编排环境中使用时,All 视图混入大量由 Agent 自动创建的「状态快照提交」——它们统一以 checkpoint: 前缀开头(LangGraph Checkpointer 语义),已知模式:

  • checkpoint:session-<uuid>-turn-<uuid>-start / -end
  • checkpoint:conductor-archive-<uuid>
  • checkpoint:conductor-getdiff

这些自动提交密度极高(每个 turn 2 条),淹没真实的人类提交历史,严重影响阅读。

变更内容

在 Log 视图工具栏 All / Current 之后新增第三个互斥选项「Checkpointer」,重组三类视图语义:

视图 分支范围 Checkpoint 自动提交 用途
All(默认) 全分支 --all 剔除 干净的人类提交历史(最常用)
Current 当前分支 HEAD 剔除 当前分支的干净历史
Checkpointer 全分支 --all 保留 原始完整视图(含全部自动快照,便于审计)

keepCheckpoint = (scope === 'checkpointer')

实现要点

  • engine 层(单一事实源)log-filter.ts 新增 CHECKPOINT_SUBJECT_RE = /^checkpoint:/iisCheckpointSubject() 谓词,LogClientFilterkeepCheckpoint 维度,applyClientFilters 链首追加剔除;log-query.tsLogScope 扩展为 'all' \| 'current' \| 'checkpointer'checkpointerall 共享 --all
  • shared 层protocol.ts 零改动(export type { LogScope } re-export 自动传导三态,单一事实源设计红利)。
  • adapter 层log-webview.ts 增第三个按钮 + active 切换 + fetchPage 注入 keepCheckpoint + normalizeScope 白名单兜底 + 抽 setScope 闭包统一三按钮。
  • 过滤走客户端:规避 git --invert-grep 全局反转会破坏用户既有 --grep 过滤的致命缺陷;DAG 布局对「被隐藏祖先」已有 dangling 边处理,剔除 checkpoint 后天然安全,无需改 graph-layout。
  • 提交分两批:① engine 纯逻辑 + 单元测试(可独立验证的原子单元);② adapter webview UI。

验证

  • pnpm run check-typestsc --noEmit 无报错)
  • pnpm run lint
  • pnpm run test:unit227/227 全绿log-filter 20 例含新增 checkpoint 识别与 keepCheckpoint 维度用例;log-query 8 例含 checkpointer 范围断言)
  • pnpm run compile(esbuild 打包成功,dist/extension.js 生成)
  • ⏳ 实机回归(建议 reviewer 验证):F5 启动 Extension Host,确认工具栏三按钮、All/Current 视图不含 checkpoint: 提交、Checkpointer 视图含全部、DAG 泳道渲染与增量加载正常。

改动文件

  • src/engine/log/log-filter.ts
  • src/engine/log/log-query.ts
  • src/adapter/webview/log-webview.ts
  • tests/unit/log-filter.test.ts
  • tests/unit/log-query.test.ts

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
@ThreeFish-AI ThreeFish-AI merged commit e4c2e91 into feature/1.x.x Jun 30, 2026
5 checks passed
ThreeFish-AI added a commit that referenced this pull request Jun 30, 2026
* chore(Release): 发布 v0.0.5 首个 MVP 正式版:版本号/发布说明/CHANGELOG/文档引用全链路收敛;

- package.json 版本号 0.0.1 → 0.0.5(唯一权威版本源)
- Release Note 重命名为 docs/releases/v0.0.5.md 并重写:升级叙事、更新规模口径、补入提交图 CI 状态(#37)与 Checkpointer 过滤(#38)两特性
- CHANGELOG.md 仅保留 v0.0.5 段,含全部特性介绍
- 同步 README/docs/knowledge-map/implementation-status 版本引用,消除 0.0.1 与 0.5.0 残留

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* docs(Branding): 全仓措辞去「复刻 IDEA」产品定位,改为功能化专业描述;

- 用户可见/发布文案(package.json、README、CHANGELOG、Release Note v0.0.5、log-ci-status):
  「完整复刻 IntelliJ IDEA Git 工具窗口/Commit 窗口」改为「提供统一的 Git 变更管理与提交工作流」;
  「IDEA 风格提交图/Commit 窗口」改为「可视化提交图(DAG)/自绘提交面板」
- 内部调研/架构/需求/里程碑文档:产品定位句功能化,机制佐证动词软化为「参考/借鉴 JetBrains」,
  完整保留 JetBrains 源码 URL、CheckinHandler/ChangeListManager 等客观技术对照与证据链
- src/ 与 tests/ 代码注释(32 src + 1 test):去「复刻/IDEA 风格/IDEA 等价」定位,
  机制佐证软化为参考 JetBrains,仅改注释不动逻辑
- 验证:pnpm run compile GREEN;test:unit 280/280 全绿;全仓无活跃产品定位措辞残留

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* chore(Release): 扩展更名为 Hyper Git - Agentic Git 并发布 v0.0.6 重新上架;

因 VS Code Marketplace 上「Hyper Git」名称被误删不可用,将扩展以新发布名重新上架:
- package.json:name hyper-git → hyper-git-agentic-git(extension ID,Marketplace 唯一标识);
  displayName → Hyper Git - Agentic Git;version 0.0.5 → 0.0.6
- 保留 publisher、viewsContainers id(hyper-git)/title(Hyper Git)、228 处 hyperGit.* 命令与配置 key 不变,不破坏用户既有配置
- Release Note 重命名为 docs/releases/v0.0.6.md 并更新标题/导语/安装段(新 vsix 名 hyper-git-agentic-git-0.0.6.vsix + 新搜索名)
- CHANGELOG 仅保留 [0.0.6] 段并注明改名上架;README/docs 版本与安装引用同步 v0.0.6
- 验证:pnpm run compile GREEN;vsce package 产出 hyper-git-agentic-git-0.0.6.vsix;全仓无遗留 0.0.5 引用

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* fix(Test): 集成测试 extension ID 改为从 package.json 动态推导,修复改名后冒烟测试失败;

扩展更名为 hyper-git-agentic-git 后,tests/suite/extension.test.js 中硬编码的旧 ID
`threefish-ai.hyper-git` 导致 getExtension 返回 undefined,三平台集成测试断言「扩展未找到」
失败,进而 Package/GitHub Release/Publish 全部 skipped、v0.0.6 未发布。

改为从 package.json 的 publisher + name 动态拼接 EXT_ID(单一事实源),
未来任何改名都不再需要同步改测试。本地集成测试验证 3 passing(exit 0)。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
@ThreeFish-AI ThreeFish-AI deleted the ThreeFish-AI/log-view-checkpointer-tab branch June 30, 2026 07:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant