AI 工作流

让 AI 有边界地维护知识库:siyan-brain-skills

用三层模型、来源记录与分级写入规则,组织 Obsidian 第二大脑的建立与维护。

知识库需要保留什么

让 AI 整理笔记,可以节省归纳和关联的时间,也会带来新的问题:旧事实被覆盖,来源丢失,推测混入自我描述,或者矛盾被过早消除。

这些是需要防范的风险,并不意味着所有 AI 笔记方案都会失败。siyan-brain-skills 把来源、写入权限与验证步骤写进工作流,帮助使用者管理这些风险。

两个 Skill,一次建立,长期维护

这套东西分成两个 Skill,配套使用:

  • co-evolution-wiki 对应 /wiki,负责一次性把一个空的第二大脑骨架搭起来——完整目录、五个入口通道、系统规则、检索脚本、页面模板。
  • wiki-up 对应 /wiki up,负责之后每次主动触发的增量更新——扫描、分级、提升、重建索引、验证、出报告。

两者执行同一套硬边界:source 只读、不解析加密聊天、不摘录敏感值、不自动写自述层、不创建任何定时任务。更新只由用户主动触发,不存在 cron、不存在后台守护、不存在”半夜自动同步”。

三层模型:让事实、自述和结构互不污染

最底层的一个判断是:知识库不能只有一层。把项目信息、用户自我描述、知识库自身的变化历史混在一起,AI 就有了从项目成果反推人格的通道——做了 VR 项目不代表”喜欢沉浸式体验”,这种推断必须被物理隔绝。

所以这套架构把 vault 分成三层:

  • 事实层:可观察、可溯源、可证伪。项目、技术、人物、时间线、决策。每条事实必须能追溯到 file:/// 链接。
  • 自述层:只有用户明确说过的话——价值观、信念、原则、决策风格。只能通过 main-self-up 访谈通道写入,更新前先在 evolution/ 写快照。
  • 结构层:知识库自身的变化历史。目录改名、页面合并、schema 迁移、自述层快照,都进这里。

三层之间没有 AI 自己搭的桥。事实层不能推断自述层,自述层不能改写事实,冲突进 self/thoughts/contradictions 等用户澄清,不自动解决。

五个入口:每一种操作走自己的写面

“问个问题”和”全库更新”不应该有一样的写权限。这套架构给每种操作单独开了一个入口通道:

  • main-self:查询,只读,一行都不写。
  • main-self-update:全局深挖事实层,写实体页和索引。
  • main-self-empty:当前任务沉淀,只写本次任务碰过的页面。
  • main-self-up:自述层访谈和进化,写 self/thoughts/*,红区。
  • periodic-maintenance:用户输入 wiki up 后的全库维护,走 wiki-up Skill 的七步流程。

通道是操作方式,不是知识本体。知识本体还是三层。这样设计的好处是:一个”快速问一下”不会意外重写整个 vault,因为它根本走不到能写的通道。

七种判定:每条候选先分类,再决定怎么处理

更新时,扫描器吐回来一堆候选——新文件、改动过的 README、新出现的人物目录。在它们碰到任何页面之前,每一条都要先被归到下面七种之一:

  • create:全新实体,建页。
  • update:已有实体的新事实,追加而不是覆盖。
  • link:只新增关系,不动实体事实。
  • merge:两个页面其实是同一个,合并前先在 evolution/ 记录理由。
  • archive:过时了,标 archived 而不是删源事实。
  • ignore:命中忽略规则或与知识库无关,跳过。
  • conflict:两个 source 说法矛盾,进 inbox,不替用户选边。

第七种是关键。AI 最容易犯的错就是看到两个矛盾的 source,自己挑一个”看起来更对的”然后把另一个删掉。这套架构把矛盾当成需要保留的信息,而不是需要立即消除的噪音。

三区写入边界:自动写、确认写、必须批准

判定完类型还不够,写入本身还要过一道风险分级:

  • 🟢 安全区可以自动写:同步日志、简报、临时上下文、事实层追加、索引更新。低风险、可回滚、不碰身份。
  • 🟡 审查区确认后写:新建实体页、改 wikilink 关系网、inbox 提升为新页、结构调整。中风险,影响知识图谱。
  • 🔴 批准区必须明确批准:任何 self/thoughts/* 写入、用户的”是谁”部分、核心原则、历史快照。高风险,直接影响”用户是谁”,AI 永远不能擅自写。

无论哪个区,还有几条绝对禁止:不从项目成果反推人格、不从聊天片段推断价值观、不美化也不黑化、不做心理诊断。这些不是建议,是硬边界。

inbox:不确定的东西不进事实层

如果一条候选事实没法同时满足六个自动提升条件——source 路径明确可读、实体映射唯一、无未解决冲突、可观察不涉及身份、不含敏感值、相关页面和索引能一起更新——它不会进任何 canonical 页面。它会进 _system/inbox.md,带着 source 链接、未通过的条件、建议的处理路径,等人裁决。

inbox 是这套架构的泄压阀。冲突、敏感值、自述推断、文件名-only 证据、可能过时的状态——全部走这里,而不是直接落进事实层。AI 永远不自己解决 inbox 里的条目。

L0–L3 分级检索:从最便宜够用的层答题

回答问题时,不是把全库原始文件铺开看,而是按层级走:

  • L0 路由:用 INDEX 和分类索引确定主题范围。
  • L1 canonical:默认从权威实体页答题——项目、技术、人物、领域。
  • L2 context:需要历史、原因、变化过程时,再读时间线、决策、上下文页。
  • L3 evidence:只有证据不足或用户明确要来源时,才读 source 页和打开原始文件。

这样问答从最便宜够用的层出发,context window 不会被原始文件淹没,用户也不会在问”X 项目是什么”时拿到一整屏的源码。

验证契约:没通过就回滚,绝不提升坏数据

wiki up 的最后一步不是”写完了”,是验证。Markdown frontmatter 合法、ID 唯一、wikilink 可解析、file:/// 链接可打开、无隐私违规、新事实有 source 覆盖、检索数据库和 manifest 是同一代、golden-query 阈值通过——任何一条不过,本次改动的所有页面从备份回滚,保留上一代已知良好的检索对。

检索数据库和 manifest 只是可重建缓存。Markdown 是唯一事实来源。缓存坏了不污染事实,只让搜索降级。

两个命令试用

初始化一个新 vault:

python skills/co-evolution-wiki/scripts/init_wiki.py \
  --owner "你的名字" --vault "/path/to/wiki"

之后每次更新就一行:

wiki up

完整安装、架构说明、验证契约见 siyan-brain-skills 仓库

写在最后

让 AI 维护知识库的真正难点,不是让它更聪明地写,而是让它在该停的地方停。三层模型挡住身份反推,七种判定保留矛盾而非消除,三区写入边界把高风险写入留给人工批准,inbox 接住所有不确定的东西。这些规则为长期维护提供了依据;实际效果仍取决于来源质量、人工审阅,以及执行时是否遵守约定。