Skip to content

Chat Features EN

zhenhun edited this page Sep 4, 2026 · 1 revision

中文 | English

Streaming Output

End-to-end streaming across the whole stack: upstream SSE → line-by-line parsing in Rust → Tauri Event → character-by-character rendering in the frontend. Assistant messages support Markdown (react-markdown + remark-gfm): bold, lists, tables, and code blocks.

  • Multi-byte characters (Chinese/emoji) won't be garbled when split across TCP chunks: the stream is buffered by bytes and decoded by complete lines
  • When the upstream returns non-standard formats, the message body is fuzzy-matched automatically (compatible with the content array, legacy text, output_text, and other variants)
  • finish_reason case/alias normalization is automatic (length / MAX_TOKENS / max_output_tokens, etc.); truncation is explicitly flagged
  • If the upstream rejects the tools parameter (a 4xx error mentioning tool/function/schema), BIT automatically falls back to a text-based convention protocol and re-probes in the next session

Multimodal

Chat input supports pasting/selecting images (data URL arrays); the backend converts them into the OpenAI / Claude / Gemini multimodal content formats respectively before sending.

Message Queue and Drag Reordering

Messages typed while the AI is busy enter a queue and are sent one by one automatically:

  • Each queued message carries a sequence number (pill style)
  • Click and hold to drag to reorder in real time; the order settles when you release
  • Double-click a pill to remove that message
  • Compatible with WKWebView (macOS); does not rely on the HTML5 drag-and-drop API

Context and Cache Hit Rate

  • The history window holds 96 messages; beyond that it falls back in 8-message aligned steps—the message prefix of adjacent requests is byte-for-byte identical, hitting prompt caches on every provider (automatic on OpenAI / Gemini; equally effective on compatible endpoints like DeepSeek / Kimi)
  • The input area shows real-time cache hit rate stats with color grading: ≥80% green, 50–80% gray, <50% yellow

Tool Call Process

  • A single AI reply can trigger multiple tool calls, executed concurrently (up to 16), with results fed back in call order
  • The call process is displayed line by line as cards in the conversation
  • If any tool fails (or is interrupted), nothing is lost: the error details are returned to the model so it can keep reasoning
  • A session can be interrupted at any time: requests and tool execution stop immediately

Prompt-Cache Friendly

Tool descriptions and system prompts are entirely in English (best compatibility with older models), and the in-session history alignment strategy keeps long conversations from being truncated too early.

Clone this wiki locally