siyuan-note/siyuan · error · Error

window.siyuan.languages._kernel[28]

Error message

window.siyuan.languages._kernel[28]

What it means

Fallback error text used by fetchAIEditorSSE when the failed /api/ai/editor/chat response body cannot be parsed as JSON (for example an HTML error page from a proxy). The localized kernel message window.siyuan.languages._kernel[28] is kept as the generic error and thrown after the json() parse fails, because no server-side msg is available.

Source

Thrown at app/src/ai/editorSSE.ts:114

        method: "POST",
        headers: {"Content-Type": "application/json"},
        body: JSON.stringify(request),
        signal,
    });
    const contentType = response.headers.get("Content-Type") || "";
    if (!response.ok || !contentType.includes("text/event-stream")) {
        let message = window.siyuan.languages._kernel[28];
        try {
            const data = await response.json();
            message = data?.msg || data?.message || message;
        } catch (e) {
            // 响应不是 JSON 时使用统一错误文案。
        }
        throw new Error(message);
    }
    const reader = response.body?.getReader();
    if (!reader) {
        throw new Error(window.siyuan.languages._kernel[28]);
    }
    const decoder = new TextDecoder();
    const parserState = createAIEditorSSEParserState();
    let terminalReceived = false;
    while (true) {
        const result = await reader.read();
        if (result.done) {
            break;
        }
        parseAIEditorSSE(parserState, decoder.decode(result.value, {stream: true})).forEach(event => {
            terminalReceived = terminalReceived || event.type === "done" || event.type === "error";
            onEvent(event);
        });
    }
    parseAIEditorSSE(parserState, decoder.decode(), true).forEach(event => {
        terminalReceived = terminalReceived || event.type === "done" || event.type === "error";
        onEvent(event);
    });

View on GitHub (pinned to 8641553a1f)

Solutions

  1. Treat the message as generic: the real cause is the HTTP status, not the text
  2. Check for proxies or gateways returning non-JSON error bodies between client and kernel
  3. Retry after confirming kernel health and AI configuration
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at app/src/ai/editorSSE.ts:114 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of siyuan-note/siyuan@8641553a1f (2026-09-11). Data as JSON: /api/errors/ff24d2654d6e4197. Report an issue: GitHub.