返回文档
指南 00

Wiki 知识引擎 — 有架构约束的档案、wikilink 与综合摘要

Wiki 引擎给每个档案一个三层指令模型:由代码强制执行的硬规则、每个档案各一份的架构 prompt(advisory 性质的编辑准则)以及结构化字段(persona、purpose、scope)。心智模型:schemaPrompt 之于 wiki,如同 CLAUDE.md 之于一个代码仓库。

1 分钟阅读

Wiki 引擎给每个档案一个三层指令模型:由代码强制执行的硬规则、每个档案各一份的架构 prompt(advisory 性质的编辑准则)以及结构化字段(persona、purpose、scope)。心智模型:schemaPrompt 之于 wiki,如同 CLAUDE.md 之于一个代码仓库。

Community 功能。Wiki Schema Layer 的运维参考(Phase 187,在 v0.25 屏障时已审计 — WIKS-01/02,已对运行中代码验证)。来源:docs/WIKI_SCHEMA_LAYER.md(v0.28.1)。来源行:FACT-CENSUS.md F-WIKI-1。

三层模型

层性质执行方式范围
硬规则代码强制、无条件validateWritablePath + 始终注入的 prompt 块每条与档案绑定的写入路径
schemaPrompt每档案的编辑准则仅数据 + prompt(绝不是一道屏障)按档案,opt-in(留空 = 关闭)
结构化字段按配置注入的 persona/purpose/scope既有的 synthesis/orchestrator 行为按档案,不变

硬规则(code-enforced)

两个无条件机制,不依赖任何配置:

  1. 文件系统守卫。 validateWritablePath(packages/server/src/utils/archivePath.ts:39-54)拒绝任何位于 <archiveBase>/wiki/ 之外的写入目标:先做反 traversal 检查(validateArchivePath),再做 wiki/ 前缀检查 — 位于 wiki/ 之外的目标会抛出 Write target outside wiki/ directory: <path>. raw_sources/ is immutable. createPage 与 updatePage 都会在任何 fs.writeFile 之前调用它。没有任何 API endpoint 会写入 raw_sources/ 之下 — 它按设计不可变。
  2. prompt 层之上的镜像。 HARD_RULE_RAW_SOURCES(archiveConfigService.ts:52-53)是一个始终开启的块,附加到每段与档案绑定的 prompt:其措辞镜像守卫(raw_sources/ is immutable),使模型连尝试钻出 wiki/ 的念头都不会有 — 即便有,代码也保证什么都不会落地。

schemaPrompt(advisory)

一个自由文本字段,持久化在档案的配置 JSON 中:

  • 架构: archiveConfigSchema 上的 schemaPrompt: z.string().max(10000).optional() — 一个增量键,零迁移。10000 字符 ≈ 约 2500 tokens。
  • 验证: 每次写入都做 Zod 验证(PUT /api/archives/:id/config);超出上限的 payload → 400 { error: "Invalid config", details.schemaPrompt }。
  • 读取契约: 对没有存储行的档案执行 GET /api/archives/:id/config → 200 返回架构默认配置({ rawSourcesImmutable: true }):这就是首次保存的加载路径;有行的档案原样返回保存的 blob。
  • 注入时的上限: 超过 10000 字符的旧版 blob 在注入时以 (truncated at 10000 characters) 标注截断 — 旧行在读取时绝不再校验。
  • 按设计是 advisory: 该块以数据身份进入,带明确的 advisory 标注,绝不是 system prompt 的权限授予。除长度上限外无任何过滤;自相矛盾的指令 = 一个被接受的品质风险,由 UI 的提示文字与模板缓解。

优先序

text
硬规则(代码) > schemaPrompt(advisory) > 结构化字段
  1. schemaPrompt 永远不能压过硬规则(prompt 声明了这一点;代码强制执行)。
  2. 与结构化字段冲突时,schemaPrompt 胜出(On conflict with the structured fields (persona, purpose, scope), these guidelines take precedence over them.)。
  3. 没有 schemaPrompt 的档案按基线 + 硬规则运行 — 零增强、零退化(prompt 中不会出现空白占位段)。

块在 prompt 中的落点

衔接点位置说明
Chat orchestrator(非流式)orchestrator.ts:295-302(runAgent)硬规则始终在 + advisory 块存在时追加
Chat orchestrator(流式)orchestrator.ts:805-812(runAgentStreaming)流式孪生,顺序相同
Synthesis Pass 4(决策)synthesisStages.ts:784-788advisory 块挂在 SYSTEM 角色上;Pass 1/2 与矛盾判定保持 undefined

在 system prompt 内部:位于 MANDATORY SEARCH RULE 块之后、systemPrompt 三元式之前。

wiki_query 与 wiki_write

内置的 wiki_query 和 wiki_write 是其 execute() 路径完全不调用 LLM 的 skill:写入路径生成确定性的预览(wikiWriteService.ts 内没有 LLM 调用)— 按 skill 注入到不了任何模型;面向 LLM 的唯一表面是 orchestrator 的 system prompt。

rawSourcesImmutable

archiveConfigSchema 上的 rawSourcesImmutable: boolean(默认 true)是一个文档性标志,绝不是执行开关:不可变规则无论该标志为何都成立(validateWritablePath 守卫 + 始终开启的块作保证)。

本指南介绍Wiki 引擎的操作面;工程深潜见孪生博文:

Provenance

章节来源
三层模型 / 硬规则docs/WIKI_SCHEMA_LAYER.md(§ The 3-layer model, § Layer 1)— F-WIKI-1
schemaPrompt / 优先序 / 衔接点docs/WIKI_SCHEMA_LAYER.md(§ Layer 2, § Precedence chain, § Injection seams)
审计Phase 187 commits;在 v0.25 屏障定稿(WIKS-01/02, Phase 194)

---

运维参考 — Simmetric Chat v0.28.1(文档更新于 2026-10-02,普查 SHA `aca5b8ff`)。