CV工程师
2026-10-28 02:03:20 阅读:38 · 3435 字 · 约 9 分钟
用过命令行里的 AI 编程 Agent 的人,多半体会过三种别扭:几个 Agent 挤在同一个目录里互相踩脚;改完一堆文件,回到终端里很难逐行 review;上一轮对话定下的决策,下一轮就被重新推导,甚至被推翻。
ThinkRail 是 JetBrains 开源(Apache-2.0,InnovationHub 项目)的一个 Agentic IDE,想一次性对付这三件事:把工作拆进互相隔离的 workspace,把编辑器、终端与 diff 评审收进同一个界面,把项目意图沉淀成 Agent 会主动读写的 spec。它不自己造 Agent——引擎是 pi,它只做外面那层「让 pi 更好用」。

ThinkRail 的架构有意做得很「薄」:pi 直接跑在进程内(createAgentSession),由它拥有模型、技能、上下文压缩、成本与会话状态;ThinkRail 拥有工作区、编辑器,以及两者之间那条「线」。官方把它概括成三环:
packages/server + packages/shared):基于 Bun.serve 的 HTTP + WebSocket 服务,一个 chat 对应一个进程内的 pi 会话;packages/contracts):宿主与前端之间带版本的类型化协议,是两者唯一的耦合点;apps/web):React 19 + Zustand + Tailwind v4,可独立发布,通过协议去连任意一个宿主。这条边界是它的核心主张:宿主只暴露 pi 报告的状态,不替它拼 prompt、不另立模型注册表——加的是界面,不是第二个 Agent。
在 ThinkRail 里,项目就是一个本地 git 仓库,而 workspace 是从它切出来的 git worktree——独立分支、独立工作目录:
~/code/my-repo ← project
└─ ~/.thinkrail/worktrees/
├─ workspace-1 ⎇ feature/auth agent A building
├─ workspace-2 ⎇ fix/flaky-test agent B fixing
└─ workspace-3 ⎇ spike/ideas you, exploring多个 Agent 并行时,各自的改动都留在自己的分支上,main 一直干净,直到你决定合并——「好的留下、其余删掉」就是一次 merge 加几行 git worktree remove。它也留了两个例外:直接在项目目录里工作(Default workspace),以及就地接管你已有的 worktree。顶栏会显示当前分支相对 origin 的位置和 PR 状态,下一步该 publish、push 还是开 PR 一目了然。
Monaco 编辑器标签页、带 git 变更标记的 Files 树、实时的 Changes diff、真实 PTY 终端,以及能锚定到具体行的评审评论——评论可以先攒着不惊动 Agent,最后作为结构化上下文一次性发给 chat。

chat 本身也按「引擎怎么想就怎么流」来做:一个 workspace 里可以并行跑多个 pi 会话,各自选模型、实时看 token 与花费;运行中可以插入新指令或排队下一轮,也可以委派给 subagent,或共同维护一份你也能编辑的计划(plan),完成的步骤单独提交、单独评审。
命令行 Agent 的老问题是「意图蒸发」:对话里的决定,会话一结束就没了。ThinkRail 的解法是 spec——每个模块旁放一份 SPEC.md,用前置元数据串成一张图谱(goal → architecture → modules → tasks),Agent 通过 spec_* 工具搜索、导航、维护它,Specs 工具把这张图渲染成树。关键在于它和代码一起进版本控制,所以「读 spec 就够理解一个模块」,而不必回头翻聊天记录。

桌面版与 CLI 共用同一套宿主。桌面版提供 macOS 14+(DMG)、Windows x64(解压 zip 后运行安装程序)、Linux x64 / ARM64(解压 tar.gz 后跑 installer,需要 Ubuntu 24.04+ 与 GTK3、WebKitGTK 4.1 等原生库)。CLI 一行装完:
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash
thinkrail ~/code/my-repoWindows 用 powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex"。首次启动会引导你连一个 provider(可登录 JetBrains AI,也可走 pi 自己的 auth)并挑一个项目;本机需要 git,状态都放在 ~/.thinkrail。
得泼一点冷水。ThinkRail 仍在快速迭代,版本以 nightly 为主(写作时最新稳定版 v0.2.0,nightly 已到 0.3.0-nightly.x)。翻了最近一周的 issue,有几个点动手前值得知道:
Failed to start websocket server: Unexpected 后退出(#962、#972),CLI 版则正常——Windows 上先从 CLI 试会更稳。/ws 端点未校验 Origin 或凭证,理论上任意网页都能连上本机正在运行的宿主并调用与 UI 相同的 RPC(#969,跨站 WebSocket 劫持);作者已在核对修复方案。在修复落地前,别在开着来路不明页面的浏览器里同时还跑着 CLI 宿主。node_modules、.venv 这类不会带过来,于是第一个命令常常要先自己装依赖(#968),社区正讨论用写时复制缓解。visualize 支持内联 Markdown / SVG(#964)等,都还在开放讨论中。ThinkRail 的取舍很明确:不做「更强的 Agent」,而是把 pi 周围那圈一直很粗糙的东西——隔离、评审、意图留存——认真做进一个 IDE 里。如果你已经在用命令行 Agent,又受够了并行时的互相干扰和难以逐行 review,它值得一试;但也要接受它仍处于 early 阶段、以 nightly 为主、个别平台还有启动坑。
项目在 GitHub 上,Apache-2.0 协议,官网 thinkrail.ai 有博客与 Discord。本站已经把 ThinkRail 收录进 /project 推荐,并在 /download 提供了官方 Releases 的下载入口;想找更多开发与运行环境相关的工具,可以去 /tool 看看。
相关阅读
扫描二维码获取文章详情
更多精彩内容尽在:WWW.ZNGG.NET
