StudyPal 个性化学习助教 —— 用华为云码道(CodeArts)+ 新特性,6 小时从 0 到 1 落地一款 K12 错题诊断小程序

发布时间:2026/5/30 20:23:03

StudyPal 个性化学习助教 —— 用华为云码道(CodeArts)+ 新特性,6 小时从 0 到 1 落地一款 K12 错题诊断小程序 StudyPal 个性化学习助教 —— 用华为云码道CodeArts 新特性6 小时从 0 到 1 落地一款 K12 错题诊断小程序案例介绍本案例完整记录了我使用华为云码道代码智能体作为唯一编码入口结合 新上线的「多任务并行管理 / 子代理 / 记忆模块 / AGENTS.md / 子任务 MCP」等特性从 0 到 1 构建一款可落地的K12 错题诊断小程序「StudyPal」的全过程。不同于传统的「IDE Copilot」开发模式本次实战中AGENTS.md取代了零散的prompt.md/coding-style.md让码道在每次会话开始时自动加载项目规约5 个子代理architect / backend / miniapp / devops / reviewer让一个开发者具备「小型团队」般的并行产能记忆模块让码道记住我对 Python 3.11 异步语法的偏好、commit 规范和「跑一下」这种口语化指令多任务并行在一次工作台中同时推进「后端写接口」「小程序写页面」「文档同步更新」互不干扰MCP 接入华为云 OBS、OCR 服务让智能体直接读取真实的云资源元数据生成的代码即可运行。最终产出1 个可上架的小程序前端、1 个可部署到 ECS 的 FastAPI 后端、1 套含 SDD/接口契约/部署脚本的完整工程全程6 小时完成含调试单次任务最大 Token 消耗 78K。案例流程1. 业务背景与方案选型1.1 痛点K12 学生每天产生大量错题传统错题本存在「记录费时、归类粗糙、复习无的放矢」三大问题传统流程耗时痛点抄题 → 贴本5 分钟/题学生抗拒自己归类知识点难错认知识点 → 复习方向偏找变式题翻教辅难度不匹配1.2 方案StudyPal拍照 → 自动识别 → AI 诊断知识点 → 生成 3 道难度匹配的变式题 → 形成学情画像。是否学生拍错题OBS 临时上传后端 OCR 识别盘古 LLM 知识点诊断诊断成功?生成 3 道变式题本地题库降级更新学情画像推送学习计划1.3 技术选型层选型理由终端微信小程序原生用户零安装适配中小学后端Python 3.11 FastAPI SQLAlchemy 2.0 异步类型安全、自带 OpenAPI、码道支持好AI华为云盘古大模型Pangu LLM OCR国产合规未成年内容安全存储华为云 OBS题图 SQLite/RDS结构化起步成本低平滑升级部署华为云 ECS 2C4G Docker简单稳定符合案例实用性要求IDE华为云码道CodeArtsAI IDE本次实战核心2. 资源准备2.1 华为云资源清单资源规格用途ECS 实例s6.large.22vCPU/4GB部署 FastAPIOBS 桶studypal-question标准存储题图存储SSE-KMS 加密OCR 服务通用文字识别题目文本提取盘古大模型NLP-N2-Large按 Token 计费知识点诊断 / 变式题生成域名 SSL可选小程序 HTTPS 必需省钱小贴士开发阶段可使用「华为云开发者空间」赠送的免费云开发环境CloudIDE 测试用 OBS 配额几乎零成本完成本案例。2.2 本地开发环境macOS / Windows / Linux 均可安装华为云码道 IDE基于 VS Code 内核Python 3.11、Node.js 18微信开发者工具2.3 在码道中打开项目第一次打开 StudyPal 工程目录时码道会自动检测到根目录的AGENTS.md并提示「已加载项目规约可使用以下子代理architect / backend / miniapp / devops / reviewer」。这正是5 月新特性——「新增 AGENTS.md 文件支持灵活定义 Agent 规则」。它做的事其实是把开会才能口口相传的项目约定持久化为代码让 AI 像新员工一样每天上班前先读一遍员工手册。3. 实战开发从一句话需求到可运行系统3.1 第一步用architect子代理产出 SDD打开码道侧边栏输入architect帮我为 StudyPal 项目产出系统设计文档SDD包含业务背景、用例图、总体架构、ER 图、接口契约、非功能需求使用 mermaid 图输出到docs/sdd/system-design.md。architect子代理只加载了docs/与AGENTS.md的上下文子代理特性上下文精准裁剪避免主对话被污染约 18 秒后产出了 docs/sdd/system-design.md节选如下华为云终端HTTPS直传(签名URL)读OCRChat JSON微信小程序ECS 2C4GFastAPI 服务OBS 题图存储OCR 服务盘古大模型SQLite/RDS关键体感相比常规对话式 AI子代理产出的 SDD结构完全对齐我在 AGENTS.md 第 3 节定义的格式要求无需手动修剪。3.2 第二步开启「多任务并行」三线并发开发这一步是码道 5 月新特性「多任务并行管理」最闪光的时刻。我同时开了 3 个任务任务编号子代理任务名T1backend[diagnose]-add-错题诊断接口T2miniapp[diagnose-page]-add-错题诊断页T3architect[api-doc]-sync-诊断接口OpenAPI3 个任务在码道工作台右侧并排显示进度互不阻塞。我可以一边看 T1 的代码 diff一边在 T2 输入「这里改成圆角卡片」T3 在后台默默更新接口文档。3.2.1 T1后端错题诊断接口关键代码backend产出的 backend/app/api/diagnose.py 严格遵守 AGENTS.md 第 2 节 “Hard Rules”classDiagnoseRequest(BaseModel):image_url:strField(...,descriptionOBS 上的题目图片 URL已签名)subject:strField(...,description学科math / physics / chemistry / english)grade:intField(...,ge1,le12,description年级 1-12)router.post(,response_modelDiagnoseResponse,summary错题诊断)asyncdefdiagnose(req:DiagnoseRequest,service:DiagnoseServiceDepends(get_diagnose_service),)-DiagnoseResponse:ifreq.subjectnotin{math,physics,chemistry,english}:raiseStudyPalError(codeSUBJECT_INVALID,messagef不支持的学科{req.subject})returnawaitservice.diagnose(image_urlreq.image_url,subjectreq.subject,gradereq.grade)关键代码释义全程异步async def符合 AGENTS.md 第 4 节 “记忆策略” 中「禁止生成同步 ORM 代码」的规则抛出业务异常StudyPalError由app/main.py统一兜底符合「Hard Rule #4」错误兜底原则依赖注入用 FastAPI 原生Depends方便测试。服务层的 prompt 工程也很有代表性backend/app/services/diagnose_service.py_DIAGNOSE_PROMPT你是一位资深 K12 学科教师。请基于以下题目输出严格的 JSON { knowledge_points: [{code: ..., name: ..., confidence: 0.0-1.0, weakness_level: 1-5}], error_reason: ..., suggested_action: ... } ...提示词全文见源码码道 prompt 优化经验强制 JSON 输出 response_format{type: json_object}让模型乖乖给结构化结果给weakness_level打分锚点5 极薄弱减少模型主观漂移限制error_reason ≤ 120 字防止输出爆炸消耗 Token。3.2.2 T2小程序错题诊断页关键代码miniapp子代理产出的miniprogram/pages/diagnose/index.jsasync_uploadAndDiagnose(filePath){this.setData({loading:true,loadingText:正在上传到云端...,result:null});try{constimageUrlawaitupload.toOBS(filePath);this.setData({loadingText:AI 正在识别与诊断...});constresultawaitrequest.post(/api/v1/diagnose,{image_url:imageUrl,subject:this.data.subject,grade:this.data.grade,});this.setData({loading:false,result});}catch(err){this.setData({loading:false});wx.showToast({title:err.message||诊断失败,icon:none});}}关键释义走「前端拿签名 → 直传 OBS」路线避免后端转发图片节省 ECS 带宽符合 AGENTS.mdHard Rule #3两段式 loading 文本“上传中” → “AI 诊断中”关键体验细节失败用wx.showToast而非console.log因为 AGENTS.md 第 8 节明确禁止print/console.log调试。3.2.3 T3接口文档自动同步architect在后台读取 T1 产出的 Pydantic 模型自动把DiagnoseRequest / DiagnoseResponse翻译成docs/sdd/api.md保证「代码即文档」始终一致。3.3 第三步记忆模块带来的心电感应我在某次会话中随口对码道说我习惯用 ruff black 做 lint行宽 100我说跑一下就是cd backend uvicorn app.main:app --reload --port 8000。随后码道弹出提示「已将以下偏好加入项目记忆后续会话自动生效」。第二天我打开新会话只输入了一句跑一下码道直接执行了uvicorn启动命令新生成的 Python 文件自动符合 ruff 规则再也不用反复纠正。这就是5 月新特性「记忆模块从被动响应到主动懂你」的真实价值。3.4 第四步MCP 接入华为云 OBS / OCR码道支持 MCPModel Context Protocol我配置了官方的huaweicloud-obs-mcp服务后子代理backend可以直接读取我桶里的真实文件元数据生成代码。例如它生成的upload_service.py中# MCP 自动注入bucketstudypal-question, regioncn-north-4, kms_key_idalias/studypalclientObsClient(access_key_idsettings.obs_access_key,secret_access_keysettings.obs_secret_key,serversettings.obs_endpoint,)urlclient.createSignedUrl(methodPUT,bucketNamestudypal-question,# ← MCP 读到真实桶名后填入objectKeyfraw/{user_id}/{ts}.jpg,expires3600,headers{x-obs-server-side-encryption:kms},)对比体感没有 MCP 时AI 只能给通用模板有了 MCPAI 给的是当下你账号、当下你这个桶、当下你这把 KMS Key 的真实可执行代码。3.5 第五步reviewer一键安全评审代码全部就绪后发起reviewer请对当前 PR 做安全 性能 可读性评审。reviewer是只读子代理10 秒后给出 7 条建议其中我采纳了 3 条#建议严重度是否采纳1OBS 签名 URL 应限制Content-Type: image/jpeg高✅2LLM gateway 缺少超时熔断中✅加了 30s 超时 限流3测试覆盖率仅 62%未达 AGENTS.md 阈值 70%中✅补 4 个测试用例4loguru日志未脱敏用户 ID中❌开发阶段保留4. 部署与上线4.1 一键部署到华为云 ECSscripts/deploy_ecs.shdockerbuild-tstudypal-api:0.1.0.dockerrm-fstudypal-api2/dev/null||truedockerrun-d--namestudypal-api\--restartalways\-p8000:8000 --env-file ./.env\-v$(pwd)/data:/app/data\studypal-api:0.1.0在 ECS 上执行cdstudypalcpbackend/.env.example backend/.env# 填入 OBS / LLM 凭据bashscripts/deploy_ecs.sh12 秒内健康检查通过[1/4] 构建 Docker 镜像 ... [2/4] 停止旧容器 ... [3/4] 启动新容器 ... [4/4] 健康检查 ... ✅ 部署成功访问 http://ECS 公网 IP:8000/docs 查看 OpenAPI5. 运行效果展示5.1 真实拍摄一道初二数学题5.2 AI 诊断结果返回 JSON已格式化{question_text:已知一次函数 ykxb 经过点(1,2)和(-1,4)求 k、b 的值。,knowledge_points:[{code:math.fn.linear,name:一次函数解析式,confidence:0.96,weakness_level:4},{code:math.eq.linear2,name:二元一次方程组,confidence:0.81,weakness_level:3}],error_reason:学生易把待定系数法的两个方程列错常见错误是把 y 与 x 颠倒代入。,suggested_action:用代入法重做 3 道同类题注意先写 ykxb 再代入。}5.3 学情雷达图家长端6. 数据看板码道 Token 消耗复盘打开码道「数据看板 → Token 消耗监控」本次 6 小时实战的真实数据阶段任务Token 消耗耗时设计architect写 SDD12.3K18s编码T1 后端诊断接口28.7K4 min编码T2 小程序诊断页21.4K3 min编码T3 文档同步9.8K后台异步MCPOBS 真实代码生成14.6K22s评审reviewer全工程 CR31.2K12s合计—117.9K—7. 关键经验总结7.1 码道新特性使用清单新特性本案例落地点推荐指数AGENTS.md项目根AGENTS.md定义 5 个子代理 Hard Rules⭐⭐⭐⭐⭐子代理architect / backend / miniapp / devops / reviewer⭐⭐⭐⭐⭐多任务并行一次开 3 个任务并发推进⭐⭐⭐⭐⭐记忆偏好 / 跑命令 / 学科领域知识⭐⭐⭐⭐数据看板Token 监控避免单次任务爆量⭐⭐⭐⭐MCPOBS / OCR 真实云资源接入⭐⭐⭐⭐Skillsdev-process-framework function-detail⭐⭐⭐7.2 三个真实踩坑AGENTS.md 写得太宽泛—— 第一版只写了一句使用 Python结果生成出来的全是同步代码。修正第 5 节明确要求 SQLAlchemy 2.0 异步 from __future__ import annotations。多任务并行误删文件—— T1 和 T2 同时修改了app/main.py的 router 注册。修正在 AGENTS.md 第 6 节加上「禁止两个任务同时改 main.py」码道现在会主动告警。MCP 鉴权错误—— OBS MCP 第一次配置时把 SK 写错子代理生成的代码报 403。修正用华为云 IAM 子账户 仅授权该桶的最小权限策略。7.3 给想落地的开发者三条建议从 AGENTS.md 开始而不是从if __name__ __main__开始。把项目纪律写进去省 70% 来回纠正时间。不要怕拆子代理。一个全能型主代理上下文很容易被 1 万行代码塞爆5 个职责清晰的子代理远比 1 个全栈代理可靠。多任务别贪多。同时 3 个并行最舒适超过 5 个人脑会成为瓶颈。

相关新闻