调用审计
每次 AI 调用一条元数据事件:谁、什么动作、哪个索引、用时、结果、token。服务端聚合的看板,差评复审,用量与预算。
审计始终开着,无法关闭。每次 AI 调用(首页、搜索命令、MCP、告警动作、定时任务)写一条事件到 index=_internal sourcetype=copilot:audit:用户、动作、索引、引擎与模型、脱敏档位、工具调用数、耗时、成功 / 失败 / 拒绝、token 用量、评分。不含日志原文、提示词、模型输出。

看板
一条 SPL 聚合出:时间桶(按窗口自动 5 分钟 / 1 小时 / 1 天)、按动作、按结果、按用户、P50 / P95 耗时;下面是事件列表,按时间 / 动作 / 用户 / 索引 / 结果 / 评分筛。事件详情里有 via(ui / search_command / mcp / alert_action / tick)和错误码。
用量卡:本月 token、预估成本([usage] token_prices 配了价格才显示)、月度预算进度。预算超过 monthly_token_budget 时通过通道发一次告警,每月只发一次。
差评复审
筛「仅差评」列出被 👎 的调用,行内「标为已复审」/「忽略」/「撤销」。复审状态本身也是审计事件(feedback_reviewed),不改 KV。差评关联的会话在智能查询的历史里能回放;解法库里对应的解法自动降级。

对外转发
[audit_sinks] 可把同样的元数据事件转发到 syslog(tcp:// / tls://,不支持 UDP)或 webhook;失败只记 audit_sink_failed,不影响请求。配置在系统设置的「审计转发」块。
用 SPL 直接查
index=_internal sourcetype=copilot:audit operation=investigate
| stats avg(latency_ms) p95(latency_ms) count by engine model字段名与看板一致(operation / user / engine / model / masking_mode / tool_calls / latency_ms / refused / error / prompt_tokens / completion_tokens / total_tokens / via / index)。