# fastshell **Repository Path**: lower/fastshell ## Basic Information - **Project Name**: fastshell - **Description**: 实现一个rust版的远程ssh工具(参考finalshell) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-11-04 - **Last Updated**: 2026-11-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FastShell Rust + GPUI 远程运维客户端(FinalShell 风格)。 ## 开发 ```bash ~/.cargo/bin/cargo test --workspace ~/.cargo/bin/cargo run -p fastshell ``` 单个 crate: ```bash ~/.cargo/bin/cargo test -p fastshell-core ~/.cargo/bin/cargo test -p fastshell-store ~/.cargo/bin/cargo test -p fastshell-app ``` 真机 SSH 集成测试默认跳过,需要显式开启: ```bash FASTSHELL_IT=1 FASTSHELL_IT_USER=$USER FASTSHELL_IT_PASSWORD=... \ ~/.cargo/bin/cargo test -p fastshell-core ``` 可选环境变量:`FASTSHELL_IT_PORT`(默认 22)、`FASTSHELL_IT_HOST` 由测试固定为 `127.0.0.1`。 ## 数据位置 - 数据库:`~/Library/Application Support/FastShell/fastshell.db` - 日志:`~/Library/Logs/FastShell/` - Keychain:service `com.fastshell.credentials`,account `master-key` ## 进度 - M0 地基:已完成(窗口骨架、会话树、上下分栏、状态栏、会话模型、SQLite 持久化、凭据加密与 Keychain、Command/Event 通道) - M1 SSH 终端:已完成 - 真实 SSH 连接(密码 / 公钥)、known_hosts 指纹校验与首次信任 - PTY + `alacritty_terminal` VT 解析,GPUI 网格渲染(含宽字符、SGR 颜色、回滚) - 窗口 resize 与远端 `stty size` 同步;多标签互不影响 - 选区、双击选词、三击整行、Cmd+C / Cmd+V(bracketed paste) - 断线自动重连(指数退避) - 标签栏、分栏拖拽、应用内新建分组、SQLite 与凭据读写移到后台线程 - M2 SFTP 文件面板:已完成 - 双栏浏览(本地 / 远程),目录优先排序,双击进入、返回上级 - 上传 / 下载(并发 3、1MB 分块、进度、取消、失败重试) - 拖拽本地文件/目录到远程栏即上传;目录递归上传/下载 - 下载先写 `.part`,失败重试从未完成偏移续传 - 新建目录、重命名、删除、修改权限(八进制)、刷新 - 标签连接就绪后自动建立 SFTP 连接,关闭标签即断开 - 状态栏显示传输进度 - M3 监控:已完成 - 2s 采样 `/proc/stat`、`/proc/meminfo`、`/proc/net/dev` 与 `df -kP`(单条 exec,减少往返) - 下方面板「文件 | 监控」切换;CPU / 内存 / 网络折线与磁盘用量表 - 状态栏显示 CPU / 内存摘要 - 只对激活标签采样,切换或关闭标签即停止 - M4:见 `docs/superpowers/plans/` ## 已知限制 - 键盘映射只覆盖常用键:命名键、方向键/导航键、Ctrl 控制码、Alt 前缀、F1–F12;输入法/AltGr、DECCKM(应用光标模式)尚未处理。 - 滚轮像素增量按整格取整,触控板慢速滚动可能无响应。 - SFTP 暂不支持符号链接目标解析;每个标签使用独立的 SFTP 连接(不复用终端的 SSH 连接)。 - 分栏比例暂不持久化;凭据编辑/删除 UI 尚未提供。