PROJECT_EVALUATION.md - 项目评估和质量指标
本文档定义 OpsXShell 的质量标准、评估指标和改进目标。
版本历史
| 日期 |
版本 |
评分 |
主要变更 |
| 2026-04-04 |
v0.1.0 |
56/100 |
初始骨架 |
| 2026-04-06 |
v0.10.0 |
78/100 |
核心功能实现发布 |
| 2026-04-18 |
代码审计 |
58/100 |
独立代码质量审计 |
| 2026-04-18 |
UI/UX审计 |
48/100 |
UI 视觉 + 功能交互深度审计 |
评分说明: 代码审计聚焦代码质量/测试/架构/安全;UI/UX 审计聚焦视觉设计、交互体验、功能便捷性。
UI/UX 审计评估 (2026-04-18)
整体评分: 48/100
| 维度 |
分数 |
评级 |
说明 |
| 视觉设计 |
65/100 |
🟡 中等 |
深色主题配色专业,但设计系统执行不严格 |
| 交互体验 |
40/100 |
🔴 差 |
大量半成品功能,反馈系统缺失 |
| 功能便捷性 |
45/100 |
🔴 差 |
快捷键薄弱,核心操作路径长 |
| 状态处理 |
35/100 |
🔴 差 |
多组件缺空状态/加载/错误三态 |
| 响应式设计 |
10/100 |
🔴 极差 |
完全缺失 |
竞品对标
| 维度 |
OpsXShell |
Termius |
Tabby |
| 整体配色 |
⭐⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
⭐⭐⭐ |
| 布局结构 |
⭐⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
| 图标一致性 |
⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
| 动画/过渡 |
⭐⭐⭐ |
⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
| 响应式 |
⭐ |
⭐⭐⭐⭐ |
⭐⭐⭐ |
| 状态处理 |
⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
| 设计系统 |
⭐⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
⭐⭐⭐ |
OpsXShell 视觉设计达到 Termius 的 70-75% 水平,但交互体验仅 40-50%。
视觉设计详细评估
✅ 做得好的
| 组件 |
亮点 |
| WelcomeView |
全项目最佳 — 2×2快捷操作网格,独立配色,图标容器渐变悬停,rounded-xl 统一圆角 |
| Modal |
backdrop-blur-sm 毛玻璃 + shadow-2xl 立体感 + ESC关闭 |
| Button |
4变体 × 3尺寸 = 12组合,disabled 态完整,loading spinner |
| TabBar |
连接状态圆点(黄/绿/红),min-w/max-w 宽度限制,悬停显示关闭按钮 |
| TransferPanel |
折叠动画 + 进度条 transition-all duration-300 + 状态标签胶囊 |
| 配色系统 |
dark-900→800→700→600 四级灰度 + accent-blue/green/purple 三色搭配 |
🔴 高优先级视觉问题
| # |
文件 |
问题 |
修复方案 |
| V-1 |
StatusBar.tsx:33 |
bg-accent-blue 状态栏过于刺眼 |
→ bg-dark-800 border-t border-dark-700 |
| V-2 |
SFTPView.tsx:96-131 |
右键菜单用 emoji 📂📤📥🗑️ |
→ Lucide 图标组件 |
| V-3 |
FileRow.tsx:27 |
选中色 cyan-500 不在设计系统 |
→ accent-blue/20 |
| V-4 |
TerminalView.tsx:601 |
恢复按钮 bg-cyan-600 不在设计系统 |
→ accent-blue |
| V-5 |
FileRow.tsx:32 |
目录图标 sky-400 不在设计系统 |
→ accent-blue |
🟡 中优先级视觉问题
| # |
文件 |
问题 |
| V-6 |
Breadcrumb.tsx:33 |
text-slate-600 应统一为 text-dark-600 |
| V-7 |
TransferItem.tsx:28 |
bg-slate-700 应统一为 bg-dark-700 |
| V-8 |
WelcomeView.tsx:26 |
grid-cols-2 硬编码,应加 grid-cols-1 sm:grid-cols-2 |
| V-9 |
StatusBar.tsx:36 |
Wifi 图标语义不当,应用 CheckCircle |
| V-10 |
tailwind.config.js |
缺少 accent-orange 定义,orange-400 散落 |
交互体验详细评估
🔴 Critical — 严重影响可用性
| # |
文件 |
问题 |
影响 |
| I-1 |
App.tsx:46,49,128,159,168 |
导入导出全用 alert() |
体验极差,与暗色主题不协调 |
| I-2 |
SFTPView.tsx:173 |
新建文件夹用 prompt() |
原生弹窗破坏沉浸感 |
| I-3 |
PortForwardView.tsx:150 |
删除用 confirm() |
同上 |
| I-4 |
SFTPView.tsx:103 |
本地上传右键菜单 action 空函数 |
功能完全不可用 |
| I-5 |
SFTPView.tsx:129-131 |
远程删除右键菜单 action 空函数 |
功能完全不可用 |
| I-6 |
useSFTP.ts:399 |
上传实现是模拟代码 |
SFTP 上传不可用 |
| I-7 |
WelcomeView.tsx:12-16 |
最近连接列表是硬编码假数据 |
显示虚假信息误导用户 |
| I-8 |
SessionDialog.tsx:265-270 |
私钥"浏览"按钮 无事件 |
点击无反应 |
| I-9 |
全局 |
无 Toast 通知系统 |
用户操作无任何非阻塞反馈 |
| I-10 |
全局 |
无终端搜索 (Ctrl+Shift+F) |
基础功能缺失 |
| I-11 |
tabStore.ts |
标签页无持久化,重启全部丢失 |
会话恢复名存实亡 |
| I-12 |
StatusBar.tsx:33-56 |
状态栏永远显示"就绪" |
未接入实际连接状态 |
🟡 Warning — 显著影响效率
| # |
文件 |
问题 |
| I-13 |
快捷键仅 4 个 |
缺 Ctrl+Tab 切标签、Ctrl+1~9、F11 全屏、Ctrl+Shift+F 搜索 |
| I-14 |
WelcomeView.tsx:120 |
提示 Ctrl+T 但 未注册 |
| I-15 |
TabBar.tsx |
无标签拖拽排序 |
| I-16 |
QuickConnectDialog.tsx:12-17 |
不支持密钥认证,仅密码 |
| I-17 |
SettingsView.tsx:79 |
light 主题选项无效(仅 dark) |
| I-18 |
SettingsView.tsx:96-101 |
语言切换无效(无 i18n) |
| I-19 |
SFTPView.tsx:208 |
左右面板共享 contextMenu 状态可能冲突 |
| I-20 |
Sidebar.tsx |
会话分组不可折叠/展开 |
功能便捷性评分
SSH 连接
| 场景 |
步骤 |
评分 |
竞品对比 |
| 已保存会话 |
1步(双击) |
8/10 |
✅ 与 Termius 持平 |
| 快速连接 Ctrl+K |
2-4步 |
7/10 |
⚠️ 不支持 user@host:port 单行输入 |
| 密钥认证 |
— |
3/10 |
❌ 浏览按钮无效,需手动输入路径 |
SFTP 文件操作
| 操作 |
步骤 |
评分 |
问题 |
| 导航目录 |
1步 |
8/10 |
✅ |
| 上传文件 |
3步 |
3/10 |
❌ 不可用(模拟实现) |
| 下载文件 |
2步 |
7/10 |
✅ |
| 新建文件夹 |
2步 |
5/10 |
⚠️ 用 prompt() |
| 拖拽上传 |
— |
0/10 |
❌ 缺失 |
| 文件预览 |
— |
0/10 |
❌ 缺失 |
标签页管理
| 操作 |
方式 |
评分 |
竞品差距 |
| 创建 |
+按钮/Ctrl+N |
8/10 |
— |
| 切换 |
点击标签 |
6/10 |
❌ 无 Ctrl+Tab |
| 关闭 |
×/Ctrl+W |
7/10 |
— |
| 拖拽排序 |
— |
0/10 |
❌ 缺失 |
| 会话恢复 |
— |
0/10 |
❌ 重启丢失 |
快捷键覆盖
| 类别 |
已有 |
缺失 |
覆盖率 |
| 应用级 |
4个 (N/K/Q/R) |
F11全屏, Ctrl+Shift+N新标签 |
30% |
| 标签级 |
1个 (Ctrl+W) |
Ctrl+Tab, Ctrl+1~9, Ctrl+Shift+T恢复 |
10% |
| 终端级 |
0 |
Ctrl+Shift+F搜索, Ctrl+Shift+C/V, Ctrl+/-缩放 |
0% |
| 自定义 |
❌ |
全部 |
0% |
功能完成度矩阵
|| 功能 | 状态 | 完成度 | 备注 |
|------|------|--------|------|
| SSH 密码连接 | ✅ | 90% | |
| SSH 密钥连接 | ✅ | 80% | |
| SSH Agent 认证 | ✅ | 80% | |
| XTerm.js 终端 | ✅ | 85% | |
| 终端多主题 | ✅ | 90% | |
| IP 高亮 | ✅ | 95% | |
| SFTP 双栏浏览 | ✅ | 80% | |
| SFTP 上传 | ✅ | 75% | |
| SFTP 下载 | ✅ | 75% | |
| SFTP 右键菜单 | 🟡 | 60% | |
| SFTP 拖拽上传 | ✅ | 80% | |
| SFTP 文件预览 | ❌ | 0% | |
| 端口转发 | ✅ | 85% | |
| 标签页管理 | ✅ | 85% | |
| 会话管理 | ✅ | 75% | |
| 会话恢复 | ✅ | 85% | |
| 快捷键系统 | ✅ | 90% | v1.4.0: 自定义快捷键+冲突检测 |
| Toast 通知 | ✅ | 90% | |
| 终端搜索 | ✅ | 85% | |
| 设置系统 | ✅ | 70% | light/i18n 待实现 |
| 状态栏 | ✅ | 80% | |
| 欢迎页 | ✅ | 80% | |
| 命令片段库 | ✅ | 85% | |
| 命令面板 | ✅ | 80% | |
| 连接面板 | ✅ | 80% | |
| 主题系统 | ✅ | 90% | Dark/Light/System |
| 终端分屏 | 🚧 | 0% | v1.4.0 计划 |
| i18n 国际化 | 🚧 | 5% | v1.4.0 计划 |
| 代理设置 | 🚧 | 0% | v1.4.0 计划 |
| 多窗口支持 | 🚧 | 0% | v1.4.0 计划 |
SWOT 分析
Strengths (优势)
- 深色主题四级灰度配色系统专业(基于 Tailwind Slate)
- WelcomeView 快捷操作卡片设计出色
- 基础组件质量高(Button/Modal/Loading/ErrorBoundary)
- 连接池管理 + 终端快照恢复(独有亮点)
- AES-256-GCM 加密实现专业
Weaknesses (劣势)
- 大量半成品功能: SFTP 上传/删除/右键菜单为空函数
- 反馈系统缺失: 无 Toast,大量 alert/prompt/confirm
- 快捷键极弱: 仅 4 个,无终端搜索、无标签切换
- 调试代码未清理:
DEBUG=true + 50+ console.log
- 设计系统执行不严格: cyan/sky/slate 颜色散落
Opportunities (机会)
- Toast 通知系统建立后,全局交互体验可跃升
- xterm SearchAddon 可快速集成终端搜索
- 快捷键自定义框架一次建设,长期受益
- 响应式设计补全后可在小屏/平板使用
Threats (威胁)
- 竞品 Termius/Tabby 功能成熟度远超
- 半成品功能影响用户第一印象
- 无会话恢复 = 重启丢工作,企业用户不可接受
优化方向与目标
Phase 1: 基础可用 (v1.1.0) — 2 周
目标: 解决所有 Critical 问题,产品具备基础可用性
评分目标: UI/UX 48→65
| # |
任务 |
类型 |
预计 |
影响 |
| 1 |
Toast 通知系统 (组件 + 全局 hook) |
新增 |
2天 |
全局交互提升 |
| 2 |
替换所有 alert/prompt/confirm 为自定义 UI |
修复 |
2天 |
消除原生弹窗 |
| 3 |
SFTP 上传/删除真实实现 |
修复 |
3天 |
核心功能可用 |
| 4 |
终端搜索 (xterm SearchAddon) |
新增 |
1天 |
基础功能补全 |
| 5 |
会话恢复 (标签持久化到 SQLite) |
新增 |
3天 |
重启不丢工作 |
| 6 |
修复私钥浏览按钮 |
修复 |
0.5天 |
密钥认证可用 |
| 7 |
清理生产调试日志 |
修复 |
1天 |
代码质量 |
| 8 |
设计系统统一 (cyan→accent-blue 等) |
修复 |
1天 |
视觉一致性 |
| 9 |
StatusBar 接入实际状态 |
修复 |
0.5天 |
信息准确 |
| 10 |
WelcomeView 真实最近连接 |
修复 |
1天 |
去除假数据 |
Phase 2: 体验升级 (v1.2.0) — 2 周
目标: 快捷键、视觉打磨、交互优化
评分目标: UI/UX 65→78
| # |
任务 |
类型 |
预计 |
| 1 |
Ctrl+Tab / Ctrl+1~9 标签切换 |
新增 |
1天 |
| 2 |
标签拖拽排序 |
新增 |
2天 |
| 3 |
SFTP 拖拽上传 |
新增 |
2天 |
| 4 |
SFTP 右键菜单完善(权限编辑/属性) |
完善 |
1天 |
| 5 |
侧边栏会话分组折叠/展开 |
完善 |
1天 |
| 6 |
Sidebar 宽度可拖拽调整 |
新增 |
1天 |
| 7 |
响应式布局基础(窄窗口折叠侧边栏) |
新增 |
2天 |
| 8 |
Loading/Skeleton 加载态补全 |
新增 |
1天 |
| 9 |
空状态插画/提示补全 |
新增 |
1天 |
| 10 |
终端组件拆分重构 |
重构 |
3天 |
Phase 3: 专业功能 (v1.3.0) — 3 周
目标: 快捷键自定义、终端分屏、i18n
评分目标: UI/UX 78→88
| # |
任务 |
类型 |
预计 |
| 1 |
快捷键自定义系统 |
新增 |
3天 |
| 2 |
终端分屏(水平/垂直) |
新增 |
5天 |
| 3 |
i18n 国际化 |
新增 |
5天 |
| 4 |
Light 主题实现 |
新增 |
3天 |
| 5 |
Snippets 命令片段库 |
新增 |
3天 |
| 6 |
代理设置 |
新增 |
2天 |
| 7 |
多窗口支持 |
新增 |
5天 |
里程碑总览
成功指标
| 指标 |
v1.0 当前 |
v1.3 目标 |
| UI/UX 综合评分 |
48/100 |
88/100 |
| 有效快捷键数 |
4 |
30+ |
| alert/prompt/confirm |
8 处 |
0 处 |
| 半成品功能 |
8 个 |
0 个 |
| Toast 通知覆盖 |
0% |
100% |
| 终端搜索 |
❌ |
✅ |
| 会话恢复 |
❌ |
✅ |
| 响应式 |
❌ |
✅ |
| 快捷键可自定义 |
❌ |
✅ |
代码质量评估(代码审计结论,保留参考)
综合评分: 58/100
| 维度 |
分数 |
说明 |
| 功能完成度 |
82/100 |
SSH/SFTP/端口转发主体完成 |
| 代码质量 |
45/100 |
50+ console.log, DEBUG=true 残留 |
| 测试覆盖 |
15/100 |
核心模块零测试 |
| 架构设计 |
72/100 |
IPC 分层好,Store 有耦合 |
| 安全合规 |
55/100 |
加密优秀,传输链路有风险 |
| 依赖管理 |
50/100 |
Electron v28 过旧 |
| 构建配置 |
75/100 |
基本合理 |
代码统计
| 目录 |
文件数 |
代码行数 |
占比 |
electron/ |
17 |
2,862 |
25.3% |
src/ |
55 |
7,480 |
66.0% |
shared/ |
5 |
441 |
3.9% |
test/ |
4 |
475 |
4.2% |
| 总计 |
81 |
11,258 |
100% |