欢迎光临
我们一直在努力

我用 Doubao-Seed-Evolving 搭了个 AI 智能教育助手

一个独立开发者用 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 和交流。

    赞(0)
    未经允许不得转载:171主机测评 » 我用 Doubao-Seed-Evolving 搭了个 AI 智能教育助手
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址