ThinkRail:越用越好的智能体 IDE
本文目录
ThinkRail#
ThinkRail 是一个伴随你使用而不断变好的智能体 IDE(agentic IDE)——今天通过「活规格」(living specs)学习你的项目,明天则构建自己的能力。
我们围绕 pi 编程智能体(coding agent)打造了一套丰富的界面,把工作隔离到独立的工作区中,并通过活规格与可复用技能,赋予智能体持久的项目知识。接下来,我们要加上完整的扩展支持,让 ThinkRail 能够根据你实际的工作方式,创造出它所需要的工具。
网站:thinkrail.ai · 博客:thinkrail.ai/blog · Discord:thinkrail.ai/discord
⭐ 如果你觉得 ThinkRail 有用,请给它一个星标——这能帮助更多人发现它。
一张图说明:一个 pi 会话和它所做的改动,被限定在隔离的 git worktree 工作区中。
你能得到什么#
隔离的工作区。 把任意 git 仓库作为项目打开,并从中切出工作区作为 git worktree,每个都有自己的分支和工作目录。智能体并行工作,不会碰到你的检出;合并好的分支,删掉其余的。你也可以挂接已有的 worktree,或者明确就在项目文件夹本身里工作。完成的和休眠的工作区会自行沉淀到按项目划分的架子上——当它们的 pull request 被合并或关闭时,或者安静了一周之后——而当你再次在其中工作时,它们会立刻回来。顶栏显示当前分支相对 origin 以及其 pull request 的位置,下一步只需一次点击:发布、推送,或打开一个 PR——描述来自计划、提交、你的 PR 模板,或由智能体撰写的草稿。GitHub PR 一旦开启,它会显示 CI 检查和评审决定,并允许你把它标记为就绪、把失败的检查或分叉的分支交给智能体、用仓库最近使用的方法合并、重新打开,或删除远程分支。
智能体周围真正的 IDE。 可拆分的工作台,包含 Monaco 编辑器标签页、带实时 git 改动标记的 Files 树和 Changed 视图、终端以及文档——全部限定在当前活动工作区内。在文件和 diff 上留下锚定的评审评论,并把它们作为结构化上下文发送到聊天中,或者在你已安装的 IDE 中打开该 worktree。
像引擎思考一样流式输出的聊天。 每个工作区可以有几个并发的 pi 会话,每个都有自己的模型,以及实时的 token 与费用读数。引导一个正在运行的回合,或排队一个后续指令;把工作委派给子智能体;共同处理一份共享计划——智能体更新它,你来编辑——每个已完成的步骤都可以单独提交和评审。
以规格为事实来源。 一个相互连接的 SPEC.md 文件图与代码并存;智能体通过专门的 spec_* 工具读取、搜索和维护它,让意图能够跨越会话存续。只读的 Specs 工具会在工作台中把这张图渲染成一棵树。
技能与工作流。 你已为其他编程智能体保留的可移植 Agent Skills 会被原地读取;内置工作流会引导项目初始化、设计头脑风暴以及发布 pull request——推送工作区分支,并通过你自己的 gh 打开或更新 GitHub PR。
超越 shell 的智能体工具。 网络研究;智能体在聊天中向你提出结构化多选题,而不是靠猜;以及在聊天里直接渲染的内联图表、选项对比和文件预览——当智能体提议一个 UI 改动时,它会展示一个前后对照稿,你可以像对待 diff 一样发表评论。Settings → Extensions 列出了智能体可用的 ThinkRail 扩展,并允许你逐个关闭。questions 和 visualize 工具也各自作为普通 pi 包发布——pi install npm:@thinkrail/pi-ask-user-question 用于提问(@thinkrail/pi-ask-user-question),pi install npm:@thinkrail/pi-visualize 用于图表和预览(@thinkrail/pi-visualize)——这样终端里原生的 pi 也能拥有同样的工具。
MCP 服务器。 连接你 pi mcp.json 中的 MCP 服务器(或者在 Settings 中添加它们,以及一些预设):对于服务器没有标记为只读的调用,ThinkRail 会先在聊天中询问(或者在一个项目里永远允许你信任的工具);仓库定义的服务器在你批准之前保持关闭;你可以从 Settings 登录 OAuth 服务器;每个聊天的服务器会显示在它的后台命令和子智能体旁边。
你的服务商,你的凭证。 用 JetBrains AI 登录,或通过 pi 自带的认证连接任意服务商。ThinkRail 没有自己的账号体系。
你的 pi 配置。 ThinkRail 读取你现有的 pi 配置(~/.pi/agent)。如果要使用另一份——比如个人的 ~/.pi/agent-personal——或者要给智能体、终端和 MCP 服务器传入额外的环境变量,请在 Settings → Environment 中设置;它们在下次启动时生效。启动时设置的变量(PI_CODING_AGENT_DIR=… thinkrail)仍然优先。
桌面应用或浏览器。 原生桌面应用,或者用 thinkrail CLI 在浏览器中打开同一个应用。两者内嵌同一个引擎宿主;应用状态存放在 ~/.thinkrail 下。
你的语言。 Settings → Language 会跟随你的系统语言,或你选择的语言;内置英语、日语、简体中文和西班牙语。要添加 ThinkRail 尚未提供的语言,把一个翻译好的 en.json 放进 ~/.thinkrail/locales——保存即生效。智能体的回复和工具输出保持智能体写出的原样。
你的主题。 Settings → Appearance 内置深色、浅色、极简和高对比度主题。复制一个内置的 *.theme.json,改掉它的 id 和颜色,保存到 ~/.thinkrail/themes,就能做自己的主题。
一张图说明:项目的规格图以树状呈现,旁边渲染着规格本身。
安装#
ThinkRail 以两种可叠加的形式发布:原生桌面安装器和自包含的 thinkrail CLI。两者都在发布页面上附带 SHA256SUMS。
桌面端#
下载适合你平台的 thinkrail-desktop-* 资产:
- macOS 14+(Apple Silicon 或 Intel) —— 打开适合你架构的 DMG:
thinkrail-desktop-darwin-arm64.dmg或thinkrail-desktop-darwin-x64.dmg。 - Windows x64 —— 解压完整安装 ZIP,然后在其所在位置、挨着它自己的负载文件运行安装程序。
- Linux x64 / ARM64 —— 解压安装 tarball 并运行
installer。桌面构建需要 glibc 2.38+,以及 GTK 3、WebKitGTK 4.1、Ayatana AppIndicator 3 和 librsvg 2——即 Ubuntu 24.04 或更新版本:
sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0 libayatana-appindicator3-1 librsvg2-2
打包的稳定版和每日构建版桌面应用会在后台检查更新,并在 Settings → Updates 中提供:Download → Preparing update → Install & Restart。在你选择 Install & Restart 之前,什么都不会被应用。之后 ThinkRail 会显示安装的进度和日志,关闭,并在新版本上重新打开。重启后它会告诉你更新是否安装成功。如果没有,它会解释原因并提议重试。只有当包带有有效的 HTTPS 更新源标识时,更新器才会出现;早于该标识的安装需要先手动安装一次。
命令行#
安装器会下载正确的二进制文件,校验其 SHA-256,然后把 thinkrail 放进你的 PATH。
macOS / Linux(Git Bash 下的 Windows 同样适用):
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,可以可选地带上一个要作为项目打开的 git 仓库:
thinkrail ~/code/my-repo
thinkrail 需要 PATH 中有 git,以及一个模型服务商——可以在应用内用 JetBrains AI 登录,或使用你自己的服务商凭证。首次启动会引导你连接一个服务商并选择一个项目;Start a new project 会创建一个空的 git 仓库(默认在 ~/thinkrail 下),所以你不需要事先准备好一个。Add project → Clone repository… 会把一个 Git URL 克隆到运行 ThinkRail 的计算机上的新文件夹,并作为项目打开。选择父文件夹和文件夹名,可以可选地限制历史深度,也可以取消进行中的克隆。GitHub 和其他 Git 托管服务使用其既有的 Git 凭证和 SSH 密钥;已存在的目标文件夹绝不会被覆盖。thinkrail --help 列出所有参数;thinkrail --version 打印构建版本。
每日构建、固定版本、更新与卸载#
安装器接受 --channel stable|nightly 和 --version;固定版本必须属于所选的通道:
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash -s -- --channel nightly
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash -s -- --channel stable --version 0.1.2
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bash -s -- --channel nightly --version 0.2.0-nightly.10
在 Windows 上,选项是环境变量(THINKRAIL_CHANNEL、THINKRAIL_VERSION、THINKRAIL_PREFIX、THINKRAIL_NO_MODIFY_PATH):
$env:THINKRAIL_CHANNEL='nightly'; irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex # PowerShell
set "THINKRAIL_CHANNEL=stable" && set "THINKRAIL_VERSION=0.1.2" && powershell -c "irm https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.ps1 | iex" # cmd
已安装的稳定版和每日构建版 CLI 宿主会定期在 Settings → Updates 中提供 Run Update。它会在后台运行宿主机器上的 thinkrail update——即使 UI 是在另一台机器的浏览器中打开也一样——更新成功后,会请你手动重启宿主。你可以在任何平台直接运行 thinkrail update:它会为已安装的通道重新运行安装器,并替换 <prefix>/bin/thinkrail[.exe];只有在需要明确覆盖时才传入 --channel 或 --version。
thinkrail uninstall 会移除可执行文件、安装器添加的 PATH 条目和安装元数据,并询问是否删除你的 ~/.thinkrail 应用状态(默认保留——--remove-data 会删除它,-y 跳过询问)。
更倾向手动安装?从发布页面下载二进制文件和 SHA256SUMS,并校验校验和。为了让自更新生效,把它重命名为 thinkrail(Windows 上是 thinkrail.exe),放到 <prefix>/bin/thinkrail[.exe];保留发布文件名或存放在其他位置的二进制文件,必须手动替换或用脚本重新安装。
平台说明#
| 平台 | 桌面端 | CLI |
|---|---|---|
| macOS Apple Silicon / Intel | DMG | 已签名二进制 |
| Windows x64 | 已签名的安装程序与应用二进制 | 已签名 .exe |
| Linux x64 / ARM64 | 安装 tarball,未签名 | 未签名 |
JetBrains 会为 Windows CLI、桌面安装程序,以及桌面应用安装的每一个可执行文件和 DLL 签名。macOS 的 CLI 已签名,但尚未公证。已签名且已公证的桌面 DMG 需要 JetBrains 协调的服务流水线;较早发布的 DMG 和本地构建的包可能仍未签名,会被 Gatekeeper 拦截。Linux 产物未签名。
分析与隐私#
ThinkRail 应用会收集基础使用事件——启动、创建聊天、发送消息、连接服务商——并关联到一个随机的安装 ID。使用分析从不包含提示词、代码、文件、凭证或账号身份。错误报告也始终会发送,关联同一个安装 ID,以便我们修复崩溃:错误类型与代码,以及它发生在 ThinkRail 自身代码的什么位置。它们从不包含错误消息、文件路径、名称、URL,或任何来自你的项目或扩展的内容。额外的产品使用情况和「你如何得知 ThinkRail」只会在 Share additional usage data 打开时共享;该开关会在首次运行设置的某个步骤中提供(或在你跳过它之后立即提供),并位于 Settings → Privacy。从命令行启动时,thinkrail --no-analytics(或 THINKRAIL_NO_ANALYTICS=1)会在该次运行中关闭额外共享。开启额外共享后,打包构建可能会在你的浏览器中打开一次 ThinkRail 博客,把你的安装与带来这次访问的网站访问关联起来——仅在你于该网站接受过营销 cookie 或无需同意的情况下——该关联会在 30 天后过期。
反馈问卷与使用分析是分开的。ThinkRail 可能会邀请你参加一个简短问卷,你也可以从 Settings → Feedback 打开它。无论你的分析设置如何,你的回答——包括你输入的任何内容——只会在你按下 Send 时发送给 ThinkRail 团队,并关联到同一个随机安装 ID——而不是你的名字或账号。请不要包含机密信息、代码或个人数据;如需删除你的回答,请发邮件至 info@thinkrail.ai。
ThinkRail 应用和 ThinkRail 网站(thinkrail.ai)使用 PostHog Inc. 的服务进行分析。网站还使用 PostHog Surveys 在桌面版下载后收集反馈,并且仅在你选择填写时才收集你的电子邮件地址,该地址用于征求进一步反馈和发送产品更新。PostHog 的隐私政策见 posthog.com/privacy。
底层实现#
ThinkRail 是一个瘦宿主,它在进程内运行 pi,并把它桥接到一个丰富的 Web UI。pi 负责模型、技能、压缩、成本和会话状态;应用负责工作区、编辑器和通信线——它绝不会在背后偷偷拼装提示词。三层结构:
- 引擎宿主 ——
packages/server(外加packages/shared):一个Bun.serve的 HTTP+WS 宿主,每个聊天一个进程内 pi 会话,由apps/cli或apps/desktop启动。 - 通信线 ——
packages/contracts:宿主与 UI 之间带类型、带版本的协议。 - UI 客户端 ——
apps/web:React 19 + Zustand + Tailwind v4,独立发布;它通过通信线连接宿主,只依赖 contracts。
goal-and-requirements.md 和 architecture.md 是权威的产品与设计规格。ThinkRail 采用规格先行(spec-first)的开发方式:每个模块旁边都有一个 SPEC.md,任何移动边界、契约或决策的改动,都会在同一次改动中更新规格。
开发 ThinkRail#
你需要 Bun 1.4.4(固定的包管理器与运行时)、Node.js ≥ 22.19(进程内 pi 引擎所需),以及一个已认证的 pi 服务商来处理智能体工作。
git clone https://github.com/JetBrains/thinkrail.git
cd thinkrail
bun install
bun run dev # host + web client together; Ctrl+C stops both
bun run --filter @thinkrail/cli dev # browser launcher
bun run build:binary # standalone CLI artifact
bun run desktop:dev # package and open the Electrobun app
bun run desktop:build # package without opening it
CONTRIBUTING.md 涵盖检查项、端到端测试套件、桌面打包以及仓库布局。
贡献#
欢迎贡献——见 CONTRIBUTING.md。本项目及社区受行为准则约束。
社区#
加入我们的 Discord 提问、分享你在构建的东西,并与团队交流。缺陷和功能请求请提到 GitHub issues。
许可证#
基于 Apache License 2.0 授权。