← 返回部落格
Ai預計閱讀 7 分鐘

ThinkRail:用 git worktree 讓一堆 agent 不要互相踩腳

發布於 2026年11月2日
ThinkRail:用 git worktree 讓一堆 agent 不要互相踩腳

JetBrains 有一種習慣:出的工具都假設你已經知道自己在幹嘛。ThinkRail 不太一樣,差別在 README 的一句話裡:把一個 git repo 當專案打開,然後從裡面切出 workspace,每個都是一個 git worktree。

這就是整個論點,而且比「一個 AI IDE」好。ThinkRail 是 JetBrains 的 incubator 專案,大約 7,100 顆星、過去一週多了 5,760 顆,圍繞著開放 coding agent pi 打造。JetBrains 加的不是一個聊天面板。是讓好幾個 agent 同時工作又不會互相踩到的管線。

用 worktree,而不是靠運氣

如果你在同一個 repo 上跑過兩個 agent,你知道那個壞法。一個開始改 auth.ts,另一個決定重構 auth.ts,然後你花一個下午在 merge conflict 上做考古,而兩邊都堅信那是自己寫的。

ThinkRail 的答案是:每個 workspace 都是一個 git worktree,有自己的分支、自己的工作目錄。agent 平行工作,沒有一個會碰到你的 checkout。你合併你喜歡的那個分支,其餘刪掉。

上面還有一層不錯的收拾功夫:完成的和休眠的 workspace 會自己落到專案專屬的架上——當它們的 pull request 合併或關閉,或安靜了一週之後——而當你再次在裡面工作,它們馬上回來。如果你曾經有二十個叫 fix-thing-2 的過期分支,這就是你不知道自己想要的功能。

Four identical wooden workbenches in a workshop, each lit by its own lamp

topbar 追蹤目前分支相對 origin 和它的 pull request 的狀態,並把下一步放在一次點擊之外:發佈、push,或開一個 PR,描述可以由計畫、commit、你的樣板或 agent 寫的草稿產生。PR 開了之後,它顯示 CI 檢查和審查決定,並讓你把失敗的檢查或分岔的分支丟回給 agent。

IDE 那部分是認真的,不是裝飾

可分割的 Monaco 分頁、帶即時 git 變更標記的檔案樹、變更檔案檢視、終端機和文件,全部限定在目前作用中的 workspace。你可以在檔案和 diff 上留錨定的審查意見,然後當成結構化 context 送進對話。或者在你已安裝的 IDE 裡打開那個 worktree——這是誠實承認我們有些人還是想要 WebStorm。

對話會串流,每個 session 有即時的 token 和成本讀數,這種細節只有在做這東西的人自己付帳單時才會出現。你可以介入正在跑的一輪、排一個後續、委派給 subagent,還有一份共享的計畫,agent 在你編輯的同時更新它。每個完成的步驟都可以單獨 commit 和審查,這比「這裡有 38 個檔案」好得多的審查單位。

⌘K 或連按兩下 Shift 的命令面板,會在所有開啟的專案裡找對話、workspace 和專案。什麼都不打的時候,它列出在等你的對話——對一個會跑很多 session 的工具,這是正確的預設。

規格,才是會活下來的東西

我一直回頭看的功能是 spec graph。一組相連的 SPEC.md 放在程式碼旁邊,agent 透過專屬的 spec_* 工具讀它、搜它、維護它。唯讀的 Specs 工具會在工作台裡把這個圖畫成樹。

理由很紮實。Context window 會結束。Session 會結束。活下來的是你寫下來的東西。大多數 agent 工具把「記住計畫」當成記憶問題;ThinkRail 把它當成文件問題,而那是六個月後人類也讀得懂的那個版本。

它也是最可能爛掉的功能。一個 agent 在維護、卻沒人審的 spec graph,會變成對一份已經不存在的軟體非常自信、非常詳細的描述。工具讓維護變便宜;它沒有讓維護免費,紀律還是在你身上。

安裝

兩種形式,都是加法:一個原生桌面安裝程式,和一個自帶的 CLI,會在瀏覽器裡開同一個 app。兩者都在 releases 頁面發佈 SHA256SUMS。

macOS 或 Linux 的命令列,以及 Windows 上的 Git Bash:

curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash

Windows,從 cmd 或 PowerShell:

powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex"

然後:

thinkrail ~/code/my-repo

你的 PATH 上要有 git,還有一個模型 provider。從 app 裡用 JetBrains AI 登入,或透過 pi 自己的 auth 接任何 provider。沒有 ThinkRail 帳號——這句話我沒預期會從 JetBrains 口中聽到。

Linux 上的桌面版需要 glibc 2.38 以上,加上 GTK 3、WebKitGTK 4.1、Ayatana AppIndicator 3 和 librsvg 2——實務上就是 Ubuntu 24.04 以後。更新器只在套件帶著有效的 HTTPS feed identity 時才會出現,所以比那個 identity 更早的安裝,得先手動裝一次。

讓它可攜的那個細節

ThinkRail 會讀你既有的 ~/.pi/agent 設定。如果你有工作用的 profile,用 PI_CODING_AGENT_DIR 指到別處。設定裡的 Custom servers 可以接任何 OpenAI 相容端點——LiteLLM、sglang、vLLM、Ollama、LM Studio、llama.cpp——並寫進 pi 的 models.json,所以那些模型會同時出現在對話的選擇器和 CLI 裡。

你 mcp.json 裡的 MCP 伺服器也會一起過來,行為是對的:伺服器沒有標成唯讀的呼叫,ThinkRail 會先在對話裡問;repo 自帶的伺服器在你核准前保持關閉;OAuth 伺服器可以從設定裡登入。

Agent 擴充也一樣務實。設定裡列出 agent 拿到什麼、讓你逐一切掉,並依來源安裝任何 pi 套件——npm、git 或本機資料夾——裝給你自己或裝給某個 repo。ask-user-question 和 visualize 工具是獨立發佈的套件,所以在終端機裡跑原版 pi,也能得到同樣的選擇題提示和行內圖示。

我會觀察的地方

一個 incubator 專案一週 7,600 顆星,對一個還沒走過 JetBrains 發佈週期的東西來說,是很大的關注。JetBrains 的 incubator 專案有變成產品的,也有悄悄停下來的,而 beta 這種東西,往往就變成你依賴的版本。

另一個風險是概念上的。這是一個非常完整、有很多介面的工具:worktree、spec、面板、擴充、MCP、主題、字型,四種內建語言,還有加自己語言的文件路徑。每一項都是一個「設定而不是寫程式」的地方。對 ThinkRail 最好的結局,是 worktree 模型變得理所當然到沒有人再討論它,而 app 的其他部分退到後面去。

如果你已經在跑平行 agent,而你目前的答案是「開很多終端機視窗然後交叉手指」,那就試。光是 worktree 隔離就值得下載。把它當一般 IDE 試,你會發現它沒打算當那個。

相關文章