ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

@oh-my-pi/pi-ai 变更日志深度解读:统一多 Provider 的 LLM 推理、认证与流式容错工程

@oh-my-pi/pi-ai 变更日志深度解读:统一多 Provider 的 LLM 推理、认证与流式容错工程 oh-my-pi/pi-ai 变更日志深度解读统一多 Provider 的 LLM 推理、认证与流式容错工程【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi导读本文以 packages/ai/CHANGELOG.md截至 v18.1.17 的完整变更记录为核心骨架系统拆解 oh-my-pi 项目中oh-my-pi/pi-ai包的架构演进与工程实践。oh-my-pi/pi-ai是 oh-my-pi 的统一 LLM 接入层见 packages/ai/package.json 中的描述 Unified LLM API with automatic model discovery and provider configuration承担着多 Provider 请求路由、OAuth/API-Key 认证、用量配额管理、思考推理控制、Prompt 缓存、流式工具调用解析与容错重试等核心职责。读完本文你将掌握该包的能力边界、关键配置项与环境变量、底层调用链以及如何利用其导出面为自定义 Provider 和宿主应用集成推理能力。包定位oh-my-pi 的 LLM 接入中枢从 packages/ai/src/index.ts 的导出面可以清晰看到oh-my-pi/pi-ai的功能切分统一流式入口streamSimple/completeSimple见 packages/ai/src/stream.ts其中completeSimple内部复用streamSimple并聚合完整结果streamSimple还支持通过completeSimple回调观察内部思考循环重试的每一次结果18.1.0 新增。Provider 实现Anthropic、OpenAI Responses/Completions、OpenAI Codex、Amazon Bedrock、Google/Gemini CLI/Vertex、GitLab Duo、Kimi、Ollama、Synthetic、Cursor、Devin 等集中在 packages/ai/src/providers/。认证与凭据存储auth-retry、auth-storage、auth-broker / auth-gateway 以及 SQLite 凭据存储packages/ai/src/auth/sqlite-credential-store.ts。工具调用方言引擎packages/ai/src/dialect/ 下内置 11 种方言Anthropic、DeepSeek、Gemini、Gemma、GLM、Harmony、Hermes、Kimi、Pi-native、Qwen3、XML。用量上报packages/ai/src/usage/ 下的各 Provider 用量适配器。值得注意的架构细节stream.ts中对重量级 ProviderAWS SDK、Google 库等使用register-builtins动态导入包装把 Provider SDK 排除在 CLI 启动解析图之外而gitlab-duo/kimi/synthetic保持同步导入因为它们导出必须在流式传输前同步调用的路由谓词isGitLabDuoModel、isKimiModel、isSyntheticModel。这是阅读 packages/ai/src/stream.ts 时可以借鉴的按需加载设计。多 Provider 生态与模型驱动行为变更日志显示Provider 行为已从“按模型名匹配”演进为“由每个模型的兼容性、身份、思考、行为策略驱动”18.1.0。这一设计的运行时读取层在 packages/catalog/src/model-thinking.tsgetSupportedEfforts读取模型元数据中声明的思考档位clampThinkingLevelForModel把请求的思考级别夹紧到模型支持的档位。新增与改进的 ProviderGitHub Copilot多版本围绕身份问题持续修复——Chat 请求以copilot-chat身份、被拒后以 Copilot CLIcopilot-developer-cli身份重试一次COPILOT_INTEGRATION_ID预先固定Copilot-Integration-Id头Enterprise 域名使用 GitHub 自有 OAuth 应用公开 github.com 才使用 OpenCode 客户端18.1.15/18.1.17。Amazon Bedrock支持 Converse guardrail 配置provider 级标识/版本/trace、OpenAI-schema 模型gpt-5.xSKU的reasoning.effort、Mantle 区域选择、SigV4/bearer 认证、requestMetadata成本归属18.0.1/18.1.2/18.1.6/17.2.6。Cursor现代 exec 线协议agent.proto端到端建模七类 Pi 工具帧read/bash/edit/write/grep/glob等均有类型化应答17.2.0。其他Muse Code 订阅18.1.12、ClinePass18.1.0、Devin 路由模型18.1.0、GitLab Duo Agent/Workflow16.2.0、Z.AI GLM Coding Plan、QwenCloud Token Plan、SiliconFlow、Novita、Sakana AI、Baseten、Umans、ai 等。推理思考控制变更日志中“thinking”相关内容占比很高体现了推理型模型时代的关键复杂度思考档位18.4.0 将max提升为各 Provider 一等公民选项Anthropic、Google、Bedrock、OpenAI支持 32,768 token 最大预算forceReasoningOff/disableReasoning17.2.14用于彻底关闭推理。线格式映射resolveWireModelIdpackages/ai/src/stream.ts导入自 packages/catalog/src/model-thinking.ts把会话思考档位映射到对应 SKU 的线格式模型 id——例如gemini-3.5-flash在 high 档位路由到gemini-3.5-flash-lowcollapsed 的X/X-thinking配对模型在启用推理时切到思考 SKU15.11.7/15.11.5。思考循环守卫withThinkingLoopGuard从withGeminiThinkingLoopGuard改名而来17.3.0覆盖 Gemini、DeepSeek、Grok 模型族16.1.23 增加第三种“progress-lexicon stall”启发式针对不断重排激励性措辞但不引入新词汇/技术引用的循环官方在 537k 真实非 Gemini 思考块上校准novelty floor 0.2 / run length 8 时零误报。可通过PI_NO_THINKING_LOOP_GUARD1关闭。思考泄漏修复流式场景下模型输出的thinking、think等泄漏围栏会被拆分为结构化思考块16.2.7/16.2.316.3.8 修复 Gemini 思考摘要偶发泄漏围栏定界符16.3.3 起 Claude Fable 推理回放改用纯文本而非thinking标签避免跨模型切换后污染上下文。推理回放跨 API 切换如 Z.AI Anthropic → Z.AI OpenAI、DeepSeek时通过transformMessages保留先前推理为签名剥离的thinking/reasoning_content16.1.19DeepSeek-family Responses 重放在思考模式被拒400 The reasoning_text ... must be passed back时现在会合成非空占位符18.1.7。Anthropic 思考签名兼容BedrockValidationException … thinking.signature: Field required被识别为“未签名思考块拒绝”降级为文本、重试一次并记住该端点18.1.3。自定义签名代理返回签名错误时自动以未签名块重试16.3.3。18.1.2 新增anthropicPrefixMismatchBehavior配置项处理无效 Anthropic 思考块的策略。Prompt 缓存多 Provider 的前缀复用工程Prompt 缓存是降低推理成本的核心手段变更日志中有大量相关条目Anthropic OAuth 请求默认 1h 缓存保留18.1.17 未发布版匹配 Claude Code 订阅者行为防止空闲期缓存过期API-Key 请求同样默认 1h 保留17.0.5使用extended-cache-ttl-2025-04-11beta可用PI_CACHE_RETENTION取值short/none覆盖。历史降采样断点每 15 个用户轮次设置一次历史降采样 Prompt 缓存断点保证分支、回卷、会话恢复时缓存前缀稳定18.1.17 未发布版。工具数组缓存断点修复 Anthropic OAuth 请求遗漏工具数组缓存断点工具定义现在可在会话重写和兄弟子代理间缓存18.1.17 未发布版。滚动 5 分钟断点 空闲刷新17.3.0保持 Prompt 前缀“温热”。系统前缀稳定17.2.5/16.2.x 优化缓存避免易变的项目页脚细节cwd、日期、工作区树导致整个系统前缀失效18.1.6 改进显式缓存断点以在消息尾部变化时保留可复用工具与系统提示。OpenAI 家族16.3.15 为 OpenAI 系 chat completions 增加自动缓存亲和性头注入17.1.1 增加 GPT-5.6 显式缓存控制Responses 与 Chat CompletionsOpenAI Codex 的prompt_cache_key与禁用缓存保留逻辑在 17.2.3/17.1.5 修复。Kimi会话稳定缓存键同时走两条传输prompt_cache_key与metadata.user_idcacheRetention: none时禁用自动亲和17.1.5。Ollama/api/chatdone chunk 的prompt_eval_cached_count映射到cacheReadinput缩减为未缓存部分使状态栏cache_turn/cache_hit段与缓存前缀审计报告真实命中率18.1.17 未发布版。认证体系OAuth、API-Key 与凭据轮换登录与 OAuth 流现代统一登录17.1.4 起 OAuth 登录在凭据上盖authorizedAt时间戳且每次刷新持久化都保留ANTHROPIC_OAUTH_GRANT_TTL_MS用于计算 Anthropic 授权族 ~30 天后的重新登录截止点。设备码/粘贴码流xAI Grok OAuth 改用手动粘贴授权码16.3.13随后统一为设备码轮询16.3.15OpenRouter 使用 OAuth PKCE 浏览器登录18.0.5。自定义 Scheme 回调18.1.9 为 macOS/Linux/Windows 增加可恢复的原生自定义 Scheme OAuth 回调并提供手动兜底17.2.0 起回调服务器提供GET /launch短链接~30 字符避免窄终端截断 OAuth 查询参数。IPv6 处理localhost回调监听限制到 IPv4 回环17.1.0并在内核禁用 IPv6 时只监听 IPv417.3.8Google OAuth 回调主机从localhost切到127.0.0.116.0.7。环境变量与登录 ProviderCLINE_API_KEYClinePass、ABLITERATION_API_KEY/ABLIT_KEY18.1.5/login abliteration、COREWEAVE_API_KEY/WANDB_API_KEY16.1.23、GITLAB_CLIENT_ID/GITLAB_REDIRECT_URI15.12.4、LITELLM_BASE_URL提示16.0.5等。凭据轮换与错误分类凭据轮换是保障多账号稳定性的关键变更日志体现了精细的分级策略403 旋转上游403 ForbiddenAnthropicpermission_error、Copilot 模型策略拒绝现在像用量限制一样轮换兄弟凭据被拒凭据软屏蔽 60s 且重新验证不删除所有兄弟尝试后才上抛原始 40317.1.7。402 余额耗尽Anthropic/OpenRouter 的402would exceed your available credits / Insufficient credits自动切换到兄弟账号18.1.616.3.x 将 402 与 balance exhausted 归类为持久用量限制。使用量限制与退避auth_credential_blocksauth schema v5持久化跨进程的按凭据屏蔽16.3.6retry.usageReservePctReserve Margin现在尊重 Fable/Mythos 周档用量17.3.8AuthStorage.redeemResetCredit优先花费最早过期的已存重置额度17.2.2。代理支持PI_PROXY与PI_PROXY_PROVIDER全局代理16.1.14installGlobalProxyFetch()让 OAuth 令牌刷新、用量探测、模型发现都走代理18.0.1NO_PROXY与回环/私网直连18.0.1/16.1.14。auth-brokerOMP_AUTH_BROKER_URL配置快照缓存 stale-while-revalidate18.0.1GET /v1/credentials/disabled与禁用凭据墓碑17.1.4按客户端燃烧跟踪POST /v1/usage/observed10s 批量5 分钟桶17.1.2OMP_AUTH_BROKER_ACCOUNT_POOL_FILE进程级 OAuth 账号池17.1.0。流式容错重试、看门狗与错误分类可重放安全重试18.0.5 将流式重试辅助函数从withEmptyCompletionRetry改名为withReplaySafeStreamRetry并新增空完成与 Provider 错误的策略选项Breaking Change。16.1.4 为空完成添加有界自动重试OpenAI Completions、Responses、Anthropic Messages未流式输出任何内容且未计费输出 token 的良性终止最多重试两次指数退避遵循providerRetryWait重试只在任何内容流式输出前发生。18.0.2 修复[DONE]哨兵终止但缺失/置空finish_reason的流现在作为干净停止收尾真正的传输 EOF 才报不完整流错误。流式看门狗Bun 原生 ~300s 预响应fetch超时被禁用改为可配置的PI_STREAM_FIRST_EVENT_TIMEOUT_MS、PI_OPENAI_STREAM_IDLE_TIMEOUT_MS、compat.streamIdleTimeoutMs15.13.0。compat.streamIdleTimeoutMs可放宽或置 0 禁用事件间看门狗17.2.4model.compat.streamIdleTimeoutMs针对惰性流 Provider17.2.11。Anthropicping心跳只在最近真实事件后的有界窗口3 倍空闲超时内延长看门狗避免生成卡死时无限挂起16.3.13。错误分类用量限制模式isUsageLimitError的USAGE_LIMIT_PATTERN增加 Antigravity Individual quota reached、quota.?reached等措辞15.10.12中文配额耗尽/限流消息分类17.2.11。HTTP 413区分 payload/媒体大小限制与上下文窗口溢出避免错误的 token 压缩18.0.4。HTTP 429Antigravity 结构化google.rpc.ErrorInfo原因分类用 ≥5 分钟重试延迟区分可轮换配额窗口与瞬时限流17.3.2并发请求上限与配额耗尽分开处理17.2.9。空响应重试Google 各面公开、Vertex、Cloud Code Assist通过hasMeaningfulGoogleContent分类空响应并重试至MAX_EMPTY_STREAM_RETRIES15.12.4。工具调用方言引擎与容错解析11 种方言16.0.0 将公开入口从oh-my-pi/pi-ai/grammar改名为oh-my-pi/pi-ai/dialect支持 11 种方言Anthropic、DeepSeek、Gemini、Gemma、GLM、Harmony、Hermes、Kimi、Pi-native、Qwen3、XML。核心 API见 packages/ai/src/dialect/index.tsgetDialectDefinition按名获取方言实现createInbandScanner实例化方言专用扫描器packages/ai/src/dialect/factory.tsrenderToolCatalog/renderToolInventory/renderToolExamples工具目录与文档渲染packages/ai/src/dialect/inventory.tswrapInbandToolStream带工具调用解析的流式包装packages/ai/src/dialect/owned-stream.tsencodeInbandToolHistory方言格式历史编码packages/ai/src/dialect/history.ts。工具示例渲染统一使用 Python 关键字参数语法name(keyvalue)消除模型特定方言参数17.2.5。宽松 JSON 解析16.1.10 以自研RelaxedJson替代外部 JSON 依赖与partial-json接受单引号字符串、无引号键、尾随/游离逗号、//与/* */注释、PythonTrue/False/None、原始控制字符、非法转义、未转义撇号同时拒绝 JS 特有NaN/Infinity流式解析非抛错并回滚不完整尾部 token。16.1.10 的流式解析还防止非有限数值作为undefined/NaN泄漏。Schema 校验与严格工具strict tools 降级enforceStrictSchema拼接嵌套纯 union 进父级anyOf避免无type分支被 OpenRouter 等严格校验器拒绝15.11.0OpenAI-compat 非严格重试在识别Invalid tool parameters schema ...400 后持久化strictToolsDisabled15.11.0。单工具隔离单个 MCP 工具无法生成合法严格 schema 时convertTools通过findStrictToolSchemaViolation只隔离该工具并告警不拖垮整轮16.0.2。宽松工具调用修复transformMessages丢弃空/空白名称的toolCall块并按同一 assistant→tool-result 窗口配对结果16.1.19validateToolArguments预校验解析双重 JSON 编码的字符串16.0.4/16.0.1/16.1.9。布尔子 schematrue/false子 schema 在 Ollama/llama.cpp/vLLM 与 Google/Cloud Code Assist 上被重写为对象/联合形式16.1.9/17.0.1/16.3.6。流式工具调用解析Codex Responses 流式function_call_arguments.delta现在按item_id键控路由晚到的 delta 被丢弃而非污染兄弟调用15.13.2Cursor 的args_text_delta累积快照按前缀剥离并合并McpArgs映射15.13.2Cursor 流式解码按信封call_id保留打开块17.2.0。用量与配额报告统一入口/usage、omp usage、TUI 状态栏、ACP/usage多端渲染omp usage invalidate强制清缓存刷新17.3.5/17.3.4。配额窗口滚动 5 小时/周/月窗口UsageWindow.resetLabel提供准确的动词tick in 12m/regen in 51mSynthetic 再生式窗口17.0.9OMP_APP_NAME应用级用量归属默认omp18.0.7。各 Provider 用量适配器Claude Extra Usage USD 行17.1.0/17.1.1、Cursor 个人月配额17.2.11、MiniMax Token Plan17.1.4、Muse Code 配额18.1.12、Z.AI 5h周CREDIT_LIMIT窗口与plan: lite/pro/max档位18.0.8、OpenCode Go/Zen 会话标识18.1.11、Umans 加权用量17.3.5、SyntheticGET /v2/quotas17.0.9、Antigravity 按模型族分级屏蔽15.10.12。用量历史AuthStorage.listUsageHistory与 SQLite 持久化时间序列快照、sinceMs/provider过滤15.11.5auth-brokerGET /v1/usage/history17.1.2。开发者集成要点导出面与破坏性变更错误模块oh-my-pi/pi-ai/error公开结构化错误分类、Provider 特定 HTTP 错误类ProviderHttpError及CodexApiError、AuthGatewayError、GoogleApiError、OllamaApiError、BedrockApiError、AnthropicApiError、限流工具与可重试谓词16.2.2/15.11.4。Schema 工具jsonSchemaToTypeScript渲染紧凑 TypeScript 签名支持style: harmony17.2.5oh-my-pi/pi-ai/utils/schema提供findStrictToolSchemaViolation等16.0.2。钩子onPayload替换载荷在所有 Provider含 Completions/Bedrock/Cursor生效17.3.8/16.0.1onModerationMetadata回调15.11.4。破坏性变更提醒升级时需注意17.2.10 移除zod与z/ZodType重导出改用omptype的type()schemaZod 风格写作经oh-my-pi/omptype/zod保留17.2.7 以oh-my-pi/omptype替换arktype18.1.6 将claudeCodeSessionId/openAIRequestSessionId重命名为sessionId16.2.0 将 JSON 修复/解析助手迁至oh-my-pi/pi-utils15.11.8 移除 Codex SSE 有状态路径不再发送previous_response_iddelta 输入。版本节奏与维护建议从变更日志可见oh-my-pi/pi-ai保持高频迭代v16.0 → v18.1 跨约三个月含多个同版本号日期分段如 18.1.5/18.1.6/18.1.7 均标注 2026-09-03。实用建议升级前先扫描Breaking Changes小节涉及导出重命名、依赖替换、传输路径移除例如withReplaySafeStreamRetry、sessionId、oh-my-pi/pi-ai/dialect等迁移点涉及自建网关/代理时关注 18.0.1 的代理行为变更installGlobalProxyFetch使 OAuth 刷新也走PI_PROXY与 17.2.11 的ANTHROPIC_BASE_URL修复涉及多账号负载均衡时理解 16.3.6 持久化凭据屏蔽、17.1.7 的 403 旋转与 16.1.18 的 OAuth 失败分类裸 403/429/网络错误为瞬时仅显式失效授权才拆除凭据。变更日志更早的条目归档于同文件的尾部说明历史提交快照当前文件覆盖自 v15.10 起的完整演进脉络可作为阅读源码的导航地图。【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表