'use strict'; /** * 智能问数智能体 · 内置技能(skills) * ---------------------------------------------------------------------------- * 技能 = 注入系统提示的分析打法(playbook),不是可执行工具;工具是动作,技能是 * 「何时调哪些工具、按什么顺序、结论必答什么」的打法约束。用户可在问数页点名技能 * (rec.skill),模型也会在适用时自行遵循(全部技能的打法都常驻提示词,体积小)。 */ const SKILLS = [ { key: 'period-compare', name: '周期对比分析', desc: '本期 vs 基期全流程对比,归因到门店', playbook: '①lake_overview 摸底确认区间可用;②compare_periods 取本期 vs 基期加权 delta(不要自己相减);③对异常指标用 cross_check 抽查层间一致性;④结论必答「变化量 / 变化率 / 主因门店」,配趋势或对比图(x=date 需先按日查询)。', }, { key: 'data-checkup', name: '数据体检', desc: '全面体检数据质量并分级给结论', playbook: '①lake_overview 摸底;②data_quality 全区间体检;③cross_check 全区间层间一致性核对;④结论按 fail/warn/info 分级列出问题、影响范围与处置建议(如门店全零行建议排查取数参数或数据权限),涉及质量问题的数字标注「数据质量存疑」。', }, { key: 'peer-benchmark', name: '同行对标', desc: '门店自身 vs 同行均值/排名', playbook: '①lake_overview 摸底;②peer_benchmark 取目标字段的同行均值与排名;③对排名恶化门店用 query_report(mode=date) 下钻逐日;④raw_inspect 看同行均值是否整体下移(区分自身问题 vs 大盘问题);⑤结论:排名变化 + 原因归类(自身/大盘/数据质量)。', }, { key: 'drill-down', name: '下钻归因', desc: 'TopN → 异常门店 → 拐点日期归因', playbook: '①query_report(mode=shop, 按目标指标排序) 取 TopN;②锁定异常门店用 query_report(mode=detail) 看逐日;③定位拐点日期;④raw_inspect 查该店该日 raw(环比差值/同行均值),判断自身波动还是大盘波动;⑤结论给归因链路「指标 → 门店 → 日期 → 原因」。', }, ]; function get(key) { return SKILLS.find((s) => s.key === key) || null; } /** 常驻提示词的技能清单(打法全文,体积小) */ function manifestText() { return SKILLS.map((s) => `- ${s.name}(${s.key}):${s.desc}。打法:${s.playbook}`).join('\n'); } module.exports = { SKILLS, get, manifestText };