创建世界书
提示
请务必先阅读如何正确使用酒馆助手
点击查看对应类型定义文件(可发给AI或IDE使用,酒馆助手设置中提供了打包下载)
createWorldbook
创建新的世界书。
typescript
function createWorldbook(worldbook_name: string, worldbook?: WorldbookEntry[]): Promise<boolean>;
typescript
type WorldbookEntry = {
/** uid 是相对于世界书内部的, 不要跨世界书使用 */
uid: number;
name: string;
enabled: boolean;
strategy: {
/**
* - `'constant'`: 常量🔵, 俗称蓝灯. 只需要满足 "启用"、"激活概率%" 等别的要求即可.
* - `'selective'`: 可选项🟢, 俗称绿灯. 除了蓝灯条件, 还需要满足 `keys` 扫描条件
* - `'vectorized'`: 向量化🔗. 一般不使用
*/
type: 'constant' | 'selective' | 'vectorized';
/** 主要关键字. 绿灯条目必须在欲扫描文本中扫描到其中任意一个关键字才能激活 */
keys: (string | RegExp)[];
/**
* 次要关键字. 如果数组不为空, 则条目除了在主要关键字中匹配到任意一个关键字外, 还需要满足:
* - `'and_any'`: 次要关键字中任意一个关键字能在欲扫描文本中匹配到
* - `'and_all'`: 次要关键字中所有关键字都能在欲扫描文本中匹配到
* - `'not_all'`: 次要关键字中至少有一个关键字没能在欲扫描文本中匹配到
* - `'not_any'`: 次要关键字中所有关键字都没能欲扫描文本中匹配到
*/
keys_secondary: { logic: 'and_any' | 'and_all' | 'not_all' | 'not_any'; keys: (string | RegExp)[] };
/** 扫描深度: 1 为仅扫描最后一个楼层, 2 为扫描最后两个楼层, 以此类推 */
scan_depth: 'same_as_global' | number;
};
position: {
/**
* 位置类型:
* - `'before_character_definition'`: 角色定义之前
* - `'after_character_definition'`: 角色定义之后
* - `'before_example_messages'`: 示例消息之前
* - `'after_example_messages'`: 示例消息之后
* - `'before_author_note'`: 作者注释之前
* - `'after_author_note'`: 作者注释之后
* - `'at_depth'`: 插入到指定深度
*/
type:
| 'before_character_definition'
| 'after_character_definition'
| 'before_example_messages'
| 'after_example_messages'
| 'before_author_note'
| 'after_author_note'
| 'at_depth';
/** 该条目的消息身份, 仅位置类型为 `'at_depth'` 时有效 */
role: 'system' | 'assistant' | 'user';
/** 该条目要插入的深度, 仅位置类型为 `'at_depth'` 时有效 */
depth: number;
// TODO: 世界书条目的插入: 文档链接
order: number;
};
content: string;
probability: number;
recursion: {
/** 禁止其他条目递归激活本条目 */
prevent_incoming: boolean;
/** 禁止本条目递归激活其他条目 */
prevent_outgoing: boolean;
/** 延迟到第 n 级递归检查时才能激活本条目 */
delay_until: null | number;
};
effect: {
/** 黏性: 条目激活后, 在之后 `n` 条消息内始终激活, 无视激活策略、激活概率% */
sticky: null | number;
/** 冷却: 条目激活后, 在之后 `n` 条消息内不能再激活*/
cooldown: null | number;
/** 延迟: 聊天中至少有 `1` 楼消息时, 才能激活条目 */
delay: null | number;
};
extra?: Record<string, any>;
};
参数
worldbook_name
- 类型:
string
- 描述: 世界书名称
worldbook
- 类型:
WorldbookEntry[]
- 描述: 世界书内容; 不填则没有任何条目
返回值
- 是否成功创建:
boolean
- 如果已经存在同名世界书会失败
createOrReplaceWorldbook
创建或替换名为 worldbook_name
的世界书, 内容为 worldbook
typescript
function createOrReplaceWorldbook(
worldbook_name: string,
worldbook?: PartialDeep<WorldbookEntry>[],
{ render }?: ReplaceWorldbookOptions,
): Promise<boolean>;
参数
worldbook_name
- 类型:
string
- 描述: 世界书名称
worldbook
- 类型:
WorldbookEntry[]
- 描述: 世界书内容; 不填则没有任何条目
option?
一个可选的配置对象,包含以下属性:
render
:debounced|immediate
- 对于对世界书的更改, 世界书编辑器应该防抖渲染 (debounced) 还是立即渲染 (immediate)? 默认为性能更好的防抖渲染
返回值
- 是否成功创建或替换:
boolean
- 如果发生创建, 则返回true
; 如果发生替换, 则返回false