Pensieve for Mac:通过本地索引减少编码智能体工具调用与 token 用量
Local Indexing to reduce tool calling and token usage
Pensieve 是一款面向 Apple Silicon 的本地文件、代码仓库与编码智能体会话的索引与搜索工具,通过 MCP 连接 Claude Code、Codex、Cursor、Gemini CLI 等智能体,用一次搜索替代多次 grep 与整文件读取。
给出了本地索引结合 MCP 减少编码智能体工具调用次数的具体方案,附有四个真实仓库的基准数据,读者可据此评估接入收益。
Pensieve for Mac
为你
以及你的智能体。赋能提速
在本地搜索你的文件、仓库和智能体会话,为你的智能体提供最贴合任务的最佳上下文。一次搜索即可定位到关键片段,而不是在整个磁盘上 grep。更少的工具调用,更低的成本。
Apple Silicon · macOS 14 或更高版本 · 免费且开源
连接你已经在使用的智能体
- Claude Code
- Codex
- Cursor
- Gemini CLI
- Windsurf
- Claude Desktop
- VS Code
- 任意 MCP 客户端
在本地搜索一切
一次搜索,覆盖所有文件、仓库和会话。
按下 Control+Shift 即可在你的文档、文件夹、git 仓库和与编程智能体的对话之上召唤一个毛玻璃面板。按语义或按确切字词搜索。选中结果,轻按 Control,无需鼠标即可选择如何处理它。
"retry" payments -draft
精确 "retry" 语义 payments 排除 draft
代码
payments/retry.pyacme-app/payments · max_retry_attempts = 5
精确
Incident review.md~/Documents/Ops · 银行卡拒付,带退避的 retry
精确
Receipts~/Downloads 中的文件夹
重构鉴权流程Codex · acme-app · 10 月 2 日
打开↩
在访达中显示⌘↩
在地图上显示⌥↩
复制路径⌘C
定价模式
按语义搜索
用普通词语即可找到你心目中的内容,即便文件里从未使用这些字眼。
"rate limit"
精确字词
加引号会完全匹配短语。混合使用两种方式,可按语义对精确命中进行排序。
-draft
排除内容
减号可排除某个词或某个带引号的短语。
kind:code ext:pdf
缩小范围
使用 in: 按文件、代码或会话、文件类型,或文件夹或代码仓库进行筛选。
为你的智能体赋予超能力
恰到好处的上下文,而非整个磁盘。
智能体的能力取决于它所获得的上下文。通过 MCP 连接,你的编程智能体只需向 Pensieve 发起一次提问,即可返回关键的几个片段,并附带文件和行号。用更少的工具调用直接定位到正确的代码。
没有 Pensieve grep 然后逐个读取
› Why do card retries stop after a decline? ● Grep "retry" in acme-app 212 matches ● Read payments/retry.py ● Read payments/gateway.py ● Read billing/invoices.py ● Read tests/test_payments.py … 36 more files Still looking for the backoff rule…
工具调用1 次 grep · 40 次读取且还在增加
使用 Pensieve 一次搜索
› Why do card retries stop after a decline? ● pensieve · search "card retry after decline" payments/retry.py:42 stop on hard_decline payments/gateway.py:118 decline codes Incident review.md why we changed it ● pensieve · read payments/retry.py:42 Hard declines skip the retry queue. Maya Rivera owns this; see the Mar 4 review.
工具调用1 次搜索 · 1 次读取
示例说明。在下面的基准测试中,接入 Pensieve 的智能体平均每次查找使用 2.0 次工具调用,而使用 grep 时为 3.4 次;在 144 次运行中,有 82 次只需一次调用即可给出答案。
~ $ pensieve integrate recommended claude-mcp: on codex-mcp: on cursor-mcp: on claude: on # "search before you grep" in ~/.claude/CLAUDE.md pensieve-search: on claude-hook: on claude-repo-check: on Agents load MCP servers when they start: restart any that are open to give them Pensieve.
限定在任务范围内
在某个仓库中启动的智能体,会看到该仓库、其工作树以及相关会话。指定一个作用域,即可让它访问几个仓库和一份规范文档。
精确或按语义
智能体使用的搜索方式与你相同:按语义、按确切标识符,或两者结合,覆盖代码、文档和过往会话。
兼容你的智能体
支持 Claude Code、Codex、Cursor 或任何 MCP 客户端,可通过 stdio 与 pensieve mcp 通信,或通过 HTTP 通信。pensieve integrate 会连接你 Mac 上的代理,并新增「search before you grep」区块与若干技能,其中包含可选技能,可指向熟悉相关代码的队友。
用数据说话,而非空口承诺
更少的搜索,首次就命中正确的文件。
我们在有无 Pensieve 的情况下,让 Claude Code 完成相同的代码查找任务:从 500 到 35,000 个文件规模的真实仓库中抽取留出任务,以五种方式提问——从自然描述到确切名称和错误信息。借助 Pensieve,它能在每个仓库中以更少的工具调用完成更多任务,且每次查找的成本都更低。每次搜索仅需 0.1 至 0.2 秒。
131 / 144使用 Pensieve 时找到正确文件的运行次数,而仅用 grep 时为 123 / 144
减少 43%每次查找的工具调用数:从 3.4 降到 2.0
便宜 18%每次查找:从 $0.050 降到 $0.041,且在所有四个仓库中都更便宜
快 21%每次查找:从 10.9 秒降到 8.6 秒
首次结果就是正确的文件
在调用任何代理之前的一次搜索中:答案出现在首位的频率。
一次 grepPensieve 搜索
每次代码查找的代理成本
Claude Sonnet 在 Claude Code 中,于四个真实仓库中测量。Pensieve 在每个仓库中成本都更低,且在最大的仓库中节省最多。
Grep、Glob 和 Read使用 Pensieve
方法:Claude Sonnet 通过 Claude Code 无头运行。任务根据代码生成,并根据找到的文件进行评分。“使用 Pensieve”为默认代理工具集加上来自 pensieve integrate 的指令块,使用 Pensieve 0.5.6 进行测量。两种设置在四个仓库(504、1,783、2,383 和 34,847 个文件)上运行相同的 72 个保留任务,每个任务运行两次,于一批中完成,因为成本取决于运行时的 Claude 提示缓存。这些任务从未用于调优 Pensieve。成本为 Claude Code 按标价报告的 API 成本。Pensieve 使用的令牌减少 16%。“首次结果就是正确的文件”图表使用相同的保留任务:单次 grep 在精确错误消息上获胜,而 Pensieve 在其他所有方面获胜。基准脚本在 bench/ 中开源;在您自己的仓库上运行它们。
知道该问谁
查看谁负责什么。
每个仓库都如同一张地图,每一行都有 git blame。询问任何主题,即可获得领域知识最多的人员,以及每位队友最近一直在做的事。最快的答案往往是一次对话。
从 blame 得出所有权
谁编写了每个区域,按今天仍存在的行数加权。
领域知识
询问主题而非文件,即可获得代码与之最相关的人员。
团队活动
每位队友在过去 90 天内交付的内容,以及您工作中尚未探索的邻近领域。
发现知识空白
知道知识流失的去向。
当编写代码库某部分的人不再活跃于其中时,相关知识便面临风险。Pensieve 会标记这些区域,显示仍然了解它们的人员有多少,以及今天谁最了解它们。
acme-app / billing/tax
1 名活跃专家
2,140 行 · 上次重大更改 7 个月前
此处不活跃 · 78%Priya Nair · 14%其他 · 8%
DK
Daniel Kim自三月起在此处不活跃
58%
LS
Lena Schultz自去年起在此处不活跃
20%
PN
Priya Nair本月活跃 · 今天最了解
14%
建议:在更改税务规则之前与 Priya 结对,并在 vat.py 中记录四舍五入逻辑。
一眼看出巴士因子
对于仓库的每个区域:由仍活跃于该区域的人员编写的代码占多少,以及此类人员有多少。
谁仍了解它
该区域中行数最多的活跃人员,以便您在改动前知道该拉谁入伙。
规划交接
在事故发生之前发现空白。让您的代理针对该区域起草缺失的文档。
使用虚构姓名和数字的示例。
始终保持最新
编辑一个文件,几秒钟后即可搜索。
Pensieve 监视您的文件夹、仓库和代理会话,并重新索引发生更改的内容。未提交的编辑也算在内,每个工作树都按分支跟踪,因此您的代理永远不会基于过时的上下文工作。
payments/retry.pyacme-app 中未提交的更改
刚刚
新建 worktree:fix-backoff与 main 分支存在差异的文件,已按所在分支标注
12 秒前
Q3 planning.pdf已保存到 ~/Documents/Planning
1 分钟前
正确为年付方案定价正在运行的 Claude Code 会话中的新对话轮次
2 分钟前
默认私密
你的工作数据留在这台 Mac 上。
索引和搜索都在本地运行。由你决定哪些内容被收录,AI 完全可选。
本地运行
设备上的嵌入模型与位于 ~/.pensieve 的本地索引。其服务器只响应这台 Mac,不向你的网络或其它网站开放。无需账号,没有云服务。
随时关闭任何来源
代理、文件夹、仓库和应用各自都带有开关。关闭一个,就会移除它已索引的内容。
跳过机密内容
密码管理器的导出、密钥、.env 文件和凭据永远不会被索引。
AI 由你决定
摘要与洞察均为可选。选择由谁生成,或者干脆关闭:
内置 Qwen 3.5 9B 本地
LM Studio 或本地服务器 本地
Claude Code 或 Codex 云端
关闭 本地
获取 Pensieve。
免费且开源。由你的编码助手来完成安装。
让编码助手来安装。
将以下内容粘贴到 Claude Code、Codex、Cursor、Gemini CLI、Qwen Code、Windsurf 或 VS Code 中。
在我的 Mac 上安装 Pensieve,运行 sh -c "$(curl -fsSL https://tedhaley.ca/pensieve/install.sh)",然后运行 pensieve integrate recommended。接着运行 pensieve setup,向我展示它发现的内容,询问我要索引哪些来源,再按我的决定运行 pensieve setup。打开 Pensieve 应用并在准备就绪时告诉我。
- 1粘贴提示词粘贴到你所使用的任意编码助手中。
- 2助手帮你安装先装应用,再为 Mac 上的每一个代理装上 Pensieve。
- 3选择要索引的内容助手会询问你。在你选择之前,不会索引任何内容。
- 4按住 Control 和 Shift在索引运行的同时发起搜索。该过程耗电量较大,请接入电源。
版本 0.5.9 · Apple 芯片 · macOS 14 或更高版本
常见问题。
Pensieve 会搜索哪些内容?
你的文件和文件夹(文稿、桌面、下载以及你添加的任何文件夹)、你的 git 仓库(包括未提交的更改和 worktree),以及你的 Claude Code、Codex 和 Qwen Code 会话。还支持 Obsidian 库,以及可选的 Apple Notes。所有索引和搜索都在你的 Mac 上完成。
Pensieve 如何帮助我的编码助手?
没有它时,编码助手常常要在仓库中 grep 并读取许多完整文件来寻找关键内容,每读取一个文件都要消耗 token。通过 MCP 连接 Pensieve 后,助手只需提出一个问题,便能取回最相关的段落以及对应的文件和行号,从而用更少的工具调用直接定位到正确的代码。在我们的基准测试中,每次查找便宜了 18%,速度加快了 21%;请参见上方的实测结果。
Pensieve 能让 Claude Code 更省钱吗?
在我们的基准测试中,配合 Pensieve 的 Claude Code 在 144 次运行中有 131 次找到了正确的文件,而仅用 grep 时为 123 次,工具调用减少了 43%。每次查找总体便宜了 18%,在四个仓库(文件数从 504 到 34,847 不等)中也分别节省了 6%–28%。基准测试脚本是开源的,你可以在自己的代码上运行。
如何让我的编码助手使用 Pensieve 而不是 grep?
Agent 习惯用 grep。安装提示会运行 pensieve integrate recommended,它会在 Claude Code、Codex 和 Gemini CLI 的指令文件中加入一段简短的"先搜索再 grep"部分,还包括一个搜索技能和两个用于 Claude Code 的钩子。你也可以在 Settings → Agents 中开启这些。开启后,在最新基准测试的全部 144 次运行中,agent 都使用了 Pensieve。
哪些 agent 可以与 Pensieve 配合使用?
任何 MCP 客户端都可以。pensieve integrate recommended 会为你连接 Claude Code、Codex、Cursor、Gemini CLI、Windsurf、Claude Desktop 和 VS Code。其他 agent 可以通过 stdio 或 HTTP 使用 pensieve mcp。可选的技能还会推荐了解某个领域的团队成员,并帮助围绕已有代码规划新代码。
它如何发现知识盲区?
Pensieve 会读取仓库中每个区域的 git blame 和最近的提交记录。那些大部分代码行是由最近在该区域没有提交记录的人所写的区域会被标记,同时还会显示该区域有多少活跃人员了解,以及其中谁最熟悉。
会有任何数据离开我的 Mac 吗?
你的文件、代码和会话不会。索引和搜索都在你的 Mac 上运行。Pensieve 只会下载其模型并检查 GitHub 是否有更新,这些操作可以关闭。例外情况是,如果你选择让 Claude Code 或 Codex 生成可选的 AI 洞察;这些会被标记为 Cloud。使用内置模型、本地服务器(如 LM Studio),或完全不使用 AI,都可以保持一切本地化。
我需要 AI 模型吗?
不需要。搜索、agent 上下文、归属信息和知识盲区都可以在没有 AI 模型的情况下工作。AI 洞察是可选的:可以选择内置的 Qwen 3.5 9B、LM Studio、Claude Code、Codex,或者不使用。
Pensieve 是免费的吗?
是的。它基于 MIT 许可证,免费且开源。代码托管在 GitHub 上。
为什么 macOS 在打开它之前会询问?
该应用尚未进行公证。如果 macOS 阻止了它,请打开 System Settings → Privacy & Security,然后点击 Open Anyway。你只需要操作一次。
它能在 Intel Mac 或 Linux 上运行吗?
该应用需要 Apple Silicon。在 Linux 和 Intel Mac 上,相同的提示会安装后端和浏览器可视化工具。如果 Intel Mac 上安装了 Xcode 命令行工具,还可以获得搜索面板。
如何卸载它?
首先运行 pensieve integrate all --remove 来断开你的 agent。然后退出 Pensieve,将其拖到废纸篓,并删除 ~/.pensieve、~/.local/share/uv/tools/pensieve 和 ~/.local/bin/pensieve。它的模型位于 ~/.cache/huggingface 中。
来源:Hacker News · tedhaley.ca