把它接到你桌面上的其他东西

数据库就是一个 SQLite 文件,这一页里的每一样都只是通往它的另一道门:你的浏览器、你的编辑器、你的 agent、你的终端。

01浏览器扩展

从地址栏搜你的书签,以及不离开当前页面就把它存下来。扩展连的是网页界面连的同一个本机服务。

  1. 先起服务:facetmark serve
  2. 从仓库里的 extension/ 加载扩展——Chrome:chrome://extensions,开开发者模式,加载已解压的扩展程序
  3. 打开它的选项。服务在默认端口上它会自己配对;否则把 facetmark token 的输出粘进去。
它是配对,不是同步

什么都不上传,也没有账号。服务没跑的时候,扩展什么也不做。

02Claude、Cursor,以及任何说 MCP 的东西

facetmark 自带一个 MCP 服务,所以助手可以把「搜你的书签」当成一个工具来用,而不是你手动往对话框里粘链接。

先手动跑一下
facetmark mcp
Claude Desktop — claude_desktop_config.json
{
  "mcpServers": {
    "facetmark": {
      "command": "facetmark",
      "args": ["mcp"]
    }
  }
}

Cursor 在它自己的 MCP 设置里是同样的形状。如果编辑器看到的 PATH 里没有 facetmark,就写绝对路径——几乎每一份「工具一直不出现」的反馈都是这个原因。

助手能做什么、不能做什么

它能搜索、能读一条书签、能列时段、能在你的库上提问。它不能删任何东西,不能写配置,也碰不到数据库以外的地方。

03karakeep

如果你的链接都放在 karakeep 里,facetmark 可以从那边建索引,而不是从浏览器导出文件。

有实测,值得在你投入之前先知道

经 karakeep 自己的关键词抽取绕一圈,代价是 Recall@5 掉 0.81 个百分点(CI95 −2.44 到 +0.81),并且和直接建索引在第一名上只有 79.06% 一致。词表会塌缩:19,016 个不同词项变成 13 个。仓库里记下来的结论是 roundtrip_unfaithful——能用,但不等价。能直接索引页面就直接索引。

04命令行

页面能做的都在这里,还有几样页面做不到的。任何一条后面都能加 --help

命令作用
facetmark import读入一个书签导出文件
facetmark browsers找出这台机器上已有的书签文件
facetmark index建索引,或者补齐
facetmark reindex全部从头再建一遍
facetmark search在终端里搜
facetmark show一条书签的全部信息
facetmark sessions列出所有时段
facetmark stats「库」那一屏的文字版
facetmark health找死链
facetmark serve网页界面和 API
facetmark mcpMCP 服务
facetmark token打印配对令牌
facetmark config path配置写到哪
facetmark config show所有配置,敏感项掩码
facetmark migrate把旧数据库升上来
facetmark demo一个假的库,用来到处点点看
facetmark eval重跑那些检索实测
facetmark version版本

facetmark demo 是判断你到底要不要用这东西最实在的办法:它用生成的页面搭出一个库,不要 key 不联网,让你在导入任何自己的东西之前先把每一屏都点一遍。

05备份,以及搬机器

一个文件。复制它就等于复制了全部——书签、正文、向量、图、历史。

它在哪
facetmark stats
先把服务停掉

数据库跑在 WAL 模式下,所以在有东西正在写的时候拷走,可能会漏掉日志的尾巴。停掉 facetmark serve,拷完再起。

  • 搬机器:把文件拷过去,版本不一样就再跑一次 facetmark migrate
  • 你的书签本来也还在浏览器里。最坏的情况是重新导入重新建索引,代价是时间和几次模型调用,不是数据。
  • 配置文件是单独的,里面有你的 API key。要么备份到你会放密码的地方,要么干脆不备份。