AI Coach Batch Session Summary

Data & APIs

录音转写洞察:先 parse-user-intent 反问确认时间与维度,再 fetch 拉数;默认近 1 个月 + 十维;默认报告页面。 触发:对象词(含教练/coach)+ 动作词,或完整口令,或显式 intent=ai-coach-batch-session-summary。

Install

openclaw skills install ai-coach-batch-session-summary

AI Coach Batch Session Summary

目标

拉取 legion-hardware 的 ASR 转写并生成报告。仅依据 asrText,禁止使用 aiJiaolianResultJson / aiSummaryContent 作为结论依据。


工作流程(必须按序,禁止跳步)

1. parse-user-intent.mjs     → 解析时间 / 维度 / 交付形态
2. needClarification=true    → 反问用户,结束(禁止执行 fetch)
3. 用户补充或 skipClarification / confirmed* → 再执行 fetch-asr-recordings.mjs
4. 按 reportPlan + themeRelated + outputFormat 生成报告

禁止只跑 fetch-asr-recordings.mjs 而不先意图解析(fetch 内置相同解析,若需反问会直接 ok:false 且不拉数)。

脚本调用

# 步骤 1:意图(不拉数)
echo '{"user":"u","model":"openclaw:u123","userMessage":"帮我总结录音"}' | \
  node "{baseDir}/scripts/parse-user-intent.mjs"

# 步骤 2:确认后拉数(token 仅来自 Header / LEGION_AUTH_TOKEN)
export LEGION_AUTH_TOKEN="<JWT>"
echo '{"user":"u","model":"openclaw:u123","userMessage":"总结最近 5 天录音","skipClarification":true}' | \
  node "{baseDir}/scripts/fetch-asr-recordings.mjs"

默认值(反问后仍不明确,或用户说「按默认」)

默认报告说明
时间1 个月「未确认具体时间,已按默认最近 1 个月统计」
维度十维拓客「因未提取到明确的分析维度信息,已使用默认十维拓客统计框架处理」

反问沟通

parse-user-intent / fetch 在以下情况 needClarification: true

信号反问要点
timeRange.confidence = ambiguous几天 / 几周 / 几个月
timeRange.confidence = missing统计窗口;不答则默认 1 个月
analysisFocus.confidence = ambiguous拓客 / 话术 / 教练 / 客户需求 / 或默认十维
analysisFocus.confidence = missing分析方向;不答则默认十维

跳过反问:

  • 用户话术中「就按默认 / 你看着办 / 用默认」
  • body:skipClarification: true(网关在用户回复后设置)
  • body:confirmedTime / confirmedDimension(见下)

多轮合并 userMessage

网关将 首轮 + 追问回复 写入同一 body:

{
  "userMessage": "帮我总结录音",
  "followUpMessage": "最近 5 天,按拓客复盘",
  "skipClarification": true
}

或拼接为单字段 userMessage。脚本会合并 userMessage + query + followUpMessage

网关确认字段(可选)

字段示例作用
skipClarificationtrue不再反问,按解析结果或默认拉数
confirmedTime"default"{ "startTime":"...","endTime":"..." }锁定时间窗
confirmedDimension"default_ten" / "ten" / "AI 教练" / "股票趋势"锁定维度或专题

触发词速查

激活(其一): 对象词 + 动作词;完整口令intent=ai-coach-batch-session-summary

动作词: 总结、汇总、归纳、梳理、概括、小结、复盘、盘点、整合、整理、摘要、报告、结论(及英文同义,须配对象词)。

对象词:

类别中文英文
录音 / 转写录音、转写、ASRrecording, transcript, ASR
拓客拓客、走访、地推outreach, field sales
话术 / 客户话术、客户拜访pitch, script, customer visit
教练教练、AI 教练、教练反馈、教练点评coach, coaching, AI coach, coach feedback
系统legion-hardwarelegion, hardware

完整口令

  • 总结最近 5 天录音
  • 十维拓客报告
  • 总结一下教练反馈
  • AI coach recap for last month

不触发: 仅「总结一下」无对象词;调用 POST /api/recordings/ai-jiaolian 且无话术总结类动作词(走 AI 教练单次能力,不走本 skill)。


入站参数(OpenClaw / 网关)

{
  "user": "OpenClaw 用户标识(必填,映射为 hardware userId)",
  "model": "openclaw:{user}{orgId} 或 openclaw:{user}person",
  "userMessage": "用户原话(必填,可在 metadata)",
  "followUpMessage": "可选,第二轮补充",
  "skipClarification": false,
  "confirmedTime": "default",
  "confirmedDimension": "default_ten",
  "orgId": "可选;网关已从 model 解析时可直传"
}

Header:Authorization: Bearer {JWT}禁止 body.token)

userId / orgId 取值(resolve-openclaw-identity.mjs

与 tfd-api AiService 的 model 组装一致:

model 形态含义hardware 调用
openclaw:{user}{orgId}组织上下文userId=userorgId 为去掉前缀 openclaw:{user} 后的后缀
openclaw:{user}person个人上下文userId=user不传 orgId(或为空)

规则:

  1. userId = 请求体字段 user(兼容 userId)。
  2. model 以 person 结尾(不区分大小写)→ 个人模式,不传 orgId
  3. model 非 personorgId = model 去掉前缀 openclaw: + user 后的剩余部分。
  4. 若 body 已带非空 orgId(如网关 metadata)→ 优先使用,不再从 model 解析。
  5. 若 body 显式 orgId: "" → 视为个人模式。

示例(user=abc):

modelorgId(查询)
openclaw:abc123123
openclaw:abcperson不传(个人)
openclaw:abc不传(后缀为空)

时间规则(parse-time-range.mjs

表述confidence行为
最近 5 天 / 近 2 个月explicit按解析查询
最近 / 近期(无数字)ambiguous先反问
无时间missing先反问
反问后仍无default1 个月

时区 Asia/Shanghai;上限:月 ≤12,天 ≤366。


维度与报告分支

条件输出
无显式专题(走十维)十维拓客报告 + 默认维度说明(若适用)
用户明确「十维 / 默认十维」十维(无需「未提取维度」说明)
显式专题且 themeRelated=true## 用户关注:{主题}
显式专题且 themeRelated=false## 分析结果无相关内容(禁止十维、禁止编造)

themeRelated 由脚本用 主题核心词 匹配 asrText(已避免单独「KYC」「趋势」误命中)。

样本量

recordCount处理
0十维骨架或专题内写明「样本为空」
< 5标注「小样本,结论仅供参考」
> 80(默认)见 stdout recordsHint,分析时优先近期并抽样

数据拉取与部署

说明
默认 baseUrlhttp://192.168.109.50:8900LEGION_HARDWARE_BASE_URL 可覆盖)
接口GETPOST /api/recordings/asr-completed + startTime/endTime
部署新 jar(POST 支持 body 内时间);旧版 POST 仅 3 个月固定窗,自定义时间会失效

fetch 成功时 stdout 含:queryanalysisFocusthemeRelatedreportPlanoutputFormatrecords[]


交付形态(outputFormat

mode行为
page(默认)templates/insight-report-page.md 生成完整报告页(Markdown/HTML)
text用户要求「只要文字/不要页面」
custom用户要求导出/邮件等,从其要求

十维拓客(默认维度)

  1. 拓客场景 2. 触达人群 3. 开口获客话术 4. 客户需求 5. 客户拒绝原因
  2. 有效意向分类 7. 产品匹配 8. 成交阻碍痛点 9. 跟进动作 10. 拓客成效数据

每维:关键发现 / 典型摘录 / 量化指标 / 优化建议。


错误与安全

  • user / Authorization → 不调 hardware;个人模式可无 orgId
  • needClarification 时禁止编造数据
  • 勿暴露 token、内网 IP/端口
  • user / 解析出的 orgId 宜与业务身份一致(建议网关校验)

检查清单

  • 已跑 parse-user-intentneedClarification 时已反问且未 fetch
  • 默认时间/维度说明已写入报告(若适用)
  • themeUnrelated 时仅输出「无相关内容」
  • 交付形态符合 outputFormat
  • 未使用 body.token
  • user / model 已按规则解析;person 模式未传 orgId