01浏览器扩展
从地址栏搜你的书签,以及不离开当前页面就把它存下来。扩展连的是网页界面连的同一个本机服务。
- 先起服务:
facetmark serve。 - 从仓库里的
extension/加载扩展——Chrome:chrome://extensions,开开发者模式,加载已解压的扩展程序。 - 打开它的选项。服务在默认端口上它会自己配对;否则把
facetmark token的输出粘进去。
什么都不上传,也没有账号。服务没跑的时候,扩展什么也不做。
02Claude、Cursor,以及任何说 MCP 的东西
facetmark 自带一个 MCP 服务,所以助手可以把「搜你的书签」当成一个工具来用,而不是你手动往对话框里粘链接。
facetmark mcp{
"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 mcp | MCP 服务 |
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。要么备份到你会放密码的地方,要么干脆不备份。