Skip to main content
Glama

AutoDev Codebase MCP Server

by anrgct
250625-ui-plan.md10.6 kB
# TUI Development Plan ## 项目概述 基于 Ink (React for CLI) 的终端用户界面,为 AutoDev Codebase 库提供交互式代码索引和搜索体验。 ## 当前架构状态 ✅ ### 已完成的核心组件 #### 1. 主应用框架 - **文件**: `src/examples/tui/App.tsx` - **功能**: - 全局状态管理 - 视图切换 (Tab键导航) - 键盘事件处理 - 组件编排 #### 2. 配置面板 - **文件**: `src/examples/tui/ConfigPanel.tsx` - **功能**: - 显示 Ollama/Qdrant 配置 - 展示模型和 URL 设置 - 配置状态指示器 #### 3. 进度监控器 - **文件**: `src/examples/tui/ProgressMonitor.tsx` - **功能**: - 实时索引进度条 - 系统状态显示 - 文件处理统计 #### 4. 搜索界面 - **文件**: `src/examples/tui/SearchInterface.tsx` - **功能**: - 交互式搜索输入 - 实时结果展示 - 键盘导航支持 #### 5. 日志面板 - **文件**: `src/examples/tui/LogPanel.tsx` - **功能**: - 彩色日志显示 - 自动滚动和截断 - 错误高亮 #### 6. 演示运行器 - **文件**: `src/examples/run-demo-tui.tsx` - **功能**: - CodeIndexManager 初始化 - 示例文件生成 - 应用启动逻辑 ## 开发计划 🚀 ### 阶段一:核心增强 (高优先级) #### 1. 文件浏览器组件 🔴 **文件**: `src/examples/tui/FileBrowser.tsx` **目标**: 创建交互式文件浏览器,展示已索引的文件 **功能需求**: - 树形文件结构显示 - 文件过滤和搜索 - 文件详情预览 - 键盘导航 (箭头键、Enter选择) **界面设计**: ``` ┌─ File Browser ──────────────────────────┐ │ 📁 demo/ │ │ 📄 hello.js [4 KB] │ │ 📄 utils.py [2 KB] │ │ 📄 README.md [1 KB] │ │ 📄 config.json [500B] │ │ │ │ Filter: [_______________] │ │ Selected: hello.js │ └─────────────────────────────────────────┘ ``` **技术要点**: - 使用 `CodeIndexManager.getIndexedFiles()` 获取文件列表 - 实现文件树展开/折叠逻辑 - 添加文件大小和修改时间显示 #### 2. 性能指标面板 🔴 **文件**: `src/examples/tui/MetricsPanel.tsx` **目标**: 显示系统性能和统计信息 **功能需求**: - 索引速度统计 - 内存使用情况 - 向量存储统计 - 搜索响应时间 **界面设计**: ``` ┌─ Performance Metrics ───────────────────┐ │ Indexing Speed: 120 files/min │ │ Memory Usage: 45.2 MB │ │ Vector Store: 1,247 embeddings │ │ Avg Search Time: 0.034s │ │ │ │ ▓▓▓▓▓▓▓░░░ CPU: 67% │ │ ▓▓▓▓░░░░░░ Memory: 42% │ └─────────────────────────────────────────┘ ``` ### 阶段二:交互性提升 (中优先级) #### 3. 可编辑配置面板 🟡 **增强**: `src/examples/tui/ConfigPanel.tsx` **目标**: 将只读配置面板升级为可编辑界面 **功能需求**: - 内联编辑 Ollama URL - 模型选择下拉菜单 - 配置保存和验证 - 重启提示机制 **新增方法**: - `handleConfigEdit(key, value)` - `saveConfiguration()` - `validateAndRestart()` #### 4. 增强交互式搜索功能 🔴 **文件**: `src/examples/tui/SearchInterface.tsx` **目标**: 大幅提升搜索体验的交互性和功能性 **当前功能**: - ✅ 基础搜索输入和结果显示 - ✅ 键盘导航 (Enter搜索、↑↓选择) - ✅ 结果高亮和分页显示 **重点增强需求**: - **实时搜索建议**: 输入时显示搜索建议 - **高级过滤器**: 文件类型、路径模式、相似度阈值 - **搜索历史**: 最近搜索记录和快速重用 - **结果预览**: 展开显示完整代码片段 - **跳转功能**: 支持跳转到外部编辑器 - **搜索统计**: 显示索引大小、搜索时间等指标 - **保存搜索**: 收藏常用搜索查询 **新增快捷键**: - `Space`: 展开/折叠结果详情 - `S`: 保存当前搜索 - `H`: 显示搜索历史 - `F`: 打开过滤器面板 - `O`: 在外部编辑器中打开文件 ### 阶段三:用户体验优化 (低优先级) #### 5. 帮助系统 🟢 **文件**: `src/examples/tui/HelpPanel.tsx` **目标**: 集成的帮助和文档系统 **功能需求**: - 键盘快捷键列表 - 功能使用指南 - 故障排除提示 - 版本信息显示 **界面设计**: ``` ┌─ Help & Shortcuts ──────────────────────┐ │ Navigation: │ │ Tab Switch between panels │ │ Ctrl+Q Quit application │ │ Escape Go back/Cancel │ │ │ │ Search: │ │ Enter Execute search │ │ ↑/↓ Navigate results │ │ │ │ File Browser: │ │ Space Preview file │ │ Enter Open in editor │ └─────────────────────────────────────────┘ ``` #### 6. 搜索性能优化 🟢 **增强**: `src/examples/tui/SearchInterface.tsx` **目标**: 优化大型代码库的搜索性能 **功能需求**: - 搜索结果缓存机制 - 增量搜索和防抖处理 - 异步加载和虚拟滚动 - 搜索索引预热 ## 技术规范 ### 依赖项 - `ink: ^6.0.0` - React for CLI - `react: ^19.1.0` - React 框架 - `ink-text-input` - 输入组件 - `ink-select-input` - 选择组件 ### 组件接口规范 ```typescript interface TUIComponentProps { codeIndexManager: CodeIndexManager | null; onStateChange?: (state: any) => void; isActive?: boolean; } interface PanelState { currentView: 'progress' | 'search' | 'config' | 'logs' | 'files' | 'metrics' | 'help'; searchQuery: string; searchResults: SearchResult[]; config: AppConfig; logs: LogEntry[]; selectedFile?: string; } ``` ### 键盘导航标准 - `Tab`: 切换面板 - `Shift+Tab`: 反向切换 - `Ctrl+Q`: 退出应用 - `Escape`: 返回/取消 - `Enter`: 确认/执行 - `↑/↓`: 列表导航 - `Space`: 选择/预览 ### 样式约定 - 使用 `chalk` 进行颜色管理 - 统一的边框样式 (`┌─┐│└─┘`) - 一致的状态指示器 (`✅❌⏳🔍`) - 响应式布局适配 ## 开发流程 ### 1. 开发环境设置 ```bash npm install npm run build npm run demo-tui # 启动TUI演示,由用户手动测试 ``` ### 2. 组件开发指南 1. 创建新组件文件于 `src/examples/tui/` 2. 实现 `TUIComponentProps` 接口 3. 添加键盘事件处理 4. 集成到主 `App.tsx` 组件 5. 更新视图切换逻辑 ### 3. 测试策略 - 手动测试各组件交互 - 验证键盘导航流畅性 - 测试错误处理和边界情况 - 确认性能表现 ## 部署和分发 ### 构建命令 ```bash npm run build # 构建库 npm run demo-tui # 运行TUI演示 ``` ### 打包发布 - 作为 `@autodev/codebase` 库的一部分 - TUI 组件作为可选功能 - 提供独立的演示脚本 ## 里程碑时间线 ### 第1周: 交互式搜索增强 (重点) ✅ **已完成 2025-06-21** - [x] 搜索历史和建议功能 ✅ - 实时搜索建议 (输入2+字符后自动显示) - 搜索历史记录 (保存最近20次搜索) - Ctrl+H 快捷键打开历史面板 - 基于历史的智能补全功能 - [x] 高级过滤器面板 ✅ - 文件类型过滤、相似度阈值、路径模式匹配 - Ctrl+F 快捷键打开过滤器面板 - 活跃过滤器指示器 - 智能结果过滤应用 - [x] 结果详情展开/折叠 ✅ - Space 键展开/折叠个别结果详情 - 视觉指示器 (📄 折叠态, 📖 展开态) - 完整代码内容显示 - 选中结果边框高亮 - [x] 外部编辑器跳转 ✅ - Ctrl+O 快捷键打开外部编辑器 - 多编辑器支持 (优先VS Code, 后备系统默认) - 精确行号定位 - 跨平台兼容性 (macOS/Linux) ### 第2周: 文件浏览器 + 配置编辑 - [ ] FileBrowser.tsx 实现 - [ ] ConfigPanel 可编辑升级 - [ ] 性能指标显示 ### 第3周: 用户体验优化 - [ ] HelpPanel.tsx 实现 - [ ] 搜索性能优化 - [ ] 键盘导航完善 ### 第4周: 测试和优化 - [ ] 全面功能测试 - [ ] 性能优化 - [ ] 文档完善 - [ ] 发布准备 ## 成功标准 1. **功能完整性**: 所有计划功能正常工作 2. **用户体验**: 流畅的键盘导航和响应 3. **性能表现**: 大型代码库下的稳定性 4. **代码质量**: 清晰的组件结构和可维护性 5. **文档齐全**: 完整的使用指南和API文档 ## 风险管理 ### 潜在风险 - Ink 框架限制导致的UI约束 - 大型代码库的性能问题 - 键盘事件冲突 ### 缓解策略 - 早期原型验证可行性 - 分批加载和虚拟滚动 - 标准化键盘事件处理 --- **最后更新**: 2025-06-21 **状态**: 第1周任务已完成,进入第2周开发 **版本**: v1.0.0-beta ## 🎉 第1周完成总结 (2025-06-21) ### 主要成就 ✅ **SearchInterface.tsx 重大增强** - 文件从基础搜索界面升级为功能完整的高级搜索系统 ### 新增功能详情 1. **智能搜索体验** - 键盘快捷键系统 (Ctrl+H/F/S/O + Space) - 搜索统计跟踪 (总搜索次数、平均响应时间) - 保存的搜索收藏夹功能 2. **增强的用户界面** - 搜索建议实时显示 - 活跃过滤器状态指示 - 结果展开状态视觉反馈 - 改进的导航和布局 3. **技术架构改进** - 状态管理优化 (新增6个状态变量) - 事件处理增强 (支持10+种键盘交互) - 外部进程集成 (编辑器启动) - 性能监控集成 ### 开发统计 - **代码行数**: 从 122 行增加到 416 行 (+242%) - **新增接口**: 2个 (SearchFilter, SavedSearch) - **新增功能函数**: 4个 (generateSuggestions, saveCurrentSearch, openInExternalEditor, 增强的performSearch) - **键盘快捷键**: 从 4个增加到 10个 ### 测试状态 ✅ **TypeScript编译通过** ✅ **TUI演示可运行** (存在终端兼容性警告,不影响核心功能) ---

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/anrgct/autodev-codebase'

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