AITerm 是一款基于 Electron + Vue 3 构建的多终端管理器,将终端、代码编辑器、Git 操作和文件浏览整合进一个工作区。支持跨端状态同步,重启后自动还原终端会话和编辑器状态。
| 🔧 传统方式 | 🖥️ AITerm |
|---|---|
| 终端 iTerm / Terminal 分屏切换 |
终端 🖥️ 真实 PTY,多会话 Tab,内置窗口管理 |
| 编辑器 VS Code / Vim 分屏 |
编辑器 ⚡ 内置 CodeMirror,多语言高亮,无需切换 |
| Git Tower / SourceTree / 命令行切换 |
Git 🔀 状态面板 + 常用操作,编辑器内完成 |
| 文件管理 Finder / 命令行切换 |
文件管理 📁 内置目录树,右键菜单操作 |
| 状态持久化 手动恢复,重启丢失 |
状态持久化 💾 跨端同步,重启后自动还原 |
| 多项目管理 多窗口切换 |
多项目管理 📋 统一侧边栏,分组管理 |
- 基于 node-pty 的真实 PTY 终端,不是模拟
- 每个项目独立多个终端标签
- 子终端 Tab 切换
- 终端历史保存/恢复
- 多项目管理(添加/删除/重命名/分组)
- 跨端状态同步(SQLite + WebSocket)
- 持久化恢复,重启后还原终端/编辑器状态
- 基于 CodeMirror 6 的编辑器
- 多语言语法高亮
- 目录树浏览 + 右键菜单(新建/删除/复制/粘贴)
- 文件搜索 + 内容 grep
- 状态面板(staged / modified / untracked)
- 常用操作:stage / unstage / discard / commit / push / pull
- 分支信息显示(ahead / behind 数量)
- Kill Port — 一键终止端口进程
- 刷新项目列表
- 清空记录(关闭所有终端会话)
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Electron │────▶│ SQLite │◀───▶│ WebSocket │
│ (桌面壳) │ │ (本地持久化) │ │ (状态同步) │
└─────────────┘ └─────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ 多端一致 │
│ (Server-as-SSOT)
└─────────────┘
| 层 | 技术 |
|---|---|
| 桌面壳 | Electron 33 |
| 前端框架 | Vue 3 + TypeScript + Vite 6 |
| 终端 | xterm.js + node-pty |
| 代码编辑 | CodeMirror 6 |
| UI 组件 | Ant Design Vue 4 |
| Git | simple-git |
| 持久化 | SQLite (better-sqlite3) |
| 进程通信 | Electron IPC / WebSocket(双模式) |
npm installnpm run dev启动 Electron + Vite HMR,开发时支持热更新
# 构建前端 + Electron
npm run build
# 打包 macOS
npm run build:mac
# 打包 Windows
npm run build:winnpm run testAITerm/
├── src/ # Vue 前端
│ ├── components/ # UI 组件
│ │ ├── WindowControls.vue # 标题栏 + 工具按钮
│ │ ├── ProjectList.vue # 项目侧边栏
│ │ ├── Terminal.vue # 终端组件
│ │ ├── TerminalPanel.vue # 终端面板
│ │ ├── CodeEditor.vue # 代码编辑器
│ │ ├── DirectoryTree.vue # 文件树
│ │ ├── SearchPanel.vue # 搜索面板
│ │ └── GitCommitDialog.vue # Git 提交对话框
│ ├── store/
│ │ └── AppBusiness.ts # 核心业务逻辑
│ ├── api/
│ │ ├── index.ts # API 统一入口
│ │ ├── electron-ipc.ts # Electron IPC 适配器
│ │ └── http.ts # HTTP 适配器
│ └── utils/
├── electron/ # Electron 主进程
│ ├── main.ts # 主进程 + IPC handlers
│ └── preload.ts # 预加载脚本
└── server/ # Node.js 后端
├── index.mjs # 入口
├── routes.mjs # API 路由
└── services/ # PTY / Project / DB / Git / File 服务
AITerm 支持两种运行模式,src/api/index.ts 在运行时自动选择:
| 模式 | 适用场景 | 通信方式 |
|---|---|---|
| Electron IPC | 打包后 | window.electronAPI 直接调用主进程 |
| HTTP / WebSocket | 开发 / 浏览器调试 | 请求本地 Express 服务 |
两套适配器实现相同接口,业务层无感知切换。
| 开发者 | 角色 |
|---|---|
| love张 | Owner |
| zzyong24 | 核心开发 |
MIT License — 详见 LICENSE