ThinkRail¶
ThinkRail 是一款智能体 IDE,每次使用都会变得更好——它今天通过活的规范学习你的项目,明天将构建自己的能力。
我们围绕 pi 编码智能体构建了丰富的界面,将工作隔离到独立的工作区,并通过活的规范和可复用的技能为智能体提供持久的项目知识。接下来,我们将添加完整的扩展支持,让 ThinkRail 能够根据你的实际工作方式创建它所需的工具。
网站: thinkrail.ai · 博客: thinkrail.ai/blog
⭐ 如果你觉得 ThinkRail 有用,就给个星标吧——这能帮助其他人发现它。
一次 pi 会话及其所做的更改,限定在一个隔离的 git-worktree 工作区中。
你将获得¶
- 隔离的工作区。 打开任意 git 仓库作为项目,并从中以
git worktree形式切出工作区,每个工作区都有自己的分支和工作目录。智能体可以并行工作,而不影响你的检出内容;合并好的分支,删除其余分支。你也可以附加已有的 worktree,或直接在项目文件夹中工作。已完成和休眠的工作区会自动归置到每个项目的搁架上——当它们的 pull request 合并或关闭时,或经过一周无活动后——而当你再次在其中工作时,它们会立刻恢复。顶部栏会显示当前分支相对于origin及其 pull request 的位置,下一步只需一次点击:发布、推送,或打开一个根据计划、提交记录、你的 PR 模板或智能体撰写草稿来描述内容的 PR。一旦 GitHub PR 打开,它会显示 CI 检查和评审决定,并让你将其标记为就绪、将失败的检查或偏离的分支交给智能体、使用仓库上次使用的方法合并它、重新打开它,或删除远程分支。 - 一个围绕智能体的真正 IDE。 可拆分的工作台包含 Monaco 编辑器标签页、带实时 git 变更标记的文件树和“已更改”视图、终端和文档——所有这些都限定在活动工作区内。你可以在文件和差异上留下锚定的评审评论,并将其作为结构化上下文发送到聊天中,或在已安装的 IDE 中打开 worktree。
- 像引擎思考一样流式输出的聊天。 每个工作区可以有多个并发的
pi会话,每个会话都有自己的模型、实时 token 和成本读数。你可以引导进行中的一轮对话或排队后续问题,委派给子智能体,并协作处理一个由智能体更新、由你编辑的共享计划——每个完成的步骤都可以单独提交和评审。 - 以规范(Specs)为基准事实。 一组相连的
SPEC.md文件与代码并存;智能体通过专用的spec_*工具读取、搜索和维护这些文件,因此项目意图能在会话结束后依旧存在。只读的 Specs 工具会将该图渲染为工作台中的树形结构。 - 技能与工作流。 你为其他编码智能体准备的便携式 Agent Skills 会被就地读取,内置的工作流则指导项目设置、设计头脑风暴和交付 pull request——通过你自己的
gh推送工作区分支并打开或更新其 GitHub PR。 - 超越 shell 的智能体工具。 网络研究,以及直接在聊天中渲染的内联图表、选项对比和文件预览——当智能体提出 UI 变更时,它会显示一个前后对照的 mockup,你可以像对 diff 一样对其进行评论。设置 → 扩展(Extensions)会列出智能体获得的 ThinkRail 扩展,并允许你逐个关闭它们。
- MCP 服务器。 连接你的
pi的mcp.json中的 MCP 服务器(或从设置中添加它们以及一些预设):对于服务器未标记为只读的调用,ThinkRail 会在聊天中先请求确认(或者始终允许你在项目中信任的工具);对于仓库定义的服务器,在获得你批准前保持关闭;你可以从设置中登录 OAuth 服务器;每个聊天的服务器会显示在它的后台命令和子智能体旁边。 - 你的提供商,你的凭据。 使用 JetBrains AI 登录,或通过
pi自身的认证连接任何提供商。ThinkRail 没有自己的账户体系。 - 你自己的
pi配置。 ThinkRail 会读取你现有的pi配置(~/.pi/agent)。如果想使用另一个配置——例如个人用的~/.pi/agent-personal——或者想向智能体、终端和 MCP 服务器传递额外的环境变量,请在设置 → 环境中进行配置;这些配置会在下次启动时生效。启动时设置的变量(PI_CODING_AGENT_DIR=… thinkrail)仍然优先。 - 桌面应用或浏览器。 原生桌面应用,或
thinkrailCLI 在浏览器中打开同一个应用。两者都嵌入相同的引擎宿主;应用状态保存在~/.thinkrail下。 - 你的语言。 设置 → 语言会跟随你的系统语言或你选择的语言;内置英文和简体中文。若想添加 ThinkRail 尚未提供的语言,将翻译好的
en.json放到~/.thinkrail/locales中——保存后即可生效。智能体的回复和工具输出会保持智能体原始书写的内容。
项目的 spec 图以树状展示,同时旁边渲染了 spec 本身。
安装¶
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 或更新版本:
打包好的稳定版和 nightly 桌面构建会在后台检查更新,并在 设置 → 更新 中提供更新:下载 → 准备更新 → 安装并重启。在你选择 安装并重启 之前,不会应用任何内容。然后 ThinkRail 会显示安装进度和日志,关闭,并以新版本重新打开。重启后,它会告诉你更新是否已安装。如果没有,它会说明原因并提供重试。只有在软件包带有有效 HTTPS 更新源标识时,更新器才会出现;在该标识出现之前安装的版本需要先手动安装一次。
命令行¶
安装程序会下载对应的二进制文件,验证其 SHA-256 校验和,并将 thinkrail 放入你的 PATH。
macOS / Linux(Windows 下也可在 Git Bash 中使用):
Windows — 同样的命令在 cmd 和 PowerShell 中均可使用:
然后运行 thinkrail,可附带一个 git 仓库作为要打开的项目:
thinkrail 需要 PATH 中的 git 和一个模型提供商——可以从应用中登录 JetBrains AI,或使用你自己的提供商凭据。thinkrail --help 列出所有标志;thinkrail --version 打印构建信息。
Nightly 构建、固定版本、更新与卸载
安装程序接受 --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
已安装 stable 和 nightly CLI 的宿主机会定期在 设置 → 更新 中提供 运行更新。它会在后台运行宿主机上的 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 的,仅在 共享额外的使用数据 开启时才会共享;该开关在首次启动时提供,位于 设置 → 隐私 中。从命令行启动时,thinkrail --no-analytics(或 THINKRAIL_NO_ANALYTICS=1)会在该次运行中关闭额外共享。当额外共享开启时,打包构建可能会在浏览器中打开一次 ThinkRail 博客,以将你的安装与带你来到这里的网站访问关联起来——仅在你已接受网站上的营销 cookie 或无需同意的情况下——而且该关联会在 30 天后过期。
底层原理¶
ThinkRail 是一个轻量级宿主,它在进程内运行 pi,并将其桥接到丰富的 Web UI。pi 负责模型、技能、压缩、成本和会话状态;应用则负责工作区、编辑器和通信链路——它绝不会在幕后拼装提示词。三个环:
- 引擎宿主 —
packages/server(+packages/shared):一个Bun.serveHTTP+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 provider,用于 agent 相关工作。
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。本项目及社区受行为准则约束。
许可证¶
依据 Apache License 2.0 许可。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 th/thinkrail