面向教育 Agent 的 Harness 学习进度持久化:从框架搭建到生产级落地全攻略


标题备选

  • 面向教育 Agent 的 Harness 学习进度持久化:解决学生学习状态丢失的最后一公里
  • 教育 Agent 开发必看:用 Harness 编排 + 全栈存储实现可追溯、可复用的学习进度持久化
  • Harness AI DevOps 赋能教育:构建适配大模型交互的生产级学习进度存储系统
  • 告别学习状态“断片”:教育 Agent + Harness 持久化方案的设计与实现
  • 全链路覆盖:从本地原型到云端部署的教育 Agent Harness 学习进度持久化实战

引言

痛点引入

上周在我的技术社区——「大模型教育Agent实战营」里,连续收到了3条新人开发者的崩溃式求助:

  1. “我用LangChain做了个小学数学错题本Agent,本地跑的时候学生上次卡到的鸡兔同笼变形题、计算正确率曲线都好好的,打包成Electron桌面应用发给测试家长用,第二天重启数据全没了!我快被投诉死了😭”
  2. “我的英语听说训练Agent对接了Hugging Face的Whisper模型和Claude Sonnet,用PostgreSQL存学习进度但每次调模型提示词里塞进度JSON字符串要么太长要么格式错乱,Agent有时候记不得昨天学的单词拼写规则,单词听写全白搭!有没有统一的持久化+编排方案啊?”
  3. “好不容易凑钱搭了个云端Python Flask教育Agent,每天处理100多个学生请求,但用Redis当缓存+SQLite当本地备份的组合,上周服务器重启直接丢了30个学生的月度学习报告生成任务和2周的错题重做记录!Harness这个AI开发平台好像能管编排和监控,能不能顺便把学习进度存明白?”

没错,这三个问题本质上是同一个:教育Agent的「生命线」——学习进度持久化——没有做好。和普通的工具类、对话类Agent不同,教育Agent是「长上下文依赖型+个性化动态调整型」的应用,它的核心竞争力不是一次高质量的回答,而是能记住学生从第一次接触课程到现在的所有学习轨迹:知识点掌握度(可量化的标签、数值、图谱)、错题历史(题目原文、错误答案、错误原因分析、重做次数、掌握时间)、学习路径规划(上次的学习计划、卡壳的节点、下次要学的内容优先级)、交互偏好(喜欢用什么语言提问、喜欢视频解析还是文字解析、做题速度偏好)、甚至学习情绪(对话中的负面/正面情绪占比、是否需要心理疏导)。这些数据如果丢失、错乱、或者Agent无法高效读取,那么教育Agent和一个在线字典、在线计算器没有任何区别——个性化学习体验完全无法实现,用户留存率更是无从谈起。

文章内容概述

为了彻底解决这三个新人开发者的问题,也为了给所有教育Agent从业者提供一套可落地、可复用、可扩展的生产级学习进度持久化方案,本文将从以下几个方面展开:

  1. 核心概念拆解:什么是教育Agent的学习进度?什么是Harness AI Developer Platform(本文简称Harness ADP)?为什么Harness ADP能解决教育Agent的学习进度持久化问题?
  2. 问题背景与挑战深度分析:从行业发展历史、现有方案的缺陷、教育Agent特有的数据需求三个维度,讲清楚为什么学习进度持久化是教育Agent开发的“老大难”问题。
  3. 系统架构设计:基于Harness ADP的编排能力、全栈存储适配能力、监控告警能力,构建一套“存储层-接入层-编排层-应用层-监控层”的五维学习进度持久化系统,包含概念ER图、交互关系图、数学模型(知识点掌握度更新公式、学习路径调整公式)。
  4. 环境搭建与工具选型:手把手教你搭建Harness ADP的本地开发环境+云端生产环境,以及如何根据不同的教育场景(本地原型、K12/职业教育轻量应用、企业培训重型应用)选择合适的存储组件(SQLite、PostgreSQL、Redis、MongoDB、Neo4j、Milvus)。
  5. 核心功能实现
    • 学习进度数据模型设计:用SQLAlchemy(Python)或Prisma(TypeScript)设计符合五维系统的关系型+非关系型+向量数据库混合数据模型。
    • Harness ADP Pipeline 编排:设计“知识点学习-交互记录-进度更新-个性化反馈”的完整Pipeline,包含任务拆分、条件判断、异常处理、重试机制。
    • 存储接入层实现:用Python/TypeScript封装一套通用的存储SDK,支持一键切换不同的存储组件,并且能自动处理数据格式转换(LLM友好的JSON→关系型数据库表→向量数据库向量索引→Neo4j知识图谱节点/边)。
    • 监控告警层实现:用Harness APM(应用性能监控)和Harness Alerting监控存储接入层的请求延迟、错误率、数据一致性,以及Pipeline的执行成功率、执行时间,设置合理的告警阈值(比如存储错误率超过1%、Pipeline执行超时超过30秒触发企业微信/钉钉告警)。
  6. 算法实现
    • 基于贝叶斯网络的知识点掌握度更新算法:用Python实现贝叶斯网络模型,根据学生的做题正确率、做题时间、错误原因分析等数据,实时更新知识点的掌握概率。
    • 基于强化学习的学习路径调整算法:用Python实现DQN(深度Q网络)模型,根据学生的历史学习轨迹、学习情绪、知识点掌握度,动态调整下次学习的内容优先级。
  7. 实际场景应用
    • 本地原型场景:用Harness ADP本地版+SQLite+Redis+LangChain做一个小学数学错题本Agent的学习进度持久化演示。
    • K12轻量应用场景:用Harness ADP云端版(免费试用版)+PostgreSQL+Redis+Neo4j+Prisma做一个英语单词拼写训练Agent的学习进度持久化演示。
    • 企业培训重型应用场景:用Harness ADP企业版+PostgreSQL+Redis+Milvus+MongoDB+SQLAlchemy做一个Java编程技能提升Agent的学习进度持久化演示。
  8. 最佳实践Tips:从数据安全(加密存储、访问控制)、数据一致性(ACID事务、CAP理论权衡、最终一致性保证)、性能优化(缓存策略、索引优化、分库分表)、可扩展性(微服务架构、容器化部署、Serverless架构)四个维度,分享我在做教育Agent学习进度持久化项目时总结的100+条最佳实践。
  9. 行业发展与未来趋势:用表格梳理教育Agent学习进度持久化技术的发展历史(从2010年的在线教育平台SQL存储,到2020年的LangChain ContextStore,再到2024年的Harness ADP全栈存储适配),并且预测未来5年的发展趋势(多模态学习进度存储、大模型原生存储、隐私计算+联邦学习支持的学习进度存储)。
  10. 本章小结:(哦不对,是全文总结,但每个章节都要有小结,这里先给引言做个小结)

读者收益

读完本文(或者哪怕是读完你最感兴趣的章节),你将能够:

  1. 彻底理解教育Agent学习进度持久化的核心概念、重要性、以及面临的挑战。
  2. 熟练掌握Harness ADP的基本使用方法,包括Pipeline编排、存储接入、监控告警。
  3. 独立设计符合不同教育场景的学习进度数据模型和系统架构。
  4. 独立实现一套生产级的学习进度持久化系统,包含存储接入层、Pipeline编排层、监控告警层。
  5. 了解并应用基于贝叶斯网络的知识点掌握度更新算法和基于强化学习的学习路径调整算法。
  6. 避开教育Agent学习进度持久化开发中的所有常见坑(比如数据格式错乱、状态丢失、性能瓶颈、数据安全问题)。
  7. 根据最佳实践和未来趋势,优化和扩展你的学习进度持久化系统。

准备工作

技术栈/知识

在开始阅读本文的核心内容(系统架构设计、环境搭建、核心功能实现等)之前,请确保你已经具备以下技术栈和知识储备:

  1. 大模型基础:了解大语言模型(LLM)的基本原理,比如Transformer架构、Tokenization、Prompt Engineering、Fine-tuning(微调)、RAG(检索增强生成)。
  2. 大模型Agent开发框架基础:至少熟练掌握一种主流的大模型Agent开发框架,比如LangChain(Python/TypeScript)、AutoGPT、CrewAI、LangGraph。本文的演示将主要使用LangChain Python版。
  3. 后端开发基础:至少熟练掌握一种主流的后端开发语言,比如Python、TypeScript/JavaScript、Java、Go。本文的演示将主要使用Python(因为它在大模型开发领域最流行)。
  4. 数据库基础:了解关系型数据库(比如SQLite、PostgreSQL、MySQL)、非关系型数据库(比如Redis、MongoDB)、图数据库(比如Neo4j)、向量数据库(比如Milvus、Pinecone、Chroma)的基本原理和使用方法。本文的演示将涉及SQLite、PostgreSQL、Redis、Neo4j、Milvus五种数据库。
  5. DevOps基础:了解容器化技术(Docker)、编排技术(Kubernetes)、CI/CD(持续集成/持续部署)的基本原理和使用方法。本文的演示将涉及Docker和Harness ADP的CI/CD Pipeline。
  6. 算法基础:了解概率统计(比如贝叶斯定理、条件概率、联合概率)、机器学习(比如监督学习、强化学习、DQN)的基本原理。本文的算法实现部分将涉及这些内容。

如果你对以上某些技术栈或知识储备不太熟悉,没关系——本文会在用到这些内容的时候,提供简洁明了的解释和必要的参考资料链接。但为了保证阅读体验,建议你先花1-2周的时间,快速学习一下你不熟悉的部分。

环境/工具

在开始阅读本文的核心内容之前,请确保你已经在你的电脑上安装了以下环境和工具:

  1. 操作系统:本文的演示将主要使用macOS Sonoma 14.5(苹果芯片M2 Max),但所有的命令和代码也都适用于Windows 10/11(WSL2 Ubuntu 22.04 LTS)和Linux(Ubuntu 22.04 LTS/CentOS 7+)。

  2. Node.js和npm/yarn:Harness ADP的本地开发环境(Harness CLI)和Prisma(TypeScript数据模型工具)需要Node.js和npm/yarn。请安装Node.js 18.x或20.x LTS版本(因为这两个版本是目前最稳定、最流行的),npm 9.x或10.x版本,或者yarn 1.x经典版(不推荐yarn 2.x/3.x/4.x现代版,因为它的兼容性不如经典版)。你可以通过以下命令检查你的Node.js、npm、yarn版本:

    node -v
    npm -v
    yarn -v
    

    如果你还没有安装Node.js、npm、yarn,可以参考以下官方文档:

    • Node.js官方安装文档:https://nodejs.org/en/download
    • npm官方安装文档:https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
    • yarn经典版官方安装文档:https://classic.yarnpkg.com/en/docs/install
  3. Python和pip/conda:本文的演示将主要使用Python 3.10.x或3.11.x LTS版本(因为这两个版本是目前LangChain Python版、Harness Python SDK、SQLAlchemy、Prisma Python Client等主流库最稳定支持的),pip 23.x或24.x版本,或者conda 23.x或24.x版本(推荐使用conda来管理Python环境,因为它可以避免不同项目之间的依赖冲突)。你可以通过以下命令检查你的Python、pip、conda版本:

    python --version
    python3 --version  # 如果你的电脑上同时安装了Python 2和Python 3,需要使用python3命令
    pip --version
    pip3 --version  # 同理,需要使用pip3命令
    conda --version
    

    如果你还没有安装Python、pip、conda,可以参考以下官方文档:

    • Python官方安装文档:https://www.python.org/downloads
    • pip官方安装文档:https://pip.pypa.io/en/stable/installation
    • Anaconda(包含conda、Python、pip等常用工具)官方安装文档:https://www.anaconda.com/download
    • Miniconda(只包含conda、Python、pip等核心工具,体积更小)官方安装文档:https://docs.conda.io/en/latest/miniconda.html
  4. Git:本文的演示将涉及从GitHub/GitLab克隆代码仓库,以及提交代码到GitHub/GitLab。请安装Git 2.40.x或更高版本。你可以通过以下命令检查你的Git版本:

    git --version
    

    如果你还没有安装Git,可以参考以下官方文档:https://git-scm.com/downloads

  5. Docker和Docker Compose:本文的演示将涉及用Docker和Docker Compose启动PostgreSQL、Redis、Neo4j、Milvus等数据库服务,以及Harness ADP的本地开发环境。请安装Docker Desktop 4.20.x或更高版本(包含Docker Engine、Docker CLI、Docker Compose V2等常用工具)。你可以通过以下命令检查你的Docker和Docker Compose版本:

    docker --version
    docker compose version  # Docker Compose V2使用的是docker compose命令,而不是docker-compose命令
    

    如果你还没有安装Docker Desktop,可以参考以下官方文档:https://www.docker.com/products/docker-desktop

  6. Harness CLI:Harness CLI是Harness ADP的命令行工具,用于管理Harness ADP的本地开发环境、项目、Pipeline等。请安装Harness CLI 0.20.x或更高版本。你可以通过以下命令安装Harness CLI:

    • macOS(苹果芯片/Intel芯片):
      brew install harness
      
    • Linux(Ubuntu 22.04 LTS/CentOS 7+):
      curl -fsSL https://get.harness.io/cli | bash
      
    • Windows 10/11(PowerShell):
      Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://get.harness.io/cli/install.ps1'))
      

    安装完成后,你可以通过以下命令检查你的Harness CLI版本:

    harness --version
    

    如果你在安装Harness CLI的过程中遇到了问题,可以参考以下官方文档:https://developer.harness.io/docs/platform/cli/get-started-with-harness-cli

  7. 代码编辑器/IDE:本文的演示将涉及编写Python、TypeScript、YAML、SQL等代码。请安装一个你喜欢的代码编辑器/IDE,比如Visual Studio Code(VS Code,推荐,因为它有丰富的插件生态)、PyCharm、WebStorm、IntelliJ IDEA。如果你选择VS Code,建议你安装以下插件:

    • Python插件(Microsoft官方出品,用于编写、调试Python代码)
    • TypeScript插件(Microsoft官方出品,用于编写、调试TypeScript代码)
    • YAML插件(Red Hat官方出品,用于编写、验证YAML代码,尤其是Harness ADP的Pipeline YAML)
    • SQL插件(Microsoft官方出品,用于编写、调试SQL代码)
    • Docker插件(Microsoft官方出品,用于管理Docker容器、镜像、仓库)
    • LangChain插件(LangChain官方出品,用于编写、调试LangChain代码)
    • Prisma插件(Prisma官方出品,用于编写、验证Prisma数据模型)
  8. API密钥:本文的演示将涉及使用Hugging Face的Whisper模型(语音转文字)、Claude Sonnet 3.5模型(大语言模型)、OpenAI的text-embedding-3-small模型(文本嵌入)。请确保你已经注册了以下平台的账号,并且获取了对应的API密钥:

    • Hugging Face Hub:https://huggingface.co/settings/tokens
    • Anthropic Claude:https://console.anthropic.com/settings/keys
    • OpenAI:https://platform.openai.com/api-keys

核心概念拆解

核心概念

在开始讲解教育Agent的Harness学习进度持久化之前,我们首先需要拆解几个核心概念:什么是教育Agent的学习进度?什么是Harness AI Developer Platform(Harness ADP)?什么是学习进度持久化?为什么这三个概念结合在一起能解决教育Agent开发的“老大难”问题?

1. 教育Agent的学习进度

很多新人开发者可能会认为,教育Agent的学习进度就是“学生上次学到了课程的第几章第几节”——这是一个非常片面的理解。实际上,教育Agent的学习进度是一个非常复杂的、多维度的、动态变化的数据集合,它可以被分为以下五个核心维度:

1.1 课程/知识点学习维度

这是最基础的学习进度维度,主要记录学生在课程/知识点层面的学习情况,包括:

  • 课程维度
    • 课程ID、课程名称、课程简介、课程难度、课程开始时间、课程预计结束时间、课程实际学习时长、课程完成进度(百分比,比如已完成50%)、课程是否已完成、课程评分(学生自评、系统评分)。
  • 章节/小节维度
    • 章节/小节ID、章节/小节名称、章节/小节简介、章节/小节所属课程ID、章节/小节开始时间、章节/小节实际学习时长、章节/小节完成进度、章节/小节是否已完成、章节/小节是否已掌握。
  • 知识点维度
    • 知识点ID、知识点名称、知识点简介、知识点难度、知识点前置条件(比如要学习“二次函数的图像”,必须先掌握“一次函数的图像”和“坐标系”)、知识点所属章节/小节ID、知识点开始学习时间、知识点实际学习时长、知识点掌握度(可量化的数值,比如0-1之间的浮点数,0表示完全不掌握,1表示完全掌握;或者可量化的标签,比如“未学习”、“学习中”、“初步掌握”、“熟练掌握”、“精通”)、知识点是否已掌握、知识点掌握时间。
1.2 交互记录维度

这是教育Agent实现个性化学习的重要数据来源,主要记录学生与教育Agent之间的所有交互情况,包括:

  • **交互ID、交互时间、交互类型(比如“提问”、“做题”、“提交作业”、“观看视频解析”、“查看文字解析”、“查看错题本”、“生成学习报告”、“调整学习计划”)、交互持续时间、交互设备(比如“手机”、“平板”、“电脑”、“智能手表”)、交互地点(比如“家里”、“学校”、“公司”、“地铁上”——可以通过IP地址或GPS定位获取,但需要注意隐私保护)。
  • 提问记录维度
    • 提问ID、提问所属交互ID、提问时间、提问内容(文本、语音、图片、视频——多模态数据)、提问内容的关键词提取、提问内容的情感分析(正面、负面、中性——可以用大模型或专门的情感分析模型实现)、提问内容的意图识别(比如“知识点讲解”、“错题解析”、“学习计划调整”、“课程进度查询”——可以用大模型或专门的意图识别模型实现)、Agent的回答内容(文本、语音、图片、视频——多模态数据)、Agent的回答内容的关键词提取、Agent的回答内容的质量评估(学生自评、系统评分)、学生是否对Agent的回答满意。
  • 做题记录维度
    • 这是交互记录维度中最重要的子维度,因为它是评估学生知识点掌握度的主要依据。主要记录:
      • 题目ID、题目所属交互ID、题目所属课程ID、题目所属章节/小节ID、题目所属知识点ID、题目类型(比如“选择题”、“填空题”、“判断题”、“简答题”、“计算题”、“编程题”——多模态题目)、题目难度、题目原文(文本、语音、图片、视频——多模态数据)、题目正确答案(文本、语音、图片、视频、代码——多模态数据)、题目解析(文本、语音、图片、视频、代码——多模态数据)、学生的答案(文本、语音、图片、视频、代码——多模态数据)、学生答案的关键词提取、学生答案的错误原因分析(可以用大模型实现,比如“计算错误”、“概念混淆”、“知识点未掌握”、“审题错误”、“逻辑错误”、“代码语法错误”、“代码逻辑错误”)、学生答案的评分(系统评分,比如选择题/填空题/判断题的0分或满分,简答题/计算题/编程题的0-10分)、学生是否做对了题目、学生的做题时间(从开始看到题目到提交答案的时间)、题目是否已加入错题本、题目在错题本中的重做次数、题目在错题本中的最后一次重做时间、题目在错题本中的最后一次重做是否做对、题目是否已从错题本中移除。
1.3 学习路径规划维度

这是教育Agent实现个性化学习的核心功能,主要记录教育Agent为学生制定的学习计划和学习路径,以及学生对学习计划和学习路径的调整情况,包括:

  • **学习计划ID、学习计划名称、学习计划简介、学习计划所属学生ID、学习计划制定时间、学习计划开始时间、学习计划预计结束时间、学习计划实际学习时长、学习计划完成进度、学习计划是否已完成、学习计划是否已调整、学习计划调整次数、学习计划最后一次调整时间。
  • 学习路径节点维度
    • 学习路径节点ID、学习路径节点所属学习计划ID、学习路径节点顺序(比如第1个节点、第2个节点……)、学习路径节点类型(比如“知识点学习”、“题目练习”、“错题重做”、“单元测试”、“期中测试”、“期末测试”、“视频学习”、“阅读材料学习”)、学习路径节点内容(比如知识点ID、题目ID集合、视频ID、阅读材料ID)、学习路径节点开始时间、学习路径节点预计结束时间、学习路径节点实际学习时长、学习路径节点完成进度、学习路径节点是否已完成、学习路径节点是否已调整、学习路径节点调整时间。
1.4 交互偏好维度

这是教育Agent实现个性化交互的重要数据来源,主要记录学生与教育Agent之间的交互偏好,包括:

  • **交互语言偏好(比如“中文简体”、“中文繁体”、“英文”、“日文”、“韩文”——可以通过学生的第一次提问内容或注册信息获取)。
  • **提问内容格式偏好(比如“文本”、“语音”、“图片”、“视频——可以通过学生的历史提问内容格式统计获取)。
  • **回答内容格式偏好(比如“文本”、“语音”、“图片”、“视频”、“图文结合”、“音视频结合”——可以通过学生的历史回答内容格式满意度统计获取)。
  • **做题速度偏好(比如“快速”、“中等”、“慢速——可以通过学生的历史做题时间统计获取,比如平均做题时间低于课程/章节/小节/知识点平均做题时间的80%为“快速”,80%-120%为“中等”,高于120%为“慢速”)。
  • **题目难度偏好(比如“简单”、“中等”、“困难”、“随机”——可以通过学生的历史题目评分统计获取,比如平均题目评分低于6分的学生偏好“简单”,6-8分的学生偏好“中等”,高于8分的学生偏好“困难”)。
  • **学习时长偏好(比如“每天15分钟”、“每天30分钟”、“每天1小时”、“每天2小时”、“每天灵活安排——可以通过学生的历史学习时长统计获取,或者通过学生的注册信息获取)。
  • **学习时间偏好(比如“早上7-9点”、“中午12-14点”、“晚上19-21点”、“晚上21-23点”、“随机——可以通过学生的历史学习时间统计获取)。
1.5 学习情绪维度

这是教育Agent实现个性化心理疏导的重要数据来源,主要记录学生在学习过程中的情绪变化,包括:

  • **情绪记录ID、情绪记录时间、情绪记录所属交互ID、情绪类型(比如“开心”、“兴奋”、“平静”、“焦虑”、“沮丧”、“愤怒”、“无聊”——可以用大模型或专门的多模态情感分析模型实现,不仅分析文本内容的情感,还分析语音内容的语调、语速、音量,图片/视频内容的表情、动作)、情绪强度(0-1之间的浮点数,0表示情绪很弱,1表示情绪很强)、情绪持续时间、Agent是否已进行心理疏导、心理疏导的内容、学生是否对心理疏导满意。
2. Harness AI Developer Platform(Harness ADP)

很多新人开发者可能对Harness这个品牌不太熟悉——Harness最初是一家专注于DevOps(开发运维一体化)的公司,提供CI/CD(持续集成/持续部署)、Feature Flags(功能开关)、Cloud Cost Management(云成本管理)、Chaos Engineering(混沌工程)、Security Testing Orchestration(安全测试编排)等DevOps全流程工具。但在2023年底和2024年初,随着大模型和Agent技术的快速发展,Harness推出了Harness AI Developer Platform(Harness ADP)——这是一个专门为大模型和Agent开发者打造的全栈开发平台,它将Harness原有的DevOps能力与大模型/Agent开发的新需求结合在一起,提供以下核心功能:

2.1 Agent 编排(Agent Orchestration)

这是Harness ADP最核心的功能之一,它提供了一个可视化的、低代码的Agent编排界面(当然也支持用YAML代码编写),让开发者可以快速构建、测试、部署、监控复杂的Agent工作流(Pipeline),包括:

  • 任务拆分:将复杂的Agent任务(比如“为学生生成一份个性化的月度学习报告”)拆分成多个小的、可执行的子任务(比如“从存储层读取学生的月度交互记录”、“从存储层读取学生的月度知识点掌握度变化”、“用大模型分析学生的月度学习情况”、“用大模型生成个性化的月度学习报告”、“将月度学习报告保存到存储层”、“将月度学习报告发送给学生(通过微信/钉钉/邮件/APP推送)”)。
  • 条件判断:根据子任务的执行结果(比如“学生是否已授权查看月度学习报告”、“大模型分析是否成功”、“月度学习报告是否已生成”),决定后续子任务的执行路径(比如“如果学生未授权,就发送授权请求;如果大模型分析失败,就重试3次;如果3次都失败,就触发告警;如果月度学习报告已生成,就保存并发送”)。
  • 循环/迭代:根据一定的条件(比如“题目集合中的所有题目是否都已处理完毕”、“错题本中的所有错题是否都已重做完毕”),重复执行某个子任务或子任务集合。
  • 异常处理:捕获子任务执行过程中的所有异常(比如“存储层连接失败”、“大模型API调用失败”、“数据格式转换失败”),并根据异常类型采取不同的处理措施(比如“重试3次”、“回滚之前的操作”、“触发告警”、“跳过该子任务继续执行后续子任务”)。
  • 重试机制:为子任务设置合理的重试次数(比如3次)、重试间隔(比如第一次重试间隔1秒,第二次重试间隔2秒,第三次重试间隔4秒——指数退避策略)、重试条件(比如“只有当异常类型是‘存储层连接超时’或‘大模型API调用限流’时才重试”)。
  • 并行执行:将多个互不依赖的子任务(比如“从存储层读取学生的月度交互记录”和“从存储层读取学生的月度知识点掌握度变化”)并行执行,以提高Agent工作流的执行效率。
  • 变量管理:在Agent工作流中定义全局变量、局部变量、环境变量,用于存储子任务的执行结果、输入参数、配置信息等,并且支持变量的传递和修改。
  • 集成能力:支持与主流的大模型/Agent开发框架(比如LangChain、AutoGPT、CrewAI、LangGraph)、大模型API(比如OpenAI GPT-4o、Anthropic Claude Sonnet 3.5、Google Gemini 1.5 Pro、Hugging Face Hub上的开源大模型)、存储组件(比如SQLite、PostgreSQL、MySQL、Redis、MongoDB、Neo4j、Milvus、Pinecone、Chroma)、云服务(比如AWS、Azure、GCP、阿里云、腾讯云)、第三方工具(比如企业微信、钉钉、邮件、Slack)集成。
2.2 学习进度存储(Learning Progress Storage)

哦不对,Harness ADP本身并没有提供专门的“学习进度存储”组件——但它提供了通用的全栈存储适配能力,让开发者可以快速将自己选择的存储组件(比如SQLite、PostgreSQL、Redis、MongoDB、Neo4j、Milvus)集成到Harness ADP的Agent工作流中,并且支持一键切换不同的存储组件,自动处理数据格式转换(LLM友好的JSON→关系型数据库表→向量数据库向量索引→Neo4j知识图谱节点/边),以及数据的加密存储、访问控制、备份恢复。

2.3 测试与调试(Testing & Debugging)

这是Harness ADP的另一个核心功能之一,它提供了一个可视化的、低代码的Agent测试与调试界面,让开发者可以快速测试、调试Agent工作流,包括:

  • 本地测试:在本地开发环境中测试Agent工作流,不需要部署到云端。
  • 单元测试:为Agent工作流中的每个子任务编写单元测试,确保每个子任务的功能正常。
  • 集成测试:为Agent工作流中的多个子任务编写集成测试,确保多个子任务之间的协作正常。
  • 端到端测试:为整个Agent工作流编写端到端测试,确保整个Agent工作流的功能正常。
  • 调试工具:提供断点调试、变量查看、日志查看、执行时间统计等调试工具,让开发者可以快速定位和解决Agent工作流中的问题。
2.4 监控与告警(Monitoring & Alerting)

这是Harness ADP的另一个核心功能之一,它提供了一个可视化的、低代码的Agent监控与告警界面,让开发者可以快速监控、管理Agent工作流和存储层,包括:

  • Agent工作流监控:监控Agent工作流的执行成功率、执行时间、失败次数、失败原因、并行执行数量等指标,并且提供可视化的图表(比如折线图、柱状图、饼图)展示这些指标的变化趋势。
  • 存储层监控:监控存储层的请求延迟、错误率、数据一致性、存储容量、吞吐量等指标,并且提供可视化的图表展示这些指标的变化趋势。
  • 告警设置:为Agent工作流和存储层的指标设置合理的告警阈值(比如存储错误率超过1%、Agent工作流执行超时超过30秒、存储容量使用率超过80%),并且支持通过企业微信、钉钉、邮件、Slack、短信等渠道发送告警通知。
  • 日志管理:收集、存储、查询、分析Agent工作流和存储层的所有日志,并且支持日志的过滤、搜索、导出等功能。
2.5 部署与扩展(Deployment & Scaling)

这是Harness ADP的另一个核心功能之一,它提供了一个可视化的、低代码的Agent部署与扩展界面,让开发者可以快速部署、扩展Agent工作流,包括:

  • 一键部署:将本地开发环境中的Agent工作流一键部署到云端生产环境(支持AWS、Azure、GCP、阿里云、腾讯云等主流云服务)。
  • 容器化部署:自动将Agent工作流打包成Docker镜像,并且支持用Kubernetes进行容器编排和扩展。
  • Serverless部署:支持将Agent工作流部署到AWS Lambda、Azure Functions、GCP Cloud Functions、阿里云函数计算、腾讯云函数等Serverless平台,按需付费,节省成本。
  • 自动扩展:根据Agent工作流的请求量或执行时间,自动扩展或收缩Agent工作流的实例数量,以保证Agent工作流的性能和稳定性。
2.6 安全与合规(Security & Compliance)

这是Harness ADP的另一个核心功能之一,尤其是对于教育Agent来说——因为教育Agent处理的是学生的个人敏感信息(比如姓名、年龄、性别、学校、班级、学习成绩、学习情绪等),必须符合相关的法律法规(比如中国的《个人信息保护法》、《未成年人网络保护条例》,美国的《COPPA》、《FERPA》,欧盟的《GDPR》)。Harness ADP提供了以下安全与合规功能:

  • 加密存储:支持对存储层中的所有数据进行加密存储(包括静态加密和传输加密),并且支持使用开发者自己的加密密钥(BYOK,Bring Your Own Key)。
  • 访问控制:支持基于角色的访问控制(RBAC,Role-Based Access Control),让开发者可以为不同的用户(比如管理员、开发者、测试人员、学生、家长、老师)设置不同的访问权限(比如只读、读写、删除、管理)。
  • 审计日志:收集、存储、查询、分析所有用户的操作日志和Agent工作流的执行日志,并且支持日志的永久保存和导出,以满足合规审计的要求。
  • 隐私计算:支持隐私计算技术(比如联邦学习、差分隐私、同态加密),让开发者可以在不泄露学生个人敏感信息的情况下,训练大模型或进行数据分析。
3. 学习进度持久化

**学习进度持久化(Learning Progress Persistence)**是指将教育Agent的学习进度数据(五个核心维度的数据)从内存中保存到持久化存储介质(比如硬盘、SSD、云存储)中,并且支持在教育Agent重启或崩溃后,快速恢复这些学习进度数据,让教育Agent能够继续之前的工作,实现个性化学习体验。

很多新人开发者可能会认为,学习进度持久化就是“把数据存到数据库里”——这又是一个非常片面的理解。实际上,生产级的学习进度持久化是一个非常复杂的系统工程,它需要考虑以下几个方面:

  • 数据模型设计:设计符合教育Agent五个核心维度数据需求的、可扩展的、高效的数据模型(关系型+非关系型+向量数据库+图数据库混合数据模型)。
  • 存储组件选型:根据不同的教育场景(本地原型、K12/职业教育轻量应用、企业培训重型应用)和不同的数据类型(结构化数据、半结构化数据、非结构化数据、多模态数据、向量数据、图数据),选择合适的存储组件。
  • 存储接入层实现:封装一套通用的、可扩展的、高效的存储SDK,支持一键切换不同的存储组件,自动处理数据格式转换,以及数据的加密存储、访问控制、备份恢复。
  • 数据一致性保证:保证存储层中的学习进度数据的一致性(比如当学生提交答案后,做题记录、知识点掌握度、错题本、学习计划等数据都要同时更新,不能出现某个数据更新了而另一个数据没有更新的情况)。
  • 性能优化:优化存储层的性能(比如通过缓存策略、索引优化、分库分表、读写分离等方式,降低存储层的请求延迟,提高存储层的吞吐量)。
  • 可扩展性:保证存储层的可扩展性(比如当学生数量增加到10万、100万、1000万时,存储层能够通过水平扩展或垂直扩展的方式,继续保证性能和稳定性)。
  • 安全与合规:保证存储层中的学习进度数据的安全与合规(比如加密存储、访问控制、审计日志、隐私计算等)。
  • 备份恢复:保证存储层中的学习进度数据的备份恢复(比如定期全量备份、增量备份、实时备份,并且支持快速恢复数据)。
4. 为什么这三个概念结合在一起能解决教育Agent开发的“老大难”问题?

现在,我们已经拆解了三个核心概念:教育Agent的学习进度、Harness ADP、学习进度持久化。接下来,我们要讲清楚为什么这三个概念结合在一起能解决教育Agent开发的“老大难”问题——学习进度丢失、错乱、Agent无法高效读取。

4.1 解决学习进度丢失的问题

学习进度丢失的主要原因有两个:

  1. 数据只存储在内存中:很多新人开发者在做本地原型的时候,会把学习进度数据只存储在内存中(比如用Python的字典、列表),一旦教育Agent重启或崩溃,内存中的数据就会全部丢失。
  2. 存储组件不稳定或没有备份:有些新人开发者虽然把数据存到了数据库里,但选择的存储组件不稳定(比如本地SQLite数据库文件损坏),或者没有定期备份数据,一旦存储组件出现问题,数据就会全部丢失。

Harness ADP+学习进度持久化方案可以彻底解决这两个问题:

  1. 数据持久化到稳定的存储介质中:通过Harness ADP的全栈存储适配能力,将学习进度数据持久化到稳定的存储介质中(比如云端PostgreSQL数据库、云端Redis缓存、云端MongoDB数据库、云端Neo4j图数据库、云端Milvus向量数据库),即使教育Agent重启或崩溃,数据也不会丢失。
  2. 存储组件稳定且有自动备份:Harness ADP支持与主流的云存储服务集成(比如AWS RDS、Azure Database for PostgreSQL、GCP Cloud SQL、阿里云RDS、腾讯云RDS),这些云存储服务都非常稳定(可用性高达99.99%以上),并且支持自动全量备份、增量备份、实时备份,以及快速恢复数据,即使存储组件出现问题,数据也可以快速恢复。
4.2 解决学习进度错乱的问题

学习进度错乱的主要原因有三个:

  1. 数据格式转换错误:很多新人开发者会把学习进度数据直接以LLM友好的JSON字符串的形式存到关系型数据库的一个字段里,或者直接从关系型数据库的多个字段里拼接成JSON字符串,这个过程中很容易出现数据格式转换错误(比如JSON字符串的引号丢失、逗号丢失、括号不匹配),导致Agent无法读取数据,或者读取到的数据是错误的。
  2. 数据一致性没有保证:很多新人开发者在更新学习进度数据的时候,没有使用ACID事务(比如当学生提交答案后,需要同时更新做题记录、知识点掌握度、错题本、学习计划等数据,但如果只更新了做题记录,而其他数据没有更新,就会出现数据一致性问题),导致学习进度数据错乱。
  3. 并发访问没有控制:当多个学生同时访问教育Agent,或者同一个学生同时在多个设备上访问教育Agent的时候,如果没有对存储层的并发访问进行控制(比如使用锁机制、乐观锁、悲观锁),就会出现数据覆盖的问题,导致学习进度数据错乱。

Harness ADP+学习进度持久化方案可以彻底解决这三个问题:

  1. 自动处理数据格式转换:通过Harness ADP的全栈存储适配能力和我们自己封装的通用存储SDK,自动处理数据格式转换(LLM友好的JSON→关系型数据库表→向量数据库向量索引→Neo4j知识图谱节点/边),不需要开发者手动拼接或解析JSON字符串,避免了数据格式转换错误。
  2. 保证数据一致性:通过Harness ADP的Pipeline编排能力和我们自己封装的通用存储SDK,使用ACID事务(对于关系型数据库)、最终一致性保证(对于非关系型数据库),确保学习进度数据的一致性——当某个子任务执行失败时,会自动回滚之前的所有操作,避免了数据一致性问题。
  3. 控制并发访问:通过我们自己封装的通用存储SDK,使用锁机制、乐观锁、悲观锁,控制存储层的并发访问,避免了数据覆盖的问题。
4.3 解决Agent无法高效读取学习进度数据的问题

Agent无法高效读取学习进度数据的主要原因有三个:

  1. 数据模型设计不合理:很多新人开发者设计的数据模型非常简单(比如只有一个“学生学习进度表”,把所有的学习进度数据都存到这个表里),导致查询数据的时候需要进行大量的JOIN操作,或者需要读取大量的不必要的数据,降低了查询效率。
  2. 没有使用缓存策略:很多新人开发者没有使用缓存策略,每次Agent需要读取学习进度数据的时候,都直接从数据库里读取,降低了查询效率,尤其是对于那些频繁读取的数据(比如学生的交互偏好、最近的10条交互记录)。
  3. 没有使用索引优化:很多新人开发者没有对数据库表的字段进行索引优化,导致查询数据的时候需要进行全表扫描,降低了查询效率。

Harness ADP+学习进度持久化方案可以彻底解决这三个问题:

  1. 设计合理的混合数据模型:根据教育Agent五个核心维度的数据需求,设计合理的混合数据模型(关系型数据库存储结构化数据,比如学生信息、课程信息、章节/小节信息、知识点信息、做题记录;非关系型数据库存储半结构化数据和非结构化数据,比如交互记录、学习情绪记录;图数据库存储知识点之间的前置条件关系、学生的知识图谱;向量数据库存储多模态数据的嵌入向量,比如题目原文的嵌入向量、学生答案的嵌入向量、Agent回答内容的嵌入向量),避免了大量的JOIN操作,提高了查询效率。
  2. 使用合理的缓存策略:通过Harness ADP的全栈存储适配能力和我们自己封装的通用存储SDK,使用合理的缓存策略(比如将学生的交互偏好、最近的10条交互记录、最近的10条错题记录存到Redis缓存中,缓存时间设置为1小时;将课程信息、章节/小节信息、知识点信息存到Redis缓存中,缓存时间设置为24小时),降低了数据库的查询压力,提高了查询效率。
  3. 使用合理的索引优化:通过我们自己封装的通用存储SDK,对数据库表的常用查询字段进行索引优化(比如对学生学习进度表的“学生ID”、“课程ID”、“知识点ID”字段进行索引优化;对做题记录表的“学生ID”、“知识点ID”、“是否做对”字段进行索引优化;对交互记录表的“学生ID”、“交互时间”、“交互类型”字段进行索引优化),避免了全表扫描,提高了查询效率。

问题背景

为了更深入地理解为什么学习进度持久化是教育Agent开发的“老大难”问题,我们需要先了解一下教育Agent和学习进度持久化技术的发展历史

1. 教育Agent的发展历史

教育Agent的发展历史可以追溯到20世纪60年代,当时美国斯坦福大学的研究人员开发了第一个计算机辅助教学(CAI,Computer-Aided Instruction)系统——SCHOLAR系统,它可以教学生南美洲的地理知识。但SCHOLAR系统并不是真正意义上的“Agent”,因为它没有自主决策能力

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐