Skip to content

lide4144/pi-web-access

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pi Web Access

Web 搜索、内容提取与视频分析扩展 for Pi Agent.
支持 OpenAI/Codex、Exa、Brave、Parallel、Tavily、Perplexity、Gemini API,以及自定义 Gemini 代理网关

Forked from nicobailon/pi-web-access — 增加自定义 Gemini 代理网关支持,修复了代理响应无 grounding chunks 时搜索结果显示为空的 bug。

License: MIT


特性

  • 🌐 Web 搜索 — 多引擎:OpenAI、Exa、Brave、Parallel、Tavily、Perplexity、Gemini
  • 🔧 自定义 Gemini 代理网关 — 支持如 gcli.ggchan.dev 等第三方 Gemini API 代理
  • 🎥 视频理解 — YouTube 视频分析、本地视频分析、帧提取
  • 📄 内容抓取 — 网页、PDF、GitHub 仓库、RSC
  • 🛡️ 智能回退 — 一个引擎失败自动尝试下一个

安装

pi install npm:pi-web-access

或者从源码安装:

git clone https://github.com/lide4144/pi-web-access.git
cd pi-web-access
pi link .

配置

配置文件位于 ~/.pi/web-search.json

{
  "provider": "gemini",
  "geminiBaseUrl": "https://gcli.ggchan.dev",
  "searchModel": "gemini-3.5-flash-search"
}

配置项说明

配置项 说明
provider 默认搜索提供商:auto, openai, brave, parallel, tavily, exa, perplexity, gemini
geminiBaseUrl Gemini API 代理网关地址。也可用环境变量 GOOGLE_GEMINI_BASE_URL
searchModel Gemini 搜索模型名。常用值见下方表格
geminiApiKey Gemini API 密钥。也可用环境变量 GEMINI_API_KEY

环境变量(优先级高于配置文件)

变量 对应配置项
GEMINI_API_KEY geminiApiKey
GOOGLE_GEMINI_BASE_URL geminiBaseUrl
CLOUDFLARE_API_KEY cloudflareApiKey
OPENAI_API_KEY openaiApiKey
BRAVE_API_KEY braveApiKey
EXA_API_KEY exaApiKey
PERPLEXITY_API_KEY perplexityApiKey
TAVILY_API_KEY tavilyApiKey

支持的 Gemini 模型(通过自定义代理)

以下模型来自 gcli.ggchan.dev 代理网关示例:

模型名 说明
gemini-3.5-flash-search 推荐 最快 Flash + 搜索接地
gemini-3.5-flash Gemini 3.5 Flash
gemini-3-flash-preview-search Gemini 3 Flash 预览版 + 搜索
gemini-3-flash-preview Gemini 3 Flash 预览版
gemini-3.1-pro-preview-search Gemini 3.1 Pro 预览版 + 搜索
gemini-2.5-pro-search Gemini 2.5 Pro + 搜索
gemini-2.5-flash-lite Gemini 2.5 Flash Lite

如果你使用官方 Google AI Studio API 密钥(以 AIza 开头),无需设置 geminiBaseUrl,直接用:

{ "provider": "gemini", "searchModel": "gemini-2.5-flash" }

使用方法

Web 搜索

// 基本搜索(使用配置文件中的 provider)
web_search({ query: "TypeScript 最佳实践 2025" })

// 多个查询角度
web_search({ queries: ["React vs Vue 性能对比", "React 生态 vs Vue 生态"] })

// 指定 provider
web_search({ query: "...", provider: "gemini" })

// 更多参数
web_search({
  query: "最新新闻",
  numResults: 10,
  recencyFilter: "week",
  provider: "gemini",
  workflow: "none"  // 跳过浏览器 curator
})

获取网页内容

fetch_content({ url: "https://example.com/article" })
fetch_content({ urls: ["url1", "url2"] })

克隆 GitHub 仓库

fetch_content({ url: "https://github.com/owner/repo" })

视频分析

// YouTube 视频
fetch_content({ url: "https://youtube.com/watch?v=abc", prompt: "视频里用了哪些库?" })

// 本地视频
fetch_content({ url: "/path/to/recording.mp4", prompt: "屏幕上出现了什么错误?" })

// 帧提取
fetch_content({ url: "https://youtube.com/watch?v=abc", timestamp: "23:41-25:00", frames: 4 })

自定义 Gemini 代理网关配置

此版本的核心增强——如果你有第三方 Gemini API 代理(例如通过 gg-cli 搭建的网关),按以下步骤配置:

1. 设置环境变量

# Windows (cmd)
set GEMINI_API_KEY=your-custom-key
set GEMINI_API_BASE=https://your-gateway.example.com

# 或者写入 ~/.pi/web-search.json

2. 写入配置文件

{
  "provider": "gemini",
  "geminiBaseUrl": "https://your-gateway.example.com",
  "searchModel": "gemini-3.5-flash-search"
}

3. 获取可用模型列表

curl -s "https://your-gateway.example.com/v1beta/models?key=$GEMINI_API_KEY" | jq '.models[].name'

注意事项

  • 代理网关的 API 返回可能不含 groundingChunks(Google 搜索引用来源)。本版本已修复此问题——即使来源为空也能正常显示答案文本
  • 代理模型名通常带 -search 后缀(如 gemini-3.5-flash-search),表示支持 google_search 工具

修复说明

相比原始版本,本 fork 修复了以下问题:

Bug: 自定义 Gemini 代理搜索显示 "No results found"

问题现象:使用 GEMINI_API_KEY + 自定义代理网关时,web_search 始终返回 "No results found",即使 API 正确返回了答案文本。

根本原因:第三方 Gemini 代理通常不返回 groundingMetadata.groundingChunks(Google 搜索引用来源)。pi-web-access 的 searchWithGeminiApi 能正确获取 answer 文本,但后续 buildSearchReturn 中判断 results.length === 0 就直接输出 "No results found",忽略了已有的答案。

修复

  1. index.ts — 只有 results.length === 0 && !answer 才显示 "No results found"
  2. formatSearchSummary — 无来源时不再显示空的 "Sources:" 头部

更改涉及 index.ts 中的两处代码,总共约 5 行。


项目结构

文件 用途
index.ts 扩展入口,工具注册,命令处理
gemini-search.ts 搜索路由与 Gemini API 搜索
gemini-api.ts Gemini REST API 客户端
gemini-web.ts Gemini Web 客户端(浏览器 Cookie)
gemini-web-config.ts Gemini Web 配置
extract.ts URL 路由、HTTP 抓取、回退
curator-page.ts curator UI(HTML/CSS/JS)
curator-server.ts 临时 HTTP 服务器
youtube-extract.ts YouTube 视频提取
video-extract.ts 本地视频分析
github-extract.ts GitHub 仓库克隆
openai-search.ts OpenAI/Codex 搜索
brave.ts Brave 搜索
parallel.ts Parallel AI 搜索
tavily.ts Tavily 搜索
exa.ts Exa 搜索
perplexity.ts Perplexity 搜索

License

MIT

About

Pi Web Access - 自定义 Gemini 网关支持

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages