⚙ 设置中心
检测中…
← 回课堂
模型与全局
角色库
任务包
如何开新课

大模型接入

默认已按 火山引擎方舟 预填。DeepSeek / Kimi / OpenAI 同样兼容—— 换厂商只需改「接口地址」和「模型名」两栏。
火山方舟:https://ark.cn-beijing.volces.com/api/v3
方舟填推理接入点 ID(ep- 开头)或模型名
需在方舟单独创建支持图像的接入点,与文本模型不能互换
越高越发散。角色建议 0.7-0.9,识别类任务建议 0.2-0.4
超时后会走兜底话术。默认 45000
规则是「回应某一条时,把它以前的聊天记录全带上」,这个值只是兜底上限: 一节课几十条发言通常几千字,正常碰不到。只有超长课才会触发裁剪, 而且裁了多少会在气泡的耗时行和服务器日志里明确写出来,不会悄悄丢。 觉得它"不记得前面说过什么"就往上加;想省 token 就调小。 拍照环节另有更小的预算(图片占 token 大头)。
开启深度思考(当前关闭) 思考模式会让模型先推理再回答,可能多花 10-20 秒。 课堂场景默认关闭——教师点了按钮、学生站在讲台上干等,节奏就断了。 只在需要复杂推理的环节单独开启。

语音朗读

用浏览器内置语音,零配置、离线可用,断网也能朗读。 音色清单来自你本机的语音库(各系统不同),下面会自动列出, 只列中文和英文,其他语种已隐藏。

全局底座提示词

所有角色共享。可以写学校、教研组统一要求,例如"回答必须口语化、不能超过两句话"。
任何角色输出命中即被拦截,改用兜底话术。适合放"不许提的人物结局"这类硬红线。
断网、接口报错、或输出被守卫层拦下时使用。赛课现场请务必填得自然,这是最后一道保险。
角色(学生 / 教师)
任务包(一节课)

如何用这一套系统讲另一节课

系统的核心是:角色和任务包分离。换一节课 = 新建一个任务包, 引用已有的角色(不满意就复制一份改),完全不动代码。

三步开新课

  1. 备料:把教材原文、案例、人物史料填进任务包的「本课资料」。
    这一栏是全课唯一事实来源,模型不允许引用它之外的内容。
  2. 配角色:建一个「AI 学生」和一个「AI 教师」。
    学生角色只提问不给答案;教师角色负责解答。角色卡里写清身份、性格、知识范围、说话风格。
  3. 排环节:把课堂拆成若干环节,给每个环节选类型 + 绑定角色。
    环节类型决定了这个环节"谁做什么",例如"学生讨论"一次生成 4 个学生视角的发言。

环节类型

守卫层:把"铁律"从提示词搬进代码

在提示词里写"禁止超过 120 字",模型是尽量遵守;在环节的「输出约束」里配 maxChars: 120,则是超了直接截断。后者才是能兜底的。

💡
约束分三层继承:任务包全局 → 角色 → 环节。越具体的优先级越高。 某环节要放宽字数,在环节里覆盖即可,不用回去改全局。

可配置的约束项:maxChars(字数上限)、mustEndWithQuestion(必须以问句结尾)、 forbidAnswer(禁止给答案)、bannedWords(禁语)、 deflectPhrases + deflectReply(敏感话题兜底)、 oneQuestionOnly(收敛为单一问句)、questionSuffix(未成问句时追加的话)。

为什么要做这些改动

原来的做法 问题 现在
教师手打 【追问】 等指令 赛课现场手忙脚乱 环节本身就是按钮,指令由配置生成
关键词打分判断学生说的是哪条线 词表盖不住课堂表达,漏了就答非所问 按环节切换,历史完整传给模型自己判断
铁律只写在提示词里 模型是"尽量遵守",会漏 约束下沉到引擎,超字数直接截断、命中禁语直接拦
AI 教师固定在场 很多课根本不需要老师发言 AI 教师是一个可插拔环节,用不用你定
断网就白屏 赛课现场断网是真实风险 每个环节可配 fallback 话术顶上

目录结构

lesson-agent/
├─ src/
│  ├─ config.js          全局配置(火山默认值 + env 覆盖)
│  ├─ store.js           JSON 存储,原子写
│  ├─ llm.js             openai SDK 封装,兼各类报错
│  ├─ promptComposer.js  三层提示词拼装
│  ├─ guard.js           ★ 守卫层:字数/问句/禁语/禁答
│  ├─ stageRunner.js     ★ 环节执行器(类型见「环节类型」表)
│  └─ server.js          Express 路由
├─ public/               课堂界面 + 设置中心
└─ data/
   ├─ roles/             角色卡(可独立复用)
   ├─ tasks/             任务包(一节课)
   └─ sessions/          课堂记录