nim-kb-record
NIM 知识库录入(AI 问答)
从当前 AI 会话上下文提取结构化条目,执行去重检测后写入知识库并推送。
流程:字段提取 → 去重检测 → 确认 → 写入 → 推送
CLI 触发标记
触发本 skill 时,第一行必须输出一行简短的标记,格式如下:
[nim-kb-record] 已触发 | 来源=ai_qa | 状态=提取中
规则:
- 仅一行,不换行
- 标记行之后继续执行字段提取
- 随流程推进,在各阶段开始时更新
状态:去重检测中/待确认/写入中/完成
触发条件
触发词(用户明确发出以下指令时触发):
录入知识库 / 保存到知识库 / 记录一下 / 存到知识库 / 入库 / 记到知识库里
不触发:
- 用户未主动发出录入指令
- 当前会话无明确的
root_cause或solution(此时提示用户:⚠️ 当前会话尚无明确结论,建议问题分析完成后再录入) - 用户在确认框中选择取消
知识库同步(录入前执行)
首次使用检查(仅需配置一次)
该仓库为公开仓库,拉取(clone/pull)无需认证。但录入后需要 push 写入,须提前配置:
# 配置凭证缓存,避免每次 push 输入密码
git config --global credential.helper store
首次 push 时按提示输入 GitHub 用户名和 Personal Access Token(不能用密码),之后自动免密。
Personal Access Token 获取:登录
github.com→ 右上角头像 → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token,勾选repo权限。
同步命令
KB_DIR="$HOME/nim-knowledge-base/rags/knowledge"
KB_REPO="https://github.com/19967431260/rags.git"
[ ! -d "$KB_DIR/.git" ] && git clone "$KB_REPO" "$KB_DIR" || (cd "$KB_DIR" && git pull origin master)
同步失败时中止录入:❌ 知识库同步失败,请检查网络或 GitLab 账号权限后重试
工作流程
阶段 1 - 字段提取
按 references/record-prompt.md 的规则,读取完整会话上下文,提取以下 14 个字段:
product / feature / platform / title / description / troubleshooting / root_cause / solution / cause_type / tags / customers / track_type / sub_type / session_date
字段定义、track_type / sub_type / cause_type 枚举、产品矩阵详见
references/record-prompt.md。
字段默认值:
| 字段 | 无法提取时 |
|---|---|
platform |
通用,确认框中提示用户补充 |
root_cause |
"" |
customers |
[] |
cause_type |
排查类必填(填 待确认),咨询类填 "" |
session_date |
今天的日期 YYYY-MM-DD |
提取失败时输出错误原因,等待用户重试。
阶段 2 - 去重检测
扫描知识库 ~/nim-knowledge-base/rags/knowledge/ 中的候选文件,按 references/kb-management.md — "去重判断规则" 执行两阶段检查:
第一阶段:强匹配过滤(track_type + sub_type + product 三者均一致才进入下一阶段)
第二阶段:相似度计算
- 排查类:
结论相似度 = Jaccard(root_cause + solution) - 咨询类:
咨询相似度 = Jaccard(tags) × 0.6 + Jaccard(title) × 0.4
| 类型 | 阈值 | 判定 |
|---|---|---|
| 排查类 | 结论相似度 ≥ 0.60 | 【高度相似】建议合并 |
| 排查类 | 0.40 ~ 0.60 | 【可能相关】人工判断 |
| 咨询类 | 咨询相似度 ≥ 0.65 | 【高度相似】建议合并 |
| 咨询类 | 0.40 ~ 0.65 | 【可能相关】人工判断 |
| 任意 | 低于下限 | 不展示 |
扫描路径:
- 排查类:
rags/{product}/{feature}/{platform}/排查-*.md及线上案例/*.md - 咨询类:
rags/{product}/{feature}/{sub_type}.md内所有 entry
阶段 3 - 确认框
展示提取结果供用户确认,所有字段均可在此修改:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📥 知识库录入确认
产品:{product} 功能:{feature}
平台:{platform} 类型:{track_type} / {sub_type}
标题:{title}
问题描述:{description 前 80 字…}
排查过程:{troubleshooting 非空→"✅ 已提取 {N} 步",否则"—"}
根因:{root_cause}
解决方案:{solution}
根因类型:{cause_type}
标签:{tags} 客户:{customers}
目标路径:{target_path}
── 去重检测结果 ──────────────────────
{相似条目列表,或"✅ 未发现相似记录"}
─────────────────────────────────────
[✅ 确认录入(新建)] [🔁 合并到已有] [❌ 取消]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
阶段 4 - 写入知识库
写入路径规则、文件模板、咨询类追加格式详见
references/kb-management.md— "录入规范" 节。
新建(排查类):按模板创建文件,source 固定为 ai_qa
新建(咨询类):追加 entry 到对应聚合文件(不存在则新建文件头)
合并到已有文件(排查类):
- 验证
root_cause语义一致,不一致则中止并提示 - 在「其他触发场景」节追加:
- [{platform}] {title},来源:{customers},{today} - 更新 YAML
customers(取并集)、updated
合并到已有 entry(咨询类):
frequency + 1,合并customers- 更新文件头
updated
阶段 5 - Git 提交推送
Commit 格式详见
references/kb-management.md— "Git Commit 格式" 节。
cd ~/nim-knowledge-base/rags/knowledge
git add .
git commit -m "{commit_message}" # source_label = AI问答
git push origin master
完成后输出:[nim-kb-record] 完成 | 操作={新建/合并/追加} | 路径={file_path}
详细文档
- record-prompt.md - 字段提取规则
- kb-management.md - 知识库管理规范(路径、模板、去重、Commit 格式)