# 分支结构 —— What if 与番外小剧场

### 想象一个场景

你正在进行一场精心经营的角色扮演对话。故事已经推进了五十多条消息，角色关系层层递进，情感张力拉到了恰到好处的位置。这时候，你脑海中浮现出一个想法：**"如果我在这里选择了离开而不是留下？"**&#x4F60;想太看看角色的反应了——是故作轻松地放你走，还是终于绷不住开口挽留？

\
现在还有另一个场景：

你和{{char}}已经聊了六十多轮，关系正处在微妙的暧昧期——彼此试探、若即若离、暧昧不休、精彩不已，这时候你突然很好奇：这个角色的过去到底是什么样的？于是你发了一段指令，让 AI 以角色的视角写一篇从未示人的私密日记。

AI 写得很好。你看到了角色不曾展露的脆弱，故事的纵深一下子被拉开了。

然后问题来了。

你想切回暧昧主线，发现角色的语气变了。那些日记里的创伤和坦诚已经渗进了AI的记忆，角色开始表现得像你们早已交过心底话，而不是还在小心翼翼地互相试探。暧昧期的微妙张力，没了。你不得不删掉那段日记，花好几轮指令试图把状态拉回去——但那个恰到好处的节奏，已经很难找回来了。

\
这两个场景都太常见了。但在大多数工具中，你接下来要做的事情会迅速浇灭这份创作热情。

### 现有主流方案：存档与读档

目前主流的角色扮演工具处理这个需求的方式，本质上都是同一个逻辑：**存档与读档。**&#x4EE5; SillyTavern 为例，它提供了一个叫 "Create Branch" 的功能。听起来很美好，但它的实际工作方式是这样的：

1. 你在某条消息上点击 "Create Branch"
2. 系统把当前对话**复制一份新的聊天文件**，截取到那条消息为止
3. 你被跳转到这个新文件里
4. 想回到原来的故事线？点击 "Back to parent chat"，跳回去

换句话说，**所谓的"分支"，其实是"把存档复制一份，换个名字保存"。** 它和你手动复制一个 JSON 文件、改个文件名，本质上没有任何区别。这带来一些很实际的问题：

* 当你开出三四个分支之后，你面对的是一个聊天文件列表。你需要记住哪个文件对应哪条故事线，哪个是从第 50 条消息分出来的，哪个是从第 30 条？
* 每次切换分支，你都需要离开当前对话、载入另一个对话；而且每次开分支都意味着一次文件级别的操作，那些"随手试试看"的念头会被吞回去，因为你知道这意味着又多了一个需要管理的存档。

**这些工具把开分支的流程变成了冗长的“文件管理”。而更贴合我们**需要的，是一棵树，或者说，在故事里就地岔开一条路，走完再走回来，就像它本来就长在那里一样。<br>

### **Lumeow 的做法：分支的三种玩法**

**所有分支都活在同一个对话里。** 你不需要跳到另一个文件，不需要载入任何东西：

1. 你可以在AI的回复处开分支——比如对这个回复不满意，想让它换个方向重写；你也可以在**你自己发出的消息处**开分支——比如剧情走到一个十字路口，你想试试"如果我说的是另一句话，故事会怎么走"。后者是Lumeow的独有能力。大多数工具只允许你在模型的回复上重新生成，但不允许你回到自己说过的话上"改口"。而角色扮演中，故事的分岔往往始于你的选择，不是模型的回答。
2. **操作就在对话里完成。 不管是从AI的回复还是从你自己的消息处开分支，点一下就能创建，点一下就能切换。没有文件管理，不需要离开当前界面。**
3. **分支继承主线的全部前情。** 你在主线里花了几十轮、几百轮养出来的人物厚度，开出分支的那一刻就被带过去了——番外不是从零开始的。当然，如果你想让番外脱离前情，一条 `$` 指令就能让模型只专注于小剧场本身。
4. **切回来的时候，没有人知道你去过哪里。** 你在某条分支里让角色表白了、黑化了、死了——都不影响。回到主线，剧情还停在你离开的那个瞬间；跳去另一条分支，那边也一样什么都没发生过。角色的记忆、情绪、关系状态，每条线各自完整，互不知情。

\
下面是在Lumeow开分支的具体操作：

#### **对 AI 回复不满意？重说就是新分支。**

当模型的回复不够好——也许语气不对，也许剧情走向不是你想要的——你只需要点击消息下方的「重说」按钮（p1）。模型会在原地重新生成一条回复，而旧的那条并不会消失（p2）。生成完成后，你会看到消息底部出现了 < 2/2 > 的标记，左右箭头点一下，就能在两个版本之间来回对比（p3）。

{% columns %}
{% column %}

<figure><img src="/files/VcDGOrP2ZBzr690iNIFN" alt=""><figcaption><p>（p1）点击消息下方的「重说」按钮</p></figcaption></figure>
{% endcolumn %}

{% column %}

<figure><img src="/files/pppwpWijfIy23jLUNmYK" alt=""><figcaption><p>（p2）模型原地生成回复</p></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

<div align="left"><figure><img src="/files/n3VQGNGhRYp1jwMDZsHt" alt=""><figcaption><p>(p3) 在不同的分支之间切换</p></figcaption></figure></div>

#### **想自己换个方向？从你的消息处开分支。**

如果你想探索的不是"AI 换一种回法"，而是"如果我说了不同的话"——你可以直接在自己的消息处点击「分支」按钮。系统会弹出编辑框，你写下新的台词，确认后就自动生成了一条新的分支。同样，消息底部出现 < 2/2 >，你随时可以切回原来的走向。

{% columns %}
{% column width="58.333333333333336%" %}

<figure><img src="/files/gzoKimyP6q46pOmqfySz" alt=""><figcaption><p>分支编辑框</p></figcaption></figure>
{% endcolumn %}

{% column width="41.666666666666664%" %}

<figure><img src="/files/PUN22d15tmj93Xlgw6pU" alt=""><figcaption><p>user消息切换</p></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

<br>

#### **试过了不想要？直接删掉那条分支。**

有时候你开了一条分支，试探了一个方向，发现不是你想要的。你不需要留着它。在 Lumeow 里，删掉一条分支就像从一棵树上剪掉一根旁枝——剪掉的那根消失了，但主干和其他枝干完好无损。你的主线剧情、你其他保留的分支，不会因为你删了某条支线而受到任何影响。具体操作也很简单：切换到你想删掉的那条分支，点击删除，它就没了。底部的标记会从 `< 2/2 >` 变成 `< 1/1 >`，就像它从来没存在过一样。<br>

### 分支结构核心逻辑

**分支操作 = 点一下、写一下**lumeow真正想用分支系统解决的问题：当你在不同的分支中切换的时候，如何保持每一条线是干净的？或者说，上下文是不会互相受干扰的？在 Lumeow 内部，一场对话并不是一条直线，而是一棵树。你发出的每条消息、模型的每次回复，都是这棵树上的一个节点。当你在某个节点开出分支，新的路径就像一根新枝从那个节点长出来——它和原来的枝干共享同一段树干（分叉之前的对话历史），但从分叉点往后，各自生长，彼此看不见对方。在Lumeow中，不同分支之间的上下文历史实现了绝对的独立封装（互不影响，记忆独立）。这意味着在分支路径A中生成的任何交互与设定，都被严格限制在该分支的记忆范围内，绝不会产生数据交叉污染并干扰分支B或主线故事的一致性。<br>

<figure><img src="https://haigangcheng.feishu.cn/space/api/box/stream/download/asynccode/?code=OGU0OTBmZjZkNDA1ZjUzNWVkNzM4NWNmZjM1MGFhNGNfeml6VmJkVG9WNnZ3ak9id3N2NWp0SVpOVEdDMDE4b0JfVG9rZW46SW5FbmJTMndXbzlFMVR4Q0lQYWM5VDBZbk1nXzE3Nzc3MjUyODc6MTc3NzcyODg4N19WNA" alt=""><figcaption></figcaption></figure>

### 玩法展示

#### Case 1: 爽玩番外小剧场

**同一个节点，两条分支—— 一条跳去写番外，一条继续推主线。**&#x4F60;正在推进一段宫廷权谋的主线剧情。刚刚经历了二十二年囚禁与复仇的男主，在一个春雨夜终于卸下所有重负，与你十指相扣。就在这里，你想看看“忠犬妻奴小剧场”，于是发出了这样一条消息：

> *现在暂停当前剧情，为我生成一个"像忠犬一样的妻奴"番外小剧场。不需要状态栏，不计入主线剧情，不计入记忆区。大概内容为：user某天因为一些原因喝醉了酒，平时冷漠寡言的user变得很粘人、很反差，一直缠着char，还说了很多没说过的心里话……不得少于8000字。*

番外和主线共享同一段前情，角色在番外里的反差（平时冷漠寡言 vs. 醉酒后像忠犬一样粘人），恰恰是因为模型读到了同样的前置人设和剧情铺垫，才写得出来。\
于此同时，主剧情的那条分支还在原地等着你。十指相扣的场景没有被覆盖，暧昧期的张力完好保存。你可以点击右边的分支按钮，在弹出的编辑框中填写主线内容下你用于推进剧情的回复<br>

#### Case 2: 换个策略攻略他

一首Melody唱完，你想开口了——但到底怎么开口？直球告白，还是迂回试探？在Lumeow里你不用纠结：在你自己的消息处开一个分支，试试另一种说法，看他的反应会把故事带向哪里。怂一点有怂一点的心跳，勇敢一点有勇敢一点的结果。

| <p><img src="https://haigangcheng.feishu.cn/space/api/box/stream/download/asynccode/?code=ZWYzN2RmNzZhOWU1YTEwZDdlOTgyOTA0ZDRjNmI1ZjVfaE0zNmwxNHFTMG5xajhOa0UwNEZHU21DQ3I4NnhGc1hfVG9rZW46Q1ExemJkOWxCb3BKaGx4VTh3ZmM4RGFEbnRiXzE3Nzc3MjUyODc6MTc3NzcyODg4N19WNA" alt=""><br></p> | <p><img src="https://haigangcheng.feishu.cn/space/api/box/stream/download/asynccode/?code=NzA5NTY1MTcwMmU0YjYyOTQzNjFlYTU1NDQ0MjAwNGVfTnNQVnl2RjhKNkJyeHZrdExMVk1Va0FLeFhoMmhQcmhfVG9rZW46VUV4SmJ4cXdHb25pM1l4S3hnWmN6MGpGbk9oXzE3Nzc3MjUyODc6MTc3NzcyODg4N19WNA" alt=""><br></p> |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 攻略方向一：迂回试探                                                                                                                                                                                                                                                                        | 攻略方向二：直球告白                                                                                                                                                                                                                                                                        |

### 结语

\
上下文分支架构避免了其他角色扮演平台中单向、线性交互的局限。通过在底层引入树状数据结构与严格的存储隔离，**系统规避了长程对话中极易出现的“记忆污染”问题，更将决策的“容错权”彻底交还给了用户**。\
我们希望，这款基于上下文隔离设计的分支系统，让用户能够安全、自由地穷举叙事的每一种可能性。


---

# Agent Instructions: 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.lumiao.ai/docs/guan-fang-bo-ke/fen-zhi-jie-gou-what-if-yu-fan-wai-xiao-ju-chang.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.
