JeecgBoot AI专题研究 | 一个 Rust + Tauri 2 写成的 AI 原生开发环境(ADE),拆解它的设计取舍与上手方法


Terax:7MB 的 AI 原生开发环境

为什么又冒出一个"开发环境"

先回想一下日常写代码时桌面上开着什么:一个 VSCode 或 IDEA,一个 iTerm2 / Windows Terminal,一个 Git 图形客户端,再加一个浏览器标签页里的 AI 对话框。改一行代码,要在四个窗口之间来回切换,注意力被切得七零八落。

工具本身也越来越重。不少新一代 AI 终端都是 Electron 套壳,安装包几百 MB,冷启动要等好几秒,后台还默认开着遥测。至于 AI 改代码,体验也谈不上安心:有的工具直接把修改写进文件,改坏了只能自己去翻 Git 记录回滚;API Key 以明文躺在配置文件里,公司的敏感代码也不敢随便发给云端模型。

Terax 想解决的就是这几件事。它在 GitHub 上的仓库是 crynta/terax-ai,已经有 9.2k Star、1k Fork,Apache-2.0 协议。官方给自己的定位是 AI-native dev environment(ADE,AI 原生开发环境):一个窗口里放下终端、代码编辑器、Git 可视化、网页预览和 AI 智能体侧边栏,安装包只有 7~8MB,不需要注册账号,没有遥测。

一句话定位:终端优先,AI 受控

和 Cursor 这类"编辑器 + AI"的路线不同,Terax 是以终端为中心长出来的,编辑器、Git、预览都围绕终端组织。几个关键设定:

  • 技术底座:Rust 后端 + Tauri 2 + React 19 前端,不打包 Chromium,直接用操作系统自带的 WebView;
  • 一体化窗口:多标签终端、CodeMirror 6 编辑器、文件管理器、Git 面板、Web 预览、AI Agent 侧边栏;
  • 隐私默认值:无账号、零遥测,API Key 写进系统密钥链(keyring),不会落成明文文件;
  • 两种 AI 接法:自带 Key 接 OpenAI、Claude、Gemini、DeepSeek、Groq、xAI、Cerebras、Mistral、OpenRouter 及任意 OpenAI 兼容接口;或者接 LM Studio、Ollama、MLX,完全离线跑本地模型。

下图是一个典型工作场景:左侧文件树,中间是本地开发服务器的网页预览,右侧 AI 侧边栏里的"Code Reviewer"正在读文件、改代码,每一步工具调用都清楚地列出来。

Terax 主界面:文件树 + 网页预览 + AI 智能体侧边栏

把六个模块拆开看
终端:原生 PTY,不是网页里的模拟

很多 Electron 终端在 Node 进程里包一层 pty,输入延迟和内存都不理想。Terax 的终端后端用的是 Rust 的 portable-pty,前端是 xterm.js 的 WebGL 渲染器:

  • 多标签、横竖分屏,bash / zsh / pwsh / fish / cmd 都支持;
  • 缓冲区 50000 行,行内搜索、链接识别、真彩色;
  • 低配机器可以关掉 WebGL 渲染,换取稳定;
  • Shell 集成会自动同步当前目录和提示符,SSH 到远程机器也顺手;
  • Windows 下 WSL 是一等工作区环境,不是简单地起一个子进程包装一下;
  • Spaces 能在重启后恢复标签页、工作目录和分屏布局。
编辑器:轻量修改的主力

编辑器基于 CodeMirror 6,覆盖 TS/JS、Python、Rust、Go、C/C++、Java、C#、HTML/CSS、JSON、Markdown 等常用语言,带 Vim 模式。编辑器和终端的主题可以分开配置,内置 Tokyo Night、Nord、GitHub Light、Gruvbox、Dracula、Catppuccin 等多套预设,也支持自定义背景图、透明度和模糊。

它最值得说的是 AI 差分编辑:AI 生成的修改不会直接写盘,而是打开一个 Diff 审阅视图,逐块 Accept / Reject。看下图右上角的"Pending review"和 Accept / Reject 按钮,右下角是智能体申请批量编辑文件时弹出的 Approve / Deny 卡片:

AI 修改以 Diff 形式等待审阅,批量编辑需要人工批准

另外还有本地模型驱动的行内补全(用 Ollama 时可以完全离线),以及 Markdown、图片、视频、PDF 预览。

Git 面板:直接调用系统 Git

Terax 没有内嵌 libgit2(这能省下好几 MB),而是调用系统里的 git 命令再解析输出:

  • 真实的 Commit Graph,合并、分叉一目了然;
  • 提交记录可搜索、筛选,点一下跳到远程仓库的 commit 页面;
  • Hunk 级暂存 / 取消暂存,Cmd+Enter(Windows 上是 Ctrl+Enter)提交,自动识别上游分支;
  • detached HEAD 状态会高亮提醒;文件树上带 Git 状态标记。

Git 历史面板:提交图、提交详情与改动文件列表

AI 智能体:能动手,但每一步要你点头

Terax 的 AI 侧边栏不是一个只会聊天的框,而是能读写文件、执行命令的智能体,只是权限被管得很严:

  • 只读操作自动放行:读文件、grep / glob 检索项目;
  • 写操作要审批:修改、删除文件和执行 Shell 命令,都会先弹确认卡片;
  • 敏感路径拦截:.env、.ssh 这类文件默认不让智能体碰。

在此之上还有几项进阶能力:

  • Plan 模式:先出完整方案,人看过计划再动代码;
  • 自定义智能体:每个智能体有自己的系统提示词和工具子集,比如做一个"只读代码审查员",只给读权限;
  • /init 命令:扫描项目目录和 package.json 等配置,自动生成 TERAX.md;
  • 编排 Claude Code:可以在终端里拉起 Claude Code,读取它的输出,再通过需要批准的工具发送后续指令;
  • 输入区:#handle 调用提示片段,@path 引用文件,支持语音输入,还能把文件树里的文件或编辑器里的选区直接丢给智能体。
TERAX.md:用一份 Markdown 当项目记忆

在项目根目录放一个 TERAX.md,每次开新会话智能体都会先读它。适合写进去的东西包括:项目架构、目录约定、常用部署命令、接口规范、踩过的坑。

这个思路和 Claude Code 的 CLAUDE.md、各家的 AGENTS.md 是一回事:不用向量库,不做检索,就是一份人能读、Git 能追踪的文本。好处是透明、可审查,AI 记住了什么一眼就能看到;代价是它会占上下文窗口,写太长对本地小模型尤其不友好,普通项目控制在两三页以内比较合适。

文件管理器与网页预览

文件树用 Catppuccin 图标,支持模糊搜索、键盘导航、内联重命名和拖拽,磁盘上的文件变化会实时反映。把文件拖进终端,会自动转成适合当前 Shell 的安全引用路径。网页预览会自动发现本地开发服务器并在预览标签中打开,也能看外部 URL,但目前没有 DevTools。

7MB 是怎么做到的

同类 Electron 工具动辄几百 MB,Terax 压到 7~8MB,靠的是三处取舍:

Terax 架构:React 19 界面层通过 IPC 调用 Rust 后端

  1. 不带浏览器内核:Tauri 2 用系统 WebView 渲染界面,前端 React 19 只负责展示,PTY、文件 IO、Git、密钥管理、AI 网络请求全交给 Rust 后端,两边通过 IPC 通信;
  2. 组件选轻的:CodeMirror 6、xterm.js 本身就很轻,没有引入重型依赖;
  3. 能复用就复用:Git 用系统 CLI,不打包 libgit2;没开启的功能不占资源。

这里补充一点 Tauri 路线的副作用:因为依赖系统 WebView,不同系统上的渲染表现会有差异——macOS 是 WKWebView,Windows 是 WebView2,Linux 是 WebKitGTK。所以 Linux 上偶尔会遇到渲染问题,官方文档里专门给了 Wayland 下的处理办法(见下文安装部分)。这是"小体积"必然要付出的成本。

安装与配置
直接下载安装包

安装包在 GitHub Releases 页面:https://github.com/crynta/terax-ai ,装好后应用会自动从 Releases 更新。

  • macOS:.dmg,分 Apple Silicon(aarch64)和 Intel(x86_64)两个版本;
  • Windows:.exe 安装包。因为没有代码签名,第一次打开会被 SmartScreen 拦截,点"更多信息 → 仍要运行"即可。默认 Shell 检测顺序是 pwsh.exe(PowerShell 7+)→ powershell.exe(Windows PowerShell 5.1)→ cmd.exe;
  • Linux:.AppImage / .deb / .rpm。Arch 用户可以 yay -S terax-bin;NixOS / Nix 有官方 flake,非 NixOS 可执行 nix profile install github:crynta/terax-ai。AppImage 需要 FUSE,没有 FUSE 时运行 ./Terax_*.AppImage --appimage-extract-and-run;Wayland 下渲染异常可以试试 WEBKIT_DISABLE_DMABUF_RENDERER=1。一般来说 .deb / .rpm 链接系统 GTK,比 AppImage 更流畅。
从源码构建

需要 Rust stable、Node 20+、pnpm,以及对应平台的 Tauri 前置依赖:

pnpm install
pnpm tauri dev   # 本地开发调试
pnpm tauri build # 打包生成安装包
# 附加校验
pnpm exec tsc --noEmit   # 前端类型检查
cd src-tauri && cargo clippy  # Rust代码规范校验

配置 AI
  1. 打开顶部 Settings → AI;
  2. 选择提供商:云端模型就粘贴对应的 API Key,Key 会通过 keyring 写进系统钥匙串,不会出现在磁盘文件或 localStorage 里;本地模型则填 LM Studio / Ollama / MLX 的地址,不需要 Key;
  3. 按需设置系统提示词、打开 Plan 模式、给自定义智能体分配工具权限。

一个实用的组合是:日常补全和小改动交给 Ollama 跑的本地小模型,零成本、不出内网;遇到跨文件重构这类复杂任务,再切到 Claude 或 GPT 这类云端大模型。

先说短板:哪些场景还不适合
限制影响建议
没有完整的 LSP 体验(语言服务是可选项)大型 TS / Java 单体项目里类型提示、跳转、重构不如专业 IDE重度工程开发继续用 VSCode / IDEA,Terax 负责终端和小改动
不支持 tmux / screen依赖 tmux 做远程会话持久化的人不习惯远程长任务仍用原来的终端方案
没有插件系统功能只能等官方迭代关注 Releases 更新节奏
网页预览没有 DevTools前端调试还得开浏览器预览只用来快速看效果
Windows 安装包没签名首次启动被 SmartScreen 拦截按上文手动放行
智能体读不到 .env / .ssh某些需要读配置的任务会失败确有需要再手动调整配置,用完改回
TERAX.md 写太长本地模型上下文被截断控制在两三页,只写长期有效的信息
和常见工具横向比一比
对比维度TeraxWarpCursoriTerm2
安装体积7~8MB200MB+400MB+50MB
架构Tauri2+Rust+React19Rust+ElectronElectron原生 macOS
跨平台Win/macOS/Linux全平台全平台仅 Mac
AI 形态受控 Agent,Diff 审批终端单行 AI 命令全编辑器 AI无原生 AI
本地离线模型支持 Ollama/LM Studio/MLX不支持本地离线仅官方模型第三方插件
遥测收集完全无遥测默认开启,需手动关闭上传代码至服务器无网络收集
Git 可视化完整 Commit Graph简易 Git 面板基础 Git 操作无可视化
一体化窗口终端 + 编辑器 + Git+Web 预览仅终端仅代码编辑器仅终端
隐私密钥系统密钥链加密本地存储有明文风险上传云端本地存储
开源协议Apache2.0 开源闭源商业闭源免费 / 付费开源

注:表中其他工具的数据来自原评测,各工具版本更新较快,请以官方最新说明为准。

简单归纳一下选择思路:

  • 想要一个轻量、注重隐私、能跑本地模型的"终端 + AI"工作台:Terax 很合适;
  • 主力开发大型工程,依赖重构、类型系统和插件生态:还是 Cursor / VSCode / IDEA;
  • 只需要一个好用的终端:iTerm2、Windows Terminal 依然够用。

总结

Terax 的价值不在于某个单点功能有多强,而在于它把"终端、编辑、版本控制、AI 智能体"这几件高频的事收进了一个 7MB 的窗口,并且给 AI 套上了缰绳:只读自动、写入审批、修改走 Diff、敏感文件拦截、密钥进钥匙串。对于在意隐私、想用本地模型、又不想再开一个几百 MB 工具的开发者,它值得装上试一试。

当然,它现在更像一个"AI 时代的终端工作台",而不是一个完整的 IDE。大型项目的深度开发仍需要专业 IDE,比较现实的用法是两者搭配:IDE 负责重活,Terax 负责终端、小改动和让 AI 在受控范围内干活。

项目地址:https://github.com/crynta/terax-ai/


本文为 JeecgBoot AI 专题研究系列文章。

Logo

更多推荐