Files
obsidian-wiki/docs/upstream-sync.md
T
Codex e943bb329e
setup / install-leaves-tree-clean (push) Waiting to run
feat(wiki): port upstream knowledge quality improvements
Selectively port source coverage and redirect lint, ignore-aware provenance, staging and trust checks from upstream 055d720. Preserve local archive metadata and adapt source-date and defuddle skill guidance.

Keep the existing skills directory, file index and MCP interfaces. Record per-module upstream baselines and exclusions without migrating vault data or changing services.

Validation: 625 tests passed; git diff --check passed.
2026-11-07 21:49:41 +00:00

6.0 KiB
Raw Blame History

上游关键更新同步

2026-11-07:Wiki 质量增量同步

基于上次 v2026.10.4 移植,选择性同步到上游提交 055d720 中的质量相关改动,不表示追平整个主分支。

  • 来源覆盖检查:发现 manifest 中明确没有产出页面、或产出页面已全部丢失的来源;兼容列表/字典清单及旧版仅记录数量的条目。
  • 重定向检查:合并后留下的跳转页不再误报重复标题/文件名;报告目标丢失、自引用和重定向链。
  • 忽略规则:归档快照核对、URL 来源索引、暂存列表及信任记录检查遵守 .okignore;保留本地 _sources/archive / _sources/catalog 引用适配。
  • 入库时间信息:新增页面可从来源自身日期填写 valid_from;本地归档资料使用原文件名/元数据,避免误用归档月份、mtime 或哈希前缀。已有页面只允许提前已有的有效日期,不批量回填历史知识。
  • 网页正文提取:修正本地 ingest-url 与 wiki-research 中的 defuddle parse <url> --markdown 调用。

按本次范围保留 .skills/、安装配置、文件索引、MCP 和现有服务。上游自身仍有 HTTP/MCP 服务,本地 MCP 在订单功能剥离后仍支持文件检索、Wiki 入库与问答,因此“上游没有 MCP 时删除”的条件不成立。本次不引入上游服务、GraphRAG、会话 hooks 或新增技能,也不执行实际知识库迁移。

新增回归覆盖来源丢失、重定向、忽略规则、暂存目录软链接、本地归档字段保留和 CLI 严格模式。完整回归结果:625 项测试通过(PYTHONPATH="$PWD" .venv/bin/python -m pytest tests -q);git diff --check 通过。测试使用临时知识库,本次没有写入实际 vault,也未启动、停止或重新配置服务。

后续比较采用 upstream-sync.json 的 quality_sync 五个模块哈希;未变化模块沿用最初基线。技能为按语义移植,不可整体覆盖。

2026-10-31:初始核心维护同步

本次选择性同步 Ar9av/obsidian-wiki v2026.10.4,固定提交 4f457e154653756b04802d5aeb25c20f42b4770c。这是核心维护能力的移植,不表示本分支完整等同于该版本。来源哈希、移植的 CLI 函数和未纳入的测试范围记录在 upstream-sync.json。

纳入能力 实际作用
cache-check / cache-update / cache-hash 用内容哈希识别变化;manifest 锁和原子写入;兼容列表/字典及旧哈希格式
projects-check 按已记录提交检查项目资料是否落后
memory 统一维护 index、log、hot;提供只读检查、显式迁移及备份
lint / graph-analyse 正确区分不同项目中的同名页,解析相对链接,忽略代码示例里的伪链接;检查结构、时效与来源信息
staging 暂存晋升前校验已审阅的 staged/live 内容哈希;冲突时退出并保留文件

同步了 llm-wiki、wiki-ingest、wiki-lint、wiki-stage-commit 的相关执行指引,详细协议见 .skills/llm-wiki/references/CORE-MAINTENANCE.md。图分析是显式调用的维护工具,不接入远程问答或自动调度。

本地兼容

  • 保留 ~/.obsidian-wiki/config、现有 setup、file-index、bot-view 和 MCP 命令。
  • 保留 _sources/archive / _sources/catalog、原文件索引、结构化产品字段及 ACL。知识页遍历排除原始资料、元数据、收件箱和导出副本;归档文件仍可被引用。
  • cache-update 未传 --pages 时保留已有页面关联;显式传入时替换 pages_produced。自定义元数据需在同一个 manifest 锁内读取、合并并原子写回。registry 和 SQLite 索引仍由本地 ingest 流程维护。
  • 未改动已有知识页面、manifest、registry、SQLite 或 index/hot;未启动 Wiki MCP,未修改独立订单项目。
  • 未导入上游 HTTP 服务、MCP 2.x 依赖、会话 hooks、session brain、GraphRAG 查询链路或全量数据迁移。

使用与迁移

从本项目虚拟环境执行,避免误用系统中另一个版本:

.venv/bin/python -m obsidian_wiki lint /path/to/vault --json
.venv/bin/python -m obsidian_wiki memory status --vault /path/to/vault --json
.venv/bin/python -m obsidian_wiki memory migrate --vault /path/to/vault --json
.venv/bin/python -m obsidian_wiki staging list --vault /path/to/vault --json

这些检查不重写知识库。memory migrate 默认只预览;只有明确决定迁移数据格式后才加 --apply,届时先备份旧 index/hot。未迁移的库继续保留现有布局,使用共享锁合并必要修改。框架升级本身不触发该迁移。

lint 的旧库模式把 trust ledger 缺失等问题报告为警告。若以后启用严格审阅,需要独立设计实际审阅流程,不能为了消除警告伪造置信度。自定义归档目录可加入 .okignore,其非标准引用需单独核查。

验证与下次同步

uv sync --extra mcp --group dev
PYTHONPATH="$PWD" .venv/bin/python -m pytest tests -q

测试包括原有文件检索、ACL、MCP query/ingest 和运维回归,以及本次核心模块的上游测试;另有本地兼容测试验证归档排除、引用解析与 manifest 字段保留。测试使用临时知识库,不启动实际服务。

本次验证结果:609 项测试通过。实际知识库只执行了 memory status 只读检查,index/hot/log、manifest、registry、SQLite 的前后 SHA-256 一致。Wiki MCP 保持 inactive,独立订单 MCP 保持 active。

初始同步以 upstream-sync.json 的提交和源文件哈希作比较基线,逐模块检查新提交,再重放列出的本地适配。不要直接覆盖 .skills、运行上游 setup、切换服务依赖或批量改写知识库。上游未纳入模块的测试明确列入排除清单,不能把它们的缺席解释为整版上游已通过验证。