Skip to main content
Glama
ADVANCED_MODE_DESIGN.md10.3 kB
# 高级模式默认化设计方案 ## 设计理念 将当前的"快速模式 + 高级模式"双轨制改为"统一高级模式 + 智能默认值"的单轨制,既保持功能完整性,又提供优秀的用户体验。 ## 核心原则 ### 1. 渐进式复杂度披露 (Progressive Disclosure) - **默认简单**:首次显示最常用的配置项 - **按需展开**:用户可以选择查看更多选项 - **智能推荐**:根据用户选择自动调整显示内容 ### 2. 智能默认值系统 - **上下文感知**:根据连接类型提供相应默认值 - **用户学习**:记住用户的常用配置模式 - **环境适配**:根据系统环境自动调整默认值 ### 3. 配置模板化 - **场景模板**:为常见使用场景提供预设模板 - **一键应用**:快速应用模板并允许微调 - **自定义模板**:用户可以保存自己的配置模板 ## 界面设计 ### 主配置流程 ``` 🚀 Remote Terminal 配置向导 ================================================== 📋 基本信息 ┌─────────────────────────────────────────────────┐ │ 服务器名称: [my-server ] 💡 用于识别 │ │ 服务器地址: [192.168.1.100 ] 💡 IP或域名 │ │ 用户名: [username ] 💡 登录用户 │ │ 端口: [22 ] 💡 SSH端口 │ └─────────────────────────────────────────────────┘ 🔗 连接方式 (选择一种) ┌─────────────────────────────────────────────────┐ │ ○ 直接SSH连接 (适用于公网/局域网服务器) │ │ ● 跳板机连接 (适用于内网服务器) │ │ ○ 二级跳板机 (适用于复杂网络环境) │ └─────────────────────────────────────────────────┘ 📦 高级选项 (可选) [展开 ▼] ┌─────────────────────────────────────────────────┐ │ 🐳 Docker配置 │ │ ☑ 启用Docker支持 │ │ 容器名: [dev-container ] │ │ 镜像: [ubuntu:20.04 ] │ │ │ │ 🌐 环境配置 │ │ 存储桶: [bos://bucket/user/... ] (可选) │ │ 会话名: [myserver_dev ] │ │ │ │ 🔧 连接选项 │ │ 超时: [30 ] 秒 │ │ 重试: [3 ] 次 │ └─────────────────────────────────────────────────┘ [< 上一步] [预览配置] [保存并测试 >] ``` ### 智能默认值示例 #### 场景1: 选择"直接SSH连接" ``` 自动填充: - 端口: 22 - 超时: 30秒 - 重试: 3次 - Docker: 关闭 - 会话名: {服务器名}_dev ``` #### 场景2: 选择"跳板机连接" ``` 自动显示: - 跳板机配置区域 - 目标服务器配置 - relay-cli相关选项 自动填充: - 跳板机端口: 22 - 连接工具: relay-cli - 存储桶: bos://default-bucket/{用户名}/template ``` #### 场景3: 启用Docker支持 ``` 自动显示: - 容器管理选项 - 镜像配置 - 工作目录设置 自动填充: - 容器名: {服务器名}_container - 镜像: ubuntu:20.04 - 工作目录: /workspace ``` ## 技术实现 ### 1. 配置模板系统 ```python class ConfigTemplate: """配置模板类""" def __init__(self, name: str, description: str): self.name = name self.description = description self.defaults = {} self.required_fields = [] self.optional_fields = [] self.conditional_fields = {} def apply_defaults(self, user_input: dict) -> dict: """应用默认值""" config = self.defaults.copy() config.update(user_input) return config def get_fields_for_context(self, context: dict) -> list: """根据上下文获取需要显示的字段""" fields = self.required_fields.copy() # 根据条件添加字段 for condition, field_list in self.conditional_fields.items(): if self._evaluate_condition(condition, context): fields.extend(field_list) return fields # 预定义模板 TEMPLATES = { "ssh_direct": ConfigTemplate( name="直接SSH连接", description="适用于公网或局域网服务器" ), "ssh_relay": ConfigTemplate( name="跳板机连接", description="适用于内网服务器" ), "docker_dev": ConfigTemplate( name="Docker开发环境", description="容器化开发环境" ) } ``` ### 2. 智能默认值生成器 ```python class SmartDefaultsGenerator: """智能默认值生成器""" def __init__(self): self.user_preferences = self._load_user_preferences() self.system_info = self._get_system_info() def generate_defaults(self, context: dict) -> dict: """生成智能默认值""" defaults = {} # 基于连接类型 if context.get('connection_type') == 'relay': defaults.update(self._get_relay_defaults()) elif context.get('connection_type') == 'ssh': defaults.update(self._get_ssh_defaults()) # 基于用户历史 defaults.update(self._get_user_preference_defaults()) # 基于系统环境 defaults.update(self._get_system_defaults()) return defaults def _get_relay_defaults(self) -> dict: """获取跳板机连接的默认值""" return { 'port': 22, 'connection_tool': 'relay-cli', 'bos_bucket': f'bos://default-bucket/{getpass.getuser()}/template', 'tmux_session_prefix': 'relay_dev' } def _get_user_preference_defaults(self) -> dict: """基于用户偏好的默认值""" # 分析用户历史配置,提取常用模式 return self.user_preferences.get('common_patterns', {}) ``` ### 3. 渐进式界面控制器 ```python class ProgressiveUIController: """渐进式界面控制器""" def __init__(self): self.current_step = 1 self.total_steps = 6 self.expanded_sections = set() self.user_context = {} def render_step(self, step: int) -> str: """渲染当前步骤""" if step == 1: return self._render_basic_info() elif step == 2: return self._render_connection_type() elif step == 3: return self._render_advanced_options() # ... 其他步骤 def _render_advanced_options(self) -> str: """渲染高级选项(可展开)""" if 'advanced' not in self.expanded_sections: return self._render_collapsed_advanced() else: return self._render_expanded_advanced() def handle_user_input(self, input_data: dict): """处理用户输入并更新上下文""" self.user_context.update(input_data) # 根据输入调整界面 if input_data.get('connection_type') == 'relay': self.expanded_sections.add('relay_config') if input_data.get('enable_docker'): self.expanded_sections.add('docker_config') ``` ## 用户体验流程 ### 新手用户流程 1. **基本信息填写** - 只显示必要字段,提供清晰的帮助文本 2. **连接方式选择** - 图形化选择,自动应用相应默认值 3. **一键完成** - 大部分用户可以直接保存,无需进入高级选项 4. **可选微调** - 需要时可以展开高级选项进行调整 ### 高级用户流程 1. **快速识别** - 通过界面提示快速定位到需要的配置项 2. **批量配置** - 支持同时配置多个相关选项 3. **模板应用** - 可以基于已有配置创建新的配置 4. **专家模式** - 可以直接编辑YAML配置文件 ### 配置复用流程 1. **模板保存** - 将常用配置保存为个人模板 2. **快速应用** - 新建配置时可以选择已有模板 3. **批量创建** - 基于模板批量创建相似配置 4. **团队共享** - 导出模板供团队成员使用 ## 实现计划 ### Phase 1: 核心框架 (1周) - [ ] 配置模板系统 - [ ] 智能默认值生成器 - [ ] 渐进式界面控制器 - [ ] 基础UI重构 ### Phase 2: 智能化功能 (1周) - [ ] 用户偏好学习 - [ ] 上下文感知配置 - [ ] 自动配置验证 - [ ] 智能错误提示 ### Phase 3: 高级功能 (1周) - [ ] 配置模板管理 - [ ] 批量操作支持 - [ ] 配置导入导出增强 - [ ] 团队协作功能 ### Phase 4: 优化完善 (1周) - [ ] 性能优化 - [ ] 用户体验测试 - [ ] 文档更新 - [ ] 向后兼容性确保 ## 兼容性考虑 ### 向后兼容 - 保持现有配置文件格式兼容 - 提供配置迁移工具 - 保留命令行参数支持 ### 渐进迁移 - 新用户默认使用新界面 - 老用户可以选择升级 - 提供并行使用期 ### 配置共享 - 新旧格式互相转换 - 团队配置标准化 - 版本控制友好 ## 成功指标 ### 用户体验指标 - 配置完成时间 < 2分钟 - 新手成功率 > 95% - 用户满意度 > 4.5/5 ### 技术指标 - 配置验证准确率 > 99% - 默认值命中率 > 80% - 错误恢复成功率 > 90% ### 采用指标 - 新界面使用率 > 80% - 模板使用率 > 60% - 配置错误率 < 5% --- **总结**:通过统一高级模式 + 智能默认值的设计,我们可以为用户提供既强大又易用的配置体验,满足从新手到专家的各种需求。

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/maricoxu/remote-terminal-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server