# DataStructurAndAlgorithmAgent **Repository Path**: cxcy666_admin/data-structur-and-algorithm-agent ## Basic Information - **Project Name**: DataStructurAndAlgorithmAgent - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-12 - **Last Updated**: 2026-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AlgoTwin AlgoTwin 是面向高校《数据结构与算法》课程的证据约束多智能体学习系统后端。系统不把大模型聊天包装成个性化学习,而是将题目作答、代码判题、知识依赖和历史错因作为可核验证据,持续更新学生认知状态并调整学习干预。 仓库同时包含 Vue 3 学生学习工作台与教师驾驶舱,前端位于 `frontend/`。 ## 核心闭环 ```text 学习行为 -> 七维画像 -> 先修图推理 -> 多模态资源/题目 -> 可视化与代码验证 ^ | +-- 双时间窗效果评估 <- 错因、掌握度、资源参与与遗忘更新 <--+ ``` 七个阶段通过 Spring AI Alibaba Graph 实际执行: ```text 画像诊断 -> 知识图谱 -> 资源生成 -> 算法可视化 -> 代码评测 -> 学习路径 -> 质量审查 ^ | +--------- 审查拒绝重试 <------+ ``` 质量节点不是固定返回通过。它会检查画像证据、图路径证据、资源类型与格式、知识库锚点、提示注入、题目答案解析、难度、隐藏用例脱敏和闭环完整性。 ## 当前能力 - 七维动态画像:知识基础、算法思维、编码、复杂度、调试、坚持度、迁移能力 - 40 个课程知识点、46 条先修/支持关系、图遍历补洞路径 - 6 类默认资源,支持 Markdown、Mermaid、课件 JSON、动画分镜 JSON、代码实验 - AI 生成内容的知识库锚定、结构校验、提示注入扫描与确定性降级 - 9 道代码实训题、28 个新增测试点,公开/隐藏用例隔离 - go-judge 独立代码沙箱:多语言、资源限制、公开/隐藏测试点和结果脱敏 - 普通题目和代码提交共同更新掌握度、错因洞察和下一轮路径 - 学习行为幂等采集、五维效果对比、证据置信度和自适应干预策略 - 同步 Agent、异步 Agent、阶段进度、决策 Trace、教师质量指标 - JWT、角色授权、学生答案脱敏和资源所有权校验 ## 技术栈 - Java 21 / Spring Boot 3.5 - Spring AI / Spring AI Alibaba Graph - Spring Security / JWT - MyBatis-Plus / MySQL - Redis - go-judge - Lombok `@Data` ## 启动 准备 MySQL、Redis 和独立部署的 go-judge。代码提交不会降级到业务主机执行。 ```bash export MYSQL_URL='jdbc:mysql://localhost:3306/dsa_agent?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true' export MYSQL_USERNAME='root' export MYSQL_PASSWORD='replace-me' export REDIS_HOST='localhost' export REDIS_PORT='6379' export REDIS_PASSWORD='' export JWT_SECRET='replace-with-at-least-32-random-bytes' export AI_API_KEY='replace-me' export AI_BASE_URL='https://your-openai-compatible-provider/v1' export AI_MODEL='qwen3.7-max' export GO_JUDGE_BASE_URL='http://your-go-judge-host:5050' export DASHSCOPE_API_KEY='replace-with-your-dashscope-key' export DASHSCOPE_WORKSPACE_BASE_URL='https://your-workspace-id.cn-beijing.maas.aliyuncs.com' export AI_IMAGE_MODEL='wan2.7-image' export AI_VIDEO_MODEL='wan2.7-r2v-2026-06-12' export ARK_API_KEY='replace-with-your-volcengine-ark-key' export ARK_IMAGE_MODEL='doubao-seedream-5-0-pro-260628' export ARK_VIDEO_MODEL='doubao-seedance-1-0-pro-250528' ./mvnw test ./mvnw spring-boot:run ``` 项目也会可选加载根目录 `.env`(该文件已被 Git 忽略),适合在 IDEA 中直接运行。需要本地创建真实教师账号时,可在 `.env` 设置: ```properties BOOTSTRAP_TEACHER_USERNAME=teacher_local BOOTSTRAP_TEACHER_PASSWORD=replace-with-a-strong-local-password BOOTSTRAP_TEACHER_NICKNAME=Course Teacher ``` 只有同时配置用户名和密码时才会创建或更新教师账号;公开注册接口始终只能创建 `STUDENT`。 启动前端: ```bash cd frontend npm install --cache .npm-cache npm run dev ``` 未配置 AI 时,资源、题目和路径会使用知识库证据模板降级;画像诊断会使用行为证据算法。比赛部署建议配置科大讯飞兼容模型,并向赛题方确认具体模型和 AI Coding 工具的合规要求。 当前主推理模型为 `qwen3.7-max`。智能学习、智能出题、资源生成、算法流程和编程助教均可携带 PNG、JPEG 或 WebP 图片;单次最多 4 张、单张最多 6MB,后端会校验 data URL、Base64 和图片文件签名。 当前 DashScope 兼容端点上的 `qwen3.7-max` 不直接接受 `image_url` 消息,因此系统使用 `AI_VISION_MODEL=qwen3-vl-flash` 提取受限视觉证据,再交由 `qwen3.7-max` 完成全局推理。这样主模型保持统一,同时图片输入不是前端假入口;若供应商后续为主模型开放直接视觉消息,可在统一 AI 网关中切换。 算法实验的多模态素材使用阿里云百炼工作空间:`wan2.7-image` 生成 2K 黑板知识图,`wan2.7-r2v-2026-06-12` 基于知识图生成 10 秒无人黑板讲解视频。配置 `DASHSCOPE_API_KEY` 和 `DASHSCOPE_WORKSPACE_BASE_URL` 后启用;基础地址可带或不带 `/api/v1`。资源中心的知识图、思维导图等通用素材仍可使用火山引擎 Ark,并通过 `ARK_*` 变量独立配置。 仓库中的 `docker/gojudge` 提供包含 C、C++、Python、Java、Go 的镜像构建和部署脚本。 ## 验证 ```bash ./mvnw -q -DskipTests compile ./mvnw -q test ``` 完整资料: - [国赛级产品完整介绍与功能说明书](docs/project-introduction.md) - [后端 API](docs/backend-api.md) - [系统设计](docs/competition-design.md) - [部署说明](docs/deployment.md) - [测试报告](docs/test-report.md) - [实验协议](docs/evaluation-protocol.md) - [PPO、双模态图谱与 Few-shot 错因分类](docs/innovation-algorithms.md) - [开源软件说明](docs/third-party-notices.md) ## 重要边界 代码完成不等于已经获得国奖。真实用户实验、前端体验、7 分钟演示视频、PPT 和现场答辩仍属于参赛作品的一部分。仓库中的质量指标只有达到规定样本量后才能用于比赛结论。