综合管线:矛盾、预算与批准
Simmetric Chat 的 synthesis pipeline 如何把一个归档的文档组合成 wiki 页 —— 每次运行以 token/调用/页数预算约束、矛盾检测经由相似度预过滤与 LLM 裁判、并在任何东西碰到文件系统之前经过选择性批准。

文档意见不合的地方,它会直说
wiki engine 的页面解决存储;synthesis pipeline 解决的是一致。给它一个归档的文档集合,它产出组合后的 wiki 页 —— 每一页团结它的来源,并在来源分歧的地方以矛盾标记直说。在人类确切批准所提议之物之前,什么都不会落到文件系统上;而且每次运行都被 token、调用与页数的显式预算约束。
本文走一遍设计:分级的管线、矛盾候选如何形成并被裁判、预算如何让运行诚实,以及为什么批准关卡 —— 而不是模型 —— 决定什么可以出运。
一项 Community 功能(管线与聊天 orchestrator 同一基础设施;每次运行有预算)。数据:FACT-CENSUS.md F-SYNTH-1。分级的管线
一次合成运行由服务的门面在一组阶段上编排:
- 实体抽取 —— 在选定的语料上。
- 每源的页面 —— 管线为每份来源起草自己的页面。
- 最终块 —— wiki 的组合页,写入时归档的顾问块带在决策阶段的 SYSTEM 角色上(注入 seam 是明确的:顾问轨道只进入最后的、决定性的阶段)。
各阶段经过同一个 LLM 调用包装器运行,所以预算在一个地方清点每一次调用。
矛盾检测:先过滤,再裁判
把每句话和其余每句都对打是平方级的,而且大多是噪声。管线的拆分是:
- 候选对按相似度形成 —— 一个 Jaccard 式预过滤器、阈值取低(0.15),把值得再看一眼的对浮上来。
- 可疑对送给 LLM 裁判 —— 每对一次调用,读两句断言、下判断:是矛盾,还是不是。
- 判决以矛盾标记的形式落在涉及的两页上,两侧各带一行断言摘要。
另有每周一次的保真度抽样量测流程的准确度 —— 检测器的质量本身就是一个被记录、被观察的数字。
预算追踪器
每次运行约束三种预算 —— token、LLM 调用、产出的页数。它们从同一个包装器的计量取数:
- 停止 = 一个命名的、被期待的状态:已写出的输出保持有效;运行结果永远不是半页的悬置。
- 看门行为与聊天 orchestrator 平行 —— 跑飞了的运行花不超它的配置。
这就是操作者的守卫:综合是后台的消费者,它的胃口是显式的。
选择性批准 —— 让它安全的东西
管线提议的变更不会自动落地。每次写入都过批准流:
- 提议的页面先生成确定性的预览(与 wiki 写路径同一台机器)—— 你审到的,就是会落地的。
- 批准者确认 —— 只有被批准的修改持久化(
applyApprovedChanges)。 - 每一页提议都带自己的来源 frontmatter —— 出处与提议同行。
模型提议;人发货。这个分工是这条管线的全部安全姿态:LLM 可以读一切,但文件系统只听批准者的。
清扫:触发器与收割者
- OCR 后触发 —— 扫描完成时,触发服务把一次合成运行排进队列(带冷却时间,一批扫描不至于冲垮队列)。
- 收割者 —— 一个 15 分钟的调度器把孤儿化的
PROCESSING运行翻成FAILED—— 崩掉的运行永远不会被当成“忙碌”。
继续阅读
操作者级的细节 —— 阶段表格、触发端点、预算键 —— 在 /zh/docs/synthesis-pipeline:
- Synthesis pipeline —— 操作指南
- 本文数据:
FACT-CENSUS.md行 F-SYNTH-1(多文档合成 + 矛盾检测 + 预算跟踪)
Provenance:Simmetric Chat 的 docs/SERVICES.md(Synthesis 域;synthesis* 模块)+ README.md:33、docs/WIKI_SCHEMA_LAYER.md(Pass-4 注入 seam)、CHANGELOG.md v0.28.1 —— 处于 census 固定的文档状态(SHA aca5b8ff)。


