feat: integrate pixel teacher presence and resilient classroom preview

This commit is contained in:
鲨鱼辣椒
2026-09-23 18:23:53 +08:00
parent 12d800ec51
commit 7951cca700
60 changed files with 3313 additions and 180 deletions

View File

@@ -61,8 +61,10 @@ export function compileTeacherContext(
].join('\n\n'),
};
const current: TeacherModelMessage = {
role: 'user',
content: [
role: intent === 'check-in' ? 'system' : 'user',
content: intent === 'check-in'
? '本轮是老师定时主动关心,不是学生提问。依据来源操作对话中已完成的文字和老师咨询历史,自然地说一段简短中文关心、具体建议或思考引导,约 120 字,最多问一个问题,不要求学生立即回答。只围绕已有证据,不重复刚说过的内容,不整理待办、不替学生作决定;没有实际看到或操作作品,不能假装看到了画面、运行或试玩过作品。直接说给学生听,不提定时检查、系统触发等技术过程。'
: [
...references.map(
(ref) =>
'明确引用' +
@@ -97,13 +99,13 @@ export function compileTeacherContext(
},
]
: []),
...exchanges.flatMap((request) => [
{
...exchanges.flatMap((request): TeacherModelMessage[] => [
...(request.intent === 'check-in' ? [] : [{
role: 'user' as const,
content: [...request.references.map((ref) => '明确引用:\n' + ref.text), request.text].join(
'\n\n'
),
},
}]),
{
role: 'assistant' as const,
content: [
@@ -121,8 +123,7 @@ export function compileTeacherContext(
omitted++;
}
while (estimateTeacherTokens(build()) > maxInputTokens && exchanges.length > 1) {
exchanges.shift();
omitted += 2;
omitted += exchanges.shift()?.intent === 'check-in' ? 1 : 2;
}
const messages = build();
if (estimateTeacherTokens(messages) > maxInputTokens)