Skip to content

条件参考

字数
925 字
阅读时间
4 分钟

条件系统决定 Hook 是否在事件匹配后实际执行。所有条件之间为 AND 逻辑——必须全部满足才会触发。

条件字段总览

在 Hook 定义的 conditions 字段中配置:

json
{
  "conditions": {
    "mood_is": "happy",
    "affection_gte": 60,
    "channel": "qq",
    "time_range": ["08:00", "22:00"]
  }
}

身份匹配条件

精确匹配事件中的身份字段。

条件键类型说明示例
character_idstr匹配 event.character_id"char_xyz"
user_idstr匹配 event.user_id"user_001"
channelstr匹配频道,从 event.payload.channelevent.metadata.channel 取值"qq" / "web" / "telegram"
event_sourcestr匹配 event.source"ai_pipeline"

示例

json
{
  "character_id": "char_my_waifu",
  "channel": "qq"
}

此条件表示:仅当角色 ID 为 char_my_waifu 且消息来自 QQ 频道时才触发。

心情条件

基于角色当前心情状态进行匹配。心情值从上下文的 mood 字段获取。

条件键类型说明
mood_isstr心情等于指定值
mood_is_notstr心情不等于指定值

常见心情值

含义
happy开心
sad伤心
angry生气
calm平静
excited兴奋
anxious焦虑
neutral中性

示例

json
{
  "mood_is": "happy"
}
json
{
  "mood_is_not": "angry"
}

关系阈值条件

基于角色关系属性进行数值阈值判断。使用 _gte(大于等于)和 _lte(小于等于)后缀。

支持的关系字段

字段前缀含义值域
affection好感度0-100
trust信任度0-100
familiarity熟悉度0-100
dependency依赖度0-100
security安全感0-100
jealousy嫉妒度0-100

条件键格式

条件键说明
affection_gte好感度 ≥ 指定值
affection_lte好感度 ≤ 指定值
trust_gte信任度 ≥ 指定值
trust_lte信任度 ≤ 指定值
familiarity_gte熟悉度 ≥ 指定值
familiarity_lte熟悉度 ≤ 指定值
dependency_gte依赖度 ≥ 指定值
dependency_lte依赖度 ≤ 指定值
security_gte安全感 ≥ 指定值
security_lte安全感 ≤ 指定值
jealousy_gte嫉妒度 ≥ 指定值
jealousy_lte嫉妒度 ≤ 指定值

示例

json
{
  "affection_gte": 80,
  "trust_gte": 50
}

此条件表示:好感度 ≥ 80 信任度 ≥ 50 时才触发。

精力阈值条件

基于角色精力值进行阈值判断。

条件键类型说明
energy_gtefloat精力 ≥ 指定值
energy_ltefloat精力 ≤ 指定值

精力值范围为 0-100。

示例

json
{
  "energy_lte": 30
}

此条件表示:精力低于 30% 时触发(适用于疲劳提醒)。

时间范围条件

基于当前时间进行匹配,格式为 ["HH:MM", "HH:MM"]。支持跨午夜。

条件键类型说明
time_range[str, str]时间窗口,24 小时制

时间匹配规则

  • 正常范围["08:00", "22:00"] → 08:00 到 22:00 之间触发
  • 跨午夜["22:00", "06:00"] → 22:00 到次日 06:00 之间触发
  • 使用服务器本地时间

示例

json
{
  "time_range": ["22:00", "06:00"]
}

此条件表示:仅在深夜时段(22:00-次日06:00)触发。

条件组合示例

高好感度 + 开心时注入提示词

json
{
  "conditions": {
    "mood_is": "happy",
    "affection_gte": 70,
    "energy_gte": 50
  }
}

低精力 + 深夜 + 特定频道

json
{
  "conditions": {
    "energy_lte": 30,
    "time_range": ["23:00", "07:00"],
    "channel": "qq"
  }
}

特定角色 + 好感度区间

json
{
  "conditions": {
    "character_id": "char_xyz",
    "affection_gte": 60,
    "affection_lte": 90
  }
}

安全机制

  • 未知条件键:如果条件字典中包含系统不认识的键,默认返回 False(拒绝匹配),防止因拼写错误意外触发
  • 类型转换:阈值条件会自动将值转换为 float 进行比较,无法转换的值视为 0.0
  • 空条件conditions 为空字典 {} 或不设置时,视为无条件限制,始终满足

页面历史