# 聊天界面导览

本页说明主界面上各按钮与区域的作用。

新建空白对话时，欢迎语显示在页面中央偏上的位置。点击底部输入框唤起键盘后，欢迎语会随输入框上移，尽量保持在顶部标题栏与输入框之间；收起键盘后回到原位。

## 顶部标题栏

- **菜单按钮**（左上）：打开侧边栏，管理会话列表和浏览文件。
- **会话标题与模型名**：上面一行是当前会话名，下面一行是当前使用的模型。
- **新建会话**：新建一个对话。当前工作区如果还留着一个没发过消息的空会话，会直接切过去复用，不会再新建一个。
- **Git 入口**：跳转到 Git 版本管理页。
- **终端入口**：跳转到终端页。

远程 SSH 模式下，标题栏下方会多一行：左侧是 SSH 连接状态（圆点加文字），右侧是当前会话的 token 累计（上箭头输入、下箭头输出）。本地模式不显示这一行。

## 侧边栏

点击左上角菜单按钮，或从屏幕左缘向右滑动。顶部有「会话」和「文件」两个标签页。

### 会话页

会话按最后回复时间从新到旧排列，并按时间分组（今天 / 昨天 / 7 天内 / 30 天内 / 更早按月份）。置顶的会话单独放在最前面的「置顶」分组，卡片是浅蓝色背景。

短按切换会话，**长按弹出操作菜单**：

- **置顶 / 取消置顶**：置顶后固定排在最前。
- **重命名**：改会话标题，不影响排序。
- **导出**：导出这个会话。
- **批量选择**：进入多选模式，支持勾选多个会话、一键「全选」以及「批量删除」（带二次确认）。按左上角 × 或返回键退出多选模式。
- **删除**：会弹确认框，确认后删除该会话及其所有消息。

派生过子代理的会话，行尾会显示子代理数量和展开箭头，点击展开后可在下方查看其子代理（**1.11.0 起**），详见[子代理](https://aicode.murk.top/md/guide/subagent.md)。

侧边栏 Tab 栏下方是**搜索聊天记录**（**1.12.0 起**）：输入关键词即可跨当前工作区的所有会话搜索消息内容，列表区就地显示命中结果（会话标题加命中片段，关键词高亮）。点击一条结果会切换到对应会话并定位到该消息；点击搜索框右侧的 × 或删空内容即回到会话列表。搜索只覆盖当前工作区，且只匹配你和 AI 的正文，不含工具执行输出。

### 文件页

浏览当前工作区的文件，点击文件打开代码编辑页（**1.11.0 起**），详见[文件浏览与代码编辑](https://aicode.murk.top/md/guide/files.md)。

侧边栏底部有「浏览器」（**1.12.0 起**）和「设置」两个入口。

## 输入框下方工具栏

从左到右：

- **模式按钮**：在 BUILD、PLAN、AUTO 之间循环切换，见[三种模式](https://aicode.murk.top/md/guide/modes.md)。
- **模型按钮**：显示当前模型，点击弹出选择弹窗。顶部有搜索框可以模糊筛选，模型按供应商分组，点击分组标题可以折叠或展开（折叠状态会被记住，重开弹窗或重启后保持；搜索时自动展开命中的分组），每行标注能力标签（`Image`、`Tools`、输入输出长度），点击即切换。
- **工作区按钮**：显示当前工作区名，点击弹出工作区管理面板（见下）。
- **文件按钮**：上传文件作为附件，AI 可以读它的内容。
- **图片按钮**：上传图片作为附件。点击直接打开系统相册，可以多选。需要当前模型支持图片输入。
- **发送按钮**：AI 空闲时是普通发送；AI 正在工作时，输入框为空则显示停止按钮，有内容则显示橙色发送按钮（消息会排队）。

输入的内容长到超出输入框高度后，输入框右上角会出现**展开按钮**：点击即用整屏编辑这条草稿，右上角「收起」或系统返回键退出全屏。全屏里修改的内容实时同步回输入框，两边是同一份草稿，收起后按发送即可。

上传的附件会以预览卡显示在输入框上方，发送前可以移除。上传较大的文件需要一定时间，期间输入框上方会显示上传中的提示，传完自动变成预览卡。点击图片缩略图可以[全屏看大图](#全屏看图)。

未发送的文字草稿按会话持久化保存到本地。

滚动消息列表时，输入框区域会淡出到 40% 透明度以减少干扰，停止滚动后恢复。

## AI 询问面板

AI 需要你选择方案时，会在聊天输入框上方显示询问面板。选择预设选项，或选择「其他」填写自己的回答，再点「确认」提交；也可以点「补充」，回到聊天输入框补充说明。

填写「其他」时，面板会随键盘弹出缩小可见区域。问题较多时，可以在面板内部上下滚动，找到输入框和底部操作按钮。面板标题可点击收起或展开。

## 工作区管理

点击工作区按钮弹出的面板里可以：

- **切换工作区**：点击即切换。如果当前有正在运行的 AI 会话或终端标签，会先弹确认框——切换会停止它们。
- **新建内部工作区**（本地模式）：输入名称，在应用私有空间中创建一个独立文件夹。远程 SSH 模式下入口显示为「新建工作区」，文件夹创建在服务器上。
- **添加外部工作区**（本地模式）：把设备上已有的目录作为工作区。首次点击会显示风险确认弹窗（AI 会直接读写你的真实文件），可以勾选「不再提示」。只支持从「内部存储」或「SD 卡」选择文件夹，云盘之类的其它文件提供方不支持。
- **删除工作区**：内部工作区连同文件一起删除；通过「添加外部工作区」加进来的外部工作区只解除关联，**不会删除目录内容**。

工作区是 AI 操作的项目根目录，AI 的代码读写和命令执行都被限制在当前工作区内。

## 斜杠命令

在输入框输入 `/` 会弹出命令菜单，**内置命令排在前面（按字母序），技能排在后面（也按字母序）**。命令较多时，可以在菜单内上下滑动查看；继续输入命令名可以筛选列表，点击条目即可补全到输入框。

内置命令：

- `/compress`：手动触发当前会话的上下文压缩。
- `/init`：让 AI 分析当前工作区代码库，生成或改进项目规则文件 `AGENTS.md`（项目根已有 `CLAUDE.md` 而无 `AGENTS.md` 时改进 `CLAUDE.md`）。可带参数指定关注点，例如 `/init 关注测试与发布流程`。
- `/usage`：查看今日与累计的调用次数、token 用量与预估费用（全局统计，跨会话）。
- `/goal`：设定/查看/暂停/恢复/清除当前会话的持续目标，AI 自主循环推进至达成或预算耗尽。详见[会话目标](https://aicode.murk.top/md/guide/goal.md)。

技能：

- 每个已启用的技能都能用 `/技能名` 直接触发，AI 会把该技能的正文作为本轮指令执行；菜单里技能右侧带「技能」标记。
- 技能可以带参数，例如 `/pdf-report a4`：参数会替换技能正文里的 `$ARGUMENTS` 占位符；正文没有占位符时，参数会追加到末尾。

命令在 AI 忙碌时会进队列，空闲后自动执行。命令文本会作为用户消息显示在对话里，并进入上下文。

## @ 引用文件

在输入框输入 `@` 会弹出文件搜索菜单，输入关键词即可模糊匹配当前工作区的文件（按文件名与路径匹配，不区分大小写）。点击条目会把 `@相对路径` 插入输入框，作为给 AI 的引用——AI 收到后按需读取该文件。

- 文件列表由容器内的 ripgrep 生成，自动遵守 `.gitignore`，跳过 `.git`、`build` 等目录。
- 每次打开 `@` 菜单都会重新拉取一次列表（大工作区首次可能有短暂加载），关闭后即丢弃，保证拿到最新文件。
- 本地模式需先初始化容器；容器未就绪时菜单会提示无法搜索。
- 远程模式需要远端服务器已安装 `rg`。

## 上下文用量与压缩

发送按钮外圈反映模型可用输入预算的占用，而非累计消耗。发送前会估算新输入、回复和工具结果增加的用量，模型返回后再用实际报告校准；读屏说明会区分预计用量。切换模型、压缩和回退后，旧用量基线不再沿用，后续请求会重新计算。

上下文接近阈值时，较早的对话会转成接手摘要，最近消息继续保留。历史整理和摘要材料处理在后台进行，压缩期间仍可浏览消息。压缩成功后，分隔线和摘要卡片显示在本次压缩触发的位置，而不是被压缩历史的截断处。压缩模型窗口较小时会分块处理，可能增加等待时间和调用费用；摘要为空、截断或无法释放足够空间时，不替换原历史。明确的上下文超限最多自动压缩重试一次，仍失败时请缩短输入、减少工具或检查模型窗口设置。

## 消息队列

AI 工作时输入框仍然可用。输入内容后点橙色发送按钮不会打断当前任务，而是加入**待发送队列**：

- 队列面板显示在输入框上方，列出排队消息的序号和摘要；点标题栏可收起/展开，弹窗或键盘弹出时会自动收起。
- 当前一轮任务结束后，队列里的下一条自动发送，多条按顺序执行。
- **拖拽排序**：按住每行左侧的拖拽手柄（☰）上下拖动，可调整排队消息的执行顺序。
- **编辑**：点每行的铅笔图标可修改该条消息内容，确认后更新。
- **立即插入**：点每行的闪电图标会把该条消息立即发给正在工作的 AI——不再等当前轮结束，而是直接注入 AI 正在进行的工具结果中，让它当轮就按新内容调整。若当前轮 AI 没有调用工具（正在纯文本输出），则会在本轮结束时作为下一条发出。
- 点「停止」会跳过当前轮，立即执行队列里的下一条。
- 每条消息右侧的 × 可以把它从队列移除。

::: warning 队列只在内存里
切换工作区或进程被系统终止时，队列会清空，请勿将重要内容仅保留在队列中。
:::

## 回复与工具卡片

AI 生成回复时以**打字机效果**逐字显示，速度跟随模型的输出速度自动调节：模型输出快时显示跟着加速，只落后最后一小段，不会越拖越多。思考过程的预览行、工具执行输出照旧实时更新，不受打字机影响；生成结束时剩下的那一小段会快速完成（约零点几秒），不会整段突然跳出来。

中途离开再回来（切到终端、设置页，或切到另一个也在输出的会话）时，已经输出的部分直接展示到当前进度，不会从头重新逐字；之后新产出的内容继续逐字显示。

消息区采用**扁平文档流**排版：你发送的内容是右侧的浅色气泡，下方标注发送时间；AI 的回复直接铺在页面上，不再套一层边框卡片。

AI 的每一次回复外面都套着一层**任务折叠**（**1.13.0 起**），把这一整轮的过程收在一起：

- 折叠头显示这一轮的状态：正在运行时是「执行中」，完成后变成「已完成 Xs」（X 是本轮耗时）；点它展开或收起。
- 运行过程中，正文、思考与工具调用按发生顺序显示，不会把工具调用前的说明文字挪到工具后面；任务结束后才将最终回答单独保留在过程下方。
- **任务完成后自动收起**，只留最终回答；展开后可以回看这一轮的过程（思考、工具调用、中间的过渡内容）。
- 手动展开或收起后，会按你的选择保持（切换会话、滚出屏幕再回来都不变）；任务完成时若你未手动操作过，才会自动收起。
- 打开较早的记录时，聊天只加载最近的一部分，滑到顶部才继续往前补。若正好从某一轮中间开始，最上面那一截过程也会收回折叠头里（拿不到整轮的耗时，所以只显示「已完成」）；往前补加载到这一轮的起点后，它会并回该轮正常的折叠里。
- 手动展开过程后，AI 继续调用工具或追加消息时会保持展开。过程内容按可见范围渲染，向下滚动即可继续查看；向上加载更早的记录时，已展开的过程和当前阅读位置会保持。
- 如果这一轮 AI 一次回答完、既没有思考也没有工具调用，则不显示折叠头，与之前一致。

**你发出去的每条消息**下方常驻发送时间与「复制 / 回退 / 更多」按钮，可随时复制或回退其中某一条。**AI 回复的按钮只挂在整段会话最新的一条上**（一轮任务中 AI 可能分多步、中间夹有工具调用，按钮只挂在最后一步；且仅当本轮正常完成时出现，主动暂停或出错不显示）。每轮任务的用量、缓存命中率与耗时按轮合计挂在轮末回复下方，详见[回复下方的用量与耗时](#回复下方的用量与耗时)。

AI 的思考过程另外占一行，**默认收起**，收起时显示思考图标、状态与耗时；点这一行展开查看内容，再点收起。正文开始输出或开始准备工具调用时，思考状态变为「思考完成」，耗时停止增加，不包含后续正文生成时间。展开后的思考内容在限高窗口里按段显示，长内容可以在窗口内上下滚动查看。手动展开或收起的选择会保持，思考结束并转入工具调用、滚出屏幕后再回来或切换页面不会重置；新一段思考仍默认收起。

等待模型响应时，消息区底部显示一行状态：一条白色高光往复地从这行文字上划过，后面跟着三个跳动的点（点不参与高光）。模型正在准备某次工具调用时（工具名先到、参数还在传输，可能需要数秒），这行文案会直接说明将要执行的操作，而不是一直显示「正在思考」——例如 `正在编辑文件`、`正在执行命令`、`正在联网搜索`。此时思考内容和耗时可能已经停止变化，这是思考阶段结束、正在生成工具参数；底部仍会显示对应的动态状态提示，即使上方还保留着思考或正文，也不会出现整段等待没有反馈的情况。

工具调用按「连续的一批」折叠成一行：

- **`N 次工具调用`**：一轮任务里连续多次工具调用合并成这一行，**默认收起**——运行中也不自动展开，如需查看细节可自行点开；只要这批里还有工具在运行，**这行文案自身**就带着一条来回划过的高光。点这一行可以随时手动展开或收起，**手动选择之后会一直按你的选择显示**——不会被自动规则改回去，也不会因为滚出屏幕、切去终端或设置页再回来而变回默认态。
- 展开后每次调用占一行，并且**整体向内缩进一级**，一眼能看出这些行属于上方分组，而不是和分组头平级的独立内容。已经手动展开单条工具时，后续连续调用形成分组不会把它藏起来；手动收起过分组后，则继续保持收起。
- 正在运行的那条工具，行尾显示它**正在做的事**（折叠态也可见），而不是笼统的「执行中」：`正在执行命令`、`正在编辑文件`、`正在读取文件`、`正在查看图片`、`正在联网搜索`、`正在操作浏览器`、`正在生成图片`、`正在整理待办`、`正在启动子代理`、`正在询问用户`、`正在读写记忆`；认不出具体动作的工具（MCP 工具等）显示 `正在调用工具`。
- 点单行可以查看「指令」与「执行结果」；较大的工具结果会在后台整理，展开后可能稍等片刻才显示完整详情。内容过长时在一个固定高度的窗口里上下滚动查看，底部渐隐提示下方还有内容。单行的展开/收起同样会被记住，划走再划回来不会自动合上。工具仍在输出时，在窗口内滚动会暂时固定正在浏览的内容，避免新输出替换文字导致跳动；滚回窗口底部并停止滚动后恢复实时更新。浏览期间工具仍会继续执行，外层聊天不会自动滚动抢走位置。工具和思考窗口内，按住拖动到顶部或底部后继续拖动，可以带动外层聊天列表；快速滑动并松手后，窗口的惯性滚动到边界即停止，不会带动外层列表。
- 改动文件的工具（写文件、改文件）**和其他工具一样默认收起**，点击展开后是一张**差异卡**：左上角是文件路径，右上角「复制」可复制这段差异，正文是带行号的 `+ / −` 彩色差异，底部汇总本次改动（如 `+3 −0 · 1 个文件`）。

若工具卡片底部显示「后台任务／子代理已结束」提示（绿点代表成功，红点代表失败或被手动终止），表明后台任务或子代理已在该轮中完成并被当前会话捕获，AI 会自动接续处理。

## 全屏看图

聊天里的图片都可以点开查看大图，四个位置一致：

- 输入框上方待发送的图片附件；
- 已发出的消息气泡里的图片附件；
- AI 回复正文里显示出来的图片（AI 生成的图表、截图，或它从工作区读取的图）；
- AI 用发送工具（或图片生成）发给你的图片。

全屏之后：双指捏合放大、放大后单指拖动查看细节、双击在原图和放大之间来回切换。点画面、按返回键或点右上角的 × 关闭（放大状态下点画面不会关闭，避免查看细节时误触）。平板上无论聊天区占半屏还是全屏，大图都铺满整个屏幕。

图片文件被移动或删除后无法打开，会提示「图片加载失败」。GIF 只显示第一帧。

## AI 发来的文件

AI 用 `sendFile` 发来的文件（以及它生成的图片）在聊天区**一个文件一行**：左边是缩略图或类型图标，中间是文件名与「大小 · 路径」，右边有 `›` 提示可点。

- 点图片行 → 应用内全屏看图；点其它类型 → 交给系统对应的 app 打开（安装包会先确认「允许安装未知应用」）。
- 文件被移动或删除后点开会提示「文件不存在或已被移动」；所在位置不支持分享给其它应用时会给出对应说明。用「添加外部工作区」加进来的外部工作区、自定义镜像里挂载进来的目录，其中的文件同样可以点开。
- 每行排在发出这个文件的工具调用**所在位置**，因此翻记录时能看清「AI 是在哪一步发来的这份文件」；带文件的工具**不参与「N 次工具调用」折叠**，分组是否收起都不影响它显示。
- 一次调用最多 10 个文件、单个文件大小上限默认 100MB（可在「偏好设置 → 工具」调整）；只要有一个不存在或超限，整批都不发，AI 会收到失败原因并修正后重试。

## 回复下方的用量与耗时

AI 回复正文下方有一行统计信息，**按「本轮合计」计算，只挂在每轮最后一条回复下方**（按钮排列为「复制 → 统计 → 更多选项」，行尾是 `···` 操作入口）：

- **token 用量**：`↑` 是本轮的输入 token、`↓` 是输出 token。一轮任务里模型可能被调用多次（每次工具调用都会再请求一次），这里是这一轮所有请求的总和，不是某一步的数字。
- **缓存命中率**（**1.11.0 起**）：数据库图标旁的百分比，是本轮命中服务端缓存的输入占本轮总输入的比例。命中越高越便宜也越快。未命中缓存、或渠道不返回缓存数据时不显示。该字段从 1.11.0 开始记录，旧消息看不到。
- **本轮总耗时**（**1.11.0 起**）：时钟图标旁的时间，只挂在一轮任务的最后一条回复下。从你按下发送算到 AI 完成，中间的工具执行、等待你点授权的时间都计入。不到 1 分钟显示成 `12s`，更长显示成 `2:05`（分:秒）或 `1:02:05`（时:分:秒）。任务还在运行时不会显示，完成后才出现。

整个会话、整个渠道的累计用量与缓存命中率在[Token 用量统计](https://aicode.murk.top/md/guide/token-stats.md)里看。
