> For the complete documentation index, see [llms.txt](https://docs.convai.com/api-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.convai.com/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/embodiment/conversation-flow/troubleshooting.md).

# 排查对话流程问题

诊断停留在 Idle 的对话状态、感觉不对的时序，以及多角色场景中对话流程驱动器之间的冲突。

当角色的对话状态从不变化、变化速度不对，或者多角色场景中一个角色对另一个角色的对话作出反应时，请使用此页。首先进入 Play 模式并展开 **实时** 部分，在 `ConvaiConversationFlowController` 组件——下面列出的多数症状都能直接在那里看到。

***

### 故障排查表

| 症状                                                      | 可能原因                                                                                                                                 | 修复方法                                                                                                                                                     | 验证                                               |
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| **状态** 保持 `空闲` 的 **实时** 即使角色正在说话，也会在该部分中                | 角色的就绪信号一直没有到达—— `ConvaiCharacter` 尚未完成连接，或者它的事件没有传达到此控制器                                                                             | 在你预期出现具身化行为之前，请确认角色已完成连接。如果 `ConvaiConversationFlowController` 位于另一个 `游戏对象` 而不是 `ConvaiCharacter` 它应跟踪的对象下方，请将它移到同一层级下                                   | **状态** 会从 `空闲` 一旦角色连接并且对话开始                      |
| 角色停留在 `思考中`, `关注中`，或 `平复中` 的时间比预期长得多或短得多                | 分配的 `ConvaiConversationFlowProfile` 设置的保持时间比预期更长或更短，或者没有分配配置文件，而内置默认值与你想要的节奏不匹配                                                      | 打开已分配的配置文件（或分配一个），并检查其 **对话节拍** 字段与 [Conversation flow 参考](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/embodiment/conversation-flow/reference.md) | **在状态中的时间** 的 **实时** 部分在超过该状态的调校时长后不再前进          |
| 一个 `ConvaiConversationFlowController` 出现在一个你从未将其添加到的角色上 | Convai 自动为其提供了它，因为另一个模块需要一个对话状态，而当时并不存在——启用了 **自动创建 Conversation Flow** 的 Body Animation，或是 Emotion 在其“倾听提升”“思考表情”或“反应强调”强度提高到高于 `0` | 无需修复——这是预期行为。像配置其他控制器一样配置自动添加的控制器；如果你想自己添加该控制器，就关闭触发它的设置                                                                                                 | Console 仅记录过一次下面引号中的消息，并注明角色                     |
| 在多角色场景中，一个角色的对话状态会对另一个角色的玩家语音作出反应                       | 不止一个 `ConvaiConversationFlowController` 同时处于活动状态；一旦检测到其他活动的驱动器，每个驱动器都会将自身限定到各自的角色，但没有限定对话目标的场景可能会在短时间内共享未限定的信号                       | 为每个角色的对话流程驱动器分配一个限定的对话目标，而不要依赖未限定的玩家语音和转录事件                                                                                                              | 下面引号中的 Console 警告不再出现，并且每个角色的 **状态** 只会在自己的回合中变化 |

***

### 状态始终停留在 Idle

状态机的第一条规则是无条件的：只要角色尚未就绪，读取就保持为 `空闲` ，而不受任何其他信号影响。这里的“Ready”指角色已连接且 Convai 已确认，而不仅仅是 `游戏对象` 在场景中处于激活状态。

如果角色确实已就绪，但 **状态** 仍然没有移动，请确认 `ConvaiConversationFlowController` 位于同一 `游戏对象` 层级下，和 `ConvaiCharacter` 它要跟踪的对象——针对错误角色解析出的控制器永远看不到该角色的语音和转录事件。

***

### 时机感觉不对

状态机使用的每个保持时间、宽限期和延迟都来自所分配的 `ConvaiConversationFlowProfile` ——或者，如果没有分配，则来自 [Conversation flow 参考](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/embodiment/conversation-flow/reference.md)中显示为默认值的相同数值。如果角色回复得太慢，请降低 **思考最长保持时间**；如果它在停顿期间回落得 `空闲` 太快，请提高 **返回空闲延迟**。观察 **在状态中的时间** 的 **实时** 部分，在你调整某个值时即可立即在 Play 模式下看到效果，无需编写任何脚本。

有一组字段会自我修正，而不是悄悄出错：如果 **思考最短保持时间** 设置高于 **思考最长保持时间**，配置文件会将其提高 **思考最长保持时间** 以匹配你在 Inspector 中编辑它的那一刻，因此这两个字段永远不会与角色实际表现不一致。

***

### 对话流程在未添加的情况下出现了

Convai 会添加 `ConvaiConversationFlowController` 当角色上的某个模块需要一个对话状态而当前还不存在时，会自动添加。Body Animation 通过其 **自动创建 Conversation Flow** 设置（默认启用）来实现。Emotion 也会这样做，但只有当其某个由对话驱动的设置——Listening Reaction Strength、Thinking Reaction Strength、Reacting Accent Strength 或 Interrupted Flinch Strength——被提高到高于 `0`，因为这四项都默认关闭。Console 仅记录一次，并指出角色：

```
[ConvaiConversationFlowController] 已添加到“<character name>”，因为该角色上的某个 embodiment 模块需要对话状态。如果你想自行配置它，请手动添加该组件。
```

这不是错误。自动添加的控制器的行为与您自己添加的完全一样——请参阅 [配置 conversation flow](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/embodiment/conversation-flow/configure.md) 以为它分配一个配置文件。

***

### 多角色场景中的重复驱动器

`ConvaiConversationFlowController` 不允许在同一个上存在多个实例 `游戏对象`，但一个场景仍然可以同时运行多个控制器——每个角色一个。当多个控制器处于活动状态时，每个驱动器都会将玩家语音和转录事件限定到自己的角色，从而使一个角色的 `倾听中` 状态不会泄漏到另一个角色。只要控制器没有一个限定的对话目标，它就会记录警告，而不是悄悄忽略错误信号：

```
[ConvaiConversationFlowController] '<character name>' 正在忽略未限定的玩家语音/转录事件，因为多个对话流程驱动器处于活动状态。请提供一个限定的对话目标，以便在多角色场景中驱动按角色划分的玩家回合状态。
```

为每个角色提供一个限定的对话目标，这样其驱动器就只会对该角色自己的回合作出反应。

***

### 下一步

{% content-ref url="/pages/e36846646869669757941fb114c42828a6d974ad" %}
[配置对话流程](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/embodiment/conversation-flow/configure.md)
{% endcontent-ref %}

{% content-ref url="/pages/9e0bce5334a303fb17ac4d76c2afd5652c1d4ca4" %}
[对话流程参考](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/embodiment/conversation-flow/reference.md)
{% endcontent-ref %}

{% content-ref url="/pages/5027f813885b08acbe9044a4bb7b9166e9b01bc2" %}
[排查具身化问题](/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/embodiment/troubleshooting.md)
{% endcontent-ref %}


---

# 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, and the optional `goal` query parameter:

```
GET https://docs.convai.com/api-docs/zh/cha-jian-yu-ji-cheng/convai-unity-sdk/embodiment/conversation-flow/troubleshooting.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
