知识库安全合并:JSON 内容库增量更新不丢历史文章

前言

用 JSON 当内容源的知识库站、静态 CMS 或轻量后台,更新数据时常见失误是:incoming 文件只有几篇新稿,却被当成全量包直接覆盖正式数据源,历史 articles 一次性消失。手工 diff 大 JSON 成本高,项目里也未必已有合并脚本。下面介绍 SkillHub 社区 Skill「知识库安全合并」,用固定 SOP 和可选脚本,把「先识别数据源 → dry-run → 备份 → 合并 → 校验」串成可复现流程。

这是什么

知识库安全合并(坐标 @user_87a42d61/knowledge-safe-merge,版本 1.0.0)是社区发布者 user_87a42d61 在 SkillHub 上架的 knowledge-management 类 Agent Skill。SkillHub 页面简介为:安全合并知识库/内容库 JSON 数据,保留历史文章,避免整包覆盖。标签 requires_api_key=false,不依赖外部 API Key。

它面向根对象为 { "categories": [], "articles": [] } 的数据(articles 为核心,categories 可选),指导 Agent 区分正式数据源、镜像与 incoming 文件,默认假定 incoming 可能是增量而非全量,禁止未经预演与备份的覆盖写入。

官方入口:

  • SkillHub 展示页:https://www.skillhub.cn/skills/user_87a42d61/knowledge-safe-merge
  • API 坐标页:https://api.skillhub.cn/user_87a42d61/knowledge-safe-merge

(SkillHub 统计:评分 100000,下载 857,安装 32。)

核心功能

依据 Skill 包内 SKILL.md 与 scripts/merge_knowledge_json.py,已核实能力包括:

  1. 工作流约束:先识别 authoritative 正式数据源;incoming 默认按增量处理;先 dry-run 再看新增/更新/未变化/合并后总数;正式写入前备份;合并后校验 JSON 与页面(若涉及上线)。
  2. 合并规则:优先按文章 id 匹配;id 不一致时按「title + date」匹配;未匹配项追加为新文章;结果按日期倒序、再按 id 排序。
  3. 自带脚本:在无项目现成管道时,可用 merge_knowledge_json.py 对 --current 与 --incoming 执行预演或落盘;支持 --backup-dir、 --mirror、 --output。
  4. 产出清单:处理结束需汇报数据源路径、incoming 路径、统计项、是否备份/同步镜像、是否完成线上校验。

若仓库里已有稳定的合并或导入逻辑,Skill 要求优先复用项目方案,再考虑自带脚本。

安装与启用

通过 SkillHub CLI(Cursor、Claude Code、Codex 等通用)

先确认是否已安装 CLI:

command -v skillhub && skillhub --version

未安装时可按 SkillHub 安装文档执行完整安装(文档地址:https://skillhub.cn/install/skillhub.md):

curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash

安装 Skill 时必须用 --dir 指向当前 Agent 的 skills 目录,否则默认落在 ./skills/ 可能不会被识别。社区坐标需带 namespace:

skillhub install knowledge-safe-merge --namespace user_87a42d61 --dir <你的 skills 目录>

常用路径(来自 SkillHub 安装文档)示例:

  • Cursor:~/.cursor/skills/
  • Claude Code:~/.claude/skills/
  • Codex:~/.codex/skills/ 或项目下的 .agents/skills/

也可将下列提示词交给 AI,让其按安装文档完成安装:

请根据 https://skillhub.cn/install/skillhub.md,安装 `@user_87a42d61/knowledge-safe-merge`。

手工目录安装(WorkBuddy 系)

Skill 包 README.md 另提供文件夹拷贝方式:

  • 项目级:项目目录/.workbuddy/skills/knowledge-safe-merge/
  • 用户级:~/.workbuddy/skills/knowledge-safe-merge/

完整目录应包含 SKILL.md、README.md、references/、scripts/ 等,不宜只复制 SKILL.md。

典型用法

在 Skill 目录下,先对正式数据源与 incoming 做预演(--dry-run 只输出统计,不写文件):

py -3 scripts/merge_knowledge_json.py --current "正式数据源.json" --incoming "新数据.json" --dry-run

确认统计符合预期后,正式合并并覆盖正式文件;未指定 --backup-dir 时,备份会写到正式文件同级 .knowledge-backups/:

py -3 scripts/merge_knowledge_json.py --current "public/knowledge-data.json" --incoming "incoming.json"

若站点同时维护镜像 JSON,可在一次命令里写入正式源并同步镜像:

py -3 scripts/merge_knowledge_json.py --current "public/knowledge-data.json" --incoming "incoming.json" --mirror "knowledge-data.json"

需要保留原文件、将结果写到新路径时:

py -3 scripts/merge_knowledge_json.py --current "current.json" --incoming "incoming.json" --output "merged.json"

在 Agent 对话中,当出现「合并知识库 JSON、导入新文章但保留历史、迁移内容库、先预演再落盘」等表述时,应触发本 Skill 的上述流程,而不是直接 cp 或整文件覆盖。

适用场景与注意

适合:知识库站、内容聚合站、静态 JSON 驱动站点、简易内容后台;定期从导出或外部系统接入 articles 数组的场景。

限制与坑:

  • 数据结构若与 { categories, articles } 差异大,需先适配,不宜强行合并。
  • 每篇文章至少应可识别 title、content;id 不稳定时匹配会退化为「标题 + 日期」,需自行评估碰撞风险。
  • Skill 明确禁止:跳过 dry-run 覆盖生产数据、无备份写盘、把镜像或测试文件误当正式源、只验证新文章不核对旧文章是否仍在。
  • 合并脚本示例使用 py -3;在 Linux 上可改为 python3,路径需换成你项目中的真实文件。

结尾

知识库安全合并把 JSON 内容更新从「整包覆盖」改成「可审计的增量合并」:规则写在 Skill 里,执行可交给 Agent 与 merge_knowledge_json.py。需要安装或查看说明时,打开 SkillHub 页面 https://www.skillhub.cn/skills/user_87a42d61/knowledge-safe-merge ,或按坐标 @user_87a42d61/knowledge-safe-merge 用 CLI 安装到当前 Agent 的 skills 目录。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜