Skip to main content

Wiki 知识库

Myrm 提供编译型知识库(Wiki)——不是让 Agent 解读的一堆 markdown 技能。专用引擎负责编译、索引、检索、审核与维护。同一工作流适用于本地 WebUITauri 桌面SaaS 云端

按智能体隔离的 Wiki

每个智能体可有独立 Wiki 库。在 设置 → Wiki 使用 智能体范围 下拉(或从智能体横幅打开 /settings/wiki?agentId=<id>)。统计、编译、维护与导入均作用于所选智能体。 诚实边界(Agent Scope SSOT v2 落地前): 队列 Tab 与 ingest SSE 会随所选智能体立即切换;若在 待审词条 Tab 内切换下拉,在 scope 全链路重载完成前请刷新页面或切 Tab,避免误把 A 库草稿批准进 B 库——这是下一版 scope 硬化要闭合的 P0 风险。 工件 存入 Wiki 与聊天入库会使用当前会话的 agent id,避免误写入默认库。

记忆 + Wiki 统一检索

智能体配置中同时启用 Wiki 与 Memory 时,Myrm 挂载 knowledge_recall_toolcorpus=all)— 一次工具调用同时检索长期记忆与该智能体 Wiki。记忆命中会写入 citedMemoryIds 供 UI 展示;Wiki 命中在工具结果文本中返回。 默认智能体已开启 Memory;在 智能体配置 → 内置工具 中打开 Wiki 即可走统一检索路径。

Memory 引用按钮(刷新不丢)

当助手召回语义/情节记忆时,已完成消息的操作栏会显示 Memory N 按钮。打开 Sheet 可查看影响回答的记忆(类型、分数、命名空间、跳回来源会话)。 引用会写入数据库刷新页面后仍在 — 不依赖仅 SSE 的临时状态。

打开 Wiki 设置

  1. 进入 设置 → Wiki 知识库 (Wiki)
  2. 使用标签页:
    • 概览 — 用途、统计、编译/维护操作、即席查询。
    • 词条管理 (Concepts) — 文件夹树、CRUD、拖放。
    • 待审编辑 — LLM 草稿的人工审批/驳回。
    • 队列 — 文档摄取流水线状态。

编译过程实时可见(需打开 Settings Wiki 页)

在浏览器或桌面端 设置 → Wiki 页面保持打开时:
实时推送仅在 Settings Wiki 页 EventSource 连接期间生效;关闭设置页即停止 SSE——这是 GUI 范围内的可见性设计,不是后台守护进程。Hermes SKILL / OpenClaw 纯 MD 文件夹等竞品无等价 Queue 面板 + compile 中树 badge live。

外部来源同步(Settings 概览)

设置 → 知识库 → 概览 → 外部来源 可将收藏邮件与 RSS 定时或手动拉入 wiki/raw/ 零 LLM pull: 拉取 Gmail/RSS 不调用对话模型。仅当配置了模型且开启 同步后自动编译 时才会消耗 LLM。 定时任务: 稍后读知识内化 蓝图每日运行(第二大脑预设常搭配 知识库晨间摘要)。Router 任务 __wiki_source_sync__ 在服务端执行,不挂载 Agent 工具 — 安全、确定性自动化。 可观测性: 卡片展示上次同步时间、新增/跳过/失败计数,以及首条错误(如 Gmail label not found)。
诚实边界: Gmail 标签与 Drive 文件夹 ID 均需手动输入,无标签下拉或 Drive Picker。请在 Gmail 中创建同名标签(预设默认 ReadLater)。若已连接 Google 但缺少 Drive 只读 scope,卡片会显示重连提示google_drive_authorized: false)。不支持 OneDrive(无 Microsoft OAuth 基建)。配错会在同步结果中显示,不会静默忽略。
测试(2026-07-30): gdrive 3 + gmail/rss/status/oauth 12 + state/config/defaults/blueprint/hygiene/second_brain 15 + gmail_html 2 = 32 pytest 通过(mock Gmail/Drive API;本轮未跑 Chrome MCP)。 回归测试(2026-07-29 复测): Harness 6 raw_gate + 48 persistence/raw security + 21 apply/canonical + Server 9 wiki_apply/import raw_gate + 40 obsidian_adapter pytest(分批 ~18s)。本轮未跑浏览器 MCP E2E。

编译期演变合成(CCSP)

编译 Wiki 时,Step 2.5 会在常规文章生成之后运行 编译期矛盾合成(CCSP) 实时计数: ingest SSE 推送 synthesis_pending_count;保持 Settings → Wiki 打开时 Overview 可静默刷新。 相对 OpenClaw 的差异化: OpenClaw 写 reports/contradictions.md 并依赖 CLI 跟进。Myrm 把同等 intelligence 放在 Settings 待审队列 + GUI 筛选 + 双向 Timeline — 更贴合 Article 8「请你决定哪条定义优先」。 诚实边界: 仅 cross-concept(同 batch 同名 merge 跳过)。这是 Wiki 编译合成,与 Memory ConflictCard 通知是不同链路。 测试(2026-07-29): Harness 8 + 12 + Server 2 = 22 passed。本轮未跑浏览器 MCP E2E。

在树中管理词条

词条管理
  • 新建文件夹 — 选择可选父文件夹(根或嵌套),命名。
  • 重命名 / 删除 — 悬停行;删除显示完整路径及将移除的条目数。
  • 拖放 — 在父级间移动文件夹或词条(服务端更新链接引用)。
  • 详情面板 — 选中词条查看富渲染内容(Mermaid 图表、KaTeX 数学公式、GFM 表格、代码语法高亮、暗色模式),或切换到原始 Markdown 编辑。
  • 四 Tab 编辑(Edit) — 经 POST /wiki/apply 窄写(非整页 PUT):
    • Compiled Truth — 仅 patch ## Compiled Truth 区块。
    • Timeline — 只追加条目;重复行会 toast 跳过。
    • Metadata — Settings 路径下 replace tags/aliases(Agent merge 走不同 caller 门禁)。
    • Advanced — 整页 replace;仅 Settingscaller=settings)。Agent/聊天不可用此 op。
每次保存携带页 租约if_match = 上次 content_hash)。若其他 Tab/客户端已先改页,会 toast 页冲突 — 请刷新后重试。

受控写入面(POST /wiki/apply

所有 Wiki 变更统一走 POST /wiki/apply?caller=settings | agent | chat)。 写时去重: canonical_id 与 alias 索引在创建时拒绝近义重复页(HTTP 409 canonical_conflict)。存入 Wiki 时若同主题笔记已存在,会友好 toast 而非静默重复建页。 诚实边界: Agent wiki_apply_tool 仍为 CSV 形参、不自动 if_match;Settings GUI 与 Save to Wiki 路径已完整。

Raw 证据层闸门(导入与 ingest)

稳定路径写入 wiki/raw/ 经 harness publish_raw 闸门 — 与 concept 层 POST /wiki/apply(#12+#13)互补。 诚实边界: timestamp/uuid 路径(research、artifact、会话归档)故意不 gate;无专用 Raw 审计页,可读 wiki/log.md

归档安全治理(敏感内容)

所有 durable Wiki 写入共享 harness 持久化扫描 SSOT(core/security/persistence/content_scan.py): 诚实边界: 尚无安全统计面板;Settings/chat 导入 injection 仅 warn;agent wiki_ingest 拦截高置信 injection。Agent 被拦路径以工具错误呈现,无 Settings 弹窗。
Wiki 文件在磁盘上仍为纯 Markdown。Obsidian 等编辑器可打开同一库;Myrm 在其上增加索引、检索与 GUI 管理。

知识消费闭环

Wiki 不是「写完就忘」的死水。Myrm 用 12 条代码级路径 把知识库和 Agent 连起来(无需像 OpenWiki 那样手工维护 AGENTS.md):
  • 四工具自动挂载 — 在智能体配置中启用 Wiki 后,ingest / compile / query / maintain 随对话可用。
  • 大文件上传引导 — 上传 PDF 等大文档时,系统自动注入「先 wiki_ingest 再 wiki_query」指令,避免整文件塞进 prompt。
  • Deep Research 入库 — 深度研究报告经共享 archiver 写入同一 Wiki 库并触发编译。
  • 聊天一键保存 — 任意助手消息可「存入 Wiki」,带来源 frontmatter。
  • 压缩后会话笔记归档 — 上下文压缩完成时,会话笔记自动归档到 Wiki(在摘要持久化之后触发,而非每次 note 保存)。
  • 设置页即席查询 — 概览标签直接问 Wiki、编译、维护,并展示库健康状态。

Memory → Wiki 自动桥接

在智能体配置中启用 Wiki 后,四条自动入库路径经统一 publish_raw 写入同一 vault(Roadmap #16 — 无独立 per-source 开关): 安全与门控: 全部路径经 #15 归档安全(凭证拒收/脱敏)与 #14 raw gate(稳定路径禁止 silent overwrite)。enable_wiki 为智能体级总开关 — Settings 无 per-source 开关。 召回方向: Wiki 内容通过 knowledge_recall_tool(corpus=wiki|all) 按需 pull 进对话(Wiki+Memory 双开时)— 非 OpenClaw 式每轮 push digest。 测试: 37 项定向 pytest(Harness 18 + Server 19,2026-07)。

Wiki 与 Memory 写入边界

智能体同时启用 Wiki 与 Memory 时,Myrm 防止长文污染紧凑记忆: 对比 Hermes: 扁平 MEMORY.md 2200 字符上限 — 无编译型 Wiki 与 corpus=all 统一检索。 测试: 25 项定向 pytest(Harness wiki boundary 模块,2026-07)。

Karpathy 认知地图三件套(index / log / hot)

编译、维护、导入或审批后,引擎确定性维护 vault 根目录三文件(零额外 LLM 成本): 与竞品差异(诚实):
  • 强于 Molio:hot 仅在 wiki 查询路径使用,注入 agent 全局 system prompt → prompt cache 更安全
  • 强于 Hippocampus:事件驱动刷新,非每会话盲注 hot
  • 不做:Molio 式 LLM 重写 hot(token/幻觉成本);全局 middleware hot(破坏 cache)
Settings 概览 自动展示三件套就绪状态;无需 CLI。

统一 Vault 路径

所有 Wiki 数据位于同一工作区下的单一库目录。设置页、REST API、Agent 工具、存入 Wiki、Deep Research 与压缩归档共用该路径;启动时自动迁移旧路径。 设置 → Wiki → 概览 中,统计信息随页面打开自动加载,并显示:
  • 知识库已就绪 — Wiki 目录存在且可写。
  • 旧库已迁移 — 历史路径已合并到当前库。
  • 知识目录 / 活动日志 / 近期上下文 — Karpathy 式三件套(index.mdlog.mdhot.md)是否在编译、导入或审阅后已构建并保持新鲜。
无需再依赖 CLI「doctor」式自检,产品内即可确认库状态。

Project 工作区(file-centric SSOT)vs Wiki 导入

两条路径,按场景选择: 竞品迁移完成后,用 Migration Result vault 绑定卡片,首条对话即指向真实 vault,无需手动建 Project。 单次任务 scope(不建 Project):消息输入框 文件夹图标WorkspaceDirPicker)绑定本会话目录。

在对话中引用 Wiki(@wiki:)

在聊天输入框中键入 @wiki: 即可实时搜索 Wiki 词条并自动补全。选择词条后,其编译内容将注入当前消息上下文:
  • @wiki:关键词 — 下拉列表仅显示匹配的 Wiki 词条(模糊匹配词条名)。
  • 选择词条 — 输入框变为 @wiki:词条名 加可移除标签,与 @staged@diff 操作方式一致。
  • Agent 接收 词条内容在 <mentioned_files> XML 块中,确保回答精确引用知识库。
  • 组合引用@wiki:项目架构 @staged 同时发送 Wiki 文章和 Git 暂存变更。
  • 普通 @ 搜索 — 输入 @关键词(不带 wiki: 前缀)显示 Agent、Wiki 词条和文件的混合列表。
精确、按需地控制 Agent 使用哪些知识 — 无需依赖自动检索或提示工程。

将聊天消息存入 Wiki

任意已完成的助手消息,在消息操作栏用 存入 Wiki(书本图标):
  1. 在树选择器中选文件名与可选目标文件夹。
  2. 确认保存 — 经 POST /wiki/applycreate_note 写入(受管 Compiled Truth + Timeline 骨架)。
  3. 每次保存添加 YAML frontmatter:source_chatsource_messagesaved_at 便于追溯。
  4. 若同 canonical 主题 的笔记已存在,会 toast canonical 冲突,而非静默重复建页。

页面类型契约(frontmatter type

每条 Wiki 页面必须在 YAML frontmatter 中声明 页面类型。在编译、待审批准、以及 Linter 维护时代码级强制,而非仅靠 prompt 建议。 允许值: sourceentityconceptcomparisonoverviewquestionsession(与 Google OKF 兼容的子集)。 诚实边界: 聊天「Save to Wiki」当前仅写溯源字段;可对这类笔记运行 Repair Page TypesMaintain 补全 type。Settings Advanced 整页 replace 未硬拦截 frontmatter — 下次 Maintain 时 Linter 自愈。 闭环:对话 → 一键归档 → 可检索知识

检索与维护

  • 查询 Wiki(概览标签)— 自然语言问答走 零 LLM 检索路径:从认知 index、sidecar 摘要、FTS5 与关键词种子出发,经有预算的 best-first 图扩展收敛后,组装 L0/L1/L2 片段与声明/证据卡片。
  • 检索模式(概览 → 查询 Wiki)— 可选 综合检索(索引、目录与文章均衡召回)或 声明优先(优先含 frontmatter claims 与关联证据的概念;无匹配时自动回退综合检索)。OpenClaw 有类似 raw-claim 但仅 CLI;Myrm 在 Settings 下拉即可切换。
  • 引用可信度 — 回答卡片展示 claim 文本、evidence 路径与 snapshot_status,便于判断引用内容是否仍与 vault 磁盘一致。
  • 证据引用 Drawer(Closure v2) — Chat 或 Settings 点 citation chip:展示 claim 状态 badge(仅 contested/unsupported 降噪)、编译置信度百分比(显式设置时)与 raw 摘录;检索侧 fresh supported claim 优先于 stale contested。
  • Settings 检索路径 trace — Query 结果下方卡片展示 index 命中、seeds、sidecar 目录与最终概念,便于排障「为何命中这条」。
  • 编译 / 维护 — 增量编译、并发批量摄入(Semaphore 限流并行处理,多文档编译提速约40%)、视觉化指导(编译器自动引导 LLM 在合适位置产出 Mermaid 图表、GFM 表格和代码块,提升信息密度)与 linter 驱动健康修复(断链、漂移、孤立概念/桥接节点知识盲区检测等)。
  • 结构健康 Stats(Overview 页)— 零 LLM 扫描:markdown 断链、Obsidian [[wikilink]] 断链(路径 + 唯一 title 别名)、缺 frontmatter type;amber badge 在编译、导入、词条编辑、待审审批、文件夹删除后即时刷新;Harness CI 跑 4 case 检索回归门。无需 CLI wiki lint
  • 图书馆 / Brain 视图 — 3D 知识图谱与词条探索(因部署而异)。
  • 知识图谱 — 编译器自动抽取概念及其关联关系,构建加权边图谱(直接链接 + 来源重叠 + 共同邻居三维权重)。LPA 社区检测自动将相关概念分组;盲区分析高亮孤立节点和跨领域桥接概念。
  • 智能上下文回忆 — 开始新对话时,Agent 自动根据当前话题检索相关记忆和知识,无需手动指引文档。
  • 矛盾检测 — Claim Graph 追踪 contradiction_statusCONTRADICTED_BY 关系。巩固流程自动标记冲突事实,交由人工审核而非静默覆盖。
  • 联邦检索 — 当存在多个 Wiki 命名空间或发布目录时,查询自动跨源检索并以 RRF 排序合并结果,确保全面覆盖无需手动切换范围。

从 Obsidian 导入

Myrm 提供专用 Obsidian Vault 导入器,完整保留笔记、标签和图片:
  1. 设置 → Wiki 中滚动到导入区域。
  2. Tauri 桌面端:点击 导入 Obsidian Vault 并选择本地 vault 目录。
  3. WebUI / 云端:点击 上传 Obsidian ZIP 并上传 vault 压缩包。
导入器处理:
  • YAML frontmatter — 行内数组(tags: [a, b])与 YAML 缩进列表(tags:\n - a\n - b)双格式,含 aliasescreatedupdated
  • 图片嵌入![[image.png]] 语法自动改写为标准 Markdown 并将图片复制至 wiki 资产目录。
  • .canvas 文件 — 空板或无可用文本时跳过;含 text 节点的白板按 JSON Canvas 1.0 提取为 Markdown(文本内容及 file/link 标签)。
  • 编码容错 — UTF-8 解码失败的文件会报告但不阻塞整体导入。
  • 冲突安全 re-import — raw 已存在且内容不同时默认跳过;弹窗可填 reason 覆盖(记入 wiki/log.md)。
导入完成后弹出 toast 通知,显示已处理笔记数、提取标签数和迁移图片数。导入的文件自动进入编译队列并被索引。

在 Obsidian 中打开与导出(#22 + #22b)

Settings → Wiki → Overview 的 Obsidian Vault 卡片提供反向打开与导出(与上方「导入」互补): 解压后:Obsidian → 打开文件夹作为库 → 打开 Graph 视图即可看到按页面类型着色的节点。 回归测试(2026-07-29): 14 项定向 pytest(跨平台启动 + reveal + 导出 · 无 Chrome MCP E2E)。
与 Project 挂载的分工: 若你在 自有磁盘 用 Obsidian/Typora 双向编辑,请用 设置 → 项目 → 挂载同步目录。#22 针对 Myrm 托管的编译库 一键打开或快照导出。
诚实边界: Cloud 无法本地 reveal;未安装 Obsidian 时隐藏「在 Obsidian 中打开」(「在文件夹中显示」+ 下载包仍可用);Windows 尚未探测 %ProgramFiles%\Obsidian\Obsidian.exe;不提供 obsidian:// 深链。

Vault 本地 git 快照(#23)

开启 版本控制 后(Local/Tauri 在 session archive 等路径会默认开启),Myrm 在 vault 内维护 真实 .git 目录(非 shadow-git 插件): 回归测试(2026-07-29): 5 项 #23 定向 pytest(test_wiki_vault_git_mutation 2 + Harness test_vault_git 3 · 无 Chrome MCP E2E)。
诚实边界: Settings 无提交列表 UI — 深度历史请用 git log 或 Obsidian Git。下载 Obsidian 包 ZIP 不含 .git。Cloud 不承诺 vault git。

搜索已导入图片(Obsidian assets)

设置 → 模型 中配置 Vision Fallback Model 后,Myrm 会用视觉模型为 wiki/assets/ 下的图片生成 caption 并建立索引(FTS5 + 可选向量混合检索)。无需单独的 image search 工具即可找图:
  • wiki_query / knowledge_recall(corpus=wiki|all) — 用自然语言问「架构图在哪」可返回 asset 命中,Chat Sources 带缩略图 citation。
  • 设置 → Wiki → Overviewasset_index badge 显示已索引/待处理/失败数量;有图但未配 vision 时显示 amber 提示并引导至模型设置。
  • 导入链路 — Obsidian 导入会后台调度 asset 索引;compile/maintain 也会刷新 asset 索引。
诚实边界: 这是 文字找图(caption 检索),不是 以图搜图(multimodal embed)。OpenViking 有后者;OpenClaw/Hermes 等普遍 没有 Obsidian asset caption 索引管线。未配 vision 时图片会导入但 不可搜索 — Overview 提示已覆盖;Chat 不会出现「有缩略图但 caption 为空」的误导路径。

URL 入库与视频字幕提取

向 Wiki 导入 URL 时,Myrm 通过 CrawlEngine 统一处理所有链接:
  • YouTube 视频 — 自动提取字幕文本(支持 10+ 种语言),存入的是可搜索的文字内容而非 HTML 页面代码。
  • Bilibili 视频 — API 直连提取字幕,无需 DOM 解析。
  • 公众号文章 — 多层 fetcher 自动应对微信反爬(HTTP → 浏览器 → 隐身模式逐级降级)。
  • 普通网页 — CrawlEngine 自适应选择最优抓取策略,JS 渲染页面自动升级到浏览器引擎。
  • 高可用降级 — CrawlEngine 故障时自动 fallback 到 secure_get + Markdown 转换,保证入库不中断。
用户只需丢一个链接给 Agent 说「导入这个」,系统自动识别 URL 类型并选择最优提取方式。

文档解析与 OCR

向 Wiki 导入文档时,Myrm 自动选择最优解析策略:
  • 文字型 PDF — pdfplumber 并行提取 + 书签注入 + 字体标题检测。
  • 扫描型 PDF — 文字稀少时(< 200 字符)自动识别,整页渲染为 PNG 交由视觉大模型(VLM)理解。
  • 混合型 PDF — 文字正常提取,同时捕获内嵌图表/照片,经智能图像过滤器去噪(去除 UI 噪声、Logo、装饰元素)。
  • 图片 — 本地 PaddleOCR 引擎支持中日韩英文,无需云端依赖,结果含置信度和定位框。
  • Office 文件 — DOCX / XLSX / PPTX 原生解析器,无需安装 MarkItDown 等外部依赖。
所有策略异步执行并统一进入编译管线——无需手动选择。

安全防护

Wiki 入库受 路径遍历防御持久化层内容扫描 保护:
  1. 文件名清理 — 剥离 LLM 提供文件名中的目录组件(Path(filename).name),防止注入攻击写入 ../../../etc/cron.d/evil.md 等任意路径。
  2. 边界校验safe_join_path() 验证解析后路径始终位于 Wiki raw 目录内,阻断绝对路径、空字节注入、符号链接逃逸和 ../ 遍历。
  3. 写前扫描publish_raw 与编译发布在落盘前执行凭证/注入检查(见上文 归档安全治理)。
这些防御在 harness 框架层实现,所有入库路径(agent 工具、自动归档、Settings 导入、大文档 RAG 入库)均自动受保护。Wiki 目录位于用户主目录外,代码执行期间还受 OS 级沙箱隔离(macOS Seatbelt / Linux bubblewrap / Windows AppContainer)保护。

对比 DIY Wiki 技能

Myrm 尚无 Notion 式 Wiki 回收站。删除确认请慎重;重要笔记请备份。

相关