跳转至

ThinkRail

JetBrains incubator project GitHub stars

ThinkRail - the agentic IDE that gets better every time you use it | Product Hunt

ThinkRail 是一款智能体 IDE,每次使用都会变得更好——它今天通过活的规范学习你的项目,明天将构建自己的能力。

我们围绕 pi 编码智能体构建了丰富的界面,将工作隔离到独立的工作区,并通过活的规范和可复用的技能为智能体提供持久的项目知识。接下来,我们将添加完整的扩展支持,让 ThinkRail 能够根据你的实际工作方式创建它所需的工具。

网站: thinkrail.ai · 博客: thinkrail.ai/blog

⭐ 如果你觉得 ThinkRail 有用,就给个星标吧——这能帮助其他人发现它。

Star History Rank GitHub Trending Repository of the Day

ThinkRail workbench: the Projects pane beside the left tool rail listing worktree workspaces and their Settled shelf, a finished pi conversation with its tool steps in the center, the resulting diff beside it, and the Specs tree above the Changes list on the right with their tools on the edge rail

一次 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)仍然优先。
  • 桌面应用或浏览器。 原生桌面应用,或 thinkrail CLI 在浏览器中打开同一个应用。两者都嵌入相同的引擎宿主;应用状态保存在 ~/.thinkrail 下。
  • 你的语言。 设置 → 语言会跟随你的系统语言或你选择的语言;内置英文和简体中文。若想添加 ThinkRail 尚未提供的语言,将翻译好的 en.json 放到 ~/.thinkrail/locales 中——保存后即可生效。智能体的回复和工具输出会保持智能体原始书写的内容。

The Specs tool, opened from the right edge rail, listing the project's spec tree while the product goal spec is rendered in the editor

项目的 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 或更新版本:
sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0 libayatana-appindicator3-1 librsvg2-2

打包好的稳定版和 nightly 桌面构建会在后台检查更新,并在 设置 → 更新 中提供更新:下载 → 准备更新 → 安装并重启。在你选择 安装并重启 之前,不会应用任何内容。然后 ThinkRail 会显示安装进度和日志,关闭,并以新版本重新打开。重启后,它会告诉你更新是否已安装。如果没有,它会说明原因并提供重试。只有在软件包带有有效 HTTPS 更新源标识时,更新器才会出现;在该标识出现之前安装的版本需要先手动安装一次。

命令行

安装程序会下载对应的二进制文件,验证其 SHA-256 校验和,并将 thinkrail 放入你的 PATH。

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,可附带一个 git 仓库作为要打开的项目:

thinkrail ~/code/my-repo

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.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 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