跳转到内容

简介

OxideTerm 是一款跨平台 SSH 终端客户端和本地终端模拟器,将原生性能与现代界面完美结合。基于 Tauri 2.0(Rust 后端)和 React 19(TypeScript 前端)构建,生成 25–40 MB 的轻量级原生二进制文件,无 Electron 开销。

痛点OxideTerm 的解决方案
SSH 客户端无法做本地 Shell混合引擎:本地 PTY(zsh/bash/fish/pwsh/WSL2)+ 远程 SSH 同窗运行
断线重连 = 丢失一切优雅期重连:断线前先探测旧连接 30 秒——你的 vim/htop/yazi 可以幸存
远程文件编辑需要 VS Code Remote内置 IDE:CodeMirror 6 基于 SFTP,30+ 语言,可选约 1 MB 远程 Agent
SSH 连接无法复用连接复用:终端、SFTP、转发、IDE 共享一个 SSH 连接,引用计数连接池
SSH 库依赖 OpenSSLrussh 0.54:纯 Rust SSH,编译链接 ring——零 C 依赖
100+ MB 的 Electron 应用Tauri 2.0:原生 Rust 后端,25–40 MB 二进制
AI 被锁定在单一供应商OxideSens:40+ 工具、MCP 协议、RAG 知识库——兼容 OpenAI/Ollama/DeepSeek/任意兼容 API

OxideTerm 采用 双平面架构,将低延迟的终端 I/O 与管理命令分离:

┌─────────────────────────────────────┐
│ 前端 (React 19) │
│ xterm.js 6 (WebGL) + 18 stores │
└──────────┬──────────────┬───────────┘
│ Tauri IPC │ WebSocket(二进制)
│ (JSON) │ 每会话独立端口
┌──────────▼──────────────▼───────────┐
│ 后端 (Rust) │
│ NodeRouter → SshConnectionRegistry │
│ Wire Protocol v1 │
│ [Type:1][Length:4][Payload:n] │
└─────────────────────────────────────┘
平面传输方式用途
数据平面WebSocket(二进制)终端 I/O — Type-Length-Payload 帧格式,无 JSON/Base64,热路径零开销
控制平面Tauri IPC(JSON)管理操作:连接、SFTP、端口转发、配置、AI 聊天

每个 SSH 会话拥有独立的 WebSocket 端口,首帧即进行一次性、有时限的令牌认证。前端通过 nodeId 寻址所有资源——后端 NodeRouter 原子解析,因此 SSH 重连(底层 connectionId 变更)不会破坏 SFTP、IDE 或端口转发。

层次技术说明
框架Tauri 2.0原生二进制,25–40 MB
运行时Tokio + DashMap 6全异步,无锁并发映射
SSHrussh 0.54 (ring)纯 Rust,零 C 依赖,SSH Agent
本地 PTYportable-pty 0.8功能门控,Windows 使用 ConPTY
前端React 19.1 + TypeScript 5.8Vite 7, Tailwind CSS 4
状态管理Zustand 518 个专用 Store
终端xterm.js 6 + WebGLGPU 加速,60 fps+
编辑器CodeMirror 630+ 语言模式
加密ChaCha20-Poly1305 + Argon2idAEAD + 内存硬化 KDF(256 MB)
存储redb 2.1嵌入式键值数据库
国际化i18next 2511 种语言 × 22 个命名空间
插件ESM 运行时冻结 PluginContext + 24 UI Kit
CLIJSON-RPC 2.0Unix Socket / Named Pipe
类别功能
终端本地 PTY(zsh/bash/fish/pwsh/WSL2)、SSH 远程、分屏、广播输入、会话录制/回放(asciicast v2)、自适应渲染(120 Hz+ 加速 / 60 Hz 正常 / 1–15 Hz 空闲)、命令面板(⌘K)、禅模式、30+ 主题 + 自定义编辑器
SSH 与认证连接池与复用、ProxyJump(无限跳数)+ 拓扑图、优雅期自动重连。认证:密码、SSH 密钥(RSA/Ed25519/ECDSA)、SSH Agent、证书、键盘交互 2FA、Known Hosts TOFU
SFTP双面板浏览器、拖放、智能预览(图片/视频/音频/代码/PDF/Hex/字体)、传输队列 + 进度 & ETA、书签、压缩包解压
IDE 模式CodeMirror 6,30+ 语言,文件树 + Git 状态,LRU 多标签管理,冲突解决(mtime 锁定),集成终端。可选远程 Agent(10+ 架构)
端口转发本地 (-L)、远程 (-R)、动态 SOCKS5 (-D),无锁消息传递 I/O,重连自动恢复,死亡报告,智能远程端口检测
AI (OxideSens)内联面板(⌘I)+ 侧边栏聊天,终端缓冲区捕获(单/全面板),多源上下文(IDE/SFTP/Git),40+ 自主工具,MCP 服务集成,RAG 知识库(BM25 + 向量混合搜索),流式 SSE
插件运行时 ESM 加载,18 个 API 命名空间,24 个 UI Kit 组件,冻结 API + Proxy ACL,熔断器,错误自动禁用
CLIoxt 伴侣工具:JSON-RPC 2.0,Unix Socket / Named Pipe
安全.oxide 加密导出(ChaCha20-Poly1305 + Argon2id 256 MB)、OS 钥匙串、Touch ID(macOS)、主机密钥 TOFU、zeroize 内存清除
国际化11 种语言:EN、简体中文、繁體中文、日本語、한국어、FR、DE、ES、IT、PT-BR、VI

OxideTerm 使用基于 DashMap 的引用计数 SshConnectionRegistry,提供无锁并发访问:

  • 一个连接,多个消费者 — 终端、SFTP、端口转发和 IDE 共享一个物理 SSH 连接——无冗余 TCP 握手
  • 每连接状态机connecting → active → idle → link_down → reconnecting
  • 生命周期管理 — 可配置空闲超时(5m / 15m / 30m / 1h / 永不),15 秒 keepalive 间隔,心跳失败检测
  • 级联传播 — 跳板机故障 → 所有下游节点自动标记为 link_down 并同步状态

前端通过 18 个专用 Zustand Store 管理状态:

Store职责
sessionTreeStore用户意图(会话树结构、连接流程)
appStore连接状态事实(connections Map,后端状态镜像)
localTerminalStore本地 PTY 生命周期
ideStoreIDE 模式状态
reconnectOrchestratorStore自动重连流水线编排
transferStoreSFTP 传输队列
pluginStore插件运行时状态
profilerStore资源分析器
aiChatStoreOxideSens AI 聊天状态
agentStore远程 Agent 管理
ragStoreRAG 知识搜索状态
settingsStore应用设置
broadcastStore广播输入到多个终端面板
commandPaletteStore命令面板状态
eventLogStore连接生命周期事件日志
launcherStore平台应用启动器
recordingStore会话录制与回放
updateStore自动更新生命周期