搜索与知识互联

Memos 的两个核心价值——找得到与连得上——分别由全局搜索接入和出站知识网链接提供。两者都复用既有管线,没有为 memo 引入新的解析代码。

接入全局搜索

Memo 是全局搜索的第五种结果类型,与任务、草稿、文档、决策、Wiki 并列:

  • Web 搜索对话框提供「备忘」筛选标签,结果按类型分组展示,图标与分组标签与其他类型一致;点击结果行跳转到 /memos?date=<day> 当日视图
  • 服务端 /api/search 的类型白名单包含 memo(此前仅四类,曾会拒绝 type=memo)
  • CLI:backlog search --json 输出新增 memo 摘要形状;纯文本输出则跳过 memo(与 Wiki 结果一致视为 Web-only 类型)

由于 memo 刻意不进入 ContentStore 快照,搜索索引通过注入的 loader 直接读取 backlog/memos/ 语料。刷新由「stat 签名 + 500ms 语料 TTL」双门控:签名未变化时只做一次轻量目录扫描并跳过重读,签名变化(增删改)才后台全量重建索引(重载不阻塞当前搜索)。因此启动后新捕获的 memo 无需重启服务即可搜到:后台重载完成后的第一次搜索即命中;触发重载的那一次搜索仍可能返回旧结果。

出站知识网链接

Memo 正文经共享的 MermaidMarkdown 渲染器输出,自动获得两套既有链接机制:

  • 裸实体 ID:正文中写出的 back-123、doc-5、decision-3 等 ID 经实体索引自动转为可点击链接,点击以客户端导航打开对应实体
  • Wiki 链接:path(支持 alias 别名语法)解析为 Wiki 页面链接
  • 行内代码中的 ID 不会被改写;无法唯一解析的 ID 原样显示为纯文本
  • ID 区间与斜杠列表:back-101~105 形式的区间、back-101/102/103 形式的斜杠列表同样会被识别并渲染为单个展开触发器,下拉中列出区间内每个 ID 的链接;#话题# 闭合语法被识别为话题标签而非实体链接

由此,随手记下的「相关任务 back-123」在 Web 界面里就是一条活链接;一段 back-101~105 也能一键展开整段区间。

只出站、不入站

按设计 memos 不是链接目标:没有 /memo/:id 详情路由、实体类型联合中不含 memo、也不支持 memo 对 memo 的链接。这是刻意取舍——memo 是轻量收件箱,而非知识网的常驻节点;需要被引用的内容应提升为任务或文档。

实时同步

任何入口(CLI、Web、MCP、HTTP API)的 memo 写入都会广播 memos-updated WebSocket 事件:/memos 页面即时刷新卡片流与日历计数,其他页面按各自的数据刷新管线处理。搜索索引的刷新不走这条广播,而是由上文所述的签名 + TTL 双门控机制触发。

results matching ""

    No results matching ""