Files
zk-data-agent/skills/elk-fetch/business/keyword-free.md
T
2026-05-08 10:54:27 +08:00

2.8 KiB
Raw Blame History

免唤醒判决日志

"免唤醒"指车机上不需要每次说"小爱同学"的免唤醒指令模式(如开/关空调、调温度)。每次请求都会经过免唤醒判决——是否让这条 query 直接执行而不是走闲聊/拒识。

三个视角,两张表

# 业务视角 日志位置 命令
1 拒识模块视角:每次请求拒识模块整体输出(含所有子策略,含调用免唤醒的结果) aiservice_duplex_rejection_lcs_log* 整条 rejectInfo --preset reject
2 拒识里的免唤醒子字段:拒识调免唤醒那一次的入参出参 同表,rejectInfo.strategy_info.reject.KEY_WORD_FREE_RESTRIC --preset reject --json-path rejectInfo.strategy_info.reject.KEY_WORD_FREE_RESTRIC
3 免唤醒模块视角:免唤醒模块被后处理调到时自己写的日志(独立的另一张表) nlp_post_processing_lcs-*moduleName=keyword-free-log --preset kwfree

1 和 2 同表同条记录,2 只是取子字段;3 是完全独立的另一张表。

关键字段

视角 2:拒识里的免唤醒子字段

路径前缀 rejectInfo.strategy_info.reject.KEY_WORD_FREE_RESTRIC

  • process — 是否走到免唤醒判决(true / false
  • skipped_reason — 被跳过原因(如 post_processing_takeover 表示让后处理接管,进入视角 3
  • keywordFreeType
  • isCodeMatch
  • getProcessedQuery
  • Function List

视角 3:后处理免唤醒模块自身

JSON 字段 message 顶层:

  • process — 是否实际走到处理
  • skipReason — 未处理原因(如 rejectedByOtherStrategy 已被其他策略先拒)
  • route.flow / route.enableFullMigration / route.clawEnabled
  • request.query
  • request.keywordFreeType(如 INSTRUCTION_KEY_WORD_FREE
  • request.zone(如 DRIVER
  • request.appId / maskUid / maskDeviceId
  • fallback.oldRejectType / fallback.oldDomain

排查 Playbook

问题:免唤醒为什么没生效?

  1. 先查视角 2,看拒识有没有调到免唤醒:

    python elk_query.py <rid> --preset reject \
      --json-path rejectInfo.strategy_info.reject.KEY_WORD_FREE_RESTRIC
    
    • process=true → 走到免唤醒判决了,看 keywordFreeType 等子字段
    • process=false → 没走到,看 skipped_reason
      • post_processing_takeover → 进视角 3 看后处理免唤醒
      • 其他原因 → 拒识自己挡了
  2. 视角 3——后处理免唤醒模块自身:

    python elk_query.py <rid> --preset kwfree --json-path message
    
    • process=false 时看 skipReasonrejectedByOtherStrategy 表示已被先拒)

字段 schema

完整 schema 见 ../INDEX_CATALOG.mdaiservice_duplex_rejection_lcs_log*nlp_post_processing_lcs-* 两节。