mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-10-26 10:45:22 +00:00
根 AGENTS.md 从约 78KB 压缩到约 10KB,避免作为常驻规则加载时被截断: 只保留仓库定位、扩展清单、跨扩展硬规则与通用验证命令。各扩展的维护 约定与验证命令移入对应目录的 AGENTS.md(新增 extensions/AGENTS.md 承载 系统提示词与根目录 TS/LSP 约定),上游来源记录统一放进各目录的中文 UPSTREAM.md,并补齐 pi-permission-system 与 pi-rtk-optimizer 的来源记录。 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2.4 KiB
2.4 KiB
my-pi 维护约定(pi-web-search)
- 完全自维护的统一在线搜索扩展(无上游源码导入;Keenable/Exa/Tavily client 为按上游语义复刻的纯
fetch直连实现)。对模型只暴露web_search/web_fetch,schema 与提示词不含厂商名,不得重新引入按厂商命名的工具。 web_search必须经router.ts由当前主模型(ctx.model+ctx.modelRegistry.complete)按内置路由规则在 Tavily / Exa / Keenable 间选择,经统一参数翻译调用;details记录实际 provider 与路由方式,决策按会话内 LRU 缓存;路由失败或被选厂商报错按可用性顺序降级。确定性逻辑只处理可用性与失败兜底,不得改写成启发式断路。路由规则:广泛发现、新闻和候选来源偏 Tavily,官方/技术/论文和高确定性来源偏 Exa,中文、站点限定和日期筛选偏 Keenable。web_fetch固定走 Exaweb_fetch_exa,失败时静默降级 Keenable → Tavily;Exa 搜索统一走web_search_advanced_exa并显式约束numResults与textMaxCharacters;Tavily 默认search_depth: basic且必须在auth.json存在tavilyapi_key 凭据才参与路由;Keenable keyless 可用,keenable凭据仅提高速率限制。clients/为纯fetch直连,不使用pi-mcp-adapter或任何 MCP SDK:Tavily 走api.tavily.com(必须有 key);Keenable 复刻上游 client,保留 keyless/public端点与 SSRF 防护;Exa 直接对https://mcp.exa.ai/mcp发 JSON-RPC——initialize一次并缓存mcp-session-id,随后tools/call,HTTP 404 视为会话失效自动重建并重试一次;exa凭据通过x-api-key请求头发送,不得放入 URL、仓库文件或日志。- 搜索 key 统一保存在 Pi 的
auth.json(tavily/exa/keenable各一条api_key凭据,文件权限600且不得提交);key 支持!command执行、$VAR/${VAR}插值间接寻址,$$/$!转义。credentialenv优先于进程 env;显式进程环境变量不再直接读取,env 注入通过"key": "$VAR"表达。 configure.sh search与scripts/search-auth.mjs以交互或参数方式写入凭据:加锁后原子写、权限600、保留全部其他条目,支持--migrate从旧search.env一次性导入;只输出配置状态,禁止回显 key。auth.ts每次调用读取auth.json。