Wiki 知识库
Myrm 提供编译型知识库(Wiki)——不是让 Agent 解读的一堆 markdown 技能。专用引擎负责编译、索引、检索、审核与维护。同一工作流适用于本地 WebUI、Tauri 桌面与 SaaS 云端。概念防膨胀治理、输出预算与沙箱原生 Git 快照
在摄入长篇专著、复杂技术文档或上百篇资料时,传统大模型编译常导致概念爆炸(生成数百个琐碎零散的无意义子页面)或上下文溢出。Myrm 构筑了多层防御屏障:按智能体隔离的 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_tool(corpus=all)— 一次工具调用同时检索长期记忆与该智能体 Wiki。记忆命中会写入 citedMemoryIds 供 UI 展示;Wiki 命中在工具结果文本中返回。
默认智能体已开启 Memory;在 智能体配置 → 内置工具 中打开 Wiki 即可走统一检索路径。
会话级即时挂载与跨库联邦检索(KnowledgePickerPopover)
除了在智能体设置中静态配置专属知识库外,Myrm 支持在单次对话中按需临时外挂与联合检索多个私有知识库:知识库全生命周期治理工作台(WikiGovernanceWorkbench)
知识库随时间持续沉淀极易面临知识老化(Knowledge Decay)、过时规范误导智能体问答的隐患。Myrm 在 设置 → Wiki → 概览 顶部原生提供全生命周期治理工作台:Memory 引用按钮(刷新不丢)
当助手召回语义/情节记忆时,已完成消息的操作栏会显示 Memory N 按钮。打开 Sheet 可查看影响回答的记忆(类型、分数、命名空间、跳回来源会话)。 引用会写入数据库,刷新页面后仍在 — 不依赖仅 SSE 的临时状态。打开 Wiki 设置
- 进入 设置 → Wiki 知识库 (Wiki)。
- 使用标签页:
- 概览 — 用途、统计、编译/维护操作、即席查询。
- 词条管理 (Concepts) — 文件夹树、CRUD、拖放、分屏 Markdown 实时预览编辑。
- 待审编辑 — LLM 草稿的人工审批/驳回与实时预览修改。
- 队列 — 文档摄取流水线状态。
分屏 Markdown 实时预览编辑器与草稿守卫
在 词条管理(Compiled Truth / Advanced 标签)以及 待审编辑(Pending Edits 编辑态)中,Myrm 提供 Typora 级分屏 Markdown 写作体验:编译过程实时可见(需打开 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__ 与 __wiki_maintain__:{structural|full} 在服务端执行,不挂载 Agent 工具 — 安全、确定性自动化。
可观测性: 卡片展示上次同步时间、新增/跳过/失败计数,以及首条错误(如 Gmail label not found)。
诚实边界: Gmail 标签与 Drive 文件夹 ID 均需手动输入,无标签下拉或 Drive Picker。请在 Gmail 中创建同名标签(预设默认
ReadLater)。若已连接 Google 但缺少 Drive 只读 scope,卡片会显示重连提示(google_drive_authorized: false)。不支持 OneDrive(无 Microsoft OAuth 基建)。配错会在同步结果中显示,不会静默忽略。编译期演变合成(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;仅 Settings(
caller=settings)。Agent/聊天不可用此 op。
- Compiled Truth — 仅 patch
if_match = 上次 content_hash)。若其他 Tab/客户端已先改页,会 toast 页冲突 — 请刷新后重试。
词条重命名与别名重定向治理(Canonical Rename & Alias Redirect)
在传统笔记系统(Hermes、OpenClaw、Codex、Pi)中,重命名或移动文件会导致全库引用的双链失效断裂(File-based Memory Rot)。Myrm 内置企业级链接治理与重构引擎:- 永久 Canonical ID 固化与别名继承:重命名或移动概念笔记时,
_inject_rename_metadata自动固化不变的canonical_id,并将旧 slug 自动沉淀为 Frontmatter 中的aliases与supersedes历史链。无论是使用旧 slug 还是别名搜索,系统都能精准解析至当前最新实体。 - 全库双链与 Markdown 链接原子无损重写:
refactor引擎自动精准扫描全库,无损更新双链[[slug|别名]](保持原展示别名不变),并智能解析标准 Markdown 链接的#anchor锚点进行安全拆装重写,杜绝 404 死链。 - 增量 DAG 依赖图与 FTS 索引刷新:概念移动后仅增量刷新相关概念与
wiki_edges拓扑,无需耗时重建全库索引。 - 真实浏览器 E2E 持久化验证:在页面多次刷新与深链跳转下,引用的凭证与
依据按钮在前端 DOM 与全局 store 中 100% 稳定挂载。
受控写入面(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 弹窗。
Raw 语料去重治理(#7)
导入或批量 ingest 后,Myrm 用 SQLite 治理库(.raw_dedup.db)对 wiki/raw/ 做 三层指纹 扫描:
设置 → Wiki → Duplicate Review(重复审阅) 展示未决组:tier 徽章、并排 diff 片段、组级操作:
- Trash / exclude / defer / dismiss — 消解重复且保留审计轨迹
- Vault hygiene 恢复 — raw 证据移动后重新锚定编译页
wiki_dedup 做定期 hygiene。
测试: 67 项定向 pytest(Harness corpus_dedup 27 + Server dedup_runner/API 40)+ Chrome E2E(seed fixture → Duplicate Review Tab → exact 组面板)。
诚实边界: near 层不做大规模 LSH;dismiss 不可撤销;Turn1 无 Agent 侧去重工具。
对比竞品: Hermes llm-wiki / OpenClaw / deer-flow / LobsterAI / CoPaw / jiuwenclaw — 均无 raw 层三级去重 + GUI 审阅 + 编译闸门闭环;Obsidian 插件仅本地重复检测,不与 Agent vault 编译集成。
Wiki 文件在磁盘上仍为纯 Markdown。Obsidian 等编辑器可打开同一库;Myrm 在其上增加索引、检索与 GUI 管理。
知识消费闭环
Wiki 不是「写完就忘」的死水。Myrm 用 12 条代码级路径 把知识库和 Agent 连起来(无需像 OpenWiki 那样手工维护 AGENTS.md):- 六工具自动挂载 — 在智能体配置中启用 Wiki 后,ingest / compile / query / maintain / apply 随对话可用。
- Evidence Card 精准行号凭证与冲突透出 —
wiki_query在检索上下文动态注入行号锚点([Evidence Card: source: path#Lxx-Lyy | status | confidence]),强制模型事实附带精准行级凭证、冲突双向并陈(disagree -> show both)且未记载内容诚实拒答,彻底根除模型行号幻觉与常识脑补。 - 大文件上传引导 — 上传 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)。
换 embedding → 一键重建向量索引
在 设置 → 模型 更换 embedding 模型或分块策略后,旧向量可能失效。请在 设置 → Wiki → 概览 使用 重建向量索引:
超长 embed fail-loud: 强制分块后仍超模型窗口时,编译会 暂停 并标记 embed-window 违规(非 silent drop)。重建 API 返回
errors[],Settings 面板列出失败项便于修复。
对比竞品: OpenClaw / Hermes / deer-flow / LobsterAI / CoPaw / jiuwenclaw 均无 Settings GUI 换 embedding 后全库 wiki 向量重建。
测试: 34 项定向 pytest(2026-08)。
Wiki 与 Memory 写入边界
智能体同时启用 Wiki 与 Memory 时,Myrm 防止长文污染紧凑记忆:
对比 Hermes: 扁平 MEMORY.md 2200 字符上限 — 无编译型 Wiki 与
corpus=all 统一检索。
测试: 25 项定向 pytest(Harness wiki boundary 模块,2026-07)。
Karpathy 认知地图三件套(index / log / hot)+ SCHEMA
编译、维护、导入或审批后,引擎确定性维护 vault 根目录定向文件(零额外 LLM 成本):
Query 定向(W36): FTS 无直接匹配时,零 LLM wiki query 前缀同时包含 近期库上下文(
hot.md)与 近期活动日志(log.md,有界)— 回答能反映最近变更,且不注入 agent 全局 system prompt。
编译 index 种子(#32): LLM 概念抽取时注入 index.md 已有目录,新页面复用已建立概念名,减少重复词条。
与竞品差异(诚实):
- 强于 Molio:hot/log 仅在 wiki 查询路径使用,不注入 agent 全局 system prompt → prompt cache 更安全
- 强于 Hippocampus:事件驱动刷新,非每会话盲注 hot
- 强于 Hermes llm-wiki:自动 SCHEMA + Cron 维护 + query log 定向 — Hermes 依赖 SKILL 手工 lint 与扫 log
- 不做:Molio 式 LLM 重写 hot(token/幻觉成本);全局 middleware hot(破坏 cache);Hermes 完整 tag taxonomy 写入 SCHEMA(GUI-first 用户 ROI 低)
统一 Vault 路径
所有 Wiki 数据位于同一工作区下的单一库目录。设置页、REST API、Agent 工具、存入 Wiki、Deep Research 与压缩归档共用该路径;启动时自动迁移旧路径。 在 设置 → Wiki → 概览 中,统计信息随页面打开自动加载,并显示:- 知识库已就绪 — Wiki 目录存在且可写。
- 旧库已迁移 — 历史路径已合并到当前库。
- 知识目录 / 活动日志 / 近期上下文 — Karpathy 式三件套(
index.md、log.md、hot.md)是否在编译、导入或审阅后已构建并保持新鲜。
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 词条和文件的混合列表。
将聊天消息存入 Wiki
任意已完成的助手消息,在消息操作栏用 Compound to Wiki(书本图标):- 在树选择器中选文件名与可选目标文件夹。
- 确认 — 前端仅传
source_chat与source_message;服务端从数据库补全 Q&A 与可信度信号(不接受客户端正文)。 - 草稿进入 设置 → Wiki → 待审编辑,不会直接写入 vault。
- 审核通过后入库;可拒绝或内联编辑。同一消息重复 staging 返回 409,可跳转待审列表。
- 无痕会话隐藏按钮;API 直调返回 403。
create_note(HTTP 403)。
溯源闭环
每条知识都保留指向来源精确消息的溯源链:- 对话 → raw — 通过 Compound to Wiki 保存的消息,以及会话结束时自动归档的长回答,都会把
source_chat(可用时含source_message)写入 raw 文件的 YAML frontmatter。 - raw → 编译词条 — 编译器在重生成文章时保留溯源;若 LLM 输出丢失该字段会自动回填;首次编译时从词条关联的 raw 源文件提取溯源(仅当所有来源一致时才注入,避免合并词条出现误导性的单一来源)。
- 词条 → 对话跳转 — 概念详情面板与待审列表提供 「来源对话」 链接:有
source_message时深链到精确消息(?highlight=…),没有则降级为对话本身;来源对话被删除时展示自然的空状态而不是死链。 - Raw 闸门加固 — raw 发布闸门拒绝路径穿越(
..、盘符前缀、超长路径),溯源永远不会成为文件系统逃逸向量。
session_id 而无任何跳转(CoPaw)。没有任何一家在 UI 里把知识条目链接到对话中的精确消息。
页面类型契约(frontmatter type)
每条 Wiki 页面必须在 YAML frontmatter 中声明 页面类型。在编译、待审批准、以及 Linter 维护时代码级强制,而非仅靠 prompt 建议。
允许值: source、entity、concept、comparison、overview、question、session(与 Google OKF 兼容的子集)。
诚实边界: 待审 draft 已含完整 Q&A,批准后才写入 vault。Settings Advanced 整页 replace 未硬拦截 frontmatter — 下次 Maintain 时 Linter 自愈。
闭环:对话 → 一键 staging → 人工审核 → 可检索知识。
检索与维护
- 查询 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 驱动健康修复(断链、漂移、孤立概念/桥接节点知识盲区检测等)。
- 维护模式(#31) — Settings 概览 → 维护 可选 Structural(快扫 lint + type 修复 + blocked raw 清理)或 Full(额外漂移检测与 backlink 刷新)。Cron 蓝图
wiki_maintain经 router__wiki_maintain__:{mode}定时执行相同模式;第二大脑 preset 在稍后读与晨间 delta 之外新增 周末 03:00 full maintain 闹钟。此外新增wiki_vault_weekly_health(知识库每周健康巡检 · 只列不修) 蓝图(默认周日 18:00),以零修改原则生成分类体检清单(断链/陈旧/格式异常)与/settings/knowledge治理深链。 - 结构健康 Stats(Overview 页)— 零 LLM 扫描:markdown 断链、Obsidian
[[wikilink]]断链(路径 + 唯一 title 别名)、缺 frontmattertype;amber badge 在编译、导入、词条编辑、待审审批、文件夹删除后即时刷新;Harness CI 跑 4 case 检索回归门。无需 CLIwiki lint。 - 图书馆 / Brain 视图 — 3D 知识图谱与词条探索(因部署而异)。
- 知识图谱 — 编译器自动抽取概念及其关联关系,构建加权边图谱(直接链接 + 来源重叠 + 共同邻居三维权重)。LPA 社区检测自动将相关概念分组;盲区分析高亮孤立节点和跨领域桥接概念。
- 智能上下文回忆 — 开始新对话时,Agent 自动根据当前话题检索相关记忆和知识,无需手动指引文档。
- 矛盾检测 — Claim Graph 追踪
contradiction_status和CONTRADICTED_BY关系。巩固流程自动标记冲突事实,交由人工审核而非静默覆盖。 - 联邦检索 — 当存在多个 Wiki 命名空间或发布目录时,查询自动跨源检索并以 RRF 排序合并结果,确保全面覆盖无需手动切换范围。
从 Obsidian 导入
Myrm 提供专用 Obsidian Vault 导入器,完整保留笔记、标签和图片:- 在 设置 → Wiki 中滚动到导入区域。
- Tauri 桌面端:点击 导入 Obsidian Vault 并选择本地 vault 目录。
- WebUI / 云端:点击 上传 Obsidian ZIP 并上传 vault 压缩包。
- YAML frontmatter — 行内数组(
tags: [a, b])与 YAML 缩进列表(tags:\n - a\n - b)双格式,含aliases、created、updated。 - 图片嵌入 —
![[image.png]]语法自动改写为标准 Markdown 并将图片复制至 wiki 资产目录。 .canvas文件 — 空板或无可用文本时跳过;含 text 节点的白板按 JSON Canvas 1.0 提取为 Markdown(文本内容及 file/link 标签)。- 编码容错 — UTF-8 解码失败的文件会报告但不阻塞整体导入。
- 冲突安全 re-import — raw 已存在且内容不同时默认跳过;弹窗可填 reason 覆盖(记入
wiki/log.md)。
在 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 → Overview —
asset_indexbadge 显示已索引/待处理/失败数量;有图但未配 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 转换,保证入库不中断。
文档解析与 OCR
向 Wiki 导入文档时,Myrm 自动选择最优解析策略:- 文字型 PDF — pdfplumber 并行提取 + 书签注入 + 字体标题检测。
- 扫描型 PDF — 文字稀少时(< 200 字符)自动识别,整页渲染为 PNG 后交由本地 PaddleOCR 引擎逐页识别(原生支持中日韩英,无需云端或视觉模型),再拼回可检索文本;仅当 OCR 不可用时才回退视觉模型辅助。
- 混合型 PDF — 文字正常提取,同时捕获内嵌图表/照片,经智能图像过滤器去噪(去除 UI 噪声、Logo、装饰元素)。
- 图片 — 本地 PaddleOCR 引擎支持中日韩英文,无需云端依赖,结果含置信度和定位框。
- Office 文件 — DOCX / XLSX / PPTX 原生解析器,无需安装 MarkItDown 等外部依赖。
安全防护
Wiki 入库受 路径遍历防御 与 持久化层内容扫描 保护:- 文件名清理 — 剥离 LLM 提供文件名中的目录组件(
Path(filename).name),防止注入攻击写入../../../etc/cron.d/evil.md等任意路径。 - 边界校验 —
safe_join_path()验证解析后路径始终位于 Wiki raw 目录内,阻断绝对路径、空字节注入、符号链接逃逸和../遍历。 - 写前扫描 —
publish_raw与编译发布在落盘前执行凭证/注入检查(见上文 归档安全治理)。
会话级知识库多选挂载与跨源联邦检索(Unified Knowledge Base Picker & Hybrid Search)
在日常多任务对话中,用户往往需要针对特定话题(如“研发代码规范”、“财务审计指南”、“项目交付白皮书”、“API 接口文档”)临时调取专属知识库。传统工具(如 Hermes、OpenClaw)仅支持在 Agent 设置页全局静态绑定单一库,临时切换必须跳离会话甚至中断正在进行的工作;而在 Codex 等纯代码工具中则完全缺乏结构化知识库的概念。 Myrm 实现了会话级知识库即时多选挂载与跨源联邦混合检索:
使用说明:
- 桌面端:在聊天输入框操作栏点击书本图标(
KnowledgePickerPopover),在弹出层中可实时搜索知识库,并通过开关勾选挂载(单会话最多支持挂载 6 个知识库,物理拦截 SQLite 资源上限)。 - 移动端:在输入框右侧唤起操作抽屉(
MobileActionSheet),点击「挂载知识库」即可即时选择。 - 输入区胶囊:挂载的知识库会以内联紫调胶囊呈现;点击右侧
×可一键从当前会话解绑。隐私模式(Incognito)下挂载仅作用于当前轮次,不持久化绑定关系。
Obsidian 本地库深度融合与安全隔离收件箱(Obsidian Vault Portability & Safe Inbox)
面对广大研究员、创作者与工程师深度使用 Obsidian 沉淀第二大脑的场景,传统 AI 工具要么只能读简单 Markdown 导致.canvas 画布成为盲区,要么由于缺乏写入防护导致直接篡改人类本地笔记库。
Myrm 提供了原生开箱即用的 Obsidian 工具链与安全防护套件(obsidian_tools.py 与 obsidian_canvas.py):
- 强类型
.canvas白板 AST 与 1-Hop 维基链接邻近笔记级联展开:- 原生解析 Obsidian Canvas 白板文件,精准提取空间文本节点、文件引用卡片与拓扑连线,彻底破除大模型在空间视觉知识上的检索盲区;
- 智能解析
[[Wikilinks]]并提供 1-Hop 邻域笔记级联展开(Linked Notes Context),阅读单篇笔记自动聚合一度关联笔记摘要,保全人类笔记库的知识图谱拓扑; - 具备损坏 JSON、非法 AST 结构与异常编码的 100% 容错护栏。
- 只读检索与安全隔离收件箱(
obsidian_inbox_write):- 坚持“用户核心库只读检索、AI 沉淀知识增量入 Inbox”的架构隔离原则;
- Agent 输出总结时默认只能写入专用的收件箱目录(如
_Myrm_Inbox/),支持自适应嵌套子目录(subfolder),绝不覆写用户原笔记; - 深度集成 HITL 人工审批机制:配置审批策略时拦截写操作并向用户呈现审批卡片,无审批时安全落盘,彻底兼顾自动化流转与人机互信。
- 毫秒级 mtime 水位差量同步(
ObsidianVaultBinding):- 本地库变动通过微秒级
mtime水位扫描,本地新增与修改无需长轮询与重量级外部守护进程,极速感知与对齐。
- 本地库变动通过微秒级