剧本编辑器
剧本编辑器是一个 VSCode 风格的三栏编辑环境,用于直接查看和修改剧本的全部知识资产——章节正文、角色卡、世界书条目、时间线锚点和 Canon 实体,五类实体统一在同一个界面里浏览与编辑。每个实体以「YAML front-matter + 正文」格式呈现,所见即所存。
右栏 AI 助手可理解自然语言指令并调用写入工具直接改库,适合批量修改、润色或新增设定。编辑正文时还可以用 ⌘K 触发行内 AI 续写或改写。
入口:左侧导航「剧本编辑器」。
界面结构
顶栏
- 工作区(剧本切换):点击左侧「工作区」按钮可在当前账户拥有的剧本之间切换,或从下拉菜单中新建空白剧本。订阅他人的剧本不会出现在此列表,只有自己拥有的剧本可以编辑。
- 编辑图标组:快速触发撤销、重做、复制、剪切、粘贴,作用于当前焦点所在的 CodeMirror 编辑区。
- 文件菜单:新建章节、新建空白剧本、重命名当前剧本、删除当前剧本。
- 编辑菜单:撤销(⌘Z)、重做(⌘⇧Z)、复制(⌘C)、剪切(⌘X)、粘贴(⌘V)、查找(⌘F)、全选(⌘A)、转到行、保存(⌘S)。
- 保存按钮:当前标签有未保存修改时右上角出现「保存 ⌘S」按钮,也可随时按 ⌘S 保存。
左栏:资源管理器
按五类分组展示当前剧本的所有知识资产:
- § 章节正文:剧本各章节,按章节序号排列
- @ 角色卡:NPC 卡和角色卡
- # 世界书:世界书条目,支持拖拽改变优先级顺序
- ~ 时间线:时间线锚点
- * Canon 实体:Canon 知识实体
点击组标题展开/折叠,点击条目在中栏打开编辑标签。顶部搜索框可跨组全文过滤条目名称。左栏宽度可通过拖拽右侧分隔条调整,设置自动保存。
中栏:多标签编辑器
每个打开的实体作为独立标签出现在标签栏;标签带有圆点(●)表示有未保存改动。点击标签切换,点击 × 关闭(有未保存改动时会弹出确认)。
编辑区使用 CodeMirror 6,支持 Markdown 语法高亮、行号、括号匹配、查找替换等标准功能。
右栏:AI 助手
AI 助手面板(对应后端 console_assistant SSE 接口),可用自然语言指令直接改库。右栏宽度同样可拖拽调整。
文件格式:YAML front-matter + 正文
每个实体打开后呈现为一份文本文件,格式为:
---字段名: 值数组字段: - 项目一 - 项目二---
正文内容在此…两行 --- 之间是 front-matter(YAML 格式),--- 之后是正文。front-matter 的字段名(键)被冻结,只能修改冒号后的值,不能新增、删除或改名字段。尝试改动字段名时编辑器会阻止输入;保存时若检测到字段集合发生变化也会报错并提示具体是哪个字段越界。
各类实体的正文字段分别对应:章节正文 → content、角色卡 → background、世界书 → content、时间线锚点 → sample_summary、Canon 实体 → background。只读字段(如 id、word_count、avatar_path)会在 front-matter 中回显供参考,保存时自动剔除,不会被写入。
常见任务
打开并编辑一个实体
在左栏点击任意条目,中栏新开一个标签并加载内容。修改后按 ⌘S 或点顶栏「保存 ⌘S」按钮保存,改动立即写入数据库。
新建实体
有三种方式:
- 点击左栏组名右侧的「+」图标,在该组内就地新建
- 右键点击左栏空白处或组名,选择「新建…」
- 顶栏「文件」菜单 → 「新建章节」(仅限章节)或「新建空白剧本」
就地新建时会出现一个文本输入框,填写名称后按 Enter 确认;按 Escape 取消。新建成功后自动在中栏打开。
重命名实体
双击左栏条目名称,就地编辑,Enter 确认;或右键菜单选「重命名」。章节重命名改的是章节标题,章节序号不变。
复制实体
右键点击角色卡、世界书、时间线锚点或 Canon 实体,选「复制」,系统新建一个同名加「副本」后缀的条目。章节不支持复制操作。
删除实体
右键点击 → 「删除」,弹出确认后执行。章节不能在此删除(章节删除会断开 RAG 索引,需到剧本管理页操作)。其余四类均支持删除,删除不可撤销。
世界书拖拽排序
展开「# 世界书」分组后,拖拽条目可调整优先级顺序。松开后系统自动按位置重新编号优先级(从上到下递减),并批量写入数据库。
在正文中使用 AI 续写(⌘K)
打开任意章节正文后:
- 光标续写:光标放置在正文某处,按 ⌘K,弹出指令输入框(也可留空),回车触发。AI 在光标处流式插入续写内容,新增文字以高亮背景标注为「待定区」。
- 选中改写:先选中一段正文,再按 ⌘K,AI 会将选中内容替换为改写版本,同样进入待定状态。
- 生成过程中显示「AI 生成中… Esc 取消」提示条。生成完成后显示「Tab 接受 Esc 放弃」。
- Tab 或 ⌘Enter:接受本次续写/改写,高亮消失,文字留在正文
- Esc:放弃,还原到 AI 介入前的状态
也可以在右栏输入框填写指令,点「续写到正文(光标处)」按钮触发同样的效果。
续写后同步设定到知识库
接受一段续写或改写后,若内容引入或修改了角色设定、世界规则或时间线节点,编辑区底部会弹出一条提示条:
「同步设定」——点击后将刚接受的正文发送给右栏 AI 助手,让它读取现有知识库并自动调用工具(更新角色卡、世界书、时间线等)同步新设定。
「忽略」——关闭提示,不触发同步。
让 AI 助手修改知识库
在右栏输入框用自然语言描述需求,例如「把这个角色的性格改得更阴郁一些」「给世界书新建一条:XX 是 YY 的同义词」「润色第3章正文」。AI 会说清要改什么,然后调用对应的写工具落库;危险操作(覆盖写入)会先弹出确认,点「确认执行」或「取消」。
写操作成功后,如果对应实体已在中栏打开,标签内容会自动刷新为最新版本。
切换 AI 写权限
右栏输入框左下角有写权限按钮,可设置四个档位:
- 只读:AI 只能阅读和回答,不能调用任何写入工具
- 默认(归一到「审查后写」):危险写操作前弹确认
- 审查后写:危险写操作前弹确认(默认档)
- 完全访问:AI 写操作直接执行,不再弹确认
设置自动保存到账户偏好,下次打开仍然生效。
新建剧本或切换剧本
顶栏左侧「工作区」下拉:点击已有剧本名切换,或选「+ 新建空白剧本」创建一个带第 1 章的空白剧本。切换剧本会关闭当前所有标签。
常见问题
为什么我改不了 front-matter 里的字段名? 字段名被冻结是设计决定——各类实体的字段集合与数据库 schema 一一对应,增删字段无意义且会静默丢失数据。只能修改冒号后面的值。如果不小心触发了冻结保护,编辑器会阻止输入,撤销(⌘Z)可还原到合法状态。
保存时报「front-matter 字段被冻结」错误怎么办? 说明不小心删掉或重命名了某个字段名。按提示找到对应字段,把字段名改回原样(只改冒号前的部分),值保留即可再次保存。
章节为什么不能删除? 章节删除会断开 RAG 索引(嵌入向量、事实、锚点等全都以章节为外键),后果较重,需要到「剧本管理」页进行,不在此处提供删除入口。
AI 助手改了知识库,但我的标签没有刷新? 如果对应标签有未保存的本地修改,系统不会自动覆盖,会弹出提示「AI 改了这条,但你有未保存修改,未自动刷新」,需要手动决定是否放弃本地修改再刷新。
订阅别人的剧本,可以在编辑器里修改吗? 不可以。编辑器只加载你拥有的剧本,订阅剧本不会出现在工作区切换列表中。如需修改,先到剧本管理页 fork 一份到自己账户,再来编辑。
⌘K 的指令可以留空吗? 可以。留空时 AI 会根据上下文(章节序号、已有正文)自动判断续写方向。填写指令可以给 AI 更明确的方向,如「多写对话」「描写环境」等。