数据库排查记忆:沉淀与召回
这个 Skill 解决什么
数据库排查里最贵的不是查询,是重复踩坑:同一个慢查询、同一个字段含义、同一类报错, 换个会话又要重新查一遍。本 Skill 把「问题 → 结论 → 证据」写成结构化记忆, 下次遇到相似问题先召回,再决定要不要重新查。
工具与接入方式
PowerContext 提供 HTTP API、MCP 与 Python SDK 三种接入,任选其一:
| 方式 | 写入记忆 | 召回记忆 |
| ---------- | ------------------------------------------------------ | ---------------------------------------------- |
| HTTP API | POST /v1/scopes/{scope_id}/sources(content 类型) | POST /v1/scopes/{scope_id}/memories/search |
| MCP | capture_content_source 工具 | search_memory 工具 |
| Python SDK | client.capture_content_source(request) | client.search_memory(request) |
如果环境里 PowerContext 只以 MCP 形式接入,就用 MCP 工具; 如果两者都有,优先用 MCP(少一次序列化)。
执行步骤
1. 先召回,再动手
拿到问题后,先在目标 scope 里做一次记忆检索:
search_memory(scope_id=<scope>, query="<问题里的表名/现象关键词>", limit=5)
关键词要包含可检索的具体名词:表名、字段名、错误码、慢查询的特征。 泛泛的「数据库 性能」检索不到东西。
命中的记忆要判断是否仍然适用:
- 命中的结论依赖的结构、版本、参数是否与当前一致 → 一致才直接采用,并说明「沿用历史结论(记忆时间 …)」。
- 不一致或无法判断 → 只把它当线索,继续按第 2 步实地核实,不要直接照抄。
2. 实地核实(需要 seekdb 时)
记忆是线索,不是事实。要采信一条结论,必须在真实实例上验证:
-- 结构
SHOW CREATE TABLE <table>;
-- 执行计划
EXPLAIN <query>;
-- 真实数据特征
SELECT COUNT(*) FROM <table> WHERE <predicate>;
可用的 seekdb 能力:
- 全文检索:
MATCH(col) AGAINST('...'),用于定位关键词所在的行。 - 向量与结构化条件的混合检索:
ORDER BY l2_distance(embedding, '[...]') APPROXIMATE配合WHERE。 - 执行计划信息:优化器与执行路径可直接观察(EXPLAIN 输出里的 operator、estimated rows)。
不要把记忆里的行数、耗时、执行计划当成当前事实,一律以本次实测为准。
3. 把结论写成记忆
核实完,把结论写成一条可复用的记忆。写入内容至少包含:
| 字段 | 要求 | | --------- | ---------------------------------------------------------- | | 问题现象 | 具体的表、字段、错误信息或慢查询特征 | | 根因 | 一句话说清因果,不要写「优化了一下」这种没有信息量的话 | | 证据 | 核实用的 SQL 或命令 + 关键结果(行数、执行计划片段、耗时) | | 结论/处置 | 下次遇到同样问题应该先做什么、检查什么 | | 适用范围 | 版本、配置、参数等前提条件;不确定就写「未核实」 |
写入时把 scope 选成与业务域对应的那个(例如按系统、按服务名), 让下一个人能在正确的上下文里召回它。
4. 回答时区分「记忆」与「本次核实」
给用户的结论要能看出证据来自哪里:
- 「历史记忆(2026-03-14 记录):该字段是 JSON 文本,历史上通过加生成列解决 →
本次已核实:当前类型仍是
varchar,确认需要同样的处理。」 - 只有历史记忆、这次没核实 → 「历史记忆建议 …,本次未在实例上验证,请按 … 复核。」
- 只有本次核实 → 直接给结论,不需要提记忆。
记忆召回的检索习惯
- 表名、字段名、错误码是最强的检索词,优先放进 query。
- 一次检索不够就换词:表名 → 现象词 → 错误码,各检一次,合并去重后再判断。
- 检索结果很多时,按「与当前问题是否同一张表/同一个现象」收敛,不要把不相关的历史塞进结论。
边界
- 记忆里可能有过期的结论。任何要落地的动作,先在当前实例上验证。
- 不要把密码、连接串、密钥写进记忆。
- 一次排查的原始日志和长输出不适合整段存进记忆,只存结论与关键证据。
OB-S:lA1d9nEGt-k2Dqp3XdN4Bg
微信扫一扫