RunAnywhere React Native SDK 实战指南:基于 NitroModules/JSI 的端侧 AI 全能力调用
AI模型推理服务推理引擎本地部署多模态【免费下载链接】runanywhere-sdksProduction ready toolkit to run AI locally项目地址https://gitcode.com/gh_mirrors/ru/runanywhere-sdks点击查看免费下载导读本文以 RunAnywhere 官方 React Native 公共 API 文档为骨架系统讲解runanywhere/core在 iOS 与 Android 上通过 NitroModulesJSI桥接本地 AI 推理的完整用法从两阶段初始化、模型管理到 LLM 流式生成、结构化输出与工具调用、STT/TTS/VAD、VLM、RAG、LoRA、语音 Agent 与事件订阅。读完本文你将掌握RunAnywhere单一入口对象下全部能力命名空间的正确调用方式以及 Hermes 环境下流式 API 的迭代器使用约束。一、架构与入口一个RunAnywhere对象打通全部能力React Native 绑定是 RunAnywhere 全平台 SDK 家族的成员之一与 Swift、Kotlin、Flutter、Web 等保持 API 对齐。其底层通过NitroModulesJSI将 C 推理内核commons暴露给 JS 层所有推理真正发生在原生侧TypeScript 层只负责选项options与结果results的编组。从源码可见包入口 只导出唯一门面RunAnywhere其余全部是类型、工具函数与命名空间扩展。而 RunAnywhere 门面实现 挂载了以下命名空间llm / vlm / stt / tts / vad / embeddings / rerank / images / diarization / segmentation / voice / rag / models / lora / sdkEvents / auth / logging / storage / cua / pluginLoader / solutions原生一侧由cpp/bridges/目录下的一系列 BridgeAuthBridge、DeviceBridge、FileManagerBridge、HTTPBridge、InitBridge、ModelRegistryBridge、StorageBridge、TelemetryBridge以及HybridRunAnywhereCore.cpp/hpp承担桥接职责Nitro 规范定义在src/specs/*.nitro.ts构建期由 Nitrogen 生成 JSI 胶水代码到nitrogen/generated/。异步契约普通调用返回Promise桥读取天然是异步的例如deviceId、isAuthenticated()均需await流式调用返回AsyncIterable必须用手动iterator.next()循环消费——因为 Hermes 不支持对 Nitro 异步迭代器使用for await。二、初始化两阶段生命周期与状态读取初始化必须依次完成两步initialize()Phase 1与completeServicesInitialization()Phase 2。initialize采用单个 options 包可携带 React Native 平台特有的 Phase-2 旋钮如 HTTP 传输、安全存储配置等。import { RunAnywhere, SDKEnvironment } from runanywhere/core; // 单次 options-bag 初始化可携带 RN 专属 Phase-2 配置项 await RunAnywhere.initialize({ apiKey: ra_..., // 开发环境可省略 environment: SDKEnvironment.SDK_ENVIRONMENT_DEVELOPMENT, }); await RunAnywhere.completeServicesInitialization(); // 状态读取桥读取为异步 → Promise RunAnywhere.isInitialized; RunAnywhere.areServicesReady; RunAnywhere.version; await RunAnywhere.deviceId; // Promisestring await RunAnywhere.isAuthenticated();源码层面的支撑initialize()内部会把 Phase 1 / Phase 2 请求序列化为 protorunanywhere/proto-ts/sdk_init交给原生桥执行并用 InitializationState 维护状态机——markCoreInitialized、markServicesInitialized等步骤分别对应isInitialized、areServicesReady两个布尔值InitializedGuard与ServicesReadyGuard两个守卫则保证在未初始化/服务未就绪时调用业务 API 会抛出受控的SDKException。此外门面实现了进程级生命周期屏障并发的initialize()共享同一个 Phase-1 Promisereset()则是进程级 lifetime 屏障见 RunAnywhere.ts配合单元测试 RunAnywhereLifecycleConcurrency.test.ts 验证并发安全。SDKEnvironment来自runanywhere/proto-ts/model_types常用取值包括SDK_ENVIRONMENT_DEVELOPMENT与生产环境枚举SDKEnvironmentHelpers.ts 提供requiresAuthentication、shouldSendTelemetry、defaultLogLevel等环境行为推导函数。三、模型生命周期注册、下载、加载模型 API 覆盖注册 → 下载 → 加载的完整生命周期const models await RunAnywhere.listModels(); const downloaded await RunAnywhere.downloadedModels(); const one await RunAnywhere.getModel({ modelId: qwen2.5-0.5b }); const info await RunAnywhere.registerModel({ name: Qwen2.5 0.5B, url: https://huggingface.co/.../model.gguf, framework: InferenceFramework.INFERENCE_FRAMEWORK_LLAMA_CPP, }); await RunAnywhere.downloadModel(info, (p) console.log(p.percentage)); await RunAnywhere.loadModel({ modelId: info.id });要点说明registerModel通过 URL 注册外部模型必须显式指定推理框架例如INFERENCE_FRAMEWORK_LLAMA_CPP框架枚举同样来自runanywhere/proto-ts/model_typesformatFramework帮助函数可将其格式化为可读名称。downloadModel接受注册返回的模型对象并通过回调逐条上报下载进度p.percentage为百分比。模型清单接口listModels/downloadedModels分别对应模型目录与本地已下载集合RunAnywhereModelRegistry.ts 与 RunAnywhereModelLifecycle.ts 承载这部分逻辑。下载行为最终由原生cpp/bridges/PlatformDownloadBridge.h与HybridRunAnywhereCoreDownload.cpp落地。四、LLM 文本生成同步、流式与取消一次性生成const result await RunAnywhere.generate(Explain vector databases in one line.); console.log(result.text);流式生成Hermes 安全写法// Streaming — manual iterator loop (Hermes-safe) const it RunAnywhere.generateStream(Write a haiku.)[Symbol.asyncIterator](); for (let r await it.next(); !r.done; r await it.next()) { process.stdout.write(r.value.token ?? ); }这是整个文档中最重要的平台约束RN 上不要使用for await...of消费任何流。底层的 LLMStreamAdapter.ts 将原生句柄包装成AsyncIterabletoken 内容通过r.value.token逐片取出单元测试 LlmGenerateStreamCompletion.test.ts 对流的终结done语义做了覆盖。取消生成await RunAnywhere.cancelGeneration();结构化输出与工具调用const structured await RunAnywhere.generateStructured(Extract, schema); await RunAnywhere.registerTool(def, async (args) ({ result: { stringValue: ok } })); const toolResult await RunAnywhere.generateWithTools(Weather in Pune?, undefined, { signal: abortController.signal, // RN 使用 AbortSignal 进行取消 });关键差异点取消机制RN 平台用 Web 标准的AbortSignal经由extrabag 传入generateWithTools等调用而不是其他平台的回调式取消。这要求调用方自行创建AbortController并在需要时调用abort()。结构化输出基于 schema 约束生成 JSON 结果RunAnywhereToolCalling.ts 中的generateWithTools是显式工具循环允许对调用次数预算、thinking、并行执行做精细控制GenerateWithToolsOptions/ToolCallingOptions。五、语音能力STT / TTS / VADconst transcript await RunAnywhere.transcribe(pcm16); const audio await RunAnywhere.synthesize(Hello there); await RunAnywhere.speak(Spoken aloud); await RunAnywhere.stopSpeaking(); const vad await RunAnywhere.detectVoiceActivity(pcm16); await RunAnywhere.resetVAD();transcribe输入 16-bit PCM 音频pcm16返回转写文本synthesize返回音频数据TTSspeak直接播放stopSpeaking中断detectVoiceActivity做语音活动检测VADresetVAD重置内部状态对应命名空间实现见 RunAnywhereSTT.ts、RunAnywhereTTS.ts。若应用自带音频采集 UI可借助 AudioCaptureManager / AudioPlaybackManager 驱动采集与播放或用createPushableAudioStream向流式接口喂麦克风分片。另有混合 STT 路由离线 sherpa ↔ 云端能力HybridSTTRouter、CloudSTT、HybridDeviceState等可从runanywhere/core直接导入见 index.ts路由策略由底层 commons 全权负责。六、VLM 视觉理解单次与流式const out await RunAnywhere.processImage(image, { prompt: Describe this. }); // prompt 重载 — 直接作用于 options.prompt const stream await RunAnywhere.processImageStream(image, What is this?); const vit stream[Symbol.asyncIterator](); for (let r await vit.next(); !r.done; r await vit.next()) console.log(r.value); await RunAnywhere.cancelVLMGeneration();processImage(image, options)一次调用完成图像理解image支持ImageInput类型见Public/Api/Inputs.ts的ImageInputs。processImageStream提供流式变体且存在prompt 字符串重载——直接传入字符串会作为options.prompt使用。同样需要手动迭代器消费cancelVLMGeneration()用于中断。七、RAGpipeline 创建、注入与查询await RunAnywhere.ragCreatePipeline({ embeddingModel: emb, llmModel: llm }); await RunAnywhere.ragIngest(document); const answer await RunAnywhere.ragQuery(What about pricing?); const rit RunAnywhere.ragQueryStream(Summarize)[Symbol.asyncIterator](); for (let r await rit.next(); !r.done; r await rit.next()) console.log(r.value);ragCreatePipeline需要同时指定 embedding 模型与 LLM 模型ragIngest注入文档ragQuery获取答案ragQueryStream流式获取实现位于 RunAnywhereRAG.ts相关 proto 转换RagSearchProto有对应单元测试 RagSearchProto.test.ts。八、LoRA适配器应用与状态管理await RunAnywhere.lora.applyCatalogAdapter(entry, { scale: 1.0 }); await RunAnywhere.lora.apply(entry); // catalog-entry 重载 const state await RunAnywhere.lora.list(); await RunAnywhere.lora.download(entry, (p) console.log(p));applyCatalogAdapter(entry, { scale })应用目录项适配器并设置缩放系数apply(entry)是 catalog-entry 重载直接应用list()返回当前已加载 LoRA 状态download(entry, cb)下载适配器并上报进度命名空间实现见 RunAnywhereLoRA.ts。九、语音 Agent会话式语音交互await RunAnywhere.initializeVoiceAgentWithLoadedModels(); const vit RunAnywhere.streamVoiceAgent()[Symbol.asyncIterator](); for (let r await vit.next(); !r.done; r await vit.next()) console.log(r.value); const turn await RunAnywhere.processVoiceTurn(pcm16); await RunAnywhere.cleanupVoiceAgent();先基于已加载模型初始化语音 AgentstreamVoiceAgent()提供事件流事件对象见VoiceEvent同样需手动迭代processVoiceTurn(pcm16)处理单轮语音输入cleanupVoiceAgent()释放资源原生侧由cpp/HybridVoiceAgent.cpp/hpp实现JS 侧包装在 RunAnywhereVoiceAgent.ts流适配逻辑在 VoiceAgentStreamAdapter.ts。十、事件订阅两种通道RunAnywhere.events.on((event) console.log(event)); // 命令式 SDK 事件 — 订阅返回数值 id const id await RunAnywhere.subscribeSDKEvents((event) console.log(event)); await RunAnywhere.unsubscribeSDKEvents(id);RunAnywhere.events.on(...)提供持续事件总线EventBus见 EventBus.tssubscribeSDKEvents/unsubscribeSDKEvents是命令式订阅返回并接收数值 id便于精确退订实现于 RunAnywhereSDKEvents.ts底层事件 proto 见idl/sdk_events.proto。十一、平台注意事项官方 Notes所有流都是AsyncIterable请始终使用手动iterator.next()循环切勿对 Nitro 流使用for awaitHermes 限制。取消统一使用AbortSignal通过extrabag 传入generateWithTools等接口。Web 搜索工具在 RN 不可用RN core 的 HTTP 请求走原生传输层不走 JS。从源码看iOS 侧使用URLSessionHttpTransportURLSessionHttpTransport.swift并复用共享实现 shared-apple/URLSessionHttpTransport/URLSessionHttpTransportImpl.inc.mmAndroid 侧使用OkHttpHttpTransportOkHttpHttpTransport.kt这与 Web 版在 JS 层路由 HTTP 的设计不同因此依赖 JS 侧网络能力的 Web 搜索工具在 RN 上被移除。Diffusion扩散模型仅限 Apple 平台由 MLX 运行时驱动原生实现见 HybridRunAnywhereCoreMLX.cpp在非 Apple 设备上调用会直接抛异常。十二、工程接入要点依赖与安装runanywhere/core的 peerDependencies见 package.json要求react 19.0.0、react-native 0.83.1react-native-nitro-modules ^0.33.9JSI 桥接必需可选react-native-blob-util、react-native-device-info、react-native-fs文件与设备信息能力安装示例npm install runanywhere/core react-native-nitro-modules cd ios pod install cd ..iOS 麦克风采集需在Info.plist中添加NSMicrophoneUsageDescription。后端引擎按需安装对应包如runanywhere/llamacpp、runanywhere/onnx模型与推理统一通过 core 的公共 API 使用。典型调用路径参考完整的端到端流程通常为initialize({ apiKey?, environment })completeServicesInitialization()registerModel/downloadModel/loadModel准备本地模型按业务调用generate/generateStream、transcribe、processImage、ragQuery等通过events或subscribeSDKEvents监听生命周期与推理事件退出时按需cleanupVoiceAgent、cancelGeneration等清理资源。延伸阅读官方 RN 绑定 README完整安装与配置包 README安装与最小示例核心门面实现Public/RunAnywhere.ts公共 API 类型全集Public/Api/Types.tsNitro 规范定义src/specs/*.nitro.ts跨语言 SDK 对等性文档docs/reference/cross-sdk-parity.md赞分享AI模型推理服务推理引擎本地部署多模态【免费下载链接】runanywhere-sdksProduction ready toolkit to run AI locally项目地址https://gitcode.com/gh_mirrors/ru/runanywhere-sdks点击查看免费下载相关推荐RunAnywhere React Native Core SDK 实战指南基于 runanywhere/core 构建端侧 AI 应用RunAnywhere React Native Core SDK 实战指南基于 runanywhere/core 构建端侧 AI 应用 runanywhAI模型推理服务推理引擎本地部署多模态RunAnywhere React Native SDK 架构解析基于 NitroModules 的端侧 AI 桥接与多后端引擎注册指南RunAnywhere React Native SDK 架构解析基于 NitroModules 的端侧 AI 桥接与多后端引擎注册指南 导读 本文面向在 RAI模型推理服务推理引擎本地部署多模态RunAnywhere React Native SDK 架构与构建指南NitroModules 零序列化桥接下的端侧 AI 多包 Monorepo 实践RunAnywhere React Native SDK 架构与构建指南NitroModules 零序列化桥接下的端侧 AI 多包 Monorepo 实践 导AI模型推理服务推理引擎本地部署多模态创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Vitis 2024.2 Ubuntu 22.04 安装避坑指南:ABI兼容性与环境隔离实战

Vitis 2024.2 Ubuntu 22.04 安装避坑指南:ABI兼容性与环境隔离实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 1:36:35 阅读更多 →
PPT Master 模板系统完全指南:Brand、Style、Layout、Deck 四类模板如何复用你的 PPT 设计

PPT Master 模板系统完全指南:Brand、Style、Layout、Deck 四类模板如何复用你的 PPT 设计

PPT Master 模板系统完全指南:Brand、Style、Layout、Deck 四类模板如何复用你的 PPT 设计 【免费下载链接】ppt-master AI 把任意文档生成真正可编辑的 PowerPoint —— 原生形状与动画、演讲者备注可合成音频旁白、还能参考你自己的 .pptx 模板,而不是一张张图片 …

2026/9/25 1:36:35 阅读更多 →
Win11安装SQL Server 2008 R2兼容补丁与静默部署全指南

Win11安装SQL Server 2008 R2兼容补丁与静默部署全指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 1:35:34 阅读更多 →

最新新闻

反激多路输出电压飘高原因与系统级解决方案

反激多路输出电压飘高原因与系统级解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 2:24:06 阅读更多 →
RisingWave 开发环境可观测性完全指南:risectl 集群控制、Grafana/Prometheus 监控、Tempo 链路追踪与日志配置

RisingWave 开发环境可观测性完全指南:risectl 集群控制、Grafana/Prometheus 监控、Tempo 链路追踪与日志配置

数据库流处理后端数据工程 【免费下载链接】risingwave Event streaming platform for agentic AI. Continuously ingest, transform, and serve event streams in real time, at scale. 项目地址: https://gitcode.com/gh_mirrors/ri/risingwave 点击查看 免费下载…

2026/9/25 2:24:06 阅读更多 →
xberg CLI 完整参考:文档智能提取、批量处理、OCR 与模型缓存的命令行全指南

xberg CLI 完整参考:文档智能提取、批量处理、OCR 与模型缓存的命令行全指南

后端AI 应用NLP 【免费下载链接】xberg Polyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with …

2026/9/25 2:24:06 阅读更多 →
Read the Docs API v3 设计文档详解:以 slug 为中心的 REST API 演进路线与源码实现

Read the Docs API v3 设计文档详解:以 slug 为中心的 REST API 演进路线与源码实现

后端文档 【免费下载链接】readthedocs.org The source code that powers readthedocs.org 项目地址: https://gitcode.com/gh_mirrors/re/readthedocs.org 点击查看 免费下载 本文基于 Read the Docs 仓库内的官方设计文档 apiv3.rst,系统讲解 API v3 …

2026/9/25 2:24:06 阅读更多 →
为什么Apple Mobile Drivers Installer是最佳选择?揭秘Windows安装Apple驱动的3大官方痛点

为什么Apple Mobile Drivers Installer是最佳选择?揭秘Windows安装Apple驱动的3大官方痛点

为什么Apple Mobile Drivers Installer是最佳选择?揭秘Windows安装Apple驱动的3大官方痛点 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项…

2026/9/25 2:24:06 阅读更多 →
tsfresh 贡献指南:从环境搭建、代码风格到多版本测试的完整开发流程

tsfresh 贡献指南:从环境搭建、代码风格到多版本测试的完整开发流程

特征工程机器学习数据分析 【免费下载链接】tsfresh Automatic extraction of relevant features from time series: 项目地址: https://gitcode.com/gh_mirrors/ts/tsfresh 点击查看 免费下载 tsfresh 是一个用于从时间序列中自动提取相关特征的开源 Python 库&am…

2026/9/25 2:23:05 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →