OpenManus是一个开源的AI助手项目,旨在提供类似于Manus的功能,但无需邀请码。该项目由MetaGPT团队的成员在短时间内快速开发完成,现在添加了Web界面以提升用户体验。
- 项目初始化
- 实现基础命令行界面(CLI)版本
- 集成基本的AI模型功能
- 开始设计Web界面
- 创建FastAPI应用程序框架
- 实现基本的路由和模板
- 实现前端界面,包括聊天和日志展示
- 添加WebSocket支持实时通信
- 解决WebSocket依赖问题
- 添加自动打开浏览器功能
- 实现左右布局设计,左侧日志,右侧对话
- 添加停止请求功能
- 实现Manus风格的任务进展日志显示
- 优化Manus风格的进度日志系统
- 调整日志展示样式,使其更加简洁直观
- 完善文档和使用说明
- 后端:FastAPI, Python 3.12
- 前端:HTML, CSS, JavaScript (原生)
- 通信:WebSocket, REST API
- 容器化:支持Docker部署
- AI模型:支持多种大型语言模型接口
-
Web界面
- 响应式设计,适配移动和桌面设备
- 左右分栏布局:左侧日志,右侧对话
- 实时显示处理状态和日志
-
实时通信
- WebSocket实现实时日志更新
- 自动降级到轮询机制(当WebSocket不可用时)
-
日志系统
- 支持多种日志级别(info, warning, error, success)
- 按时间顺序实时显示处理步骤
- 实现简单但可靠的日志捕获系统
- 新增:Manus风格的任务进展日志
- 简洁的进行时任务描述
- 实时展示AI正在执行的思考和研究过程
- 无时间戳的极简呈现方式
- 任务完成时的总结信息
-
用户体验优化
- 自动打开浏览器功能
- 停止请求按钮
- 清除对话功能
- 代码块自动格式化
问题描述:在启动时出现"Unsupported upgrade request"和"No supported WebSocket library detected"错误。
解决方案:
- 添加WebSocket依赖检测
- 安装websockets库或uvicorn[standard]
- 实现前端优雅降级到轮询方式
问题描述:在尝试捕获loguru日志时出现"TypeError: string indices must be integers, not 'str'"错误。
解决方案:
- 创建专用的日志处理模块
- 实现SimpleLogCapture类替代loguru的复杂格式
- 使用自定义上下文管理器来处理日志
问题描述:在小屏幕设备上左右布局不合理。
解决方案:
- 添加媒体查询
- 在小屏幕上转换为垂直布局
- 调整各组件的最大宽度
问题描述:用户期望看到类似Manus的实时任务进展日志,而不是技术性的日志信息。
解决方案:
- 创建专门的思考步骤跟踪系统
- 将AI的思考过程转化为简洁的进行时任务描述
- 保持日志界面干净,只展示用户关心的内容
- 添加任务完成的总结信息
为了实现类似Manus的日志呈现方式,我们采用以下方案:
-
任务跟踪系统:
- 创建ThinkingTracker类,记录AI思考过程的关键步骤
- 将复杂的后台处理过程转化为简洁的用户友好描述
- 支持任务进度百分比估计(可选)
-
前端展示优化:
- 去除技术性的时间戳和日志级别
- 使用简单的文本行展示,每行代表一个思考步骤
- 使用淡入淡出效果增强用户体验
-
WebSocket实时更新:
- 将AI处理过程实时推送到前端
- 支持分批次更新长任务的思考步骤
-
任务完成总结:
- 在任务完成时生成简洁的总结信息
- 提供后续操作建议
-
功能增强
- 添加用户认证系统
- 支持会话历史保存
- 实现多语言支持
-
性能优化
- 优化WebSocket通信效率
- 添加日志分页功能
- 实现请求队列管理
-
用户体验提升
- 添加更多主题选项
- 实现对话导出功能
- 添加语音输入支持
- 完善Manus风格日志系统,增加更多任务类型的处理模板
-
集成测试
- 添加端到端测试
- 实现自动化UI测试
- 性能基准测试
欢迎对OpenManus Web进行贡献!您可以通过以下方式参与:
- 报告Bug或提出功能建议
- 提交代码改进Pull Request
- 改进文档
- 分享您的使用体验
请确保您的代码遵循项目的代码风格并通过所有测试。
最后更新: 2025-03-08