Trove
Search everything you've ever made. Locally.
______________________________________________________________________
这是什么?
我一直在浪费时间在GitHub、Notion、本地文件夹、Obsidian、Slack、Figma上寻找东西。…到处都是。因此,我构建了Trove,以便在一个地方对所有内容进行索引,并使其可搜索。
npx trove-os setup
npx trove-os search "that API design doc from last week"它在你的机器上运行。没有云,没有帐户,没有订阅。
______________________________________________________________________
为什么它对AI代理很重要
我没想到的部分是最有用的:Trove船只和 MCP服务器。它查询预构建的索引,并在一次调用中获取所需内容,而不是Claude Code(或任何代理)逐个文件扫描文件系统文件——燃烧数千个令牌。
claude mcp add trove -- npx trove-os mcp然后正常地问: *“在登录页面上找到我的Figma模型”* --克劳德命中了指数,而不是15 glob + grep 电话。
在实践中,这已经从每次文件搜索约10000-50000个令牌下降到200-500个。您的里程数将根据项目规模而有所不同。
______________________________________________________________________
它与什么有关
Trove有一个插件系统——每个源代码都是一个“连接器”(一个TypeScript文件,约100-200行)。
目前工作:
| 来源 | 什么被编入索引 | |
|---|---|---|
| 📁 | 本地文件 | 代码、文档、图像、视频——你机器上的任何东西 |
| ⬡ | GitHub | 仓库、自述文件、元数据 |
| 📝 | Notion | 页面、数据库、内容为Markdown |
| 💎 | 黑曜石 | 保险库笔记、封面、维基链接、标签 |
| 📊 | 谷歌云端硬盘 | 文档、表格、幻灯片 |
| 💬 | Slack | 消息、书签、帖子 |
| 🎮 | Discord | 消息、图钉 |
| 🎨 | Figma | 文件、组件、页面 |
| 📐 | 线性 | 问题、文档、项目 |
| 🤖 | OpenClaw | 对话、记忆、技能 |
| 🧠 | 克劳德代码 | 对话,项目记忆 |
| 📘 | Confluence、Airtable、Dropbox、Raindrop | 各种 |
所有连接器都使用原始 fetch --零SDK依赖。内置寻呼、速率限制和中止信号。
想添加一个吗? 看 编写连接器 --这真的不是很多代码。
______________________________________________________________________
入门
# Setup wizard — walks you through connecting sources + installing local AI
npx trove-os setup该向导处理一切:源代码选择、API令牌、Ollama模型安装、第一个索引。
如果你更喜欢手工制作:
npx trove-os init # Creates .trove.yml + .env
# Edit them, then:
npx trove-os index
npx trove-os search "query"与MCP代理一起使用
适用于Claude Code、OpenClaw、Cursor、Windsurf、Cline——任何讲MCP的东西。
# Claude Code
claude mcp add trove -- npx trove-os mcp
# OpenClaw
openclaw config set mcpServers.trove.command "npx"
openclaw config set mcpServers.trove.args '["trove-os", "mcp"]'
# Any MCP agent
npx trove-os mcp # stdio server______________________________________________________________________
桌面应用程序
trove-os desktop带有搜索、源代码管理、文件浏览器(双窗格,拖放)、键盘快捷键的电子应用程序。连接到与CLI和MCP服务器相同的索引。
______________________________________________________________________
搜索是如何工作的
- 嵌入 --Trove为您的所有内容计算向量嵌入。支持Ollama(推荐,免费)、Transformers.js(本地)、TF-IDF(零dep回退)或Anthropic(云)。
- 语义搜索 --查询是按意义匹配的,而不仅仅是关键字。“登录页面设计”可以找到您的Figma身份验证模型,即使标题中没有“登录”。
- AI答案 --可选RAG通过Mistral(Ollama)。问一个问题,得到一个基于你实际内容的答案。
- 后备链 --Ollama不在吗?回到Transformers.js。这也失败了吗?TF-IDF。总是工作。
基本使用不需要API密钥。
______________________________________________________________________
配置
.trove.yml:
storage: sqlite
data_dir: ~/.trove
embeddings: ollama
sources:
- connector: local
config:
paths: [~/Desktop, ~/Documents]
extensions: [".md", ".ts", ".rs", ".png", ".mp4"]
ignore: ["node_modules", ".git", "dist"]
- connector: github
config:
username: your-username
- connector: notion
config: {}API令牌进入 .env (被忽视,从未承诺):
GITHUB_TOKEN=ghp_...
NOTION_TOKEN=secret_...
FIGMA_TOKEN=figd_...
SLACK_TOKEN=xoxb-...
# etc — only add the ones you useOllama(推荐)
ollama pull nomic-embed-text
# That's it. Trove auto-detects Ollama on localhost:11434.______________________________________________________________________
命令行界面
trove-os setup # Interactive setup
trove-os index [source] # Index all or one source
trove-os search # Search from terminal
trove-os ask # AI-powered file finder
trove-os chat # Interactive AI session
trove-os watch # Live re-index on changes
trove-os status # Index stats
trove-os mcp # Start MCP server
trove-os desktop # Launch Electron app______________________________________________________________________
安全
您的索引可能包含银行对账单、SSH密钥、加密钱包的路径。Trove对此很偏执:
- 40+文件模式被阻止 从索引(
.env,.pem,.key,.wallet,id_rsa等等) - 秘密编辑 在索引内容中-API密钥、密码、信用卡被替换为
[REDACTED] - 可选加密 静止时(AES-256-GCM)
- 身份验证令牌 在每个API请求上,CORS锁定到本地主机,DNS重新绑定保护
- MCP工具 拒绝读取敏感文件
- 任何地方都没有shell命令--
execFile()仅
______________________________________________________________________
建筑
TypeScript单仓库,pnpm+Turborepo,18个包。
Sources → Connectors → TroveEngine → CLI / Web / MCP / API该引擎处理索引、嵌入、存储(JSON或SQLite)和搜索。连接器是产生 ContentItem 物体。接口消耗引擎。
______________________________________________________________________
编写连接器
import type { Connector } from "@trove/shared";
import { z } from "zod";
const connector: Connector = {
manifest: {
name: "my-source",
version: "0.1.0",
description: "Index my source",
configSchema: z.object({ token_env: z.string().default("MY_TOKEN") }),
},
async validate(config) {
return process.env[config.token_env] ? { valid: true } : { valid: false, errors: ["Token not set"] };
},
async *index(config) {
yield { id: "my:1", source: "my-source", type: "document", title: "My Doc", description: "", tags: [], uri: "https://...", metadata: {}, indexedAt: new Date().toISOString() };
},
};
export default connector;发布为 trove-connector-{name} 在npm上。看 packages/connectors/ 举个真实的例子。
______________________________________________________________________
开发设置(从源代码运行)
如果你克隆了仓库,并想在本地运行Trove而不发布到npm:
git clone https://github.com/antoinebecker10-afk/trove.git
cd trove
pnpm install
pnpm build
cd packages/cli && pnpm link --global && cd ../..现在 trove-os 在您的机器上的任何地方都可以工作:
trove-os setup
trove-os search "query"
trove-os desktop______________________________________________________________________
贡献
PR欢迎。最简单的切入点是编写一个连接器——从“即将推出”列表中选择一个源,或者自带一个。
马上就来: Canva、YouTube、Reddit、Twitter/X、浏览器书签、Jira、谷歌文档、Gamma
______________________________________________________________________
关于
我使用Claude Code作为开发工具——就像你使用Copilot或Cursor一样。架构、决策和审查都是我的。这个工具帮助我移动得更快。我不认为这是隐藏的东西,但我也不认为它定义了项目。
如果你发现bug,打开一个问题。如果你想改进一些东西,打开一个公关。这才是最重要的。
