详细手册

Ai玩家详细教程:高级控制

从完整创作者说明中拆出的主题页。需要其它主题可返回详细目录。

5. 高级字段详解

5.1 系统提示词(System Prompt)

覆盖平台默认的系统提示词,直接控制模型的最底层行为。

谨慎使用。 编写不当的系统提示词可能破坏角色表现。

常见用途:

你是 Aria,一名星际赏金猎人。始终用第一人称回复。回复时遵循以下格式:
- 动作用 *斜体* 标注
- 对话用普通文字
- 保持角色性格一致,不要打破第四堵墙

运行时说明:平台会在服务端把「描述」「性格摘要」「场景」「系统提示词」「记忆书」「对话示例」「后置指令」等字段组合成最终 prompt。用户端接口不会返回这些内部设定,但它们仍然会影响 AI 回复。


5.2 后置指令(Post History Instructions)

注入在对话历史末尾的提示,用于在每次模型生成前「提醒」模型。

常见用途:

安全提醒:后置指令属于内部运行时设定,不会在公开接口中返回。不要把需要展示给用户的说明写在这里,应写入公开简介、开场白或消息内容。


5.3 版本标签(Version Tag)

保存时附带的版本标注,方便在版本历史中识别。例如:v1.0 初稿v2.0 修复开场白逻辑


6. 记忆书(Lorebook)

记忆书(又称 World Info)是按需注入的知识库。当对话中出现特定关键词时,对应条目会自动注入到提示词中。

记忆书内容属于内部运行时设定。用户端可以看到条目的启用状态和注释等必要信息,但不会拿到条目内容、关键词和完整世界观原文。AI 仍会在触发条件满足时收到对应内容。

适用场景

添加条目

点击编辑器中的 记忆书 区块,点击 + 添加条目

基础字段

字段 说明
关键词 触发条目的主关键词,用逗号分隔,支持正则匹配
次要关键词 可选,配合逻辑(AND / NOT)进一步精确触发条件
内容 注入的文本,描述该词条的信息
优先级(插入顺序) 数字越大,越优先注入(当 Token 预算紧张时)
已启用 开关,可临时禁用某个条目
常驻注入(Constant) 开启后无需关键词触发,始终注入到提示词

高级字段

字段 说明
次要关键词逻辑 AND:主词 + 次要词同时出现才触发;NOT:出现次要词时排除
正则匹配 将关键词作为正则表达式处理,而非普通字符串
选择性触发(Selective) 仅在满足特定对话深度或条件时才触发
触发深度(Depth) 仅扫描最近 N 条消息中的关键词(0 = 全部)
延迟(Delay) 条目在触发后延迟 N 轮才开始注入
冷却(Cooldown) 条目注入一次后,需等待 N 轮才能再次注入
分组(Group) 将多个条目归为同一组,同组条目最多只注入一个
分组权重 同组条目中,数值越高越优先被选中注入
忽略 Token 预算 开启后,即使 Token 预算不足也强制注入
绑定开场白 仅在指定开场白版本(greetingIndex)的对话中生效

示例

关键词: 星港9号, 边境星港, port-9
内容: 星港9号是银河系偏远边疆的一个小型补给站,以黑市交易和复杂的派系政治闻名。常住人口约2000人,是各路走私犯、赏金猎人和逃犯的聚集地。站长是一个名叫"独眼"哈维的老太婆。

使用建议

程序化控制记忆书

除了创作者在编辑器中预设条目启用状态,角色卡的 JS 脚本和消息内嵌 HTML 也可以在对话运行时动态控制条目——这是实现剧情分支、NPC 状态变化等高级功能的关键能力。

详见 10.6 节 [$charx.worldbook](#106-charxworldbook--程序化控制记忆书) API


7. 正则表达式规则

正则规则可以在 AI 生成消息后对文本进行自动替换或过滤,类似文本后处理管道。

使用场景

添加规则

点击 正则规则 区块,点击 + 添加规则

基础字段

字段 说明
规则名称 便于识别的名称
正则表达式 标准 JS 正则,如 /\.\.\./g
替换为 替换结果,支持捕获组引用 $1$2
作用范围 作用于 AI 消息 / 用户消息 / 两者
已启用 开关

高级字段

字段 说明
Flag 配置 正则 flag,如 g(全局)、i(忽略大小写)、m(多行)、s(点匹配换行)
Markdown 模式 开启后,替换结果中的 Markdown 会被渲染
Prompt 模式 开启后,规则作用于注入到模型的提示词,而非显示给用户的消息
宏替换 开启后,替换结果中的 {{char}}/{{user}} 等宏变量会被解析
编辑时执行 开启后,用户在编辑已发送消息时也会触发该规则
最小深度 仅处理距离当前消息 N 条以内的消息
最大深度 仅处理距离当前消息超过 N 条的消息
执行顺序 数字越小越先执行,用于控制多条规则的处理顺序

示例:将省略号标准化

正则: /\.{2,}/g
替换为: ……
作用范围: AI 消息

实时测试

编辑规则时,在下方的测试输入框粘贴示例文本,可以即时预览替换效果,无需保存角色卡。


8. 全局 CSS 美化

全局 CSS 以 <style id="char-custom-css"> 的形式注入到聊天页面的 <head> 中,可以完全自定义聊天界面的视觉风格。

平台 CSS class 速查表

以下 class 可以视为当前聊天主页面的稳定语义选择器,适合直接用于 globalCss

Class 对应元素 适用场景
.charx-chat-bg 整个聊天区域的背景容器 页面背景、根级变量、整体氛围
.charx-nav-bar 顶部导航栏 导航背景、模糊、描边
.charx-scrollbar 消息列表滚动容器 滚动区背景、内边距、滚动条
.msg-ai AI 消息行外层包装 角色消息整体对齐、外层间距
.msg-user 用户消息行外层包装 用户消息整体对齐、外层间距
.charx-message-surface 单条消息正文表层 单条消息正文容器的主选择器
.charx-message-surface--assistant 角色消息正文表层 角色正文背景、局部强调、阅读优化
.charx-message-surface--user 用户消息正文表层 用户正文背景、描边、阅读优化
.charx-message-surface__content 消息正文内容层 正文排版、局部装饰、分栏
.message-body 正文语义容器 pimgablockquotecode 排版
.charx-bubble__time 消息时间文字 时间颜色、徽标化样式
.charx-typing-indicator AI 输入中指示器 “正在输入”气泡样式
.charx-input-bar 底部输入栏整体区域 输入栏背景、描边、模糊
.charx-input-box 输入框文本域 输入框背景、文字、placeholder
.charx-input-send-btn 发送按钮 发送按钮颜色、阴影、悬停效果
[data-role="assistant"] 角色消息语义标记 角色消息兜底选择器
[data-role="user"] 用户消息语义标记 用户消息兜底选择器

以下 class 在当前页面里可能出现,但不建议作为主要样式契约依赖:

Class 说明
.charx-bubble 兼容旧版气泡语义的保留类。当前聊天页正文节点不再默认依赖它承载背景和壳层。
.charx-bubble--char 兼容旧版角色气泡选择器。可以作为补充命中,但不应再视为正文唯一入口。
.charx-bubble--user 兼容旧版用户气泡选择器。可以作为补充命中,但不应再视为正文唯一入口。
.charx-bubble__content 兼容旧版正文内容层。新实现优先使用 .charx-message-surface__content
.charx-bubble__avatar 角色消息头像节点。不同布局和预览环境可能不一致。优先用 [data-charx-slot="message-avatar"]
.charx-bubble__name 角色消息名称节点。不同布局和预览环境可能不一致。优先用 [data-charx-slot="message-name"]
.charx-nav-bar__avatar 顶部头像节点。不同展示模式下不保证始终存在。优先用 [data-charx-slot="nav-avatar"]
.charx-nav-bar__title 顶部标题节点。不同展示模式下不保证始终存在。优先用 [data-charx-slot="nav-title"]

稳定 data-charx-* 选择器

当页面布局在标准模式、视觉小说模式、沉浸模式之间切换时,优先使用下面这些语义标记,而不是依赖某一串 Tailwind 组合类:

选择器 对应区域 说明
[data-charx-layout] 聊天页布局类型 当前可见值如 standard。适合按布局切换样式。
[data-charx-display-mode] 聊天显示模式 当前可见值如 standardimmersive。适合按显示模式分支样式。
[data-charx-slot="nav"] 顶部导航整体 顶部栏容器
[data-charx-slot="nav-avatar"] 顶部头像 导航头像槽位
[data-charx-slot="nav-title"] 顶部标题 导航标题槽位
[data-charx-slot="messages"] 消息滚动区 消息列表根容器
[data-charx-slot="message-surface"] 单条消息正文表层 当前对话页正文节点的稳定槽位
[data-charx-slot="message-avatar"] 角色消息头像 角色消息元信息中的头像槽位
[data-charx-slot="message-name"] 角色消息名称 角色消息元信息中的名称槽位
[data-charx-slot="input-bar"] 底部输入栏 输入区整体容器
[data-charx-slot="input-box"] 输入框 文本输入槽位
[data-charx-slot="send-button"] 发送按钮 发送按钮槽位
[data-charx-message-role="assistant"] 角色消息语义 区分角色消息的稳定标记
[data-charx-message-role="user"] 用户消息语义 区分用户消息的稳定标记

补充说明:

平台 ID / 挂载点速查表

id 选择器的优先级高,写起来也直接,但平台公开可依赖的 id 很少。建议把它当成补充锚点使用,而不是主要样式契约。

选择器 对应区域 是否建议依赖 说明
#chat-root 消息滚动区根节点 建议 适合控制滚动区高度、滚动行为、局部背景。标准模式和视觉小说模式都存在。

不建议依赖的内部实现 id

选择器 说明
#char-custom-css 平台注入创作者 globalCss 时使用的 <style> 节点。属于内部实现。
#char-custom-js 平台注入创作者 globalJs 时使用的 <script> 节点。属于内部实现。

使用建议:

体积与保存限制

平台 CSS 变量

平台内置了一套 CSS 变量系统,可以在自定义样式中直接使用:

/* 气泡外观 */
--charx-bubble-radius: 26px;          /* 气泡圆角 */
--charx-bubble-padding: 14px 16px;    /* 气泡内边距 */

/* 颜色 */
--charx-color-primary: var(--color-primary-brand);
--charx-color-bg: var(--bg-base);
--charx-color-bg-bubble-char: var(--workspace-pane-bg);  /* AI 气泡背景色 */
--charx-color-bg-bubble-user: rgba(var(--color-primary-rgb), 0.18);  /* 用户气泡背景色 */
--charx-color-text: var(--on-surface);
--charx-color-text-muted: var(--on-surface-muted);
--charx-color-border: var(--surface-border);

/* 字体 */
--charx-font-family: var(--font-family-sans, system-ui, sans-serif);
--charx-font-size-base: 14px;

/* 布局 */
--charx-message-gap: 16px;   /* 消息间距 */
--charx-avatar-size: 36px;   /* 头像尺寸 */

如果你的开场白或后续消息里包含 HTML 片段,平台会把它放进沙箱 iframe 渲染。这个 iframe 会同步当前聊天页的主题变量,因此消息内嵌 HTML 里也可以继续使用这些变量,以及下面这些平台面板变量:

补充说明:

约束说明:

示例:科幻风格

/* 聊天背景 */
.charx-chat-bg {
  background: linear-gradient(135deg, #0a0a1a 0%, #1a0a2e 100%) !important;
}

/* AI 消息正文表层 */
.charx-message-surface--assistant {
  background: rgba(16, 33, 62, 0.9) !important;
  border: 1px solid rgba(100, 200, 255, 0.3);
  color: #e0f0ff;
  box-shadow: 0 0 20px rgba(100, 200, 255, 0.1);
}

/* 用户消息正文表层 */
.charx-message-surface--user {
  background: rgba(50, 10, 80, 0.9) !important;
  border: 1px solid rgba(200, 100, 255, 0.3);
  color: #f0e0ff;
}

/* 输入框区域背景 */
.charx-input-bar {
  background: rgba(10, 10, 26, 0.95);
  border-top: 1px solid rgba(100, 200, 255, 0.15);
}

/* 输入框文本域 */
.charx-input-box {
  background: rgba(16, 33, 62, 0.7) !important;
  border-color: rgba(100, 200, 255, 0.25) !important;
  color: #e0f0ff !important;
}

提示:平台的 Tailwind 类名特异性较高,自定义背景色等属性通常需要加 !important 才能生效。

注意事项