作者注释是一段被硬插进对话靠后位置的文字。同样一句话,写进角色卡和写进 作者注释效果差很多,差的不是措辞是位置:角色卡固定在提示词最前面,聊得越久离生成点 越远;作者注释按深度插在聊天记录里,永远紧贴当前对话。
作者注释默认插在哪里
默认插在聊天记录内部、离最新消息 4 条的位置。
loadSettings()
里三个默认值是 DEFAULT_DEPTH = 4、DEFAULT_POSITION = 1、
DEFAULT_INTERVAL = 1(authors-note.js:272)。
位置那个 1 对应界面上的「In-chat @ Depth」,也就是切进聊天记录中间。另外两个
选项是 0「After Main Prompt / Story String」和 2「Before Main Prompt /
Story String」,它们把注释固定在提示词头部区域,深度数字对这两档不起作用。身份可选
System、User、Assistant,默认 System。
深度数值越小越靠近最新消息,约束力越强,也越容易打断对话的自然流动。深度 0
会插在最新消息之后,几乎等于直接对模型下命令,效果最强但痕迹也最重。多数场景下
2 到 6 是比较平衡的范围。想知道它和角色卡、世界书是按什么顺序拼到
一起的,看提示词组装那篇。
interval 是按什么计数的
按用户消息条数,不是按总楼层。
setFloatingPrompt()
取的是 chat.filter(m => m.is_user).length(authors-note.js:333),
角色的回复不计入。所以 interval 设 3,意思是你每发三条消息插一次。
判定分两支:用户消息数已经达到 interval 时取模,余数为 0 才插;还没达到时算的
是「还差几条」,这期间一次都不插。界面上那个计数器显示的就是这个差值。
interval 为 1 时是特例,源码直接把计数强行置为 1
(authors-note.js:346),取模必然为 0,于是每轮都插,空聊天里的第一次生成也插。
设为 0 或负数则整个关闭,注释不进提示词。
调大 interval 的理由通常是省 token,或者让约束若隐若现而不是每轮都压着。代价是模型 可能在没插入的那几轮里跑偏。硬性规则别调,风格提示可以。
角色专属注释的三种位置
除了聊天级别的注释,角色卡也可以带一段自己的注释,前提是在作者注释面板里勾上使用
角色注释。两者相遇时怎么合并,由
chara_note_position
(authors-note.js:38)决定:
| 值 | 名称 | 界面标签 | 行为 |
|---|---|---|---|
0 | replace | Replace Author's Note | 角色注释顶掉聊天注释,只发角色那段 |
1 | before | Top of Author's Note | 角色注释接在聊天注释上方,中间隔一个换行 |
2 | after | Bottom of Author's Note | 角色注释接在聊天注释下方 |
replace 是容易出意外的一个:你在聊天里写的注释会被角色那段整个顶掉。
发现「注释怎么不生效」时,先检查当前角色有没有带注释、是不是勾了「Use character
author's note」、位置是不是停在 replace。这段角色注释存在本地设置里,
导出角色卡时不会带走。
角色注释在群聊里也生效,但群聊打开时改不了,要先回到单人聊天再编辑。
注释里的内容会被世界书扫描吗
默认不会。面板上的「Include in World Info Scanning」(allowWIScan)控制是否把
作者注释的文字一并纳入世界书的关键词扫描,源码里默认为
false。打开之后,写在注释里的词也能触发世界书条目,可以做出「注释推动剧情、
剧情触发设定」的联动,但也更容易误触发。
这个开关同时管着角色深度提示词是否参与扫描,两者用的是同一个设置项。
什么该写进作者注释,什么不该
适合放当前这段对话的临时约束:控制回复长度、限定视角、指定当前场景、 压制某个反复出现的毛病。这些东西的共同点是「现在需要、过一阵就不需要了」。
角色的固有设定归角色卡,大段背景资料归 世界书,后者按需触发更省。作者注释每次插入都要占预算, 占的还是离生成点最近、最贵的那一段位置。
另外有一个「Default Author's Note」输入框,填了之后所有新建的聊天都会自动带上这段, 适合放你自己的通用写作偏好。