软件工程第二次团队作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13559 |
| 这个作业的目标 | 构建一个能说会做的智能体 |
| 学号 | 102301209周士豪 102301210郑烨 102301213张祥 102301215张蔡涵 102301218许有幸 102301219许睿宸 102301236林涵 102301237李泽聿 102301239黄明杰 102301241冯德衍 102301242陈溢滨 102301310郑显喆 |
智能任务管理助手 — Agent 说明文档
一、需求描述
项目目标
本项目旨在开发一个“智能任务管理助手”,即一个能够辅助用户进行任务管理和待办清单生成的本地智能体。主要需求包括:
- 自然语言对话(能说)
- 支持中文闲聊与指令式交互。
- 任务管理(会做)
- 增删改查任务、生成待办清单、完成任务统计。
- 支持 MCP 标准
- 使用 Model Context Protocol (MCP) 暴露工具,支持外部调用(如 MCP 客户端)。
- 多种 UI 支持
- 提供 Web UI(Streamlit)和 CLI 界面。
- UI 可切换“使用 MCP / 本地模式”。
- 数据本地持久化
- 数据存储至
data/todos.json,无需依赖外部 API。
- 数据存储至
二、业务流描述
总体架构
- 用户通过 Web UI 或 CLI 提交自然语言指令。
- 指令传递至 Agent 核心模块
agent_core.py,进行解析与意图识别。 - Agent 调用任务管理工具
todo_tool.py或通过 MCP 客户端与 MCP 服务器交互,执行任务操作。 - 操作结果返回给 Agent,再由 UI 展示;数据写入
data/todos.json,使 UI/CLI/MCP 共用同一数据。
核心业务流程
1. 任务创建
- 用户输入自然语言指令,例如“添加任务 完成项目报告 截止2025-10-25”。
- 系统解析输入并提取任务标题、截止日期、优先级等信息。
- 调用任务工具进行创建,并更新本地 JSON 文件。
2. MCP 模式切换
- Web UI 默认通过 MCP 调用任务工具。
- MCP 初始化失败时,自动回退至本地模式,并提示用户。
3. 数据同步
- MCP 与本地模式共享
data/todos.json数据文件,确保任务一致性。
三、实现说明
技术栈
- 语言:Python
- Web UI:Streamlit
- CLI:Rich
- 数据存储:JSON 文件
- 交互协议:MCP(Model Context Protocol)
文件结构
agent/
├── app.py # Streamlit Web UI
├── src/
│ ├── agent_core.py # 自然语言解析 + 执行
│ ├── mcp_client.py # MCP 客户端封装
│ ├── tools/
│ └── todo_tool.py # 任务工具(本地实现)
├── mcp_server/
│ └── server.py # MCP Server
├── data/
│ └── todos.json # 任务数据(自动创建)
├── docs/
│ └── MCP.md # MCP 使用说明
├── scripts/
│ └── mcp_smoke_test.py # MCP 冒烟测试脚本
├── config/
│ └── settings.yaml # 配置文件
├── requirements.txt # 依赖包配置
核心模块说明
1. agent_core.py
- 功能:负责自然语言解析、意图识别和任务操作分流。
- 核心逻辑:
handle():解析用户指令并调用 MCPClient 或本地工具执行任务。
2. todo_tool.py
- 功能:管理任务数据,包括增删改查、统计分析和清单生成。
- 数据存储路径:
data/todos.json。
3. MCP 组件
- MCP Server:暴露任务工具接口,支持跨语言调用。
- MCP Client:封装与 MCP Server 的通信逻辑,管理会话和自动重连。
4. Web UI
- 文件:
app.py - 功能:
- 提供聊天框与任务看板。
- 支持 MCP 模式切换。
- 提供任务快捷操作按钮。
四、使用示例

五、GitHub 提交
GitHub 链接:https://github.com/zhangcaihan/ruanjiangongcheng/tree/main/agent
六、小组分工
核心开发
- 自然语言处理:负责意图识别与任务解析逻辑。
- 成员:周士豪、郑烨、许睿宸
- 任务工具开发:开发
todo_tool.py并实现任务管理功能。- 成员:张蔡涵、林涵、陈溢滨
- MCP 框架:开发 MCP Server 与 Client。
- 成员:李泽聿、黄明杰
前端与用户体验
- Web UI:设计与开发 Streamlit 界面。
- 成员:冯德衍、郑显喆
- CLI 界面:开发 Rich 命令行界面。
- 成员:张祥
测试与部署
- 冒烟测试:开发测试脚本,验证功能完整性。
- 成员:许有幸
- 文档与报告:编写用户手册与部署说明。
- 成员:全体
七、小组成员心得
核心开发组
自然语言处理团队(周士豪、郑烨、许睿宸)
通过本次开发,我们深入理解了自然语言解析的核心流程,尤其是在意图识别与任务解析的实现过程中,我们不断优化了指令的解析准确率。通过构建 _parse_intent 方法,我们让系统具备了从自然语言到结构化指令的转化能力。这个过程让我们掌握了自然语言处理中的规则引擎设计和异常处理机制,也深刻体会到用户交互过程中语言模糊性的挑战和解决方案。
任务工具开发团队(张蔡涵、林涵、陈溢滨)
在任务工具开发中,我们负责了 todo_tool.py 的实现,这让我们深刻认识到数据持久化和任务管理逻辑的重要性。从任务的增删改查到统计分析的实现,我们不断优化了 JSON 数据存储的效率,并设计了灵活的接口供 MCP 和本地模式调用。通过这一实践,我们不仅掌握了 Python 面向对象编程的精髓,还学会了如何设计高效的任务管理工具。
MCP 框架开发团队(李泽聿、黄明杰)
通过本次开发,我们深入理解了 MCP 框架的核心理念,从客户端到服务端的开发让我们掌握了标准化接口设计的流程。在开发 MCP server.py 和 mcp_client.py 的过程中,我们实现了高效的上下文管理和通信机制,解决了多个会话稳定性问题。这让我们学会了如何设计松耦合、高扩展的框架,为后续集成新工具提供了便利。
前端与用户体验组
Web UI 开发团队(冯德衍、郑显喆)
在 Web UI 的开发中,我们专注于通过 Streamlit 提供用户友好的交互界面。通过设计聊天框与任务看板的布局,我们不断优化了界面的易用性和响应速度。同时,侧边栏 MCP 模式切换的实现让我们深入理解了前后端交互的完整流程。这个项目让我们掌握了如何使用 Streamlit 快速搭建数据驱动的 Web 应用,并提升了我们的用户体验设计能力。
CLI 界面开发团队(张祥)
在 CLI 的开发中,我们使用 Rich 框架实现了一个高效且美观的命令行界面。通过设计彩色输出和命令提示,我们让 CLI 不仅功能强大,还具备了良好的用户体验。这个过程帮助我们掌握了如何通过命令行交互提升工具的实用性,也让我们深刻理解了不同用户群体的需求差异。
测试与部署组
冒烟测试团队(许有幸)
在测试过程中,我们开发了 mcp_smoke_test.py,验证了 MCP 模式的端到端调用流程。这让我们深刻认识到测试对保障系统稳定性的重要性。通过模拟用户场景,我们发现并修复了多个边界问题,确保了核心功能的可靠性。这个项目让我们掌握了如何设计高效的测试脚本,并提升了问题排查能力。
文档与报告团队(全体)
通过编写文档和部署说明,我们系统性地总结了项目的开发流程与架构设计。通过对 README 和 DEPLOYMENT 文档的编写,我们深刻认识到清晰的技术文档对团队协作效率的提升作用。这个过程不仅让我们学会了如何撰写开发文档,也让我们对项目的整体架构有了更深入的理解。
结语
这个项目让每一位成员都收获颇丰,从技术层面,我们掌握了 MCP 框架、Streamlit、Rich、标准化接口设计、数据持久化等多项关键技术;从团队协作层面,我们学会了如何在大型团队中分工协作、解决冲突。更重要的是,我们设计出了一个“能说会做”的智能任务管理系统,这不仅是技术的结晶,更是我们团队智慧与努力的体现。

浙公网安备 33010602011771号