fix(chat): reconcile reply recovery with continuous agent conversations
Some checks failed
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled

This commit is contained in:
鲨鱼辣椒
2026-09-28 18:14:12 +08:00
parent 44b16f8fbd
commit cafebca057
13 changed files with 159 additions and 34 deletions

View File

@@ -6,12 +6,16 @@ import { isTeacherReplyEnvelope, parseTeacherReply } from '../../shared/teacher-
import { TeacherError } from './config-client';
/** Repair only received, completed protocol replies; never resume a model request. */
function repairCompletedReply(request: TeacherRequest): void {
export function repairCompletedReply(request: TeacherRequest): void {
const raw = request.unparsedResponse;
if (request.status !== 'completed' || typeof raw !== 'string'
|| !(request.discussionError || request.replyParseError || request.replyIncomplete)
|| !isTeacherReplyEnvelope(raw)) return;
const parsed = parseTeacherReply(raw);
if (request.replyQuickRepliesRejected) {
parsed.quickReplies = [];
parsed.parseError ??= request.replyParseError;
}
if (parsed.incomplete) {
// Keep the previous text and diagnostics as evidence, but do not present a
// legacy half-sentence as a complete reply.