> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kontext.so/llms.txt
> Use this file to discover all available pages before exploring further.

# 节奏控制

> 广告在对话中出现的频率——可以由我们配置节奏，也可以通过 trackOnly 按消息覆盖。

**节奏控制** 决定广告在对话中出现的频率。在每一条助手消息下都展示广告通常太密——会让聊天显得喧闹，读者也容易麻木。Kontext 提供两种节奏控制方式，二者可以叠加使用。

## 方式 1：由我们来控节奏

节奏配置位于你账号的服务端配置中。告诉我们你想要的节奏——例如"每 5 条助手消息出一次广告"或者"新对话的前 3 轮不出广告"——我们会在我们这边设置好。之后 SDK 会自动决定哪些助手消息会展示广告，**你的应用里无需写任何节奏逻辑**。

如果你不确定从什么节奏开始合适，我们会基于同类发布方的实践给出建议。

## 方式 2：用 `trackOnly` 在单条消息上覆盖

如果你想抑制某个具体广告位的广告，只需在你想跳过的助手消息的**前一条用户消息**上把 `trackOnly: true` 设置好：

```ts theme={null}
session.addMessage(
  { id: 'u-99', role: 'user', content: '…', createdAt: new Date() },
  { trackOnly: true }
)
```

紧随其后的助手消息不会显示广告。**这一轮的广告被静音了，但 SDK 仍在后台持续工作**：

* **你仍然必须为每一条消息调用 `addMessage`。** 跳过它会破坏服务端用于后续定向的对话上下文。请始终传入每一条消息——只对想要抑制的消息加上标志即可。
* **SDK 仍会发起 `/preload` 请求。** 服务端的分析数据照常准确。
* **服务端会提前为下一轮不带 `trackOnly` 的回合准备好广告。** 这是**服务端**层面的预先准备，并不是把广告下载到客户端缓存：当下一个可投放广告的回合到来时，填充率更高（服务端有更多时间寻找契合上下文的素材），并且广告投放更快（素材在我们这边已就绪）。

简而言之：`trackOnly` 仅在这一轮里隐藏广告，与此同时上下文在我们这边保持活跃，让下一个可投放广告的回合填充更及时、命中率更高。

## 下一步

<CardGroup cols={2}>
  <Card title="消息" icon="message" href="/concepts/messages">
    `addMessage` 调用，也就是 `trackOnly` 的设置位置。
  </Card>

  <Card title="广告生命周期事件" icon="bell" href="/concepts/events">
    广告被抑制时，哪些事件仍会触发。
  </Card>
</CardGroup>
