跳到正文
Hacker News· TedHaley·· 6 天前AI 评分62

Pensieve for Mac 发布:本地索引减少 Agent 工具调用与 token 消耗

Local Indexing to reduce tool calling and token usage

AI 导读

Pensieve for Mac 发布 0.5.9 版本,通过本地索引文件、仓库和 Agent 会话,让 Claude Code、Codex、Cursor 等 MCP 客户端一次搜索拿到相关代码片段,减少 grep 和整文件读取。

正文 · AI 翻译

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 · card declines, retry with backoff

精确

Receipts~/Downloads 中的文件夹

重构认证流程Codex · acme-app · 10月2日

打开↩

在访达中显示⌘↩

在地图上显示⌥↩

复制路径⌘C

pricing model

按含义

普通词语也能找到你想找的内容,即使文件从未使用过这些词。

"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 上的智能体,并添加一个“grep 前先搜索”块和技能,包括可选技能,可为你指向熟悉该代码的队友。

实测,而非承诺

更少的搜索。第一次就找到正确的文件。

我们给 Claude Code 布置了相同的代码查找任务,分别在有和没有 Pensieve 的情况下:来自真实代码仓库的留出任务,文件数从 500 到 35,000,以五种方式提问,从平实描述到精确名称和错误消息。使用 Pensieve 时,它在每个代码仓库中都能找到更多,工具调用更少,每次查找成本更低。每次搜索耗时 0.1 到 0.2 秒。

131 / 144使用 Pensieve 找到正确文件的运行次数,而仅用 grep 为 123 / 144

工具调用减少 43%每次查找:2.0 次而非 3.4 次

成本降低 18%每次查找:$0.041 而非 $0.050,且在全部四个仓库中都更便宜

速度提升 21%每次查找:8.6 秒而非 10.9 秒

正确文件,首个结果

在任何 agent 介入之前的一次搜索:答案成为首个结果的频率。

一次 grepPensieve 搜索

每次代码查找的 Agent 成本

Claude Code 中的 Claude Sonnet,在四个真实仓库中测量。Pensieve 在每个仓库中成本都更低,且在最大的仓库中节省最多。

Grep、Glob 和 Read使用 Pensieve

方法:Claude Sonnet 通过 Claude Code 以无头模式运行。任务由代码生成,并根据找到的文件评分。“使用 Pensieve”是默认 agent 工具集加上来自 pensieve integrate 的指令块,使用 Pensieve 0.5.6 测量。两种设置都在四个仓库(504、1,783、2,383 和 34,847 个文件)中运行了相同的 72 个留出任务,每个任务运行两次,在同一批次中完成,因为成本取决于当时 Claude 的提示缓存。这些任务从未用于调优 Pensieve。成本是 Claude Code 报告的按标价的 API 成本。Pensieve 使用的 token 减少了 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自 3 月起在此不活跃

58%

LS

Lena Schultz自去年起在此不活跃

20%

PN

Priya Nair本月活跃 · 今天最了解它

14%

建议:在更改税务规则前与 Priya 结对,并记录 vat.py 中的舍入逻辑。

一目了然的巴士系数

对于仓库的每个区域:有多少代码是由仍在那里活跃的人编写的,以及这样的人有多少。

谁仍然了解它

在该区域拥有最多行数的活跃人员,这样你就知道在更改它之前该拉谁进来。

规划交接

在事故之前发现空白。让你的 agent 指向该区域以起草缺失的文档。

示例使用虚构的名称和数字。

始终最新

编辑一个文件。几秒后搜索它。

Pensieve 监视你的文件夹、仓库和 agent 会话,并重新索引已更改的内容。未提交的编辑也算数,每个工作树都按分支跟踪,因此你的 agent 永远不会基于过时的上下文工作。

payments/retry.pyacme-app 中未提交的更改

刚刚

新工作树: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 中。

通过运行 sh -c "$(curl -fsSL https://tedhaley.ca/pensieve/install.sh)" 在我的 Mac 上安装 Pensieve,然后运行 pensieve integrate recommended。接着运行 pensieve setup,向我展示它发现了什么,询问我要索引哪些来源,并根据我的选择运行 pensieve setup。打开 Pensieve 应用,并在准备就绪时告诉我。

  1. 1粘贴提示词粘贴到你使用的任意编码代理中。
  2. 2你的代理安装它先安装应用,然后为你的 Mac 上的每个代理安装 Pensieve。
  3. 3选择要索引的内容你的代理会询问。在你选择之前,不会索引任何内容。
  4. 4按下 Control 和 Shift在索引运行时进行搜索。它会消耗大量电量,所以请插上电源。

版本 0.5.9 · Apple Silicon · macOS 14 或更高版本

问题。

Pensieve 搜索什么?

你的文件和文件夹(Documents、Desktop、Downloads 以及你添加的任何文件夹)、你的 git 仓库(包括未提交的更改和工作树),以及你的 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 上,同一提示会安装后端和浏览器可视化工具。如果安装了 Xcode 命令行工具,Intel Mac 还能获得搜索面板。

如何卸载它?

首先运行 pensieve integrate all --remove 断开你的 Agent。然后退出 Pensieve,将其拖到废纸篓,并删除 ~/.pensieve、~/.local/share/uv/tools/pensieve 和 ~/.local/bin/pensieve。其模型位于 ~/.cache/huggingface。

来源:Hacker News · tedhaley.ca