Skip to content

人格隔离配置

人格隔离用于在不同作用域(全局、用户、群、群内用户)下应用各自独立的人设(system prompt)、预设与模型配置,配置位于 config/config.yamlpersonality 段。

配置示例

yaml
personality:
  # 群聊场景下的作用域优先级(从高到低)
  priority:
    - group
    - group_user
    - user
    - default
  # 是否使用独立人格
  useIndependent: true
  # 上下文隔离
  isolateContext:
    enabled: true
    clearOnSwitch: true

作用域优先级 priority

priority 决定在群聊场景下按什么顺序查找生效的人设配置,由 ScopeManager.getEffectiveSettings() 消费(源码 src/services/scope/ScopeManager.js)。系统按数组顺序从高到低查找,命中第一个存在配置的作用域即停止。

作用域含义存储表
group_user特定群中特定用户的独立配置group_user_scopes
group整个群的共享配置group_scopes
user该用户跨群的全局配置user_scopes
private私聊场景配置private_scopes
default系统默认人设全局配置

场景差异

  • 群聊:读取 personality.priority;未配置时回退到内置默认顺序 ['group_user', 'group', 'user', 'default']
  • 私聊固定使用 ['private', 'user', 'default'],不受 personality.priority 影响。

注意默认顺序与示例的差异

内置回退顺序为 group_user > group > user > default(更具体的作用域优先)。 config.yaml 中的示例将 group 放在 group_user 之前,表示整群统一人设优先于群内单用户人设。请按实际需求调整顺序。

独立人设机制

当某作用域设置了自定义人设时,getIndependentPrompt() 会直接使用该人设,不再拼接默认人设isIndependent: true);空字符串也视为"用户明确设置为空"的独立人设。仅当所有作用域均未设置人设时,才回退到默认 prompt。

其他配置项

关于 useIndependent 与 isolateContext

useIndependentisolateContext.enabledisolateContext.clearOnSwitch 这三个字段可通过后端接口 GET/PATCH /config/personality 读写并持久化到 config.yaml,但在当前 src/ 后端与 frontend/src/ 前端源码中未检索到直接消费这些字段的业务逻辑

它们与预设级别的 isolateContext / clearOnSwitchPresetManager 中的预设属性,默认 false,见下)并非同一处配置。如需确认其实际行为,请以运行时表现为准。

字段类型示例值说明
useIndependentbooleantrue人格独立开关(当前源码未见直接消费点)
isolateContext.enabledbooleantrue上下文隔离开关(当前源码未见直接消费点)
isolateContext.clearOnSwitchbooleantrue切换时清空上下文(当前源码未见直接消费点)

预设级别的上下文隔离由预设自身的 isolateContext(是否使用独立上下文)与 clearOnSwitch(切换预设时是否清除上下文)控制,默认均为 false,详见 预设与人格

管理接口

方法路径说明
GET/config/personality获取当前人格配置
PATCH/config/personality局部更新人格配置

下一步

基于 MIT 许可发布