> For the complete documentation index, see [llms.txt](https://docs.cherry-ai.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cherry-ai.com/docs/en-us/cherry-studio/preview/chat.md).

# Chat Interface

The chat interface is the most commonly used page in Cherry Studio, but its structure includes**two levels**: Assistant → Topic. Understanding this structure helps you use various chat features more efficiently.

> It is recommended to first read [Concept Basics](/docs/en-us/advanced-basic/concepts-101.md) to learn about concepts related to assistants / agents / skills.

## The relationship between assistants and topics

Simple analogy:

* **Assistant = a role**(e.g. "Product Documentation Assistant", "Code reviewer")
* **Topic = a conversation with that role**(e.g. discussing "refactoring plan" on Monday, "bug report" on Tuesday)

That is to say:**Multiple topics can be created under one assistant**, and all topics share that assistant's persona and parameters (prompt, model, temperature, etc.), so you don't have to re-set the AI's role and style each time.

### Assistant

An assistant sets a fixed role for the AI — composed of a system prompt + preset model parameters.

* **System default assistant**: A general-purpose assistant with no special prompt set, ready to use directly
* **More specialized assistants**: in [Assistant Plaza](/docs/en-us/cherry-studio/preview/assistants.md) , browse ready-made presets, or create your own

### Topic

Multiple topics (i.e. multiple independent conversations) can be created under each assistant. Topics are independent of one another but share the settings of their parent assistant.

Example scenarios:

* Under the same "Code Assistant", create two topics, "Project A refactor" and "Project B bug", and manage them separately
* Under the same "Translation Assistant", open multiple topics to handle different articles separately

<figure><img src="/files/7798a590cc7df65f753d1a39b2ec430d28dde44f" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3032be3db32e7daa76e08c8b1b0d2f53ef55a666" alt=""><figcaption></figcaption></figure>

## Buttons in the chat box

<figure><img src="/files/555adfd9040bb1e6634663608a988e12970337ca" alt=""><figcaption><p>Cherry Studio chat box toolbar (v1.9.9 real shot)</p></figcaption></figure>

The order of tools in Cherry Studio's chat toolbar can be adjusted by long-pressing and dragging them.

### Left-side tools

| Icon                                                 | Name                  | Function                                                                                                                        |
| ---------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| ![](/files/048453d79440b8d70a3ebd85c2f6cf3409cc44ec) | **New topic**         | Create a new topic in the current assistant                                                                                     |
| ![](/files/09fcbcdab34c5e40e35b377ef0a207251dc3c898) | **Upload attachment** | Upload images or documents; images require the model to support vision, and documents will be automatically parsed as context   |
| ![](/files/31500bf1995445154d3879ad26f30ce08bca3687) | **Web search**        | Return web search results to the model as context; first configure them in [Online mode](/docs/en-us/pre-basic/websearch.md) of |
| ![](/files/767c931c860f26c280c3ae06850ee9f201b1960c) | **Knowledge Base**    | Use an existing [Knowledge Base](/docs/en-us/knowledge-base/knowledge-base.md) as context                                       |
| ![](/files/20a68eeaad91891e0f4bfaceb2c04980d1585464) | **MCP server**        | Enable [MCP](/docs/en-us/advanced-basic/mcp.md) tools for the model to call                                                     |
| ![](/files/8ca13853dfe4e9bd0855d6109b6799cae846c493) | **Mention model**     | Temporarily switch the model for the next reply while keeping the context                                                       |
| ![](/files/f73db97292826bf031d588f0aafe9e7f293fd296) | **Quick phrases**     | Call a preset template; see [Quick phrases](/docs/en-us/advanced-basic/quick-phrase.md)                                         |
| ![](/files/ae57710355003ab661834f798a3dd50a1c970b6b) | **Clear messages**    | **Delete**all messages under this topic (cannot be restored)                                                                    |
| ![](/files/d4ac8c63f707577b46796d4b9b598e13176584fb) | **Expand / Collapse** | Make the input box larger or restore it, making it easier to enter long text                                                    |
| ![](/files/891056f5f1df6a5f1e2571f339e9664ac3206a0b) | **Clear context**     | **Keep messages**but let the model "forget" the previous conversation (truncate the token context)                              |

{% hint style="warning" %}
**"Clear messages" vs "Clear context"** are two different things:

* **Clear messages**: Physically deletes all message content and cannot be recovered
* **Clear context**: The messages are still there; it just makes the model re-recognize you starting from this moment, and it will no longer remember the previous conversation
  {% endhint %}

### Tools in the lower-right corner

| Icon                                                 | Name          | Function                                                                                                                                           |
| ---------------------------------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| ![](/files/b61ea59df3119d9a46d4e5994d3f7e0132773e59) | **Translate** | Directly translate the contents of the input box into the target language (configure the default translation model in `Settings → Default Model` ) |
| ![](/files/a4ac2b12f38d9f4051047fe834051964916f1380) | **Send**      | Send message (default Enter; can be changed in [Shortcuts](/docs/en-us/pre-basic/settings/key-shortcut.md) )                                       |

### Tools shown only when conditions are met

The following tools are not in the default toolbar,**and appear only when the selected model / assistant supports them**:

| Icon                                                 | Name               | Function                                                                                                                                                             |
| ---------------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ![](/files/94a0c97c2e1609a2f1cfa3dd9600861265e57a78) | **Generate image** | Appears when the selected chat model supports image generation. For dedicated image-generation models, go to [Drawing](/docs/en-us/cherry-studio/preview/drawing.md) |
| ![](/files/719793018881a96c6e9a158e9e3427283338fa25) | **Thinking mode**  | Appears when the selected model supports deep reasoning (e.g. GPT-5 series, Claude Opus4.8, Qwen-3.7-plus, etc.)                                                     |
| ![](/files/f3e0a91981c15c63406320c84f191c2f780ed3e1) | **Web context**    | Appears when the selected model supports native URL input                                                                                                            |
| ![](/files/d68bbd308ef123bcd1b183f522a7b3789646b2d5) | **Slash commands** | Appears in Cherry Agent sessions, providing `/clear`,`/exit` and other built-in commands                                                                             |

### Abilities triggered by keyboard

In addition to clicking buttons, you can also directly press specific keys in the input box to bring up the corresponding panel:

* **`@`**: Bring up the model selector (equivalent to the "Mention model" button above)
* **`/`**: Bring up the slash-command panel, allowing quick insertion of quick phrases, translation, tool calls, etc.

### Bottom-right of the chat box: token count

![](/files/91d5d5bd2d0f272e7c7b20361c5980fa2f0c779f)

The lower-right corner of the input box also shows **estimated token count**, including four values:`Current context count` / `Maximum context count`(∞ indicates unlimited) / `Current context token count` / `estimated token count`.

{% hint style="info" %}
This is only an estimate; different models have different tokenizers, and actual billing is subject to the model provider.
{% endhint %}

## Chat settings

<figure><img src="/files/ebd88e41f846cc17efe792d9ffdfd987d66a6c0f" alt=""><figcaption></figcaption></figure>

### Model settings

The parameters in model settings and assistant settings `Model settings` are synchronized; see [Assistant settings](#bian-ji-zhu-shou).

{% hint style="info" %}
In chat settings, only the model settings here apply to the current assistant; the rest apply globally. For example, if you set the message style to bubble, it will be bubble style for any topic under any assistant.
{% endhint %}

### Message settings

#### <mark style="color:blue;">**`Message divider`**</mark>:

Use a divider line to separate the message body from the action bar.

{% tabs %}
{% tab title="When enabled" %}

<figure><img src="/files/a893d14670ac9e5844b471fd3047d19a2fa615f5" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="When disabled" %}

<figure><img src="/files/e4be35139f1f38d1a0208f496d3a169e4f62acd6" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

#### <mark style="color:blue;">**`Use serif font`**</mark>:

Font style switch; now you can also use [custom CSS](/docs/en-us/pre-basic/personalization-settings.md) to change the font.

#### <mark style="color:blue;">**`Show code line numbers`**</mark>:

Show line numbers in code blocks when the model outputs code snippets.

{% tabs %}
{% tab title="When disabled" %}

<figure><img src="/files/4d2946f8b15e3c4d159f3d927183990e45413b3d" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="When enabled" %}

<figure><img src="/files/75573c03e5164e92eb17187527c4ed7c37a8e021" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

#### <mark style="color:blue;">**`Collapsible code blocks`**</mark>:

When enabled, code blocks will be automatically collapsed when code snippets are long.

#### <mark style="color:blue;">**`Code block line wrapping`**</mark>:

When enabled, long single-line code snippets (that exceed the window) will automatically wrap.

#### <mark style="color:blue;">**`Automatically collapse thinking content`**</mark>:

When enabled, models that support thinking will automatically collapse the reasoning process after thinking is complete.

#### <mark style="color:blue;">**`Message style`**</mark>:

The chat interface can be switched to bubble style or list style.

#### <mark style="color:blue;">**`Code style`**</mark>:

You can switch the display style of code snippets.

#### <mark style="color:blue;">**`Math formula engine`**</mark>:

* KaTeX renders faster because it is specially designed and optimized for performance;
* MathJax renders more slowly, but is more comprehensive and supports more mathematical symbols and commands.

#### <mark style="color:blue;">**`Message font size`**</mark>:

Adjust the font size of the chat interface.

### Input settings

#### <mark style="color:blue;">**`Show estimated token count`**</mark>:

Display the estimated token count of the input text in the input box (not the actual context token usage; for reference only).

#### <mark style="color:blue;">**`Paste long text as file`**</mark>:

When you copy a long passage of text from elsewhere and paste it into the input box, it will automatically display in file style, reducing interference when entering subsequent content.

#### <mark style="color:blue;">**`Render input messages as Markdown`**</mark>:

When disabled, only the messages returned by the model are rendered; sent messages are not rendered.

{% tabs %}
{% tab title="When disabled" %}

<figure><img src="/files/e02a7032811929c5ad2f50f0bc8523b891b9ac81" alt="" width="563"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="When enabled" %}

<figure><img src="/files/b392655148f87dbd15f21e5e94e18417f175a4fa" alt="" width="563"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

#### <mark style="color:blue;">**`Translate by pressing the spacebar 3 times quickly`**</mark>:

After entering a message in the chat interface input box, pressing the spacebar three times in a row can translate the entered content into English.

{% hint style="warning" %}
Note: this will overwrite the original text.
{% endhint %}

#### <mark style="color:blue;">**`Target language`**</mark>:

Set the target language for the input box translation button and the 3-space quick translation shortcut.

## Assistant settings

In the assistant interface, select the<mark style="background-color:yellow;">assistant name</mark>to be set<mark style="background-color:yellow;">in the right-click menu</mark>select the corresponding setting

### Edit assistant

{% hint style="info" %}
Assistant settings apply to all topics under that assistant.
{% endhint %}

<figure><img src="/files/7c3f30abd0dadb1dbebcd3a90a1a0a5d016cbb7a" alt=""><figcaption></figcaption></figure>

#### Prompt settings

#### <mark style="color:blue;">**`Name`**</mark>:

You can customize an assistant name that is easy to identify.

#### <mark style="color:blue;">**`Prompt`**</mark>:

That is, the prompt; you can edit the content by referring to the prompt-writing style used on the agent page.

#### Model settings

#### <mark style="color:blue;">**`Default model`**</mark>:

You can assign a fixed default model for this assistant. When adding it from the agent page or copying the assistant, the initial model will be this model. If this is not set, the initial model will be the global initial model (that is [default assistant model](/docs/en-us/pre-basic/settings/default-models.md#mo-ren-zhu-shou-mo-xing) ).

{% hint style="info" %}
There are two kinds of an assistant's default model, one is [global default chat model](/docs/en-us/pre-basic/settings/default-models.md#mo-ren-zhu-shou-mo-xing) , and the other is the assistant default model; the assistant default model has higher priority than the global default chat model. When no assistant default model is set, assistant default model = global default chat model.
{% endhint %}

#### <mark style="color:blue;">**`Auto reset model`**</mark>:

When enabled - if you switch to another model while using a topic, then creating a new topic again will reset the new topic to the assistant's default model. When this option is off, the model of the new topic will follow the model used in the previous topic.

> For example, if the assistant's default model is gpt-3.5-turbo, I create Topic 1 under that assistant, and during the conversation in Topic 1 I switch to using gpt-4o; at this point:
>
> If auto reset is enabled: when creating Topic 2, the default selected model for Topic 2 will be gpt-3.5-turbo;
>
> If auto reset is not enabled: when creating Topic 2, the default selected model for Topic 2 will be gpt-4o.

#### <mark style="color:blue;">**`Temperature (Temperature)`**</mark> :

The temperature parameter controls the degree of randomness and creativity in the model's generated text (default value is 0.7). Specifically:

* Low temperature values (0-0.3):
  * More deterministic and focused output
  * Suitable for scenarios that require accuracy, such as code generation and data analysis
  * Tends to choose the most probable words for output
* Medium temperature values (0.4-0.7):
  * Balances creativity and coherence
  * Suitable for everyday conversation and general writing
  * Recommended for chatbot conversations (around 0.5)
* High temperature values (0.8-1.0):
  * Produces more creative and diverse output
  * Suitable for creative writing, brainstorming, and similar scenarios
  * But may reduce text coherence

#### <mark style="color:blue;">**`Top P (nucleus sampling)`**</mark>:

The default value is 1. The smaller the value, the more monotonous and easier to understand the AI-generated content is; the larger the value, the wider and more diverse the vocabulary range in the AI's replies.

Nucleus sampling affects output by controlling the probability threshold for word selection:

* Smaller values (0.1-0.3):
  * Only consider words with the highest probability
  * More conservative and controllable output
  * Suitable for scenarios such as code comments and technical documentation
* Medium values (0.4-0.6):
  * Balances vocabulary diversity and accuracy
  * Suitable for general conversation and writing tasks
* Larger values (0.7-1.0):
  * Consider a broader range of word choices
  * Produce richer and more diverse content
  * Suitable for creative writing and other scenarios that require diverse expression

{% hint style="info" %}

* These two parameters can be used independently or in combination
* Choose appropriate parameter values according to the specific task type
* It is recommended to find the parameter combination best suited to a specific application through experimentation
* The above content is for reference only and for understanding the concepts; the given parameter ranges may not be suitable for all models. Please refer to the parameter recommendations provided in the model's documentation.
  {% endhint %}

#### <mark style="color:blue;">**`Context Window`**</mark>

The number of messages to keep in context: the larger the value, the longer the context and the more tokens consumed:

* 5-10: suitable for normal conversations
* \>10: complex tasks that require longer memory (for example: tasks that generate a long article step by step according to an outline, where the generated context needs to remain logically coherent)
* > Note: the more messages, the greater the token consumption

#### <mark style="color:blue;">**`Enable message length limit (MaxToken)`**</mark>

Maximum per reply [Token](https://docs.cherry-ai.com/question-contact/knowledge#shen-me-shi-tokens) count. In large language models, max token (maximum token count) is a key parameter that directly affects the quality and length of the model's generated replies.

> For example: in CherryStudio, when testing whether the model is connected after filling in the key, you only need to know whether the model returns a message correctly and not any specific content; in this case, setting MaxToken to 1 is sufficient.

Most models have a MaxToken upper limit of 32k tokens; of course, some have 64k or even more. For details, check the corresponding introduction page.

How much you set it to depends on your own needs, and you can also refer to the following suggestions.

{% hint style="success" %}
Recommendations:

* General chat: 500-800
* Short article generation: 800-2000
* Code generation: 2000-3600
* Long article generation: 4000 and above (requires model support)
  {% endhint %}

{% hint style="warning" %}
In general, the model's generated replies will be limited within the MaxToken range. Of course, truncation (such as when writing long code) or incomplete expressions may also occur; in special cases, it also needs to be adjusted flexibly according to the actual situation.
{% endhint %}

#### <mark style="color:blue;">**`Streaming output (Stream)`**</mark>

Streaming output is a data processing method that allows data to be transmitted and processed as a continuous stream, rather than sending all data at once. This approach allows data to be processed and output immediately after it is generated, greatly improving real-time performance and efficiency.

In environments such as the CherryStudio client, in simple terms, it is the typewriter effect.

When turned off (non-streaming): after the model finishes generating the information, the entire response is output at once (imagine the feeling of receiving a message on WeChat);

When turned on: output word by word; you can understand it as the large model sending each character to you immediately after generating it, until everything has been sent.

{% hint style="info" %}
If some special models do not support streaming output, this switch needs to be turned off, for example**initially**only support non-streaming models such as o1-mini.
{% endhint %}

#### <mark style="color:blue;">**`Custom parameters`**</mark>

Add extra request parameters to the request body (body), such as `presence_penalty` and other fields; ordinary people generally don't need them under normal circumstances.

> The top-p, max tokens, stream, and other parameters mentioned above are examples of these parameters.

How to fill in: parameter name — parameter type (text, number, etc.) — value. Reference documentation:[Click to go](https://openai.apifox.cn/doc-3222739)

{% hint style="info" %}
Each model provider has its own unique parameters to some extent, so you need to look up the usage method in the provider's documentation
{% endhint %}

{% hint style="info" %}

* Custom parameters have a higher priority than built-in parameters. That is, if a custom parameter duplicates a built-in parameter, the custom parameter will override the built-in one.

> For example: in custom parameters, set `model` to `gpt-4o` afterward, no matter which model you select in the chat, the one being used is `gpt-4o` the model.

* Use <kbd>parameter name: undefined</kbd> settings can exclude parameters.
  {% endhint %}

***

### 💡 Get help and submit feedback

If you encounter any questions, bugs, or have suggestions for feature improvements during configuration or use, please refer to [Feedback and Suggestions](/docs/en-us/question-contact/suggestions.md) the official channels provided there.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cherry-ai.com/docs/en-us/cherry-studio/preview/chat.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
