Skip to main content
Glama

MCP Interactive Service

2025-06-27 优化基于pyqt插件的功能体验.md7.35 kB
# 背景 当前系统主要使用基于PyQt的UI界面,其他UI基本不使用。在AI与用户交互过程中发现两个影响用户体验的问题: 1. **参数冗余问题**:AI向用户请求信息时需要传入两个参数,其中第2个参数`current_info`实际意义不大,很多AI不会提供或提供无效值 2. **交互中断问题**:随着对话长度增加,AI容易忘记调用MCP进行确认,导致对话意外终止 ## 原始参数配置 ``` prompt: Prompt for requesting information current_info: Current information, displayed to users as reference ``` # 目的 优化基于PyQt插件的功能体验,简化参数配置,确保AI与用户交互的连续性和稳定性。 # 需求 1. **简化请求信息参数**:将第2个参数`current_info`设为可选参数,默认为空【已完成】 - 保留参数:`prompt: Prompt for requesting information` - 优化参数:`current_info: Current information, displayed to users as reference (optional, defaults to empty)` 2. **添加可配置的默认交互提醒**:在工具返回结果中自动添加提醒内容,防止对话中断【已完成】 - 添加内容: ``` **注意**: 除非我明确说明没有新任务,否则你绝对不能终止对话,在每次任务完成后调用mcp ai-interaction, 向我请求或确认任务! ``` - 适用范围:`select_option` 和 `request_additional_info` 两个工具的返回结果 3. **添加配置文件支持**:通过配置文件控制提醒功能的开启/关闭【已完成】 - 配置文件:`config.json` - 配置项:`reminder.enable_reminder` (默认: true) ## 执行过程 ### 阶段1:需求分析和方案设计【已完成】 - 分析了代码结构,确认 `ui/ui.py` 是统一入口 - 制定了系统化的执行思路,避免在每个UI实现中重复添加提醒逻辑 - 确定了通过配置文件控制提醒功能的方案 ### 阶段2:配置管理模块开发【已完成】 **创建文件:** - `config.json` - 配置文件,包含提醒功能和其他系统配置 - `config_manager.py` - 配置管理模块,提供配置加载和访问功能 **主要功能:** - 自动创建默认配置文件 - 提供配置重载功能 - 支持提醒功能的开启/关闭控制 ### 阶段3:核心功能优化【已完成】 **修改文件:`ui/ui.py`** - 添加配置管理模块导入 - 优化 `request_additional_info` 函数: - 保持 `current_info` 参数向后兼容 - 在返回结果中根据配置添加提醒内容 - 优化 `select_option` 函数: - 在返回结果中根据配置添加提醒内容 - 确保所有情况下都能正确添加提醒 ### 阶段4:UI实现适配【已完成】 **修改文件:`ui/ui_pyqt.py`** - 优化UI显示逻辑:当 `current_info` 为空时隐藏相关UI元素 - 为输入字段分配更多空间 **其他UI实现:** - `ui/ui_cli.py` - 已有条件检查 `current_info` 的逻辑,无需修改 - `ui/ui_web.py`, `ui/ui_dpg.py`, `ui/ui_psg.py` - 参数已设为可选,兼容性良好 ### 阶段5:文档和测试更新【已完成】 **文档更新:** - `README_CN.md` - 更新参数说明,添加配置文件文档,简化示例代码 - `README.md` - 同步更新英文文档 **测试代码更新:** - `client/mcp_client.py` - 简化预设参数配置 - `client/mcp_client_stdio.py` - 移除测试中的 `current_info` 参数 - `main.py` - 更新测试函数 ## 验证结果 ### 功能验证【已完成】 1. **参数简化验证**: - ✓ `request_additional_info` 可以只传 `prompt` 参数 - ✓ `current_info` 为空时UI正确隐藏相关元素 - ✓ 向后兼容性良好 2. **提醒功能验证**: - ✓ `request_additional_info` 返回结果包含提醒内容 - ✓ `select_option` 返回结果包含提醒内容 - ✓ 配置文件可以控制提醒功能开启/关闭 3. **配置功能验证**: - ✓ 配置文件自动创建和加载 - ✓ 提醒功能可通过配置控制 - ✓ 配置重载功能正常 ### 测试结果 ```bash # 测试 request_additional_info(带提醒) Result: Test response with reminder **注意**: 除非我明确说明没有新任务,否则你绝对不能终止对话,在每次任务完成后调用mcp ai-interaction, 向我请求或确认任务! # 测试 select_option(带提醒) Result: {'selected_index': 0, 'selected_option': 'Option 1', 'custom_input': '**注意**:\n除非我明确说明没有新任务,否则你绝对不能终止对话,在每次任务完成后调用mcp ai-interaction, 向我请求或确认任务!', 'is_custom': False} # 测试禁用提醒功能 Result: sdjfklejfr # 无提醒内容 ``` ## 技术实现细节 ### 配置文件结构 ```json { "reminder": { "enable_reminder": true, "reminder_text": "**注意**:\n除非我明确说明没有新任务,否则你绝对不能终止对话,在每次任务完成后调用mcp ai-interaction, 向我请求或确认任务!" }, "ui": { "default_ui_type": "pyqt" }, "logging": { "level": "warning" } } ``` ### 核心实现逻辑 1. **统一入口处理**:在 `ui/ui.py` 的 `select_option` 和 `request_additional_info` 函数中统一添加提醒逻辑 2. **配置驱动**:通过 `config_manager.py` 模块管理配置,支持运行时重载 3. **向后兼容**:保持原有API接口不变,`current_info` 参数仍然可用但为可选 4. **UI适配**:PyQt界面根据 `current_info` 是否为空动态调整布局 ### 文件修改清单 **新增文件:** - `config.json` - 配置文件 - `config_manager.py` - 配置管理模块 **修改文件:** - `ui/ui.py` - 核心功能优化 - `ui/ui_pyqt.py` - UI布局优化 - `README_CN.md` - 中文文档更新 - `README.md` - 英文文档更新 - `client/mcp_client.py` - 测试客户端更新 - `client/mcp_client_stdio.py` - STDIO客户端更新 - `main.py` - 主程序测试函数更新 ## 结论 ### 优化成果 1. **✅ 参数简化**:`current_info` 参数现在是可选的,提高了API的易用性 2. **✅ 交互连续性**:通过自动添加提醒内容,确保AI不会意外终止对话 3. **✅ 配置灵活性**:通过配置文件可以控制提醒功能,满足不同使用场景 4. **✅ 向后兼容**:保持了原有API的兼容性,不影响现有代码 5. **✅ 用户体验**:PyQt界面根据参数动态调整,提供更好的视觉体验 ### 技术亮点 - **统一处理**:在统一入口处添加提醒逻辑,避免代码重复 - **配置驱动**:支持运行时配置,无需重启应用 - **渐进式优化**:保持API兼容性的同时实现功能增强 - **全面测试**:通过多种方式验证功能正确性 ### 后续建议 1. **监控使用情况**:观察AI是否确实减少了对话中断的情况 2. **配置扩展**:可以考虑添加更多可配置项,如提醒文本的自定义格式 3. **性能优化**:如果配置文件访问频繁,可以考虑添加缓存机制 4. **用户反馈**:收集用户对新功能的反馈,进一步优化体验 **项目状态:✅ 已完成** **验证状态:✅ 功能正常** **部署状态:✅ 可以投入使用**

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/DanielZhao1990/interaction-mcp'

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