Files
opsxshell/README.md
T
Logan.LiandCursor 9ce71795b8 feat: add terminal broadcast, context menu, and shell close
Complete multi-pane broadcast, standard terminal right-click actions, batch host selection with progress, and native ssh_close_shell so closing a pane tears down the remote shell.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 19:53:39 +08:00

106 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpsXShell
轻量原生的跨平台 SSH / SFTP 运维终端。产品目标是让常用远程操作更直接,不做审计平台,也不依赖插件才能完成基础工作。
## 已支持
- SSH 终端:密码、私钥、SSH Agent 自动尝试、主机指纹校验
- 会话管理:分组、标签、快速连接、多标签、终端分屏
- 批量命令:选中多个会话执行同一命令,结果仅保留在当前窗口
- SFTP:双栏文件管理、断点续传、完整后原子替换、重命名、权限、远程文本编辑
- 端口转发:本地、远程、动态 SOCKS5;规则可编辑和复制,与运行实例分离,支持真实启停和状态统计
- 连接代理:HTTP CONNECT、SOCKS5,可选用户名密码
- OpenSSH 配置:导入 `~/.ssh/config` 常用字段;界面支持单跳选择,Rust 后端支持最多 8 跳
- 系统链接:`ssh://user@host:port` 唤起已有或新启动的 OpsXShell,并进入预填充快速连接确认
- 本地终端与串口:系统 Shell、串口设备与波特率配置
- SSH Agent CLI:OpenAI/Responses/Anthropic 兼容 Provider、new-api 与 Ollama;自然语言驱动最多 8 步的执行→观察循环,三级安全模式、五级风险和破坏性命令硬拒绝
- 本地安全:AES-256-GCM 加密会话密码、密钥口令和模型 API Key,不保存终端命令或 AI 对话历史
## 产品边界
OpsXShell 聚焦 SSH、SFTP、代理、转发、串口和多终端工作区。审计、录像、审批等堡垒机能力不在产品范围内。
当前仍需补齐的专业能力:
- Agent Forwarding、OpenSSH 证书与 FIDO2
- 断网重连、休眠恢复和大量标签切换的持续压测
- SFTP 内容校验和、显式冲突选择和任务恢复
- Windows 实机验收、自动更新、代码签名、macOS 公证和崩溃诊断
## 技术栈
| 层级 | 技术 |
| ---------- | -------------------------------- |
| 桌面运行时 | Tauri 2 |
| 原生后端 | Rust 2021 |
| SSH / SFTP | `ssh2 0.9` / libssh2 |
| 本地终端 | `portable-pty 0.9` |
| 串口 | `serialport 4.8` |
| 前端 | React 18 + TypeScript 5 + Vite 5 |
| 状态管理 | Zustand 4.4+ |
| 终端 | XTerm.js 5.5+ |
| 测试 | Vitest + Rust test |
会话和设置保存在系统应用数据目录的 `opsxshell-data.json`。主密钥固定保存在 `~/.opsxshsell/master.key`,Unix 权限为目录 `0700`、文件 `0600`。
## 开发
环境要求:Node.js 18+、npm 9+、Rust 1.77+。
```bash
npm install
npm run dev
```
常用检查与构建:
```bash
npm run acceptance:quick
npm run acceptance:full
./build.sh v2.1.1 mac-arm64
build.bat v2.1.1 win-x64
./release.py v2.1.1 --dry-run
```
`build.sh`(macOS/Git Bash)和 `build.bat`(Windows CMD)会校验版本、运行门禁、构建并验证安装包,最终产物统一复制到 `release/v<版本>/<平台>/` 并生成 `SHA256SUMS.txt`。显式传入新版本会同步所有版本文件,但不会自动创建或推送 Git tag。`release.py` 在 tag 推送后创建 Gitee Release、上传安装包和校验文件,并核对远程附件;先使用 `--dry-run` 检查待发布文件。平台打包必须在对应系统执行:macOS 在 macOS 构建,Windows x86_64 在 Windows 构建。
## 目录
```text
src/ React 界面与状态管理
src/platform/ Tauri 命令和事件适配层
src/platform/sftp.ts 本地/远程路径强类型传输边界
src/utils/terminalPipeline.ts 终端输入、输出和背压管线
shared/types/ 前后端共享 TypeScript 契约
src-tauri/src/commands/ 精简的 Tauri 命令边界
src-tauri/src/domain/ 原生领域模型
src-tauri/src/services/ SSH、SFTP、隧道、PTY、串口、AI、存储服务
src-tauri/src/services/ssh/ 认证、known_hosts、代理/跳板和 SFTP 子模块
src-tauri/src/services/tunnel/ 转发运行模型、SOCKS5 协议和双向 Relay
test/ 前端测试与基础验收
scripts/ 构建和验收脚本
```
## 快捷键
| 快捷键 | 功能 |
| -------------------------- | -------------------- |
| `Cmd/Ctrl + N` | 新建会话 |
| `Cmd/Ctrl + K` | 快速连接 |
| `Cmd/Ctrl + D` | 终端分屏 |
| `Cmd/Ctrl + W` | 关闭标签 |
| `Cmd + Option + I` / `F12` | 开发构建打开调试工具 |
## 文档
- [使用指南](docs/user-guide.md)
- [架构说明](docs/architecture.md)
- [SSH Agent CLI 设计](docs/ai-agent.md)
- [产品体验与基础能力评估](docs/ux-foundation-audit.md)
- [测试与验收](docs/testing-acceptance.md)
- [发布指南](docs/release.md)
## 许可证
MIT