搜索栏命令
不离开 Splunk 搜索栏:`| copilot` 用自然语言生成并执行 SPL,`| splexplain` 解释一条查询并给优化改写。1.7.0 起。
两个自定义搜索命令随 App 安装(commands.conf),在 Splunk 的任何搜索栏、报表、仪表盘里都能用。许可、角色、脱敏、审计与首页走同一套:命令直接调后端模块,不经 HTTP。
| copilot
| copilot "最近 30 天登录失败按主机统计" index=rst_demo生成 SPL → 只读校验 → 以当前用户身份执行 → 结果行作为命令输出。生成的 SPL 挂在作业的 info 消息里,搜索页顶部可展开看。
| 参数 | 默认 | 说明 |
|---|---|---|
| 第一个位置参数 | 必填 | 自然语言问题,引号包起来 |
index= | 自动 | 指定索引;不指定按白名单挑 |
run= | t | f 时不执行,只输出一行 spl / confidence / explanation,适合先看再跑 |

- 结果按 Events 视图显示(generating 命令没有
_time列时 Splunk 就这样排),要按时间线看在后面接| table _time …。 - 命令自己决定时间窗(写进生成的 SPL 的
earliest=),不吃搜索页右上角的时间选择器。 - 生成是非确定性的:同一句两次可能按
host元数据或抽取的dest分组,两者都对。要固定就把生成的 SPL 复制出来用。 - 1.9.0 真机
| copilot一般 15–50 秒(含试跑)。
| splexplain
index=* | stats count by host
| splexplain或直接给一条:
| splexplain spl="index=* | stats count by host"输出一行:explanation(这条 SPL 做什么)、risks(全索引扫描、没有时间窗、过滤靠后、通配前缀)、optimized_spl(改写)、why(为什么这样改)。改写规则只读:建议 tstats、早过滤、去 index=*、fields 裁剪、加时间窗,不会引入写命令。

作为流式命令吃上游时,每次最多处理 20 条(每条一次模型调用)。首页「解释这条 SPL」按钮用的是同一个核心。
存为 Report / Alert
首页结果卡的「保存到 Splunk」菜单把生成的 SPL 存成 search app 里的 saved search:Report 不调度;Alert 带 cron 和触发条件,写法与检测规则部署一致。分析员档可存 Report,Alert 与规则部署一样需要 schedule_search。

权限与审计
- 命令以当前搜索用户的会话跑,看不到的索引查不到。
copilot_use就能用两个命令;生成的 SPL 通过与首页相同的只读闸。- 每次调用记一条审计(
via=search_command),在调用审计里按动作筛。 - 命令声明
python.required = 3.9, 3.13;selfcontained 包在 3.13 下跑 agentic,其余走requests引擎。