fix: preserve complete consultation replies and recover retained history

This commit is contained in:
鲨鱼辣椒 committed 2026-09-28 17:38:31 +08:00
1 parent dda2f0a3be
commit d530abe580
14 files changed
+643 -38

No files matched your search

+6 -3
View File
@@ -2,7 +2,7 @@ import type { TeacherRequest } from '../../shared/coding-teacher';
import { parseTeacherReply } from '../../shared/teacher-reply';
export function teacherReplyInstructions(): string {
return '本轮界面接收一个 JSON 对象 {"reply":string,"quickReplies":string[]}。reply 是回复正文,可使用 Markdown;quickReplies 是可选的后续回复建议,没有建议时用空数组。只使用这两个字段。依据已配置职责帮助学生整理想法、理解关系、承接已确认的共识;区分学生已确认内容与智能体建议、待定想法。回复的语言、风格、长度、前缀和建议内容遵循当前智能体的云端配置。';
return '本轮界面接收一个 JSON 对象 {"reply":string,"quickReplies":string[]}。reply 是回复正文,可使用 Markdown;quickReplies 是可选的后续回复建议,没有建议时用空数组。只使用这两个字段。字符串中的英文双引号、反斜杠和换行必须按 JSON 规则转义,确保整个对象是合法 JSON。依据已配置职责帮助学生整理想法、理解关系、承接已确认的共识;区分学生已确认内容与智能体建议、待定想法。回复的语言、风格、长度、前缀和建议内容遵循当前智能体的云端配置。';
}
/** The original response remains available for diagnosis when parsing is incomplete. */
@@ -10,11 +10,14 @@ export function applyTeacherReply(request: TeacherRequest, raw: string): void {
const parsed = parseTeacherReply(raw);
request.response = parsed.reply;
request.suggestedQuestions = parsed.quickReplies;
if (parsed.incomplete) request.replyIncomplete = true;
else delete request.replyIncomplete;
if (parsed.parseError) {
request.replyParseError = parsed.parseError;
request.unparsedResponse = raw;
} else {
delete request.replyParseError;
delete request.unparsedResponse;
delete request.discussionError;
}
if (parsed.parseError || parsed.recovered) request.unparsedResponse = raw;
else delete request.unparsedResponse;
}