LLM Wiki
LLM Wiki 把用户积累的原始材料(笔记、剪藏、知识单元、文档)按主题自动综合成可维护的百科条目,并围绕条目建立版本史、规则 lint、语义深检、检索接入与图谱接入的完整生命周期。它要解决的问题是:原始材料是碎片,综述性知识(「我关于 X 都知道些什么」)需要有人持续整理——Wiki 把这个整理工作交给模型编译 + 规则巡检的闭环,人只负责选题、审阅和回滚。代码位于 backend/app/services/wiki_service/ 包(原单文件拆为 7 子模块 + façade:compile / entries / lint / members / prompts / topics / versions)。
核心概念
| 概念 | 说明 |
|---|---|
| 主题(topic) | 条目的组织单元,来源分支:tag / community / concept / manual(手动选题) |
| 条目(entry) | 一页 Markdown 百科,由成员来源编译而成,带别名、摘要、来源清单 |
| 条目状态 | fresh(最新)/ stale(部分来源变化)/ review / orphaned(来源全灭) |
| source_hash | 已编来源的现值指纹;编译幂等与 lint 漂移检测都靠它 |
| 规则 lint | 纯 SQL 零模型的状态巡检:来源全灭 → orphaned,来源指纹漂移 → stale |
| 语义深检 | LLM 趟的手动检查:内容质量、缺漏概念建议,报告落库 |
| 不看重 | 用户级标记(wiki_dismissed),沉底淡化、可恢复、一键编译时剔除 |
主题与条目编译
- 编译模型默认
sys-glm-5.3-flash(GLM 5.3 强制思考,分钟级配速为已知代价),也可选本地qwen3.5:0.8b零成本;估价/编译/lint 口径一致走channel_policy。 - 幂等:条目已存在且
source_hash与当前指纹一致、状态为 fresh/review 时直接跳过,不重复调用模型(compile.py:141)。 - 手动选题编译:manual 分支以
manual:{uuid8}为 key,成员必须预载,固定快照语义——就以选题时刻的内容编一页;「手动编一页」「并入内容…」两个入口,并入时对已编来源全量重综合并更新指纹(compile.py compile_manual)。 - 语料口径:四类内容标题/正文,仓库模式
index_only内容不进编译语料。
版本史与回滚
wiki_entry_versions每版快照(内容/摘要/别名/来源/指纹/模型/费用),基线回填迁移给存量条目补 v1。- 回滚零模型不计费:读目标快照写回内容五件(content_md / summary / aliases / source_ids / source_hash 一起回,回滚后 lint 不误标 stale),
version + 1写新快照行——版本号绝不复用,回滚产物也是新版本,可再回滚撤销(versions.py rollback_entry)。
规则 lint 定时闭环
run_lint_sweep全空间规则 lint:纯 SQL 零模型,个人空间按属主各跑各的、团队按租户口径跑,单空间失败 warning 留痕不拖垮整轮(lint.py:207)。- 调度闭环:boot 120s 首扫(DateTrigger)+ 每小时一扫(IntervalTrigger,
max_instances=1+ coalesce),幂等哨兵防重复挂载(lint.py initialize_wiki_lint_scheduler)。事件驱动之外必有定时兜底。 - orphaned 天然离线:来源全灭的条目只翻状态,自动重编不做(避免无源生成);要恢复就手动重新选题编译。
语义深检
- 手动触发、按量计费,与规则 lint 分两趟:规则趟管状态,LLM 趟管内容(
lint.py deep_lint)。 - 轮换口径:按
last_deep_linted_at空值优先 + 最久没检优先,复核过即盖章,避免永远只检头部条目。 - 报告落库
WikiLintReport(模型/复核条目/候选全集),并给出「反复被提及但没有条目」的缺漏概念建议,可一键成条目。
检索与图谱接入
- 条目进融合检索基座:标题/别名/摘要/正文的关键词重叠直选命中后,进 prompt 的【百科条目】区当综述骨架,不占 [n] 引用源位——[n] 只认原文层;条目登记来源可并入参考资料(
endpoints/llm/chat.py:69,316)。三个索引只收 fresh/stale 状态的条目。 - 条目进图谱:语义图合成
wiki:{id}节点 + 指向成员节点的「溯源」边(EXTRACTED 置信度);无后端坐标时按md5(entry.id)算确定性坐标绕原点分布,3D 坐标 all-or-nothing 不退化(endpoints/graphify.py:355-385)。物理图特判:wiki 节点带wiki:前缀防撞名,只收 fresh/stale(physical_graph_service.py:101)。?focus=wiki:{id}直达高亮 + ego-graph。
不看重、排序与互显
- 不看重:
wiki_dismissed存用户设置(按用户存清单,全局条目不动),被标记的主题/条目沉底淡化、可恢复,一键编译时自动剔除。 - 主题排序与条目↔主题互显:主题页可见下辖条目,条目页可见所属主题,双向跳转;条目删除走三索引同步清理。
下一步
- 检索引擎与向量存储:【百科条目】区在融合装配中的位置
- 知识图谱 GraphRAG:wiki 节点与溯源边的生成口径
- 模型管理与双通道计费:编译/深检的默认模型与按量扣费
- 知识图谱(用户指南):百科页签的操作入口