1. 文档目标
本文把 LLM-WIKI MVP 中必须自研的模块拆成可开发的技术 features。
每个 feature 回答三个问题:
- What:要实现什么能力。
- Why:为什么这个能力必须存在。
- How to Implement:工程上如何实现。
本文不重复非自研系统实施方案。GitHub、Docusaurus、RAGFlow、Meilisearch、商业 LLM API 等外部系统只作为依赖出现。
2. 自研模块总览
| 模块 | 类型 | MVP 形态 | 核心职责 |
|---|
| ConfigManager | CLI/library | 必须实现 | 配置读取、schema 校验、配置影响分析 |
| SyncEngine | CLI/library | 必须实现 | 来源同步、三方 diff、冲突报告 |
| WorkspaceStore | library | 必须实现 | publish/** 和 state/manifest 管理 |
| ReviewBridge | CLI/library | 必须实现 | Sync PR / Release PR 创建和更新 |
| AgentBridge | CLI/workflow | 必须实现 | RAGFlow 输出到 Git diff / Release PR |
| DisplayBackend Adapter | CLI adapter | 必须实现 Docusaurus adapter | 发布目录到展示后端 |
| Index Adapter | CLI adapter | 必须实现 RAGFlow + Meilisearch adapter | 已审批文档索引同步 |
| Answer API | HTTP service/serverless | MVP 可轻量实现 | 面向人的问答封装 |
| Agent Access API | HTTP service/serverless | MVP 可轻量实现 | 面向智能体的工具入口 |
3. ConfigManager
3.1 配置加载与合并
| What | Why | How to Implement |
|---|
加载 config/*.yaml 并形成统一运行配置。 | 所有同步、发布、索引、问答行为都必须由 Git 可审查配置驱动。 | 定义 ConfigBundle,读取 sources.yaml、publish.yaml、ragflow.yaml、agent-access.yaml、index.yaml、model-policy.yaml,禁止运行时隐式配置。 |
3.2 schema 校验
| What | Why | How to Implement |
|---|
| 校验字段类型、必填项、枚举值和路径约束。 | 错误配置会导致文档错发、覆盖或权限泄露。 | 使用 JSON Schema、Pydantic 或等价校验器;CI 和 workflow 运行前必须执行。 |
3.3 publishPath 唯一性校验
| What | Why | How to Implement |
|---|
确保多个 source 的 publishPath 唯一且不能互为父子目录。 | 防止两个来源互相覆盖、删除或污染三方 diff 基线。 | 对所有 publishPath 做规范化路径比较;发现相同、父子目录或越界路径时失败退出。 |
3.4 配置影响报告
| What | Why | How to Implement |
|---|
配置变更时生成 config-impact-report。 | ref/sourcePath/publishPath/include/exclude 变化会影响 source lock 和同步结果,不能当作普通内容变更。 | 比较 PR base/head 的配置差异,输出受影响 source、旧配置、新配置、预估新增/删除/迁移路径,并写入 PR summary。 |
4. SyncEngine
4.1 来源读取