oak-external-sdk 更新日志
3.0.2 未发布(区间:3.0.1..HEAD)
- 新增
LlmSDK、types/LLM和service/llm/OpenAICompatible,当前 provider 为openaiCompatible。 - OpenAI-compatible 实例支持
chat、json、translateText、translateFields、translateObject,可配置baseURL、apiKey、defaultModel、headers、extraBody、timeout 和responseFormat。 - LLM 返回解析支持普通 JSON、
data:event-stream 文本、reasoning/reasoning_content/<think>内容拆分,并把 usage 映射到统一的promptTokens、completionTokens、totalTokens。 - 顶层
src/index.ts改为直接导出各 SDK 单例和 type-only instance 类型,新增LlmSDK导出;WechatMpInstance、OpenAICompatibleInstance等 instance class 不再作为顶层运行时值导出。 - 微信
mp、public、web、nativeaccess token 刷新改为共享 in-flight promise,初始化失败后显式调用会重试,不再用 500ms 轮询无限等待;定时刷新失败会 warn 并保留后续调用重试能力。 - WeChat
externalRefreshFn类型从返回 token 字符串调整为返回{ access_token, expires_in },便于统一设置过期时间和刷新定时器。 fetch工具改为依赖 Node 18+ / 运行时已有globalThis.fetch;各服务从require('../../utils/fetch')迁到 ESM side-effect import。- Web 端
cheerio.load改成明确抛出error::cheerio.loadNotImplemented,避免把 Node 版 cheerio 打进 web fallback。 package.json修正build:lib/build:es的fix_import.mjstarget,oak-domain迁到 peer^6.0.1,本仓库 dev 使用file:../oak-domain。- 新增 CJS WeChat access token 测试,覆盖永久失败、临时失败重试、并发调用共享同一次刷新。
主要 diff 文件:
package.json、src/index.ts、src/LlmSDK.ts、src/types/LLM.ts、src/service/llm/OpenAICompatible.ts、src/WechatSDK.ts、src/service/wechat/*、src/utils/fetch/*、src/utils/cheerio/index.web.ts、test/testWechatAccessToken.cjs3.0.1(tag:3.0.1,区间:3.0.0..3.0.1)
升级注意
运行时导出:3.0.2 顶层入口仍导出
WechatSDK、LlmSDK 等 SDK 单例,但 instance class 改为 type-only 导出。运行时代码如果曾从 oak-external-sdk 顶层解构 WechatMpInstance、WechatPublicInstance 等构造类,需要改成使用 SDK 工厂或从具体 service/... 路径引入。WeChat 刷新函数:
externalRefreshFn 现在必须返回 { access_token, expires_in },不再只是 token 字符串。自定义 token 刷新接入需要同步调整返回值。运行时环境:
fetch 依赖 Node 18+ 或宿主已有 globalThis.fetch;web 环境不再提供 cheerio 实现,调用 cheerio.load 会抛出明确异常。LLM 导入入口:使用 LLM SDK 时优先从公开导出入口
LlmSDK 和 types/LLM 引入,避免依赖内部 service/llm 文件路径。