{currentSession?.title || "新对话"}WebUI 会话
{#if currentPlan} {/if} { send({ type: "list_sessions", include_archived: false }); if (currentId) { send({ type: "get_session_plan", session_id: currentId }); send({ type: "get_session_stats", session_id: currentId }); } }}> 刷新会话
{#if messages.length === 0 && !activeTurn}

今天想做些什么?

消息与 CLI 客户端使用同一套会话、记忆和工具能力。

{/if} {#each messages as message (message.id)} {#if message.role !== "tool" && (message.content || message.tool_calls?.length || message.attachments?.length)}
{#if message.role === "user"}你{:else}{/if}
{#if message.reasoning_content}
思考过程
{/if} {#if message.content}
{/if} {#if message.completion_status && message.completion_status !== "completed"} {message.completion_status === "cancelled" ? "已停止" : "回复中断"} {/if} {#if message.attachments?.length}
{#each message.attachments as attachment (`${message.id}:${attachment.index}`)} {#if canPreview(attachment)}
{attachment.name}
{attachment.name}{attachment.mime_type || attachment.media_type}
{:else}
{attachment.name}{attachment.mime_type || attachment.media_type}
{/if} {/each}
{/if} {#if message.tool_calls?.length}
{#each message.tool_calls as call (call.id)} {/each}
{/if}
{/if} {/each} {#if activeTurn} {:else if thinking}
正在思考…
{/if}
{ event.preventDefault(); submit(); }} ondragover={(event) => event.preventDefault()} ondrop={dropFiles}> {#if commandSuggestions.length}
斜杠命令↑↓ 选择 · Tab/Enter 补全 · Esc 关闭
{#each commandSuggestions as command, index (`${command.name}:${command.alias}`)} {/each}
{/if} {#if pendingUploads.length}
{#each pendingUploads as upload (upload.localId)}
{upload.name}{upload.status === "uploading" ? `上传中 ${upload.progress}%` : upload.status === "error" ? upload.error : formatBytes(upload.size)}
{/each}
{/if} { addFiles(event.currentTarget.files); event.currentTarget.value = ""; }} /> {chat.connected ? "已连接" : "已断开,正在重连"}/ 打开命令 · Shift+Enter 换行
{#if currentPlan} {/if}