多用户
教师与学生同时在线使用,互不影响





《互联网软件开发技术与实践》· 第 1 课(上)
主讲人:张齐勋
单位:北京大学
2026 年秋
完成一套智能化的互联网应用。教学案例为智能教学平台 CampusClaw:登录、班级、讲义、作业,并接入大语言模型、智能体、知识库、技能与 MCP。智能能力须接入系统主业务。
规约驱动开发(SDD)。先明确谁来使用、要做什么、不做什么、失败时如何处理、以什么证据验收,再实现。同一份规约既驱动开发,也作为验收标准。
使用 Cursor、Codex、Trae、Claude Code 一类 Harness(由模型、工具与代码仓库构成的 AI 开发环境):按规约修改仓库、启动系统、以运行结果和测试判定是否完成。模型声称完成,不等于验收通过。
| 考核环节 | 占比 | 说明 |
|---|---|---|
| 平时作业 | 50% | 各课课后任务、过程性练习等 |
| 小组项目 | 50% | 分组完成 CampusClaw 项目并验收、答辩 |
登录产品入口,并非聊天框
讲义知识库入库,归属本班
助手智能体:提示词 / 技能 / MCP
检索知识库须带来源;未命中时明确说明
对话大语言模型流式输出
开关关闭技能后,同一题目行为发生变化
作业技能:批改、改分、错题
隔离权限与审计,他班不可见
主路径能够完成真实任务:登录、查看本班讲义、提交作业、技能开关改变行为。失败时也有规定表现:未登录、越权、无资料时系统如何响应。能打开页面,不等于功能完整。
多人同时使用时,列表与检索须在可接受时间内返回。作业批改等耗时任务不能阻塞整页,应异步处理。本地预览很快、部署到公网后需等待数秒,说明性能约束未写清。
身份认证、权限隔离、跨班不可见;API Key 仅存于服务端,不进入前端和仓库。班级范围由服务端根据身份推导,不得信任客户端传入的班级标识。
教师与学生同时在线使用,互不影响
页面 / 接口 / 业务 / 数据分离,可替换
公网可访问,可重复发布、可回归
可执行的操作受控,跨班不可见
讲义、作业、日志统一存放于服务端
登录态、作业状态、改分记录可追踪
浏览器 / H5 / 小程序使用同一套 API
具备提示词、技能、知识库,接入主业务
| 层 | 常见选择 | 在本案例中的作用 |
|---|---|---|
| 前端 | React、Vue;Next、Nuxt | 登录页、讲义列表、助手对话、教师配置 |
| 服务端 | Spring、Nest/Express、Django/FastAPI、Go | 鉴权、路由技能、写审计、改分规则 |
| 数据 | MySQL、PostgreSQL、对象存储 | 用户、班级、讲义、作业、切片文件 |
| 缓存 | Redis 等 | 会话、热点数据、检索结果 |
| 消息队列 | RabbitMQ、Kafka、Redis 队列 | 作业批改等耗时任务异步化 |
| 检索与模型 | 向量检索(如 pgvector)、模型 HTTP API | 知识库检索、解题引导等技能的文本生成 |
| 多端 / 运行 | 浏览器、H5、小程序;Git、Docker、CI、Nginx | 共用同一套接口;容器化部署 |
登录态、热点讲义、检索结果会被反复读取。每次都访问数据库会增加延迟并可能造成过载。可用 Redis 暂存近期仍需使用的数据。
作业批改需要调用模型,可能耗时数十秒。同步等待会阻塞页面。任务入队后先返回“处理中”,由消费者异步执行,失败后可以重试。
知识库不是整本放入提示词。先把文档切分成片段、转换为向量(即"嵌入"),检索出相关片段后再提供给模型。模型通过 HTTP API 调用,密钥保留在服务端。





第 1 课 · 做成可上线、可验收的互联网应用