一个独立开发者用 Seed-Evolving 作为编程助手,从0到1开发出一套 AI 智能教育系统。不是参数罗列,不是功能清单,是从零到上线过程中踩过的坑、跑通的路、以及模型在真实开发场景里到底好不好用的一手体验。
01 为什么想做这个东西
我是个后端开发,平时写业务系统比较多。家里有个上初中的表弟,每次考试完拿着卷子来问我"这题为什么错了",我发现一个现象:他不是不会做,而是根本不知道自己哪里不会。
学校里的试卷发下来,对完答案就结束了。哪个知识点是薄弱环节、该先复习什么、错题是什么原因错的——这些信息全部丢失了。家长想帮忙,但看不懂学情数据;老师想个性化辅导,但一个班几十个人根本顾不过来。
我就想,能不能做一个系统:学生做完题,系统自动画出知识画像,告诉他在哪个知识点上掌握到什么程度,然后给出针对性的学习建议,还能像个私人老师一样随时答疑。
这就是 AI 智能教育助手 的由来。
系统最终做了这些模块:自适应评测、知识画像、个性化学习计划、AI 答疑辅导、主观题批改、口语评测、错因分析、学情看板、艾宾浩斯错题本、成长记录可视化,外加一套完整的后台 RBAC 权限体系。前后端全自己写,前端用的原生 HTML/CSS/JS(不依赖任何框架),后端 Node.js + Express + MySQL。

项目已经开源了,Gitcode仓库:https://gitcode.com/13128572534/ai-smart-education
在线体验地址:https://qiming.xunnan.net/pc/index.html
用户密码:admin/123456
这是系统的学习首页,学科学段切换、掌握度概览、最近评测记录、薄弱知识点、今日学习计划一屏掌握:

能力画像页面用热力图展示每个知识点的掌握程度,五级分级(未学/了解/理解/应用/精通),薄弱环节一目了然:

这篇文章不讲系统设计(那些在 README 里写得很详细了),重点讲讲我在开发过程中用 Doubao-Seed-Evolving 模型的真实体验。
02 为什么选 Seed-Evolving当编程助手
先说明一下,这篇文章讲的不是'系统接入 Seed-Evolving 当 AI 引擎',而是我用 Seed-Evolving 作为编程助手,从零开发出了这套教育系统。系统运行时的 AI 功能用的是豆包 doubao-seed-2-0-lite-260215,而 Seed-Evolving 是帮我写代码、设计架构、排查 Bug 的开发工具。
为什么选Seed-Evolving当开发助手?因为这个项目对编程助手的要求挺刁钻的。
首先,不能有幻觉。编程场景的幻觉比聊天危害更大——模型编造一个不存在的 API 方法或数据库字段名,代码直接跑不通。我需要它老老实实说"不确定",而不是自信地给一段跑不通的代码。
其次,要能处理长上下文。这个系统有 26 张表、14 个页面,把项目结构和已有代码喂给模型做参考,上下文轻松上万 token。窗口太小模型会"忘记"前面的约束,写出来的代码和现有风格不一致。
第三,工程能力要靠谱。这个系统是我在业余时间开发的,很多代码是借助 AI 辅助写的。跨文件修改、数据库表结构设计、接口联调,这些都需要模型理解整个项目结构,不能只盯着一个文件看。
Doubao-Seed-Evolving 8 月那次升级提到三个方向:Coding 工程能力、Agent 检索能力、幻觉控制能力。这三个方向恰好对应了教育系统的三个核心需求——帮我写好跨文件的工程代码、帮我查证教育领域的技术资料、别给我编造不存在的 API。我挨个说说我在这三个方向上的真实体验。
03 Seed-Evolving 是什么?怎么用?
Seed-Evolving是什么?
在说接入之前,先简单介绍一下这个模型,方便没接触过的朋友快速上手。
Doubao-Seed-Evolving 是火山引擎方舟平台推出的 Seed 系列模型,和传统大模型"固定版本号发版"的模式不同,它采用周级别滚动迭代的进化机制——没有静态的最终版本,平台每周持续优化基座能力,开发者用同一个 Model ID 就能自动承接每次升级,不用换接口、不用改配置 最新模型:Seed-Evolving 官方文档。

简单说就是:一张永远在更新的"模型卡片",你接入一次,它持续进化,你跟着沾光。
模型的核心参数:
|
Model ID |
doubao-seed-evolving |
|
上下文窗口 |
1024K(1M tokens) |
|
最大输出长度 |
256K tokens |
|
最大思维链长度 |
256K tokens |
|
最大 RPM |
500 |
|
最大 TPM |
1,000,000 |
支持的能力覆盖面很广:文本生成、深度思考、函数调用、上下文缓存、文档理解、结构化输出、图片理解、视频理解。对我这个开发场景来说,代码生成和函数调用是用得最多的,深度思考在复杂逻辑设计时也有帮助。
这次8月份升级的方向,正好和教育场景高度契合——1M 上下文让我能一次性喂入完整的项目结构和代码,幻觉控制保证了不编造 API,Coding 能力提升直接提高了我的开发效率。下面说说具体怎么接入。
Agent Plan 怎么用?
火山引擎提供了 Agent Plan 套餐,可以直接在编程助手(如 Claude Code、OpenCode 等)里使用 Seed-Evolving https://ark.volcengine.com/region:cn-beijing/subscription/agent-plan

建议购买 medium 档,性价比比较高。

购买后有两种配置方式:
自动配置(推荐新手):
安装 ArkCLI 工具,它会自动帮你完成配置:
# 安装
npm install -g @volcengine/ark-cli@latest
# 验证
arkcli –version
# 登录(浏览器授权)
arkcli login
# 运行配置助手
arkcli helper
按引导选择 Agent Plan 中的 Doubao-Seed-Evolving 模型,配置完成后你的编程助手就能直接用了。
手动配置:
如果你之前用的模型是 ark-code-latest,只需要在配置文件里把 model_name 改成 doubao-seed-evolving 就行。或者直接进入 Agent Plan 控制台切换模型。
方舟 API 兼容 OpenAI 和 Anthropic 接口协议,所以 Claude Code、OpenCode、Codex 这些主流编程助手都能用 。

04 系统的 AI 架构:运行时用的什么模型
先说接入。我的系统在设计之初就做了 AI 配置抽象层,所有 AI 调用都走统一的 getAIConfig() 函数:
async function getAIConfig() {
const [rows] = await db.query(
'SELECT `key`, `value` FROM sl_sys_config WHERE `key` LIKE "ai_%"'
);
const config = {};
for (const row of rows) config[row.key] = row.value;
return {
apiUrl: config.ai_api_url,
apiKey: config.ai_api_key,
model: config.ai_model,
enabled: config.ai_enabled === 'true'
};
}
所有调用 AI 的地方(答疑、批改、口语评测、错因分析、学习计划、变式题生成)都通过这个函数拿配置,然后用标准 OpenAI 兼容格式发请求:
async function callAI(systemPrompt, userPrompt, maxTokens = 500, temperature = 0.7) {
const aiConfig = await getAIConfig();
if (!aiConfig.enabled || !aiConfig.apiKey) return null;
const response = await fetch(aiConfig.apiUrl, {
method: 'POST',
headers: {
'Authorization': `Bearer ${aiConfig.apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: aiConfig.model,
messages: [
{ role: 'system', content: systemPrompt },
{ role: 'user', content: userPrompt }
],
max_tokens: maxTokens,
temperature: temperature
})
});
// …
}
所以切换到 doubao-seed-2-0-lite-260215,就是在后台管理页面改三个字段的事:
|
API 地址 |
https://ark.cn-beijing.volces.com/api/v3/chat/completions |
|
模型名称 |
doubao-seed-2-0-lite-260215 |
|
API Key |
火山引擎方舟平台的 Key |
改完保存,全站所有 AI 功能立刻切换到 doubao-seed-2-0-lite-260215,不用改一行代码。这个架构的好处是 AI 模型可随时切换——管理员在后台改三个字段就能换模型,不用改代码。不过本文的重点不在这里,而是我用 Seed-Evolving 开发这套系统的过程。
后台管理页面还支持 AI 一键生成题目草稿,管理员审核后入库,这个功能后面会详细说:

05 实测一:AI 答疑——分步解析到底靠不靠谱
智能答疑是这个系统用得最多的功能。学生在输入框提问,AI 需要给出分步解析,然后推荐同类题。

我设计了一个 system prompt,要求 AI 严格按照"第N步"的格式输出,最后附上同类题推荐。实际测下来,AI的格式遵循能力让我比较意外。
举个真实的例子。表弟问了一道题:
一个水池,单独开进水管 6 小时注满,单独开出水管 8 小时放完。现在两个管同时开,几小时能注满?

AI的回答(摘录):
第1步:计算进水管和出水管的工作效率。 进水管6小时注满,所以每小时注满水池的1/6; 出水管8小时放完,所以每小时放空水池的1/8。
第2步:计算两个水管同时工作时,每小时水池的变化。 两个水管同时开时,每小时水池的变化量是进水管的速度减去出水管的速度,即1/6 – 1/8。
第3步:计算两个水管同时开时,注满水池所需的时间。 将1除以每小时的变化量,得到1/(1/6 – 1/8) = 1/(1/24) = 24小时。
同类型练习题: 一个房间,单独开进风系统 5 小时可以完全换气,单独开排风系统 4 小时可以完全换气。现在两个系统同时开启,几小时可以完成一次完全换气? 正确答案:5/3小时
这个回答有几个点我觉得不错:
第一,运算过程没有跳步。1/6 – 1/8 的通分过程写出来了(4/24 – 3/24),不是直接给答案。这对初中生很关键,很多学生卡在通分上。
第二,同类题推荐质量高。工程问题是进水管出水管问题的经典变式,考点相同(合作效率 = 各自效率之和),但换了情境。说明模型理解了这道题的考点本质,而不是单纯做关键词匹配。
第三,没有幻觉。我反复测了几道类似的题,包括变式(比如三个管子、有损耗的情况),运算结果都正确。之前用别的模型测过同样的问题,有一道三个管子的变式题算错了净注水量的正负号,导致最终答案差了一个负号。
06 实测二:主观题批改——像不像真老师
主观题批改是这个系统里我最得意的功能。学生提交题目和自己的答案,AI 返回结构化的批改结果:得分 + 总体评语 + 改进建议 + 错误点列表。

测试了一道初中作文题和一道高中政治论述题。
作文题是"请以'坚持'为题写一篇不少于 600 字的议论文",表弟写了大约 500 字,论点还算明确但论据比较单薄,结尾仓促。
AI 给的批改结果:
- 得分
72 分
- 总体评语
文章论点明确,以"坚持才能成功"为核心观点,结构完整。但论据较为单一,主要依靠个人经历,缺少有说服力的名人事例或道理论证。结尾略显仓促,未能呼应开头深化主题。
- 改进建议
1. 增加名人事例(如司马迁忍辱写《史记》);
2. 补充道理论证,如引用名言;3. 结尾回扣论点,提升思想深度。
- 错误点
字数不足 600 字(约 500 字),不符合题目要求。
这个批改我觉得有几个亮点:字数不够这个问题被抓出来了,说明模型在做实际检查而不是泛泛而谈;改进建议里的司马迁事例是合适的,不是随便编的;评分 72 分相对合理,既不是简单给高分也不是刻意压分。
我还做了一个对比:同一篇作文让三个人(我、我同学、我表弟的语文老师)分别打分,分数分别是 68、75、70。AI 给的 72 分落在这个区间内,说明评分一致性还可以。
07 实测三:学习计划生成——长上下文的实际价值
学习计划功能是上下文消耗大户。生成一份学习计划,需要喂给模型的信息包括:
学生的全量知识画像(每个知识点的掌握度、三维得分)
近期错因分析记录
知识点的前置依赖关系
近 30 天的答题记录摘要
一个学科下来,光是知识点数据就有几十条,加上错因和答题记录,上下文轻松上万 token。如果同时处理多个学科,或者学生的学习历史比较长,上下文会更大。

开发这个功能时,我把整个数据模型和已有代码喂给 Seed-Evolving,让它帮我写学习计划推荐的 prompt 和后端逻辑。它的 1M 上下文窗口在这里是实打实的优势——项目结构、表结构、已有路由代码全部喂进去不会被截断,生成的代码和现有风格保持一致。
实际生成的学习计划长这样(高中语文,表弟的真实数据):
📅 今日学习重点:集中攻克平仄规律和情感表达手法,提升常见意象含义理解。
📌 各知识点建议:
1. 平仄规律:首先,你需要理解平仄的基本概念,比如平声和仄声的区别,它们在诗歌中的作用。然后,可以通过制作表格来记忆平仄的规律,多读古诗词,感受平仄带来的韵律美。
2. 情感表达手法:分析近期错误,概念模糊是关键。建议你先梳理情感表达手法的种类,如直接抒情、间接抒情等,然后结合具体诗词,分析作者如何运用这些手法。
3. 常见意象含义:目前你对意象的理解还不够深入。建议你通过查阅资料,了解常见的意象及其象征意义,同时,在阅读诗词时,尝试找出并分析意象。
📚 学习资源推荐:可以找一些诗词鉴赏书籍,如《唐诗鉴赏词典》等,通过阅读和解读,加深对平仄规律和情感表达手法的理解。
💪 今日目标:通过今日的学习,希望你能对平仄规律和情感表达手法有初步的认识,并在阅读诗词时能运用所学知识,提升对常见意象含义的把握。加油!
这份计划有几个让我满意的地方:把分析段改成匹配语文示例: "这份计划有几个让我满意的地方:它引用了学生真实的薄弱知识点(平仄规律、情感表达手法),不是泛泛而谈;学习建议分了知识点逐一给出,每个都有具体方法(如'制作表格记忆平仄规律');最后的资源推荐(《唐诗鉴赏词典》)是合适的参考书,不是随便编的;最后的错因提醒来自真实的错题分析记录,针对性很强。
08 实测四:错因分析——幻觉控制的试金石
错因分析是我认为教育场景里对幻觉控制要求很高的功能。系统会在学生完成评测后,把所有答错的题目批量发给 AI,让模型分析每道题的错误原因,归类为五种类型:粗心、概念、方法、前置、未知。

这个功能为什么容易出幻觉?因为模型需要同时处理题目、学生答案、正确答案,然后做出判断。如果模型"偷懒",可能会对所有错题都给出一个笼统的"概念不清"结论,而不去具体分析每道题的差异。
实际测下来,AI 在错因归类上的表现让我比较放心。我专门设计了几道"陷阱题"来测试:
陷阱题 1:一道计算正确的题,但学生把 3.14 写成了 3.41(数字顺序写反了)。
-
AI 判定:粗心。理由:"运算过程全部正确,最终誊写答案时数字顺序颠倒,属于注意力疏忽。"
-
✅ 判断准确。
陷阱题 2:一道需要先配方再求解的二次方程题,学生直接用了求根公式,公式背对了但计算出错。
-
AI 判定:方法。理由:"选择了求根公式而非配方法,虽然公式正确但计算量大导致出错。建议本题优先使用配方法,计算量更小。"
-
✅ 判断准确,而且给了合理的替代方法建议。
陷阱题 3:一道分式方程题,学生忘记检验增根。
-
AI 判定:概念。理由:"解方程过程正确,但未进行检验步骤。分式方程必须检验增根,这是该类题型的固有要求。"
-
✅ 判断准确,点出了"分式方程必须检验"这个核心概念。
三道陷阱题全部判断正确,没有出现把粗心判成概念不清、或者把方法错误归为粗心的情况。在反复测试的二十多道错题中,归类准确率我估算在 85% 以上,少数误判主要是"方法"和"概念"边界模糊的题,这个说实话连老师之间也会有分歧。
09 实测五:变式题生成与错题本
错题本里有一个功能:点击"生成变式题"按钮,AI 会基于原题的知识点,改变数字和条件,生成一道新题。这个功能对模型的创造力有要求——不能简单换个数字就交差,要保证新题在考点上一致、在难度上匹配、在表述上通顺。

实际生成的变式题示例:
原题:已知二次函数 y = x² – 4x + 3,求顶点坐标和对称轴。
AI 生成的变式题:已知二次函数 y = 2x² + 6x – 1,求顶点坐标和对称轴。
变式合理吗?合理。考点一样(求顶点和对称轴),但系数变了(二次项系数从 1 变成 2,一次项系数从 -4 变成 6),配方法过程中需要提取公因式,难度略有提升但仍在同一级别。
我还测了几道几何题的变式生成,模型能合理地改变图形的边长条件,同时保持几何关系成立。比如把等腰三角形的腰长从 5 改成 8,底边从 6 改成 6不变,计算面积时底边上的高会变化,但几何关系依然成立。
不过也有翻车的时候。一次让它生成一道概率题的变式,原题是"袋子里 3 红 2 白球,摸两个都是红球的概率",它生成的变式把球的总数改了,但摸球规则从"不放回"变成了"放回",考点变了。这个问题在我指出后它承认了错误并重新生成了一道合理的变式。说明模型在理解题目结构时偶尔会混淆规则细节,但在被提醒后能快速纠正。
10 实测六:用 Seed-Evolving 开发——Coding 工程能力
前面说的都是系统里 AI 功能的表现。但实际上,这个系统本身的代码,98%是借助 Seed-Evolving 写的。作为一个独立开发者,我的开发效率很大程度上取决于 AI 辅助编程的质量。
这个项目有几个比较有挑战性的工程任务:
任务一:自适应难度算法
评测系统的核心是自适应难度——答对了升难度,答错了降难度。规则是:正确率 ≥70% 升难,<40% 降难,优先从薄弱知识点出题。



我把需求和现有的数据库表结构描述给 Seed-Evolving ,它给出的实现逻辑:
function selectNextQuestion(currentLevel, correctRate, weakNodes, recentQuestions) {
// 简化版核心逻辑
let nextLevel = currentLevel;
if (correctRate >= 0.7) nextLevel = Math.min(5, currentLevel + 1);
else if (correctRate < 0.4) nextLevel = Math.max(1, currentLevel – 1);
// 优先从薄弱知识点出题,排除近30天做过的题
const candidateQuestions = await db.query(`
SELECT q.* FROM edu_question q
JOIN edu_student_profile p ON q.knowledge_node_id = p.knowledge_node_id
WHERE p.mastery_score < 60
AND q.difficulty = ?
AND q.id NOT IN (
SELECT question_id FROM edu_answer_record
WHERE user_id = ? AND answered_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
)
ORDER BY RAND() LIMIT 1
`, [nextLevel, userId]);
return candidateQuestions[0];
}
这段代码它一次就写对了,SQL 查询考虑了知识点掌握度过滤、难度匹配、排除已做题、随机选题四个条件。我自己写的话至少要调试两三轮 SQL。
任务二:跨文件的知识点树管理
知识点树是三层结构:章 → 节 → 知识点,还有前置依赖关系。前端需要把这棵树渲染出来,支持展开折叠、拖拽排序。这涉及前端 JS、后端路由、数据库查询三个文件的联动修改。

我把三个文件的当前代码都贴给 Seed-Evolving,描述了需要加的功能(拖拽排序后更新数据库 sort 字段),它给出的方案:
-
前端:监听 dragend 事件,收集新的节点顺序,调 PUT 接口
-
后端:新增 /api/edu/subjects/:id/tree/sort 接口,接收排序数组,事务批量更新
-
数据库:在 UPDATE 语句里用 CASE WHEN 处理批量排序
三个文件的改动它都给了,而且接口命名和现有的 RESTful 风格保持了一致。我检查了一下,事务处理也考虑到了(排序更新失败要回滚),这点比我预期的要好。
任务三:艾宾浩斯遗忘曲线的实现
错题本的复习提醒功能基于艾宾浩斯遗忘曲线:答对升阶(1→2→4→7→15→30 天间隔),答错降阶,连续 5 阶答对标记精通。
这个逻辑不算复杂,但涉及状态管理和时间计算。Seed-Evolving 给出的实现把复习阶段映射到了一个数组 [1, 2, 4, 7, 15, 30],每次答对后 index +1,答错后 index -1(不低于 0),然后根据当前阶段的间隔天数计算 next_review_at。代码简洁可读,我基本没改就直接用了。
任务四:成长记录的日历热力图
成长记录页面有一个学习日历热力图,类似 GitHub 的贡献图,展示近 6 个月每天的学习量。

这个功能的挑战在于:数据查询要按天聚合,前端要用 DOM 渲染 7 列网格,5 级颜色强度区分(无/1-5/6-15/16-30/31+题),点击格子要看当天详情。Seed-Evolving 给出的 SQL 聚合查询和前端 Grid 布局方案都一次通过了,省了我不少调试时间。
11 项目数据和技术细节
最后补充一些项目的技术数据,给想复刻的开发者参考:

数据库规模:13 张基础系统表 + 13 张教育业务表,核心表包括知识点树、题库、评测会话、答题记录、学生画像、错题本、预警日志等。主键用雪花算法生成 18 位数字,逻辑删除用 del_flag 字段。
前端规模:14 个页面,16 个 CSS 文件,17 个 JS 文件,全部原生实现无框架。图表用 Canvas 手写(折线图、雷达图),热力图用 DOM 方案。
AI 调用场景:覆盖 8 个功能点——学习计划生成、智能答疑、主观题批改、口语评测、错因分析、变式题生成、AI 题目生成、虚拟实验指导。每个场景的 prompt 单独设计,温度参数从 0.3(错因分析)到 0.7(答疑)不等。
安全设计:JWT 认证 + bcrypt 加密,接口限流(登录 10 次/分,AI 分析 20 次/分),XSS 防护(前端 esc 函数转义),CORS 白名单,雪花 ID 防遍历。
技术栈一览:
|
后端 |
Node.js 18 + Express + mysql2 连接池 |
|
数据库 |
MySQL 8.0,雪花 ID 主键 |
|
认证 |
JWT + bcryptjs |
|
AI |
系统运行时 AI | doubao-seed-2-0-lite-260215(火山引擎方舟) |
|
前端 |
原生 HTML/CSS/JS |
|
图表 |
原生 Canvas + DOM |
|
语音 |
Web Speech API |
|
开发辅助 AI |
Doubao-Seed-Evolving(火山引擎 Agent Plan) |
12 写在最后
做这个项目的过程中,我有一个比较深的感受:开发一个教育系统,本身就是检验 AI 编程助手能力的试金石。因为教育系统同时要求工程能力(跨文件修改、数据库设计、前后端联调)、长上下文理解(26 张表的关联关系、14 个页面的交互逻辑)、幻觉控制(不能编造 API 和字段名)、检索能力(查证教育政策和课程标准)。这几个维度,少哪个都不行。
Seed-Evolving 作为开发助手在这几个维度上的表现,从我的实际体验来看,是能撑住一个中等规模全栈项目的开发需求的。它不是完美的——复杂逻辑需要多轮对话收敛,偶尔会幻觉不存在的 API,超长对话偶尔遗忘上下文——但在核心能力上(跨文件代码生成、SQL 编写、项目结构理解、代码风格一致性),它交出了一份及格线以上的答卷。

对一个独立开发者来说,购买火山方舟 Agent Plan、配好 Claude Code、用一个 Model ID 开始干活,遇到问题能通过追问让模型自我纠错,新版本自动生效不用迁移——这个开发体验本身就是 Seed-Evolving "持续进化"理念的一个注脚。
项目还在迭代,接下来我打算做这几个方向:一是接入多模态能力(让学生拍照上传手写答案,AI 直接识别批改);二是优化知识图谱的可视化(目前是热力图,想做成交互式的知识网络图);三是做一个家长端小程序,让家长能查看孩子的学情报告。
如果你也在做教育相关的项目,或者想试试 Seed-Evolving 在自己场景里的表现,欢迎来 Gitee 仓库看看代码,Gitcode仓库:https://gitcode.com/13128572534/ai-smart-education
本文基于使用 Doubao-Seed-Evolving(火山引擎 Agent Plan)开发 AI 智能教育助手的真实体验撰写。系统运行时 AI 使用 doubao-seed-2-0-lite-260215,开发辅助使用 Seed-Evolving。项目已开源,欢迎 Star 和交流。


