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

今天想做些什么?

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

{/if} {#each messages as message (message.id)} {#if message.role !== "tool" && (message.content || message.tool_calls?.length || message.attachments?.length)}
{message.role === "user" ? "你" : "P"}
{#if message.content}
{/if} {#if message.attachments?.length}
{#each message.attachments as attachment (`${message.id}:${attachment.index}`)}
{#if canPreview(attachment)} {attachment.name} {:else}{/if}
{attachment.name}{attachment.mime_type || attachment.media_type}
{/each}
{/if} {#if message.tool_calls?.length}
{#each message.tool_calls as call (call.id)} {/each}
{/if}
{/if} {/each} {#if thinking}
P
正在思考…
{/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 = ""; }} /> {connected ? "已连接" : "已断开,正在重连"}/ 打开命令 · Shift+Enter 换行
{#if currentPlan} {/if}