Token导航 LogoToken导航TokenDH.com
Peeky Search logo
开发工具stdio官方级别未说明来源级核验

Peeky Search

MCP Server

peeky-search

Peeky Search 是一个基于信息检索的搜索工具,直接从源代码中提取相关段落,为开发者提供精确的解决方案,避免使用LLM摘要层。

工具数

2

提示词数

0

GitHub Stars

1

资源数

0
信息检索本地搜索TypeScriptClaude代码搜索ClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

TripCreighton

提供方

TripCreighton

最后核验

2026/5/17 20:19

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx peeky-search --search --query "zod transform vs refine" --max 3

详细介绍

Peek搜索

](https://www.npmjs.com/package/peeky-search) ![license](https://github.com/TripCreighton/peeky-search/blob/main/LICENSE)

找到你真正想要的答案。

内置的网络搜索为您提供摘要。peeky搜索为您提供了Stack Overflow的答案,包括代码修复、有人调试您的确切问题的GitHub讨论、实际解释边缘情况的文档段落。

没有LLM摘要层。仅基于IR的提取(BM25+结构启发式),直接从源中提取相关段落。

npx peeky-search --search --query "zod transform vs refine" --max 3
# Search Results for: "zod transform vs refine"

Found 3 of 3 pages with relevant content.

## Zod: .transform() vs .refine() - Stack Overflow
Source: https://stackoverflow.com/questions/73715295

Use `.refine()` when you want to add custom validation logic that returns
true/false. Use `.transform()` when you want to modify the parsed value
before it's returned.

### Key difference
`.refine()` validates and returns the same type. `.transform()` can change
the output type entirely:

const stringToNumber = z.string().transform(val => parseInt(val));
// Input: string, Output: number

这是给谁的

  • 开发人员调试奇怪的问题 -在GitHub讨论或Stack Overflow中显示您的确切错误答案
  • 代理商和RAG建设者 -带有来源归属的可验证摘录,而非综合摘要
  • 任何厌倦了“这里有一个概述”的人 -当你需要特定的修复,而不是教程时

证据与总结

内置的网络搜索工具使用LLM 总结 页。你会得到一个完美的概览,但边缘的情况会变得平滑。

偷窥搜索摘录 证据 -来源的实际段落,按相关性排序。您可以确切地看到文档所说的内容,维护人员在GitHub线程中写的内容,以及公认的Stack Overflow答案所推荐的内容。

你得到了什么偷窥搜索内置WebSearch
输出您可以验证的源代码摘录AI解释摘要
边缘案例从实际讨论中得出的表面经常被总结出来
归因确切知道哪个页面说了什么“根据我的搜索……”
LLM处理无-纯IR提取隐藏摘要调用
速度~3-4秒~20-25秒

总结遗漏了哪些表面

总结会让你达成共识。peeky为您提供了实际解决问题的具体细节:

查询peeky提取了什么
vitest模拟计时器边缘情况: vi.stubGlobal 用于模拟未定义的属性
node.js背压_readableState.pipes.once('drain') 破解转换流
Zod.transform()as const satisfies 图案, readonly 数组陷阱
Next.js水合错误材质UI出错: Typography 默认为 `
`
CVE-2024-3094 xz后门链接到Filippo Valsorda的分析和xzbot复制库
Bun vs better-splite3GitHub讨论,维护者揭穿了基准方法论

这些是隐藏在搜索结果第3页、评论线程和“相关”侧栏中的详细信息——人类可以通过点击找到这些内容,但这些摘要会被掩盖。

示例:找到真正的答案

对于 Bun SQLite vs better-sqlite3 performance:

内置WebSearch 返回了Bun的官方声明(速度快3-6倍)和一些普遍的怀疑。

偷窥搜索 发现了GitHub上的实际讨论,其中better squelite3维护者分析了基准测试具有误导性的原因,表明对于真正的SQLite重查询,better squilite3实际上可以更快。

这就是区别:总结给你营销。peeky为您提供了有人实际调查的GitHub线程。

安装

需要 码头工人 运行SearXNG搜索后端。

npx peeky-search setup

这将:

  1. 检查先决条件(Docker已安装并正在运行)
  2. 在Docker中启动本地SearXNG实例
  3. 输出MCP配置以添加到您的客户端

然后将配置添加到MCP客户端并重新启动。

隐私

peeky搜索完全在本地运行:

  • 瑟克斯NG 在您的机器上运行Docker
  • 搜索不会影响Anthropic、OpenAI或任何第三方
  • 无查询记录、无遥测、无数据收集

内置的网络搜索工具通过人工智能提供商路由查询。您无法了解这些查询会发生什么。

命令

npx peeky-search setup              # One-time setup
npx peeky-search setup --port 9999  # Use custom port
npx peeky-search status             # Check if SearXNG is running
npx peeky-search start              # Start SearXNG
npx peeky-search stop               # Stop SearXNG
npx peeky-search uninstall          # Remove everything

MCP客户端配置

运行安装程序后,将以下内容添加到MCP客户端配置中:

{
  "mcpServers": {
    "peeky-search": {
      "command": "npx",
      "args": ["-y", "peeky-search", "mcp"],
      "env": {
        "SEARXNG_URL": "http://localhost:8888"
      }
    }
  }
}

在何处添加此内容:

  • 克劳德代码:运行 claude mcp add 并提供配置或编辑 ~/.claude/settings.json
  • 光标:添加到 .cursor/mcp.json 在您的项目或 ~/.cursor/mcp.json 全球范围内
  • 其他MCP客户端:检查客户的文档,了解MCP服务器配置的位置

用法

MCP工具

配置后,您的MCP客户端将可以访问两个工具:

peeky_web_search

搜索网络并获取摘录。

输入:

{
  "query": "react useEffect cleanup function",
  "maxResults": 5,
  "diagnostics": false
}
参数类型说明
querystring搜索查询。支持 site:, "quotes", -exclude
maxResultsnumber要获取的页面(默认5,最多10)
diagnosticsboolean包含筛选详细信息(默认为false)
sessionKeystring用于跨调用重复数据删除的键。对于不同的查询,可以重新获取相同的URL(使用 url:tokens 复合键)。

输出: 从多个带有源URL的页面中提取摘录。

peeky_fetch_page

获取并阅读一个网页。

输入:

{
  "url": "https://react.dev/learn/synchronizing-with-effects",
  "query": "cleanup function"
}
参数类型说明
urlstring要获取和读取的URL
querystring可选。重点提取此查询。如果省略,则返回完整的已清理内容。

输出: 已清理带有标题和源URL的markdown格式的页面内容。如果 query 返回与查询相关的重点摘录。

命令行界面

搜索模式 (使用SearXNG):

npx peeky-search --search --query "prisma vs drizzle orm" --max 5

URL模式 (摘自特定页面):

npx peeky-search --url "https://docs.example.com/auth" --query "JWT refresh tokens"

提取模式 (清除页面内容):

npx peeky-search --fetch --url "https://react.dev/learn"
npx peeky-search --fetch --url "https://react.dev/learn" --query "useState"

文件模式 (从本地HTML中提取):

npx peeky-search --query "authentication" --file docs.html --debug

其他选项:

  • --timing-t:显示性能时间细分
  • --diagnostics:逐页显示提取详细信息(搜索模式)

运作原理

搜索管道

SearXNG → Dedupe URLs → Block JS domains → Title filter → Session dedupe
                                                                ↓
                                                          Scrape pages
                                                                ↓
                                                    Extract → Rank → Budget
  1. 搜索:查询本地SearXNG的URL
  2. 预刮过滤:跳过被阻止的域,按标题/代码段相关性过滤(40%查询令牌阈值)
  3. 会话重复数据删除:跳过已为类似查询获取的URL
  4. 刮擦:具有超时处理的并行获取
  5. 提取并排名:运行提取管道,按组合相关性排名
  6. 预算:在字符限制内拟合结果

提取管道

HTML → Strip boilerplate → Extract blocks → Segment sentences
                                                    ↓
                                              BM25 + Heuristics
                                                    ↓
                                            Rank → Select anchors
                                                    ↓
                                      Expand context → Deduplicate
                                                    ↓
                                          Assemble excerpts (budget)
  1. 预处理:删除脚本、样式、导航、广告和样板
  2. 片段:将块(标题、段落、列表、代码)提取成句子
  3. 质量门:拒绝低质量的页面(句子太少,大部分是片段)
  4. 得分:BM25用于术语相关性+9结构启发式
  5. 选择:选择位置/内容多样的顶级句子
  6. 扩展:围绕锚点构建上下文,尊重部分边界
  7. 组装:在角色预算内调整摘录

演出

代币效率

与获取原始HTML/makdown并将其发送到上下文相比:

度量原始获取窥视搜索
每页内容30-80KB1-4KB
每页代币~15000-40000~500-2000
5页搜索约200KB,约50k个令牌约12KB,约3000个令牌

与原始HTML提取相比,减少了约95%。 内置的网络搜索也会压缩内容(通过摘要),但使用隐藏的LLM调用来实现——peeky使用纯IR实现了类似的令牌计数,没有中间模型。

速度

  • 提取:每页约20-50ms(纯计算,无LLM)
  • 搜索:约3-4s共5页(网络版)
  • 无隐藏成本你所看到的就是你所付出的

评分系统

BM25 (权重:0.6):经典词频逆文档频率。

启发法 (重量:0.4):

度量重量它测量什么
headingPath0.17节标题中的查询词
覆盖率0.16IDF加权期限覆盖率
接近度0.14查询词出现的接近程度
headingProximity0.11到匹配航向的距离
结构0.11块类型(标题,代码值较高)
密度0.09查询词集中度
离群值0.09高值句子的异常检测
metaSection0.08惩罚引言/结论/元内容
position0.05早期内容奖励

提取模式

  • 严格:用于单页提取。需要强有力的多期匹配。
  • 搜索:用于多页搜索。放宽阈值,接受部分匹配。

配置

管道默认值

{
  bm25Weight: 0.6,
  heuristicWeight: 0.4,
  maxAnchors: 5,
  minScore: 0.25,
  diversityThreshold: 0.4,
  contextBefore: 5,
  contextAfter: 8,
  maxExcerpts: 3,
  charBudget: 6000
}

MCP默认值

{
  searxngUrl: "http://localhost:8888",
  maxResults: 5,
  timeout: 5000,
  perPageCharBudget: 3000,
  totalCharBudget: 12000
}

提示

禁用内置网络搜索

如果启用了内置的网络搜索工具,模型可能会默认使用该工具。为确保模型使用peeky搜索:

  • 克劳德代码:在设置中禁用网络搜索,否则模型将更喜欢WebSearch而不是MCP工具
  • 其他客户:检查是否可以禁用内置的网络/浏览器工具

添加规则或内存

除非明确指示,否则某些型号无法识别MCP工具。添加如下规则:

使用peeky_web_search进行网络搜索。使用peeky_fetch_page读取URL。

在何处添加此内容:

  • 光标:添加到 .cursorrules 或项目规则
  • 其他客户:添加到系统提示、内存或自定义指令中

致谢

免责声明

此工具从可公开访问的网页中获取和提取内容。用户有责任确保其使用符合适用法律和访问的任何网站的服务条款。作者对误用不承担责任。

许可证

麻省理工学院

目录标签

目录标签

信息检索本地搜索TypeScriptClaude代码搜索本地部署开发者工具精确搜索

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

peeky-search

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP