feat: harden local shell, SFTP, and desktop session reliability

Finder-launched terminals now inherit a login PATH so tools like ollama resolve, destructive SFTP/editor actions require confirmation, and terminal search plus window dragging work again. SSH forwards and RDP sessions keep listeners and survive reconnect without FastPath crashes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Logan.LiandCursor committed 2026-08-16 16:08:11 +08:00
1 parent 188f3556ed
commit 08696896f9
223 files changed
+13493 -3423

No files matched your search

+27 -31
View File
@@ -1,38 +1,34 @@
# OpsXShell Roadmap
# OpsXShell 路线图
## 已完成基线
> 最后更新:2026-08-16
> 版本基线:v2.1.1(Tauri 2 原生)
> 持续开发入口:本文件 + [TASKS.md](./TASKS.md) + [TDD_PLAN.md](./TDD_PLAN.md)。规则以 [AGENTS.md](./AGENTS.md) 为准。
- Rust `TunnelManager`:本地、远程和动态 SOCKS5 转发拥有独立 ID、真实启停、连接清理和运行状态
- 转发规则按保存会话持久化,不持久化运行中状态
- SOCKS5 一键启动、代理地址复制、活动连接数和上下行字节统计
- 转发规则的创建、编辑、复制、删除与运行实例完全分离
- `TerminalPipeline` 统一输入错误、UTF-8 分片解码、输出背压和流量统计
- SFTP 本地/远程路径使用不同类型;read/write 与 upload/download 使用不同接口
- `ssh.rs` 已拆出认证、known_hosts、代理/ProxyJump、路径和 SFTP 模块
- `tunnel.rs` 已拆出运行模型、SOCKS5 协议与 Relay 模块
- 注册 `ssh://` 系统链接,支持冷启动队列和运行中单实例唤起
- SSH Agent CLI 单任务入口、8 步执行观察循环、三级安全模式、五级风险、critical 硬拒绝、输出分析和重复命令拦截
- 全终端广播、批量主机选择与执行进度、终端标准右键菜单和远端单 Shell 关闭
- 远程 Shell EOF/TMOUT 与 SSH 连接生命周期分离,支持单分屏一键重开
## 产品定位
## 当前重点
轻量运维终端:连上就能用 SSH、SFTP、转发、RDP/VNC、串口和本地终端。短路径、好用实用。不做审计、录像、审批或堡垒机。
- SSH/SFTP/PTY/串口稳定性和断网恢复
- 隧道专用 SSH 连接复用、保活、断线重建和可选自动启动
- 继续抽离 SSH connection/shell 生命周期,并为隧道增加专用连接 Multiplexer
- 完成 Windows 安装包的 `ssh://` 注册与运行中单实例实机验收
- 从 URL、IP 和远程路径识别中抽取安全点击策略
- Agent Forwarding、OpenSSH 证书和 FIDO2
- SFTP 内容校验和、显式冲突选择及任务恢复
- Windows x86_64 实机安装与功能验收
- Agent Runtime 从 React 面板抽离,补齐取消、单步超时、Rust 硬红线和原生 tool calling
- 建立主机排障 Agent eval 集,覆盖非零退出、连续失败、循环、Prompt Injection 和敏感输出
## 当前基线(已落地,不要重做)
## 发布闭环
- SSH:密码 / 私钥 / Agent、known_hosts、HTTP·SOCKS 代理、最多 8 跳 ProxyJump、`ssh://` 有界确认队列
- 工作区:多标签、分屏、广播、批量命令(排除桌面会话)、七语种 i18n
- SFTP:双栏、拖拽、断点、原子替换、远程文本编辑(约 2MB)
- 转发:本地 / 远程 / 动态 SOCKS5;规则可持久化,运行态不落盘;`TunnelManager` 持有 Listener
- 转发恢复:未点停止则 retain;`user@host:port` orphan-adopt;同窗 `forwardIntent`;关标签不自动再启;空闲挂起先断原生并 `retainForwards`
- 远程桌面:IronRDP / vnc-rs;RDP 压缩优先 K64(不用 XCRUSH);会话运行态仅内存
- 连接池:resume 换 ID 回写 tab;suspend 立即 disconnect + retainForwards
- AI Agent:当前 SSH connection、strict/relaxed、critical 硬拒绝、不落命令历史
- 打包:macOS arm64 `.dmg` 可由 `./scripts/build.sh` 产出(无签名凭据时仅为 ad-hoc,未公证)
- macOS Developer ID 签名与公证
- Windows Authenticode 签名
- 带签名清单和回滚策略的自动更新
- 可由用户主动导出的脱敏崩溃诊断包
## 下一阶段
审计、录像、审批和命令历史不在产品范围内。
1. **可靠性**:断网 / 休眠 / 大量标签切换的持续压测;keepalive 失败原因不要盖成「用户关闭」;SFTP 与终端共享连接时的有限自动重连
2. **SFTP**:目录冲突文案区分 merge/overwrite;远程文本保存前 mtime 冲突确认;可选内容校验和与失败任务恢复
3. **桌面**:RDP/VNC 证书校验;分辨率切换后解压失败的软恢复继续压测
4. **认证增强**(默认收起):Agent Forwarding、OpenSSH 证书、FIDO2
5. **发布闭环**:Windows x86_64 实机;macOS Developer ID + 公证;Windows Authenticode;带清单的自动更新;用户可导出的脱敏崩溃包
6. **AI**:执行循环从 React 面板继续收口到可取消、可超时的运行时;排障 eval(非零退出、循环、注入、敏感输出)
## 明确不做
审计、录像、审批、命令历史、插件宿主、对外 MCP/CLI 公共 API、把 `license-server` 堆回桌面进程。