pi-web-搜索
Pi 统一网络和公共编码搜索: 1 search 用于查询、URL提取和本地证据的继续的工具.
- 默认无密钥 : Exa,相通,Jina Reader(只取URL),grep.app,和Sourcegraph. 可选 Jev 过滤重用您的 Pi 登录/ key .
- 一个平面图: 完全一个
query, (中文(简体) ),urls,或ref附加可选scope, (中文(简体) ),effort, (中文(简体) ),find,以及cursor。没有选择提供者的参数. - 两项努力:
fast(默认)使用一个配置的提供者加倒计时;thorough粉丝横跨合格来源 由research.enabled。 。 。 . - 可选 Pi-native Jev 排名,过滤,和安全分类. 默认关闭.
安装
需要皮条 0.99.0或更新。 。 。 .
-
安装 :
pi install npm:@gagansd/pi-web-search -
第一个互动会话显示了一个一次性的设置,即为已有的Exa,GitHub和并行的证书. 对于密钥和设置, 随时运行
/web-search。 。 。 .
无密钥配置有 Exa 和 并行 设定的限制 .
| 命令 | 它会做什么 |
|---|---|
/web-search | 菜单:状态,提供者密钥,分类器. 无头指印状态. |
/web-search status | 提供商、证书存在(从未有密钥)和分类针. |
/web-search provider [name] | 添加或修改检索密钥。 采取器为色码:无键,可选,或需要;有或缺失. |
/web-search classifier [none|provider/model] | 从列表中选择或禁用 none。 。 。 . |
分类器 API
可选分类法增加了判决 effort: "thorough" 电话; 快速 search 电话从不运行.
- 等级: 倾向于相关、自成一体的摘录并惩罚非专题结果.
- 过滤器 : 抑制有自信地标出即时注射、钓鱼或有害内容.
- 检查覆盖范围 : 判断获取的证据是否足以回答询问.
结构和模型支助
Retrieval → Pi classifier API → ranking/filtering policy → cited results
分类器接收查询和候选标题,URL,以及作为状态的节选,加上打出布尔和选择问题. 它返回概率;代码应用权重和阈值. Pi拥有目录,认证,以及 classify()。这个包裹针出一个精确 provider编号 :model。 。 。 .
| 分类符 | 支助 |
|---|---|
| 杰维 通过 TypeSafe、Vercel AI Gateway 或 OpenRouter 访问 | 现在可用; 重复使用 Pi 认证 . |
| 任意 Pi 分类器 包括马拉马.cpp | 把它钉住 provider编号 :model。 。 。 . |
| OpenAI 决定和其他决定模式 | 在 Pi 中注册为分类器时支持; 给确切的提供者/ 模型打针 . |
提供者-独立边界使得其他分类者可以不重写检索或排名. 将任何注册的 Pi 分类器按下 /web-search classifier。 。 。 .
用您已有的 Pi 登录尝试 Jev
对于 OpenRouter :
- 运行
/login openrouter只有Pi还没有被认证。 。 。 . - 运行
/web-search classifier选择openrouter/~typesafe/jev-latest,或/web-search classifier openrouter/~typesafe/jev-latest。 。 。 . - 运行
/reload。 。 。 . - 问:“用彻底的搜索来搜索网页以中止Signal.timeout。”
| 使用 | 设置命令 | 默认模式 |
|---|---|---|
| 类型安全 | /web-search classifier typesafe/jev-latest | jev-latest |
| Vercel AI 网关 | /web-search classifier vercel-ai-gateway/typesafe-ai/jev | typesafe-ai/jev |
| 打开路透社 | /web-search classifier openrouter/~typesafe/jev-latest | ~typesafe/jev-latest |
| 打开代码 | /web-search classifier opencode/jev-1.13 | jev-1.13 |
| OpenAI 决定 | /web-search classifier vercel-ai-gateway/openai/gpt-6-luna-decisions | openai/gpt-6-luna-decisions |
| 大赦国际 | /web-search classifier 并选择列出的克拉夫/杰夫型号 | 目录 |
/web-search classifier 列出当前每个分类器 Pi 注册,加 无分类符不出现在 /model;这个取取器是搜索专用的接针. Pinning 允许多源搜索和判断 web-search.json,保留您的其他设置. 不需要第二个 API 键 . Pi重新使用其存储,环境,运行时间,或模型认证. 如果需要的话,请用Pi的 /login 给那个供货商.
/web-search classifier none 禁用判断; 继续搜索 。 托管的分类费用记入固定账户.
默认取消分类。 如果启用时没有明确的提供者/模型对,则使用 杰维 (单位:千美元)vercel-ai-gateway/typesafe-ai/jev) (中文(简体) ). 其他 Pi 分类器可以被明确固定. 配置用途 classifier旧的 jev 块和 backend 字段被拒绝,而不是迁移。 失败者会以警告方式获取证据。 主机分类器在输出剪接前收到节录;安全判断不是安全边界. 见 所有设置和限制。 。 。 .
工具和实例
使用 search 用于公共文档、当前信息、文字公共编码模式、已知的URL以及所储存的证据:
search是唯一注册的工具。 直接和代码调用器使用相同的接口.
| 投入 | 使用 |
|---|---|
query | 搜索条款或问题。 与 scope: "code",使用文字标识符或片段. |
urls | 在不请求搜索的情况下提取一个或多个已知的 HTTP( S) 页面 . |
ref | 本地读取存储的证据 。 接受手柄( 列表) 或 <resultId>:<oneBasedIndex> (读). |
scope | web (违约), code,或 both。 。 。 . both 默认为 effort: "thorough"。 。 。 . |
effort | fast (默认;一个提供者加倒置)或 thorough (当前来源;需要) research.enabled) (中文(简体) ). |
find 编号 : cursor | 改进a ref 读取时使用文字上的通道搜索或继续光标. |
就是其中一个 query, (中文(简体) ), urls,或 ref 需要时间。 冲突、不适当的字段和未知参数都以短暂的错误而失败,而不是被默默地忽略.
实例:
{ "query": "AbortSignal.timeout", "scope": "web" }
{ "query": "useSyncExternalStore repo:vercel/next.js", "scope": "code" }
{ "query": "AbortSignal.timeout", "scope": "both", "effort": "thorough" }
{ "urls": ["https://example.com/docs"] }
使用 repo:<owner/name> 财务报告和审定财务报表 language:<name> 用于常见的代码-过滤子集;其他 GitHub 修饰语是依赖提供者的。 仅当您想要提取时才提供 URL 字符串; 它们不能与 query 或者说 ref。 。 。 . urls 接受最多20个字符串;空白被忽略,无效/非HTTP(S) URL生成警告. 只使用 URL 调用需要至少一个有效的 URL 。 提取返回提供者选择的证据,而非完整浏览器页面 。 未声明的工具参数,例如 limit, (中文(简体) ), provider,或 path 在错误中拒绝并命名.
无需其他网络请求即可读取更多信息
搜索返回已绑定的预览外加会话本地 resultId 当证据可以存储。 传出手柄作为 ref 通过同一工具列出或读取证据:
const index = await tools.search({ ref: "<returned handle>" });
text(index);
const passage = await tools.search({ ref: "<returned handle>:1", find: "timeout" });
text(passage);
参考书系单行线(<resultId>:1 是第一个存储结果。 奥米 find 和使用情况 cursor 继续读取。 处理在闲置了10分钟后过期(成功读取更新,最多60分钟),驱逐、关闭或重新装入。 没有写到磁盘上。 所储存的证据是有限度的,而且可能已被提供者截断 未保证全页内容。直接呼叫者可以复制返回的 search({ref, cursor}) 继续调用; 不需要代码 。 见 效率和限制。 。 。 .
代码修饰符
repo:<owner/name> 财务报告和审定财务报表 language:<name> 是文件的常见子集。 在grep.app和Sourcegraph上,这些被取入过滤器;引出含有空格的限定值. 第一个不空地 repo: 值被使用,重复的语言被去除. grep.app 语言过滤不可靠 并总是在使用时添加警告;避免用于第一次搜索,并将零点击视为没有定论.
其他限定词依赖提供者:grep.app叶 path:, (中文(简体) ), filename:,而字形图案中的类似语法,而GitHub接收原始查询时没有改变并解释自己的语法. 零重击警告意味着可能的补救办法,而不是确认不存在代码的原因或证明. grep.app和公用源代码并非每个 GitHub 寄存器索引; repo:facebook/react 经常错过这些来源.
完整配置
配置路径是 <agent-dir>/web-search.json,通常情况下 ~/.pi/agent/web-search.json。 。 。 . PI_WEB_SEARCH_CONFIG 覆盖此路径 . PI_CODING_AGENT_DIR 更改 Pi 代理目录 .
扩展不会自动读取工程 .pi/web-search.json 或将 Pi 合并 settings.json。工程本地安装不会改变配置位置.
缺失文件使用这些默认 :
{
"web": { "provider": "exa", "fallback": ["parallel"] },
"code": { "provider": "grep", "fallback": ["sourcegraph", "github"] },
"research": { "enabled": false },
"timeoutMs": 20000,
"maxResults": 8
}
所有字段都是可选的. 将更改合并到已有文件 。 网络操作每次读取配置;即使配置不正确,Ref读取仍停留在本地. 在本地 MCP 注册或证书更改后重新加载 .
web接受exa, (中文(简体) ),parallel,以及brave. Jina是只提取的,不是搜索链供应商.code接受grep, (中文(简体) ),sourcegraph,以及github。 。 。 .maxResults切到整数,然后夹到 1–20 (中文(简体) )它既限制了提供者的请求,也限制了 全局返回的预览数,包括URL摘录. 所请求的 URL 摘录被优先排序; 可通过search({ref}). 提供者可能返回较少的结果或忽略所要求的限制.timeoutMs切换为整数毫秒。 积极价值有: 最低1,000毫秒使用的非正值 20 000毫瓦时。这些数值调整不会发出警告.- 无效的 JSON, 未知字段/ 提供者, 以及形状错误的块生成
invalid_config。错误的家庭提供者触发警告和违约或删除。 一些无效的分类器值触发带有警告的默认值. 仅字面true启用classifier.enabled。 。 。 .
见 配置解析器 用于验证细节.
可选彻底搜索和Jev
- 运行
/web-search以识别配置路径. - 合并
{"research":{"enabled":true}}进入文件. - 运行
/reload。 。 。 .
effort: "thorough" 将相同的查询同时发送到 scope. Fan-out 被限制:最多 每个家庭两次实际运输 按配置顺序,最多4个 both; 缺失的运输不消耗一个槽. fallback: [] 不排除来源。 它不检查协议或发起进一步搜查. scope: "both" 默认为彻底; 明确 effort: "fast" 与 both 被拒绝,以及 research.enabled 一定是事实 快来电从不刻意打出去.
捷夫需要单独的选入. 匿名检索不需要分类证书 。 见 分类器设置, (中文(简体) ), 调音,以及 失败行为。 。 。 .
全权证书
Exa MCP,并列原生MCP,grep.app,和Sourcegraph不需要搜索密钥. Jina Reader以匿名方式处理只取URL;勇者搜索需要自己的密钥. 匿名并行有较低的服务器控制率限制. 平行密钥是可选的 .
搜索证书使用之前的第一个非空白环境别名 <agent-dir>/auth.jsonGitHub 然后尝试已有的 gh auth login 符号 .
| 存储的ID | 环境别名,优先 | 行为 |
|---|---|---|
exa | EXA_API_KEY | 选择 REST 而不是无密钥 MCP . |
parallel | PARALLEL_API_KEY | 为更高的限制添加一个 Bearer 头. |
github | GITHUB_TOKEN, (中文(简体) ), GH_TOKEN | 需要一个标志。 返回只核实公开结果. |
brave | BRAVE_API_KEY, (中文(简体) ), BRAVE_SEARCH_API_KEY | 可选的 REST 搜索提供者; 需要密钥 . |
- 设置环境变量 启动 Pi 之前。在另一个外壳中导出不能改变运行中的 Pi 进程。 随着环境的改变,Pi重新开始.
- 扩展读取 Exa/GitHub 存储每个操作的密钥.
- 同时在MCP注册时捕捉到它的"熊"(Bearer)头. 运行
/reload更改其键后.
合并此条目为已存在的 auth.json 不替换其他全权证书:
{ "parallel": { "type": "api_key", "key": "<your-api-key>" } }
- 私下替换占位符 .
- 从版本控制中排除认证文件 .
- 使用窄范围密钥/托盘 .
这个 检索证书解析器 读取正文 .key 字符串,而不是 shell 命令,嵌入环境引用,或者 OAuth 刷新证书 。 无法读取/ malform auth 表示没有存储的密钥 .
/web-search provider 在 auth.json 并显示创建地点。 密钥从不命令参数, 也从不写给 web-search.json,然后在键入后从不显示。 环境化名仍然能赢得存储值.
Pi 提供可选的主机对等器. 此软件包没有安装另一个 Pi 副本 。 见 npm 咨询说明。 。 。 .
Pi单独解决判断时的分类认证. Jev不需要单独的钥匙.
每个供应商都控制配额和账单。 钥匙不能保证配额或价格变化。 其他来源不能保证结果或可获得性.
/web-search 显示认证快照,而不是活键有效性测试 。 它从来不显示钥匙.
可选勇士搜索
运行 /web-search provider brave 并合并到 web-search.json数字 :
{ "web": { "provider": "brave", "fallback": ["exa", "parallel"] } }
勇者号使用一个 REST 请求并返回排序片段,而不是生成答案或额外片段. 它的查询仅限于400个字符和50个单词;较长的查询明显失败,而不是默默地被缩短. 没有钥匙,勇者就跳过了。 彻底 search 在出示证书时考虑这一点,但须遵守配置的供应商命令和每家双向运输的限制。 被应用的URL被无密钥的Jina取出,从不与查询结合.
仅限 URL search({ urls }) 使用 Jina Reader ,而不论搜索提供者的选择,现有网页提取作为可重试倒计时. Jina不是一个搜索引擎,不需要设置,只接收请求的URL,而不是搜索查询. Jina Markdown省略了图像和链接目的地,以减少输出噪音。 新提供者共享现有的预览和本地续作预算;不添加新的LLM指令或工具.
提供者的行为和限制
- 默认链 : Exa − 平行 财务报告和审定财务报表 grep.app – sourcegraph – GitHub 页面存档备份,存于互联网档案馆 Grep.app – sourcegraph – GitHub。 。 。 .
- 空的网络结果不会触发回落 。 空代码结果或可重试失败继续通过 供应商链。 。 。 .
- 结果包含链接和摘录,不保证完整页。 确切的重复证据已经倒塌,而不同的段落和代码锚仍然保留。 搜索片段在直接输出和结构输出中被封为400个字符. 每条产出路径都有8 000个特点的全球预算;过多的引用被全部省去,并附有通知,从未缩短。 所储存的通道可以在有指针和光标的有约束的窗口中被读取. 见 结构化产出。 。 。 .
- HTTP直接取回已限定30秒会话再用和飞行中分解. 限速供应商输入一个短冷却. 平行的嵌入式呼叫总是通过 Pi 执行,所以权限检查永远不会被再利用. 见 效率和限制。 。 。 .
超时、倒计时和错误
检索和判决分担违约 20秒钟 预算。 清净能取更久. Jev 失败后会带着警告返回未经判断的证据. 检索截止日期已过,或呼叫者取消呼叫失败.
检查警告和 /web-search启用 /mcp 平行连接问题.
数据处理
不要发送秘密或私人密码. 外部提供者接受查询和URL. 可选Jev在输出剪接前接收候选标题,URL,和提供者节选.
获取的内容是不信任的. Jev不是快速注射防火墙或真相保障.
扩展不会将工作空间文件或会话历史作为搜索有效载荷发送. Pi可以在会话历史中保留工具调用.
查询,URL,出错,和摘录可以包含敏感文本.
开发和包装检查
- 运行
cd pi-web-search。 。 。 . - 运行
npm ci --ignore-scripts --no-audit --no-fund。 。 。 . - 运行
npm test。 。 。 . - 运行
npm run typecheck。 。 。 . - 运行
npm run audit:prod。 。 。 . - 运行
npm run pack:check。 。 。 . - 运行
npm run bench:context用于离线上下文脚印测量(特征-代用估计,而不是计费的代用计数).
可选检索检查 : npm run smoke:live。它会发出公开的测试询问,没有您的全权证书。 可选决定模式检查 : npm run smoke:classifier 使用您的 Pi 认证( billing application) 给默认的 Jev 模式进行四个直播。 它验证排名,注射抑制,证据不足,以及普通代码. 测试另一对,使用 npm run smoke:classifier -- <provider> <model>。见 释放检查和限制。 。 。 .
SDK 用户必须装入 Pi 的 MCP 扩展名,用于本地并行呼叫和呼叫 bindExtensions()代码是可选的;直接 search 要求继续支持。 见 SDK 实例。 。 。 .
许可证
麻省理工学院 - 加根・德瓦吉里