mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-10-26 10:45:22 +00:00
- codemode:Tool Search 常驻(alwaysEnabled)、权限 allow(嵌套调用仍逐个过权限门)、 tools.jsonc 登记使用规则;RTK 跳过 parentToolCallId 嵌套调用,避免丢失 bash structuredContent;Tool Search 目录过滤 hidden / codemode(script-only)exposure; 扩展加载测试加载 builtin:codemode 并断言其常驻激活 - 搜索 key 不再经命令行参数传递:search-auth.mjs 改为 --set-stdin(先读校验再加锁), configure.sh 交互输入经管道、非交互用 --<provider> - - CodeGraph 客户端监听子进程 stdin error,避免 EPIPE 未处理导致崩溃 - 移除 PI_TOOL_SEARCH/HERMES_MEMORY/RTK_CONFIG_PATH 环境变量入口,测试改用工厂 configPath 注入 - pi-subagents 固定 vitest / coverage-istanbul 4.1.10,修复 npm ls 版本冲突 - 补 pi-web-search / pi-worktree UPSTREAM.md 与 pi-minimal-footer AGENTS.md, files 白名单补齐并加测试;.codegraph/.gitignore 移出跟踪 - detect_kitty 优先识别官方安装目录 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以交互或标准输入方式写入凭据,key 不得出现在命令参数中:加锁后原子写、权限600、保留全部其他条目,支持--migrate从旧search.env一次性导入;只输出配置状态,禁止回显 key。auth.ts每次调用读取auth.json。