Skip to content

事件参考

字数
1137 字
阅读时间
5 分钟

Hook 系统在 AI Pipeline 的 27 个关键检查点插入事件。每个事件都是一个 RuntimeEvent 对象,携带当前对话上下文信息。

事件类型一览

会话入口

事件名触发时机典型 payload
conversation.before_receive消息进入 Pipeline 之前channel, 原始消息数据

附件处理

事件名触发时机典型 payload
pipeline.before_attachments解析附件(图片/文件)之前
pipeline.after_attachments解析附件之后解析结果

知识检索

事件名触发时机典型 payload
pipeline.before_knowledge知识库检索之前
pipeline.after_knowledge知识库检索之后检索到的知识片段

角色 before_turn(上下文准备阶段)

事件名触发时机典型 payload
character.before_turn.started角色回合开始
character.after_profile_load加载角色档案之后角色 profile 数据
character.after_memory_retrieve记忆检索之后检索到的记忆列表
character.after_world_book_match世界书匹配之后匹配到的条目
character.after_reaction_plan反应规划之后规划结果
character.before_turn.finished上下文准备完毕,即将渲染 prompt完整上下文数据

Prompt 渲染

事件名触发时机典型 payload
prompt.before_render渲染 prompt 模板之前
prompt.after_render渲染 prompt 模板之后渲染结果

模型调用

事件名触发时机典型 payload
model.before_call调用 LLM API 之前模型名、token 预估
model.on_stream_chunk流式响应首块到达首块文本
model.after_callLLM 调用完成响应文本、token 用量

回复发送

事件名触发时机典型 payload
reply.before_send回复发送给用户之前回复内容
reply.after_send回复发送给用户之后发送结果

角色 after_turn(状态更新阶段)

事件名触发时机典型 payload
character.after_turn.startedafter_turn 阶段开始
character.after_state_update角色状态更新之后状态变更详情
character.after_turn.finishedafter_turn 阶段结束

记忆

事件名触发时机典型 payload
memory.after_extract记忆抽取之后抽取的记忆内容

状态变化

事件名触发时机典型 payload
state.changed角色状态字段发生变化变更的字段和值
relationship.changed关系字段发生变化变更的字段和值

工具调用

事件名触发时机典型 payload
tool.before_call工具执行之前工具名、参数
tool.after_call工具执行之后执行结果

事件别名映射

为兼容文档命名和代码实际 emit 的事件名,系统支持别名映射。两种写法均可在 Hook 的 event 字段中使用:

文档别名(也可用)代码实际事件名
pipeline.before_model_callmodel.before_call
pipeline.after_model_callmodel.after_call
pipeline.before_reply_sendreply.before_send
pipeline.after_reply_sendreply.after_send
pipeline.before_prompt_renderprompt.before_render
pipeline.after_prompt_renderprompt.after_render
pipeline.stream_chunkmodel.on_stream_chunk
character.before_turn.after_memory_retrievecharacter.after_memory_retrieve
character.before_turn.after_world_book_matchcharacter.after_world_book_match
character.before_turn.after_reaction_plancharacter.after_reaction_plan
character.after_turn.after_state_updatecharacter.after_state_update

通配符匹配

Hook 的 event 字段支持通配符模式:

模式匹配范围示例
*所有事件监听全部事件
character.*所有 character. 开头的事件监听角色生命周期
pipeline.*所有 pipeline. 开头的事件监听 Pipeline 阶段
model.*所有 model. 开头的事件监听模型调用
精确匹配完全匹配单个事件character.before_turn.finished

RuntimeEvent 字段定义

python
@dataclass
class RuntimeEvent:
    type: str               # 事件类型(必填)
    source: str = ""        # 产生事件的模块标识
    conversation_id: str = ""  # 会话 ID
    character_id: str = ""  # 角色 ID
    user_id: str = ""       # 用户 ID
    group_id: str = ""      # 群聊 ID
    payload: dict = {}      # 事件负载数据
    metadata: dict = {}     # 附加元数据
    id: str = ""            # 自动生成(evt_{uuid})
    created_at: str = ""    # 自动生成(ISO 时间戳)
字段类型必填说明
typestr事件类型,使用点分隔的层级命名
sourcestr模块标识,如 ai_pipelinecharacter_runtime
conversation_idstr当前会话 ID,用于 once_per_conversation 触发模式
character_idstr当前角色 ID,用于作用域过滤和条件匹配
user_idstr当前用户 ID,用于作用域过滤和条件匹配
group_idstr群聊 ID(群聊场景)
payloaddict事件数据,不同事件类型携带不同内容
metadatadict附加元数据,如 channel 信息
idstr自动生成,格式 evt_{12位uuid}
created_atstr自动生成,UTC ISO 时间戳

Pipeline 事件发射点

事件在 Pipeline 中的实际发射位置:

用户消息进入

  ├─ conversation.before_receive        ← ai_pipeline.py

  ├─ pipeline.before_attachments        ← ai_pipeline.py
  ├─ pipeline.after_attachments         ← ai_pipeline.py

  ├─ pipeline.before_knowledge          ← ai_pipeline.py
  ├─ pipeline.after_knowledge           ← ai_pipeline.py

  ├─ CharacterRuntime.before_turn       ← character/runtime.py
  │   ├─ character.before_turn.started
  │   ├─ character.after_profile_load
  │   ├─ character.after_memory_retrieve
  │   ├─ character.after_world_book_match
  │   ├─ character.after_reaction_plan
  │   └─ character.before_turn.finished

  ├─ prompt.before_render               ← ai_pipeline.py
  ├─ prompt.after_render                ← ai_pipeline.py

  ├─ model.before_call                  ← ai_pipeline.py
  ├─ model.on_stream_chunk (首块)        ← ai_pipeline.py
  ├─ model.after_call                   ← ai_pipeline.py

  ├─ reply.before_send                  ← ai_pipeline.py
  ├─ reply.after_send                   ← ai_pipeline.py

  ├─ CharacterRuntime.after_turn        ← character/runtime.py
  │   ├─ character.after_turn.started
  │   ├─ character.after_state_update
  │   └─ character.after_turn.finished

  ├─ memory.after_extract               ← character/runtime.py
  ├─ state.changed                      ← character/runtime.py
  ├─ relationship.changed               ← character/runtime.py

  ├─ tool.before_call                   ← ai_pipeline.py
  └─ tool.after_call                    ← ai_pipeline.py

页面历史