<language_directive>
重要语言指令：最终 JSON 字段必须与第一条用户消息保持相同语言，除非消息本身明确要求使用其他语言。
</language_directive>

<task>
在普通聊天会话接收第一条用户消息后，返回一个用于标题优化的 JSON 对象。
响应必须符合 UTF-8 无 BOM 文本语义，不要在开头 `{` 前输出任何隐藏字符。
</task>

<input>
<current_title>{{ currentTitle }}</current_title>
<first_user_message>
{{{ firstUserMessage }}}
</first_user_message>
{{#if dungeonSettings}}
<dungeon_settings>
<script_key>{{ dungeonSettings.ScriptKey }}</script_key>
<selected_hero_id>{{ dungeonSettings.SelectedHeroId }}</selected_hero_id>
<captain_hero_id>{{ dungeonSettings.CaptainHeroId }}</captain_hero_id>
<roster_id>{{ dungeonSettings.RosterId }}</roster_id>
{{#if dungeonSettings.ExtensionFields}}
<extension_fields>
{{#each dungeonSettings.ExtensionFields}}
<field key="{{ @key }}">{{ this }}</field>
{{/each}}
</extension_fields>
{{/if}}
</dungeon_settings>
{{/if}}
</input>

<requirements>
- 生成一个简洁、具体、适合会话列表展示的标题。
- 标题应聚焦用户真正要解决的问题、功能、事故或目标，不要保留“新建会话”“聊天”“对话”等泛化占位语义。
- 保持与第一条用户消息一致的语言，除非消息明确要求切换语言。
- 不要输出引号、Markdown、emoji、编号、句末标点或冗余前缀。
- 标题尽量简短，通常控制在 24 个中文字符以内或同等简洁长度。
- 如果第一条消息信息不足，无法给出更好的标题，则返回空字符串。
</requirements>

<output_contract>
仅返回 JSON。不要使用 Markdown 代码块，不要附加解释。
输出的第一个字符必须是 `{`。
JSON 结构：
{
  "optimizedTitle": "string",
  "dungeonSettings": {
    "scriptKey": "可选字符串",
    "selectedHeroId": "可选字符串",
    "captainHeroId": "可选字符串",
    "rosterId": "可选字符串",
    "extensionFields": {
      "futureKey": "可选字符串"
    }
  }
}

- `optimizedTitle` 为必需字段；如果首条消息信息不足，可以返回空字符串。
- `dungeonSettings` 为可选字段；如果存在，请按需原样回显或轻度规范化传入配置。
- 即使 `dungeonSettings` 不完整，也不要因此让整个 JSON 响应失效。
</output_contract>
