29 KiB
1
项目背景
现在我们正在AI 伴学与教学辅助平台的Demo阶段。
背景资料
# AI 伴学与教学辅助平台立项方案
## 1. 项目背景与建设目标
在教育数字化转型的深水区,不仅需要“管理数字化”,更需要“认知智能化”。
本项目旨在构建统一的 **AI 赋能基座——“智学·未来”平台**。不追求昂贵的硬件堆砌,而是利用生成式 AI 技术,通过“单点突破、高频迭代”的方式,打造**懂教学、懂学生**的数字助手矩阵。
**核心目标:**
* **教师端**:从重复劳动中解放,通过 AI 辅助设计,提升教学标准化水平。
* **学生端**:提供 7x24 小时的个性化伴学服务,解决“反馈滞后”与“学习枯燥”两大痛点。
## 2. 解决方案:双核智能体矩阵
本平台不改变现有教学大纲,而是以“数字助手”的形式嵌入师生的日常流。
### 2.1 面向教师:AI 教学副驾驶
* **核心功能**:教案生成与优化。
* **差异化优势**:
* **内嵌集团标准**:基于自研的 SPGM (教学协同矩阵模型) 内核,确保生成的教案符合教学规范。
* **分层设计**:一键生成适配“基础班”与“提高班”的差异化教学方案。
### 2.2 面向学生:智能伴学双子星
我们将针对不同学科特性,打造两类差异化的智能体:
* **角色 A:AI 课代表(侧重“逻辑与反馈”)**
* **适用场景**:课后复习、作业辅导。
* **核心机制**:**苏格拉底式引导**。严禁直接给出答案,而是通过多轮反问,引导学生自己发现思路盲区。
* **价值**:提供即时反馈,诊断知识漏洞。
* **角色 B:学科探索官(侧重“兴趣与审美”)**
* **适用场景**:预习、知识拓展。
* **核心机制**:**逻辑张力与故事化叙述**。打破教材的枯燥,用跨学科视角(如物理与音乐的联系)讲解知识之美。
* **价值**:激发内驱力,解决“死记硬背”的痛苦。
## 3. 实施路线图 (Phasing Strategy)
采用“小步快跑,快速验证”的敏捷策略,分为三个阶段推进:
### 第一阶段:MVP 验证期 (Demo)
* **周期**:**1周**
* **目标**:低成本验证需求,收集师生真实反馈。
* **范围**:选取几门学科进行试点。
* **实施方式**:
* 利用轻量级编排工具(无代码/低代码)快速搭建。
* 暂不对接账号体系,以“体验链接”形式在小范围内测。
* **交付物**:可交互的 Demo 原型、首批用户反馈报告。
### 第二阶段:平台化建设期 (Go-Live)
* **周期**:**1个月**
* **目标**:完成系统集成,覆盖核心学科,正式开放。
* **关键任务**:
1. **系统集成**:对接OA/教务系统,实现单点登录与身份鉴权。
2. **功能完善**:上线会话管理、历史记录、个人助手收藏等功能。
3. **核心内容生产**:完成全学科(语数英理化生政史地)标准版智能体的提示词工程开发与调试。
4. **计费系统**:上线额度管理与充值支付功能。
### 第三阶段:生态扩展期 (Expansion) —— *[远期规划]*
* **触发条件**:基于第二阶段的运营数据与用户呼声。
* **方向**:拓展至教务管理助手、AI 磨课对练(教师模拟上课)、心理咨询助手等等深层应用。
## 4. 运营模式与预算机制
为保障平台的可持续发展,建议采用 **“集团补贴 + 个人付费”** 的混合运营模式:
### 4.1 混合计费模型
鉴于 AI 服务需消耗算力成本(Token),我们设计如下机制:
* **集团助学金(保底)**:集团为每位实名认证的师生发放 **“AI 助学额度”**(建议:教师 20元,学生 5元)。这足以覆盖基础的教学与作业辅导需求,体现集团的数字化福利。
* **个人充值(增值)**:额度用尽后可自行在线充值。
* *优势*:既控制了集团的总体预算风险,又通过“付费意愿”验证了产品的真实价值。
### 4.2 预算结构
* **开发成本**:主要为内部人力投入及少量服务器资源(利用现有设施)。
* **运营成本**:初期主要为调用大模型 API 的费用,通过上述“混合计费模型”实现成本回收与平衡。
## 5. 下一步行动建议
建议立即启动 **Phase 1 (Demo 验证)**。
* **资源需求**:无需额外预算,仅需协调英语、历史、地理等学科组各 2 名骨干教师配合实验室进行内容调优。
* **时间点**:下周五前产出 Demo 并组织第一次内测演示。
任务
在Demo阶段,页面都是静态HTML,构成设想如下:
- 导航页。列举现有的所有智能体,每个智能体有一个不超过100字的简介,点击后进入具体智能体介绍页。
- 具体智能体介绍页。包括标题、正文和底部按钮。标题为智能体名字,正文是智能体介绍,底部按钮点击后进入智能体对话页
- 智能体对话页。由Dify发布后生成一个URL,挂在介绍页即可。 我想生成Demo阶段的导航页和智能体介绍页。
指令
在生成前,我们先对齐思路:
- 复述你对任务的理解
- 对于这项任务你有什么建议?
你好!很高兴能参与到“智学·未来”平台的 Demo 开发中。在正式开始编写 HTML 代码之前,我先按照你的要求对齐思路,确保产出的 Demo 既符合立项方案的精神,又能快速达到演示效果。
1. 我对任务的理解
我将为你设计并编写两个静态 HTML 页面模板,用于 Demo 阶段的展示:
-
导航页 (Portal Page):
- 定位:作为平台的入口,展示“双核智能体矩阵”。
- 内容:包含三个核心角色——AI 教学副驾驶(教师端)、AI 课代表(学生逻辑端)、学科探索官(学生兴趣端)。
- 呈现形式:卡片式布局,每个卡片包含图标、标题和简短简介(<100字),引导用户进入详情。
-
智能体介绍页 (Detail Page):
- 定位:深化用户对特定智能体价值的理解,并作为跳转 Dify 的“跳板”。
- 内容:强调该智能体的核心机制(如“苏格拉底式引导”、“SPGM 标准”等),底部放置显著的“立即开启对话”按钮。
- 技术对接:按钮链接至你提供的 Dify 发布地址。
2. 对这项任务的建议
为了让这个 Demo 在下周五的内测中更具吸引力,我有以下几点建议:
A. 视觉身份区分 (Visual Identity)
- 色彩编码:建议为教师端和学生端设定不同的主色调。例如,教师端使用深邃的“科技蓝”,代表专业与标准;学生端使用活力的“翠绿色”或“温暖橙”,代表成长与探索。
- 图标化:为三个智能体设计差异化的图标(可以用 Lucide 或 FontAwesome 图标库),增强产品的“实体感”。
B. 内容设计的颗粒度
- 针对不同学科做分身:虽然只有三个核心角色,但在导航页可以展示针对“英语”、“历史”、“物理”等不同学科的实例卡片。例如,“学科探索官·物理篇”和“学科探索官·历史篇”,这样能让参与测试的骨干教师更有代入感。
- 增加“试一试这些问题”:在介绍页中,除了文字描述,建议增加一个“你可以这样问我”的示例板块。这能有效降低用户第一次面对 AI 时的心理门槛。
C. 技术实现建议
- 响应式设计:考虑到教师可能在电脑上用,学生可能在平板或手机上用,我会使用 Tailwind CSS 等框架,确保页面在手机和 PC 上都能完美适配。
- 单页跳转逻辑:由于是静态页,建议通过 URL 参数(如
?agent=teacher)或者简单的多页面跳转来实现,方便后期维护。 - Dify 嵌入方式:Dify 支持内嵌(Iframe)和新窗口打开。Demo 阶段建议新窗口打开,以保证对话体验的完整性,或者在介绍页使用全屏 Iframe 以模拟原生应用感。
D. 文案打磨建议(预览)
- AI 教学副驾驶:不仅是生成教案,而是“您的 24 小时教研室搭档,符合集团 SPGM 标准,让因材施教真正落地”。
- AI 课代表:强调“不直接给答案”,而是“思维的助燃剂,帮你拆解难题,查漏补缺”。
- 学科探索官:强调“跨界”,例如“带你从贝多芬的乐章中发现物理的波动规律”。
如果你认可以上理解和建议,请告诉我。接下来我将直接为你产出具体的 HTML 和 CSS 代码。(或者你对页面风格有特定的喜好,如:极简风、学院风、还是暗黑科技风?)
2
回复
A. 视觉身份区分 (Visual Identity)
- 色彩编码:同意为教师端和学生端设定不同的主色调。
- 图标化:同意为三个智能体设计差异化的图标。
B. 内容设计的颗粒度
- 针对不同学科做分身:同意。
- 增加“试一试这些问题”:这个在介绍文字上已经准备了。
C. 技术实现建议
- 响应式设计:同意。
- 单页跳转逻辑:简单的多页面跳转来实现。
- Dify 嵌入方式:Demo 阶段用新窗口打开。
D. 文案打磨建议(预览)
导航页和介绍页上,每个智能体的文案我已经准备好了。
问题
介绍页实际上是介绍页模板的概念,有两种做法:
- 每一个我将根据模板生成一个单独的智能体HTML
- 我将所有的智能体数据全部放进模板页——比如定义一套结构的数组,包括标题、正文和智能体URL,根据传入的URL参数进行显示上的调整
方案2对我来说,维护起来更方便。
另外,介绍页中我现有的正文都是Markdown格式,我能直接放Markdown数据,由JS转译么? 还是要提前准备好对应的HTML代码?
指令
处理我的问题。
3
这是一个非常高效的思路!采用方案 2(数据驱动模板) 配合 JS 实时转译 Markdown 是目前最专业、扩展性最强的做法。
以下是针对你问题的具体建议和技术路线:
1. 关于方案 2:数据驱动模板
你的选择非常正确。 这样你只需要维护一个 agents.js 配置文件,后续增加任何新学科(如物理、化学)或新角色,只需在数组里增加一条记录,无需新建 HTML 文件。
实现思路:
- 导航页 (
index.html):遍历数组,生成卡片。点击跳转时,URL 携带 ID(例如detail.html?id=math_assistant)。 - 介绍页 (
detail.html):通过 JS 获取 URL 参数中的id,从数组中匹配对应的数据,填充到页面中。
2. 关于 Markdown 转译
结论:直接放 Markdown 数据,由 JS 在客户端转译。
这是最省事的办法。你不需要手动把 Markdown 改写成复杂的 HTML 标签,只需引入一个极轻量级的库(如 marked.js),几行代码就能完成转换。
技术实现方案建议
为了让你能快速上手,我为你规划了代码结构:
A. 核心配置文件 (data.js)
你可以把所有的智能体信息集中在这里。
const agentsData = {
"teaching-pilot": {
title: "AI 教学副驾驶",
type: "teacher", // 用于区分色彩主题
icon: "🎨",
shortIntro: "您的 24 小时教研搭档,基于 SPGM 标准生成高标准教案。",
markdownContent: `
### 核心功能
* **内嵌集团标准**:确保教案符合教学规范。
* **分层设计**:一键生成适配不同班型的方案。
### 建议尝试
1. "帮我生成一份关于《勾股定理》的提高班教案。"
2. "根据本课重点,设计 3 道随堂练习题。"
`,
difyUrl: "https://dify.ai/..."
},
"study-rep-math": {
title: "AI 课代表(数学)",
type: "student-logic",
icon: "📐",
shortIntro: "苏格拉底式引导,拒绝直接答案,助你攻克逻辑难关。",
markdownContent: `...这里放 Markdown...`,
difyUrl: "https://dify.ai/..."
}
// ... 更多智能体
};
B. 介绍页模板 (detail.html)
在 HTML 头部引入 marked.js 的 CDN 即可:
<!-- 引入 Markdown 转译库 -->
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<div id="content">
<h1 id="agent-title"></h1>
<div id="markdown-body"></div> <!-- Markdown 渲染到这里 -->
<button onclick="openDify()">立即开启对话</button>
</div>
<script>
// 1. 获取 URL 参数
const params = new URLSearchParams(window.location.search);
const agentId = params.get('id');
const data = agentsData[agentId];
// 2. 渲染内容
document.getElementById('agent-title').innerText = data.title;
// 使用 marked 渲染 markdownContent
document.getElementById('markdown-body').innerHTML = marked.parse(data.markdownContent);
// 3. 按钮跳转
function openDify() {
window.open(data.difyUrl, '_blank');
}
</script>
这样做的优势:
- 极速迭代:如果你想修改某个智能体的介绍,只需改动
data.js里的文字,保存即生效。 - 样式统一:你只需要写一套 CSS,所有的智能体介绍页都会拥有统一的高级感。
- 色彩控制:你可以在
data.js里给每个智能体定义一个themeColor字段,JS 渲染时动态改变页面背景色或按钮色,轻松实现“教师端”与“学生端”的视觉区分。
下一步行动建议:
如果你准备好了,我可以为你直接编写这套导航页 + 模板页 + CSS 样式的完整 Demo 代码。你只需要把你的文案填进 data.js 即可。
是否需要我现在为你生成这套完整代码?
4
好的,现在基于data.js帮我生成导航页的HTML。
太棒了!我们采用“数据驱动”的思路。首先,我们需要定义好 data.js 的结构,然后编写 index.html(导航页)。
为了让 Demo 看起来更有质感,我使用了 Tailwind CSS (通过 CDN 引入),它可以让你无需写繁琐的 CSS 就能实现响应式、高颜值的卡片布局。
1. 准备数据文件:data.js
请先创建一个 data.js 文件,并将以下代码粘贴进去。我根据你的方案预填了三个核心智能体。
// data.js
const agentsData = {
"teaching-pilot": {
id: "teaching-pilot",
role: "teacher", // 用于颜色区分
title: "AI 教学副驾驶",
icon: "👨🏫",
shortIntro: "您的 24 小时教研搭档。深度嵌入 SPGM 教学标准,一键生成分层教案与配套练习,从重复劳动中解放。",
difyUrl: "https://udify.app/chat/YOUR_DIFY_ID_1"
},
"study-rep-math": {
id: "study-rep-math",
role: "student-logic",
title: "AI 课代表(数学)",
icon: "🧠",
shortIntro: "拒绝直接答案,专注逻辑引导。采用苏格拉底式提问,带你拆解难题,真正听懂、学会、掌握。",
difyUrl: "https://udify.app/chat/YOUR_DIFY_ID_2"
},
"explorer-history": {
id: "explorer-history",
role: "student-explore",
title: "学科探索官(历史)",
icon: "🏺",
shortIntro: "打破教材枯燥,用故事发现知识之美。跨学科视角解读历史,激发你的求知欲与审美力。",
difyUrl: "https://udify.app/chat/YOUR_DIFY_ID_3"
}
// 后续增加学科只需在这里复制粘贴
};
2. 编写导航页:index.html
这是入口页面,它会自动读取 data.js 并生成精美的卡片。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>智学·未来 - AI 伴学与教学辅助平台</title>
<!-- 引入 Tailwind CSS 用于快速构建美观界面 -->
<script src="https://cdn.tailwindcss.com"></script>
<style>
/* 自定义背景渐变和字体 */
body {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
min-height: 100vh;
font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
}
.card-hover:hover {
transform: translateY(-5px);
transition: all 0.3s ease;
}
</style>
</head>
<body class="py-12 px-4">
<!-- 头部区域 -->
<header class="max-w-6xl mx-auto text-center mb-16">
<h1 class="text-4xl font-extrabold text-gray-800 mb-4">
智学·未来 <span class="text-blue-600">AI 平台</span>
</h1>
<p class="text-lg text-gray-600 max-w-2xl mx-auto">
基于生成式 AI 技术,为师生打造“懂教学、懂学生”的数字助手矩阵。
</p>
</header>
<main class="max-w-6xl mx-auto">
<!-- 教师端区域 -->
<section class="mb-12">
<h2 class="text-xl font-bold text-gray-700 mb-6 border-l-4 border-blue-600 pl-3">面向教师:教学副驾驶</h2>
<div id="teacher-container" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<!-- JS 将在此处插入卡片 -->
</div>
</section>
<!-- 学生端区域 -->
<section>
<h2 class="text-xl font-bold text-gray-700 mb-6 border-l-4 border-emerald-500 pl-3">面向学生:智能伴学双子星</h2>
<div id="student-container" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<!-- JS 将在此处插入卡片 -->
</div>
</section>
</main>
<!-- 引入数据 -->
<script src="data.js"></script>
<script>
// 定义角色对应的颜色主题
const themeStyles = {
'teacher': 'bg-blue-50 border-blue-200 text-blue-600',
'student-logic': 'bg-emerald-50 border-emerald-200 text-emerald-600',
'student-explore': 'bg-purple-50 border-purple-200 text-purple-600'
};
const teacherContainer = document.getElementById('teacher-container');
const studentContainer = document.getElementById('student-container');
// 渲染卡片函数
function renderCards() {
Object.values(agentsData).forEach(agent => {
const isTeacher = agent.role === 'teacher';
const style = themeStyles[agent.role];
const cardHtml = `
<div class="bg-white rounded-2xl shadow-sm border border-gray-100 overflow-hidden card-hover cursor-pointer p-6 flex flex-col justify-between"
onclick="location.href='detail.html?id=${agent.id}'">
<div>
<div class="text-4xl mb-4">${agent.icon}</div>
<h3 class="text-xl font-bold text-gray-800 mb-3">${agent.title}</h3>
<p class="text-gray-500 text-sm leading-relaxed mb-6">
${agent.shortIntro}
</p>
</div>
<div class="flex items-center justify-between mt-4">
<span class="text-xs font-semibold px-2 py-1 rounded ${style}">
${isTeacher ? '教师端' : '学生端'}
</span>
<span class="text-blue-600 text-sm font-medium inline-flex items-center">
查看详情
<svg class="w-4 h-4 ml-1" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg>
</span>
</div>
</div>
`;
if (isTeacher) {
teacherContainer.innerHTML += cardHtml;
} else {
studentContainer.innerHTML += cardHtml;
}
});
}
// 初始化渲染
renderCards();
</script>
</body>
</html>
3. 设计亮点说明:
- 自动分类:JS 代码会自动根据
role: 'teacher'将卡片分发到“教师区域”或“学生区域”。 - 视觉反馈:
- 教师端:使用了蓝色的标签和边框提示,显得专业。
- 学生端:使用了翡翠绿和紫色,显得活泼、具有探索感。
- 交互体验:卡片悬浮时有微小的上浮效果(
card-hover),增加点击欲望。 - 移动端适配:在手机上会自动变为单列排布,在电脑上是三列。
下一步:
如果你准备好了,我可以接着为你生成 detail.html(介绍页模板),它会根据 id 自动渲染 Markdown 内容!需要我现在开始吗?
5
好的,现在生成介绍页模板
这是配套的介绍页模板 detail.html。
这个页面会根据 URL 中的 id 参数(例如 detail.html?id=teaching-pilot)自动从 data.js 中抓取数据,并使用 Marked.js 将 Markdown 文本转换成美观的 HTML 页面。
detail.html 代码实现
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>智能体详情 - 智学·未来</title>
<!-- Tailwind CSS -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Marked.js 用于解析 Markdown -->
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<style>
body {
background-color: #f8fafc;
font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
}
/* 针对 Markdown 生成内容的样式美化 */
#markdown-content h1 { font-size: 1.8rem; font-weight: bold; margin-top: 1.5rem; margin-bottom: 1rem; color: #1f2937; }
#markdown-content h2 { font-size: 1.5rem; font-weight: bold; margin-top: 1.5rem; margin-bottom: 0.8rem; color: #374151; border-bottom: 1px solid #e5e7eb; padding-bottom: 0.3rem; }
#markdown-content h3 { font-size: 1.25rem; font-weight: bold; margin-top: 1.2rem; margin-bottom: 0.6rem; color: #4b5563; }
#markdown-content p { margin-bottom: 1rem; line-height: 1.7; color: #4b5563; }
#markdown-content ul, #markdown-content ol { margin-bottom: 1rem; padding-left: 1.5rem; color: #4b5563; }
#markdown-content ul { list-style-type: disc; }
#markdown-content li { margin-bottom: 0.5rem; }
#markdown-content strong { color: #111827; font-weight: 600; }
/* 按钮点击动效 */
.btn-active:active { transform: scale(0.98); }
</style>
</head>
<body class="min-h-screen pb-24">
<!-- 顶部导航 -->
<nav class="bg-white shadow-sm sticky top-0 z-10">
<div class="max-w-3xl mx-auto px-4 h-16 flex items-center justify-between">
<button onclick="history.back()" class="text-gray-500 hover:text-gray-700 flex items-center transition">
<svg class="w-5 h-5 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path></svg>
返回列表
</button>
<div id="nav-tag" class="text-xs font-bold px-2 py-1 rounded"></div>
</div>
</nav>
<!-- 主体内容 -->
<main class="max-w-3xl mx-auto px-4 mt-8">
<!-- 头部信息 -->
<header class="text-center mb-10">
<div id="agent-icon" class="text-6xl mb-4"></div>
<h1 id="agent-title" class="text-3xl font-extrabold text-gray-900 mb-2"></h1>
<p id="agent-intro" class="text-gray-500 text-lg"></p>
</header>
<!-- Markdown 正文卡片 -->
<article class="bg-white rounded-2xl shadow-sm border border-gray-100 p-8 md:p-12 mb-8">
<div id="markdown-content">
<!-- Markdown 内容将被注入到这里 -->
</div>
</article>
</main>
<!-- 底部悬浮按钮区 -->
<footer class="fixed bottom-0 left-0 right-0 bg-white border-t border-gray-100 p-4 shadow-[0_-4px_10px_rgba(0,0,0,0.05)]">
<div class="max-w-3xl mx-auto">
<button id="start-chat-btn" onclick="openDify()" class="w-full py-4 rounded-xl text-white font-bold text-lg shadow-lg transition btn-active flex items-center justify-center">
<span>立即开启对话</span>
<svg class="w-5 h-5 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path></svg>
</button>
</div>
</footer>
<!-- 脚本处理 -->
<script src="data.js"></script>
<script>
// 1. 获取 URL 参数中的 ID
const urlParams = new URLSearchParams(window.location.search);
const agentId = urlParams.get('id');
const agent = agentsData[agentId];
// 2. 如果找不到数据,重定向回列表
if (!agent) {
alert('智能体不存在');
location.href = 'index.html';
}
// 3. 配置颜色主题映射
const themes = {
'teacher': {
tag: '教师端',
tagClass: 'bg-blue-50 text-blue-600',
btnClass: 'bg-blue-600 hover:bg-blue-700 shadow-blue-200'
},
'student-logic': {
tag: '学生端 · 逻辑',
tagClass: 'bg-emerald-50 text-emerald-600',
btnClass: 'bg-emerald-500 hover:bg-emerald-600 shadow-emerald-200'
},
'student-explore': {
tag: '学生端 · 探索',
tagClass: 'bg-purple-50 text-purple-600',
btnClass: 'bg-purple-500 hover:bg-purple-600 shadow-purple-200'
}
};
const currentTheme = themes[agent.role] || themes['teacher'];
// 4. 填充页面内容
document.title = `${agent.title} - 智学·未来`;
document.getElementById('agent-icon').innerText = agent.icon;
document.getElementById('agent-title').innerText = agent.title;
document.getElementById('agent-intro').innerText = agent.shortIntro;
// 渲染 Markdown (假设 data.js 中有 markdownContent 字段)
// 如果没有该字段,则显示 shortIntro 作为保底
const mdText = agent.markdownContent || `### 暂无详细介绍\n点击下方按钮直接开始体验。`;
document.getElementById('markdown-content').innerHTML = marked.parse(mdText);
// 应用主题色
const navTag = document.getElementById('nav-tag');
navTag.innerText = currentTheme.tag;
navTag.className += ` ${currentTheme.tagClass}`;
const btn = document.getElementById('start-chat-btn');
btn.className += ` ${currentTheme.btnClass}`;
// 5. 跳转 Dify 函数
function openDify() {
if (agent.difyUrl && agent.difyUrl !== '#') {
window.open(agent.difyUrl, '_blank');
} else {
alert('Demo 链接尚未配置');
}
}
</script>
</body>
</html>
使用说明及功能点:
-
Markdown 渲染:
- 我使用了
marked.parse(agent.markdownContent)。你只需要在data.js的对象里增加一个markdownContent: "### 标题 \n 内容..."字段,它就会自动渲染。 - 我专门写了一段 CSS(
#markdown-content ...)来美化 Markdown 生成的标题、列表和段落,确保符合中文排版习惯。
- 我使用了
-
动态主题适配:
- 页面会判断
role(教师/逻辑/探索)。 - 教师端:按钮会变成蓝色。
- 学生端:按钮会变成翡翠绿或紫色,导航条上的小标签也会随之改变。
- 页面会判断
-
底部常驻按钮:
- 考虑到手机端体验,对话按钮采用了底部固定悬浮的设计,用户阅读完介绍后可以随时点击,非常符合移动端 App 的操作逻辑。
-
返回逻辑:
- 左上角自带“返回列表”按钮,方便内测时师生在不同智能体之间切换。
接下来你需要做的事:
- 完善
data.js: 确保每个智能体对象里都有markdownContent和difyUrl。 例:"teaching-pilot": { id: "teaching-pilot", role: "teacher", title: "AI 教学副驾驶", icon: "👨🏫", shortIntro: "您的 24 小时教研搭档...", markdownContent: `
核心价值
- 标准化:内嵌集团 SPGM 教学矩阵。
- 高效化:一键生成分层教案。
使用场景
-
课前准备:输入课题,生成 45 分钟教学流。
-
作业设计:根据知识点自动产出基础题与挑战题。 `, difyUrl: "https://udify.app/chat/xxx" }
-
部署演示: 将
index.html,detail.html,data.js放在同一个文件夹下,直接双击index.html或用简单的 Web Server 打开即可。
这套方案已经完全对齐了你的立项方案,且具备极高的灵活性。下周五的内测演示应该会非常出彩!如果有任何细节需要微调(比如按钮文字、配色等),请随时告诉我。