Analyze MongoDB 4.4.x slow logs from pasted slow-log text, uploaded log files, or mongodb.log content and produce practical query optimization advice, index recommendations, evidence-backed reasoning, and ready-to-run Mongo shell index commands. The skill is AI-first and should analyze logs directly in conversation without relying on local PowerShell by default. It should also be able to group repeated entries by namespace, deduplicate repeated query shapes, and summarize repeated patterns before giving advice. Only treat DOCX or PDF export as optional conversion steps that may require local tooling. Prefer Chinese output by default, but support English when requested. Treat ctime as already indexed and never recommend a new index on it. Treat status as a low-cardinality field with only 1 and 9, where 1 means active/in-use, and do not include status in recommended index definitions.
默认优先由 AI 直接在对话中分析慢日志,不依赖本地 PowerShell。这个 skill 的主体能力是:
mongodb.log、.log、.txt、.jsonl 等文件内容ns)归类,并按“查询形态”去重汇总也就是说,这个 skill 的核心不是“运行脚本”,而是“AI 直接分析并输出结构化结果”。
默认模式是“纯 AI 分析优先”:
createIndex(...) 命令md 或 html,优先由 AI 直接生成对应内容在这个模式下:
按优先级使用下面这套策略:
对话分析
Markdown
HTML
DOCX / PDF
默认不要把脚本当作分析入口。
只有在下面场景下,才可以考虑使用本地工具或脚本:
mongodb.log如果只是单条、少量、临时分析,或者上传文件后只需要直接分析,优先用 AI 完成。
mongodb.log 文件路径或一段日志文件内容ns 归类operation (find / aggregate)nsfilter 的字段结构和操作符结构sortprojectionlimitpipeline 的阶段结构planSummarynsplanSummarykeysExamineddocsExaminednreturneddurationMillisfind / aggregatefiltersortprojectionlimit$group$or$regex$ne/$nin/$not/$sizeCOLLSCANlimit: 1 但扫描很多文档$or 不同分支需要不同索引$ne、$nin、$not、$size 这类负向条件拖慢查询$match 不够收敛$group 放大上游扫描成本默认输出顺序如下:
摘要 / Summary归类与去重摘要 / Grouping & Dedup Summary(批量日志时必须出现)处理优先级 / Action Priority证据 / Evidence查询条件 / Query Shape为什么慢 / Why It Is Slow索引建议 / Index Advice索引创建命令 / Index Commands可执行优化路径 / Practical Optimization Paths查询优化建议 / Query Advice验证建议 / Validation参考文档 / References\r\n\r\n报告中应尽量解释:可执行优化路径 / Practical Optimization Paths不改 schema 可做项、允许新增辅助字段时可做项每次完整报告都应固定带一个“参考文档 / References”小节,至少包含:
如果是 HTML 输出,应把这个链接做成可点击超链接。
如果用户要求 HTML 内容或 HTML 文件,输出应尽量满足这些要求:
声明:内容由 AI 生成。尽管已努力确保信息的合理性,但 AI 模型仍可能产生不准确、过时或存在偏差的内容。请在执行关键操作前,务必对照 官方文档 进行核实校验。如果 HTML 已写入文件,任务完成时可以提供一个最小化交付提示,但不要默认增加单独的“交付结果 / Deliverables”小节。\r\n\r\n默认只需要:\r\n\r\n- 在最终回复里给出最重要产物的可点击文件路径\r\n- 如有必要,再补一个可点击目录路径\r\n- 如果是 HTML,可选补一个本地打开示例\r\n\r\n如果用户没有要求展示目录或打开方式,不要额外展开太多交付说明。\r\n\r\n在 Codex 桌面环境里,优先使用简洁的可点击路径。
批量日志分析时,不能因为做了“按表归类 + 查询形态去重”就丢掉老的细节输出。必须同时满足这两层:
汇总层 / Summary Layerns 归类、按查询形态去重后的总览细节层 / Detail Layer证据 / Evidence查询条件 / Query Shape为什么慢 / Why It Is Slow索引建议 / Index Advice索引创建命令 / Index Commands查询优化建议 / Query Advice查询条件 / Query Shape 不允许省略;优先展示格式化 JSONfind,至少展示:
filtersortprojection(如果存在)limit(如果存在)aggregate,至少展示:
pipeline$match,应单独展示 match JSON也就是说:
先汇总,再按分组展开细节当输入是整份日志文件、长文本、或多条慢日志时,默认按下面方式处理:
ns 归类createIndex(...) 或“当前不建议直接执行 createIndex”的模板如果用户上传了日志文件,默认应:
如果用户上传文件后又要求导出结果:\r\n\r\n- 默认把结果写到工作区内可访问目录\r\n- 输入来源在报告中默认只显示文件名,不显示完整本地路径\r\n- 例如应显示 mongodb.log,而不是 C:\\Users\\admin\\Downloads\\mongodb.log\r\n- 完成后默认只返回最重要产物的可点击路径;除非用户要求,否则不要额外展开“交付结果”说明\r\n\r\n## Index Recommendation Rules
统一遵循这些规则:
$or 且不同分支走不同字段,优先考虑“每个分支一套可命中的索引”。$or 条件,通常不走索引或索引收益很差ctimestatusstatus,可以解释它是业务过滤条件,但不要把它纳入推荐索引定义。ctime,要说明它已存在索引,不需要重复建议。background: true如果日志格式不完整、JSON 不标准、或过滤条件无法完全结构化提取:
$group、$or、$regex、$not、$size 等特征本 skill 可以带脚本,但脚本只是可选增强:
scripts/extract-slowlog-signals.ps1
scripts/generate-slowlog-report.ps1
如果用户只是贴一段慢日志,或者上传一个日志文件需要直接分析,不需要主动调用这些脚本。
直接 AI 分析:
用 $mongodb-slowlog-analysis 分析下面这段 MongoDB 4.4 慢日志,中文输出分析这条慢日志,告诉我为什么慢、索引怎么加、查询条件怎么改分析这个上传的 mongodb.log,按表归类并对重复查询去重汇总不要生成文件,直接在对话里分析直接让 AI 生成 Markdown / HTML 内容:
用 $mongodb-slowlog-analysis 生成一份 markdown 报告内容用 $mongodb-slowlog-analysis 生成 html 报告内容,不依赖本地脚本如果用户明确要求尝试真实文件导出,再说明:
md/html 可以直接由 AI 生成并保存docx/pdf 通常需要本地转换工具,这属于可选增强需要复查规则时,读取 references/mongodb-4.4-slowlog-guidelines.md。重点关注:
ctime 和 status$or、正则查询和后台创建索引的经验规则索引相关输出必须走下面两种模板之一,不要混用,也不要只给一个孤立的 use 库名:
可直接建索引
索引建议:给出候选索引形态索引创建命令:给出完整 Mongo Shell 命令,至少包含:
use 库名db.getCollection("集合名").createIndex(..., { background: true })暂不建议直接建索引
索引建议:明确写“当前不建议直接创建普通索引”索引创建命令:明确写“当前不建议直接执行 createIndex,请先改写查询条件”use 库名补充规则:
createIndex(...) 命令来凑模板。use 库名。如果当前结论是“暂不建议直接建索引”,但日志里仍然能看出较明确的正向过滤字段、范围字段或排序字段,则报告应额外给出一个:
改写后候选索引 / Post-Rewrite Candidate Indexes这一节的作用是:
输出要求:
$or 场景,可以额外给出“分支索引”示例主候选索引 / Primary candidate index$or 分支拆分后的候选,应标记为 分支候选索引 / Branch candidate indexes索引创建命令 之后、查询优化建议 之前对于这类 MongoDB 动态业务字段,默认视为:
因此在给建议时必须遵守:
$size/$not/$ne 等复杂谓词,应把它标记为“混合约束字段”,不要把它直接当作可建索引前缀在 aggregate 场景下尤其要注意:
regex$ne/$nin/$not/$size$or
这些场景可以建议“新增辅助字段”,但不能建议“改原字段 key”。