用原生的方式,
駕馭 jj。

為 Jujutsu 打造的快速用戶端,鍵盤操作順手。變更圖、差異、分割、衝突,一個視窗全部搞定。

免費 · macOS 26 或以上版本 · Linux x86_64 & aarch64 · Windows 測試版

JayJay — DAG 圖與差異(深色) JayJay — DAG 圖與差異(淺色)

道地的 jj 體驗

變更、書籤、revset、可變歷史,全照 jj 的思路走,不硬套 git 分支。

真正原生

macOS 用 SwiftUI,Linux 用 GPUI,底層是同一個直接連結 jj-lib 的 Rust 核心。不解析命令列輸出,也不包 Web 檢視。

完全免費

不用訂閱,也不收集你的儲存庫資料。匿名的版本與系統統計可在設定中關閉。

差異

像讀程式碼一樣看變更。

統一或並排檢視、檔案樹、tree-sitter 高亮與行內變更,並為 Markdown、Notebook、CSV/TSV、SARIF 和二進位 plist 提供豐富預覽。

具檔案樹的並排差異 具檔案樹的並排差異
審查

怎麼改,審查進度都還在。

按空白鍵標記檔案已審查,或點選差異區塊旁的色條,只標記那一部分。已審查的差異區塊在編輯和重定基底後依然有效,審查備註也一直跟著那一行。

AI 代理程式可透過 jayjay CLI 讀取你的審查備註並標記檔案。用 npx skills add hewigovens/jayjay --skill jayjay 安裝 JayJay 技能,或在 macOS 上從「設定」>「整合」安裝。

具已審查差異區塊與行內審查備註的工作副本審查 具已審查差異區塊與行內審查備註的工作副本審查
差異編輯

想分哪行,就分哪行。

從變更的任一檔案裡挑出差異區塊或個別的行,分割成乾淨的子變更或平行變更。

Interdiff

任意兩個修訂,隨時比較。

按住 Shift 點選兩個變更、兩個書籤,或 PR 分支和它的基準,就能看清兩者之間到底改了什麼。遇到分歧的變更,用比較分歧版本決定留下哪一個。

Interdiff Interdiff
堆疊 Pull Request

每個變更一個 PR,層層堆疊。

在線性堆疊的頂端按右鍵,選擇建立 / 更新堆疊 PR。JayJay 會為每個變更命名分支並推送,再為每個變更建立一個 GitHub PR、GitLab MR 或 Cursor Origin PR,並設定好相互依賴的基準。

可在「設定」中登入 GitHub 和 GitLab,也可使用現有的 CLI 登入或環境變數權杖。Cursor Origin 使用你的 origin auth login 憑證。

衝突

不用離開 App,就能解決衝突。

在內建合併編輯器裡逐塊選擇左側、右側或基準,也可以直接改衝突標記;還沒解決完也能先儲存。也可以交給你設定好的外部工具。

內建合併編輯器 內建合併編輯器
演進記錄

回顧變更的演進過程。

變更的每一個快照都依時間排好,可篩選,可一鍵恢復。還原重定基底、找回遺失的工作,都不用手動翻操作記錄。

變更演進記錄 變更演進記錄
操作記錄

什麼都能還原。

每次捨棄、重定基底、分割都會記錄為一次操作。點選狀態列裡最近的操作,或按 ⌘⇧U,開啟操作記錄,把儲存庫恢復到之前的任一時刻。

更多

jj 的功能,一應俱全。

分道 DAG 圖

分叉合併分道顯示、最短變更 ID,還有具預設標籤的 revset 篩選。

書籤

把書籤拖到任一變更上即可移動。依遠端顯示領先、落後與分歧狀態。

什麼都能還原

一個快捷鍵,沿著操作記錄往回退。

豐富預覽

圖片前後對照、Markdown、Notebook、CSV/TSV、SARIF 和二進位 plist。

檔案逐行追溯

查看檔案每一行最後由哪個變更修改。

AI 描述

由 Codex、Claude 或 Apple Intelligence 草擬變更描述。

常用工具

VS Code、VSCodium、Zed、Xcode、Vim、終端機、iTerm2 和 Ghostty。

Git 互通

與 Git 共存的 jj 儲存庫、Git LFS、子模組,開箱即用。

鍵盤

所有操作,鍵盤直達。

在指令面板裡模糊搜尋任何操作,輸入 help split 了解功能,或加 ! 前綴直接執行 jj 指令並查看輸出。

指令面板 指令面板
  • 指令面板⌘⇧P
  • 書籤管理器⌘⇧B
  • 還原(操作記錄)⌘⇧U
  • 在差異中尋找⌘F
  • 開啟儲存庫⌘O
  • 重新整理⌘R
  • 標記為已審查空白鍵
  • 下一個 / 上一個檔案JK
  • 比較修訂⇧點選
開始使用

裝好,開啟儲存庫,就能開始。

macOS

macOS 26 或以上版本 · Apple 晶片 · 已簽署並公證

# Homebrew 首次安裝時信任該 cask
$ brew install --cask hewigovens/tap/jayjay
$ jayjay ~/my-project

或下載 App。

Linux

x86_64 & aarch64 · AppImage、Debian/Ubuntu、Arch

# Debian 套件或 AppImage;已驗證校驗和
$ curl -fsSL https://jayjay.hewig.dev/install.sh | bash
# Arch:AUR
$ yay -S jayjay-appimage

安裝套件在 GitHub Releases 上。

為什麼做 JayJay

為 jj 而生,不是幫 git 套殼。

Jujutsu 的模型比 git 更好,但大多數圖形用戶端不是還在用 git 分支的思路,就是套了殼的 Web 應用程式。JayJay 的起點只有一個問題:為什麼沒有一個真正原生、真正懂 jj 的用戶端?

所以它有自己的取捨,而且很快:每個工作流程只提供一種原生做法,一切照 jj 的思路走。JayJay 完全免費,由開發者為開發者打造。每個細節都用了心,甚至藏了一個彩蛋,你找得到嗎?

FAQ

常見問題

JayJay 是什麼?

Jujutsu (jj) 的原生圖形用戶端,支援 macOS 與 Linux。Jujutsu 是重新構想 git 模型的版本控制系統,使用可變歷史,以變更取代提交,以書籤取代分支。JayJay 以 Rust(直接封裝 jj-lib,不解析 CLI 輸出)和 SwiftUI 打造。

Jujutsu 有圖形介面嗎?

有。JayJay 是適用於 macOS 與 Linux 的全功能原生 jj 圖形用戶端:DAG 視覺化、具 tree-sitter 高亮的統一與並排差異、interdiff、差異編輯模式、檔案逐行追溯、一鍵解決衝突,以及所有常用 jj 操作(squash、split、absorb、revert、merge、duplicate、describe、abandon),無需記憶指令參數。

如何在 macOS 上安裝 JayJay?

最簡單的方式是 brew install --cask hewigovens/tap/jayjay,Homebrew 6.0 會在首次安裝時信任該 cask。也可以從 GitHub Releases 下載已簽署並公證的 App。需要 macOS 26 或以上版本。

JayJay 支援 interdiff(比較兩個修訂)嗎?

支援。在 DAG 中按住 Shift 點選兩個修訂,就能像 PR 一樣比較:使用相同的統一與並排檢視及字詞高亮,呈現兩個變更內容之間的差異。

JayJay 支援並排差異嗎?

支援。一鍵切換統一與並排檢視,兩者都使用 tree-sitter 語法高亮和字詞高亮。圖片檔案(PNG、JPG、SVG、HEIC 等)以實際的前後圖片顯示;當原始文字不夠直觀時,Markdown、Notebook、CSV/TSV、SARIF 和二進位屬性列表還有豐富預覽。

JayJay 能把個別行或差異區塊提取到新變更嗎?

能,這就是差異編輯模式。選取檔案、差異區塊或行範圍,再分割到新的子變更或平行變更。在工作副本上,也可以按右鍵 →「捨棄所選行」來丟棄個別修改。

JayJay 和命令列的 jj 有什麼不同?

它是 CLI 的補充,而不是替代。DAG 圖、視覺化差異審查、差異編輯、演進檢視器和書籤管理器在圖形介面中容易得多。指令面板(⌘ ⇧ P)可搜尋操作與本機說明,並支援 jj(或 !)前綴,在視窗內執行原始 jj 指令。

JayJay 是開源的嗎?

免費,原始碼公開(source-available)。macOS App 採用 BSL 1.1 授權:可免費使用、分支、修改和再散布,只有在付費 App 商店散布才需要許可。它將於 2030-03-23 轉為 Apache-2.0。Rust crate 已經是 Apache-2.0。

如何在 Linux 上安裝 JayJay?

執行 curl -fsSL https://jayjay.hewig.dev/install.sh | bash。該指令碼會先驗證校驗和,再於以 apt 為基礎的系統上安裝最新的 Debian 套件,於其他 x86_64 或 aarch64 系統上安裝 AppImage;再次執行即可升級。在 Arch Linux 上,請安裝 AUR 中的 jayjay-appimage,例如 yay -S jayjay-appimage。加上 --beta 可在有比穩定版更新的測試版時安裝它。之後執行 jayjay /path/to/repo,或在視窗中開啟儲存庫。指南(英文)列出了支援的內容。

如何在 Arch Linux 上安裝 JayJay?

為 x86_64 或 aarch64 安裝 AUR 中的 jayjay-appimage,例如 yay -S jayjay-appimage。自訂 pacman 儲存庫已停用;透過 AUR 升級前,請從 /etc/pacman.conf 中刪除整個 [jayjay] 區段。若要試用 AppImage 測試版,請先移除已安裝的套件,再以 --beta 執行 Linux 安裝指令碼。指南(英文)中有詳細步驟。

JayJay 能在 Windows 或 Linux 上執行嗎?

Linux 和 Windows 使用 GPUI 介面,並與 macOS 共用 Rust 核心。Linux 版以 AppImage、Debian/Ubuntu 套件和 AUR 套件提供,支援 x86_64 和 aarch64;詳見指南(英文)。Windows 支援處於測試階段。可從 Microsoft Store 安裝 Windows x64 版,或使用 GitHub Releases 上的可攜式 ZIP 取得測試版組建。Windows 需要 Windows 10 版本 1903 或以上,或 Windows 11,並需另行安裝 jj。Store 版由 Store 管理更新;可攜式 ZIP 沒有自動更新功能。

部落格

開發筆記

文章為英文。