Skip to content

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 存用户设置(按用户存清单,全局条目不动),被标记的主题/条目沉底淡化、可恢复,一键编译时自动剔除。
  • 主题排序与条目↔主题互显:主题页可见下辖条目,条目页可见所属主题,双向跳转;条目删除走三索引同步清理。

下一步

基于 AGPL-3.0 协议发布。