Agent_Design.md 5.0 KB

SoftwareDevHelper 智能体设计文档

1. 智能体概述

名称:SoftwareDevHelper 角色:专业的软件开发学习助手 目标:为软件开发初学者提供个性化的学习体验,包括水平评估、智能出题、开发指导以及自动化的代码测试与打分。 核心框架:基于 HelloAgents 框架的 SimpleAgent 范式构建。

2. 系统提示词 (System Prompt)

智能体的行为和职责由以下系统提示词严格定义:

你是一个专业的软件开发学习助手。你的职责是:
1. 使用 user_memory 工具了解用户的当前编程水平和历史做题记录。
2. 根据用户水平,为他们出适合的编程题目,或者从网上搜索真实的开发案例。
3. 在用户开发过程中,提供有针对性的建议和指导。
4. 当用户完成开发并上传项目压缩包后,你需要:
   - 仔细分析题目要求。
   - 编写严谨的 pytest 测试用例代码。
   - 使用 code_test 工具,传入压缩包路径和你的测试代码,对用户的项目进行自动化测试。
   - 根据测试结果给出最终打分和详细的代码审查反馈。
5. 任务完成后,使用 user_memory 工具更新用户的水平评估和做题记录。

请始终保持鼓励和专业的态度。

3. 工具与技能 (Tools & Skills)

该智能体挂载了两个核心的自定义工具,用于实现与外部环境(文件系统、测试环境、记忆库)的交互:

3.1 UserMemoryTool (用户记忆工具)

  • 功能:管理用户的编程水平和做题历史记录。实现跨会话的个性化记忆。
  • 参数
    • action (string, 必填):操作类型,可选 'get'(读取记忆)或 'update'(更新记忆)。
    • level (string, 选填):用户的新水平评估(例如 'beginner', 'intermediate', 'advanced')。
    • record (string, 选填):新完成的题目记录。
  • 底层实现:将数据持久化存储在后端的 data/user_memory.json 文件中。

3.2 CodeTestTool (代码自动测试工具)

  • 功能:接收用户上传的项目压缩包,自动解压,并运行由 LLM 动态生成的测试代码,最后给出评分。
  • 参数
    • zip_path (string, 必填):用户上传的项目压缩包绝对路径。
    • test_code (string, 必填):由智能体根据题目要求动态生成的 pytest 测试代码。
  • 底层实现
    1. 清理并创建解压目录 outputs/extracted
    2. 使用 zipfile 解压用户代码。
    3. test_code 写入 test_generated.py
    4. 使用 subprocess 调用 pytest 运行测试,并捕获标准输出和错误信息。
    5. 根据退出码(returncode)给出 100 分(全过)或 0 分(有失败),并返回详细的测试日志供智能体分析。

4. 交互流程 (Workflow)

  1. 初始化/对话:用户进入系统,智能体通过 UserMemoryTool 获取用户的当前水平(如 beginner)和历史记录。
  2. 出题阶段:智能体根据记忆信息,生成难度适宜的编程题目。
  3. 开发与指导:用户在本地开发,期间可通过聊天界面向智能体请教问题,智能体提供代码建议。
  4. 提交与测试
    • 用户通过前端上传 .zip 格式的项目代码。
    • 后端接收文件并保存,将文件路径以系统消息形式发送给智能体。
    • 智能体编写对应的 pytest 测试用例(支持子目录模块动态导入)。
    • 智能体调用 CodeTestTool 执行自动化测试。
  5. 反馈与更新
    • 智能体根据测试输出日志,为用户提供打分和代码审查报告。
    • 智能体调用 UserMemoryTool 将本次题目记录到历史中,并视情况升级用户的水平等级。

5. 交互设计 (Interaction Design)

  • 输入输出格式
    • 用户输入:自然语言文本、代码片段、项目压缩包 (.zip)。
    • 智能体输出:格式化的 Markdown 文本、工具调用可视化控件(实时展示工具调用的参数与结果)。
  • 用户界面 (UI)
    • 基于 Web 的聊天界面,提供清晰的对话流。
    • 支持多会话管理,左侧边栏显示历史会话列表,支持切换和删除。
    • 右侧边栏实时展示用户的当前水平和历史做题记录。
    • 聊天气泡内嵌专门的 UI 控件,用于优雅地展示智能体后台调用工具的详细过程。
  • 反馈机制
    • 在打分后,提供详细的代码审查反馈,指出优点和改进空间。
    • 当测试失败时,明确指出是逻辑错误还是项目结构错误,并提供修改建议。
    • 在执行工具操作前,智能体会先向用户解释即将进行的操作,保持透明度。

6. 配置说明

  • 模型配置:默认使用配置在 .env 中的大语言模型(如 Qwen/Qwen2.5-72B-InstructGeminiAzure OpenAI)。
  • 特殊配置:为兼容部分严格校验 JSON Schema 的模型(如 Azure/Gemini),在初始化 SimpleAgent 时,通过 Config(todowrite_enabled=False) 禁用了框架内置的 TodoWrite 工具。