[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-tensorflow--tfjs-wechat":3,"tool-tensorflow--tfjs-wechat":62},[4,18,28,37,45,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":24,"last_commit_at":25,"category_tags":26,"status":17},9989,"n8n","n8n-io\u002Fn8n","n8n 是一款面向技术团队的公平代码（fair-code）工作流自动化平台，旨在让用户在享受低代码快速构建便利的同时，保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点，帮助用户轻松连接 400 多种应用与服务，实现复杂业务流程的自动化。\n\nn8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”：既可以通过直观的可视化界面拖拽节点搭建流程，也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外，n8n 原生集成了基于 LangChain 的 AI 能力，支持用户利用自有数据和模型构建智能体工作流。在部署方面，n8n 提供极高的自由度，支持完全自托管以保障数据隐私和控制权，也提供云端服务选项。凭借活跃的社区生态和数百个现成模板，n8n 让构建强大且可控的自动化系统变得简单高效。",184740,2,"2026-04-19T23:22:26",[16,14,13,15,27],"插件",{"id":29,"name":30,"github_repo":31,"description_zh":32,"stars":33,"difficulty_score":10,"last_commit_at":34,"category_tags":35,"status":17},10095,"AutoGPT","Significant-Gravitas\u002FAutoGPT","AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台，核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点，让用户只需设定目标，AI 即可自主规划步骤、调用工具并持续运行直至完成任务。\n\n无论是开发者、研究人员，还是希望提升工作效率的普通用户，都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体；研究人员能基于开源架构探索多智能体协作机制；而非技术背景用户也可直接选用预置的智能体模板，立即投入实际工作场景。\n\nAutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑，每个块负责单一动作，灵活且易于调试。同时，平台支持本地自托管与云端部署两种模式，兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本，即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛，让人人都能成为 AI 的创造者与受益者。",183572,"2026-04-20T04:47:55",[13,36,27,14,15],"语言模型",{"id":38,"name":39,"github_repo":40,"description_zh":41,"stars":42,"difficulty_score":10,"last_commit_at":43,"category_tags":44,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":46,"name":47,"github_repo":48,"description_zh":49,"stars":50,"difficulty_score":24,"last_commit_at":51,"category_tags":52,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",161147,"2026-04-19T23:31:47",[14,13,36],{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":59,"last_commit_at":60,"category_tags":61,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,27],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":68,"readme_en":69,"readme_zh":70,"quickstart_zh":71,"use_case_zh":72,"hero_image_url":73,"owner_login":74,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":78,"owner_twitter":77,"owner_website":79,"owner_url":80,"languages":81,"stars":90,"forks":91,"last_commit_at":92,"license":77,"difficulty_score":93,"env_os":94,"env_gpu":95,"env_ram":96,"env_deps":97,"category_tags":108,"github_topics":77,"view_count":24,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":109,"updated_at":110,"faqs":111,"releases":142},10067,"tensorflow\u002Ftfjs-wechat","tfjs-wechat","WeChat Mini-program plugin for TensorFlow.js","tfjs-wechat 是专为微信小程序打造的 TensorFlow.js 插件，由谷歌官方支持。它成功将强大的机器学习能力引入微信生态，让开发者无需依赖云端服务器，即可在小程序端直接运行预训练的 AI 模型，实现如物体识别、图像分类等智能功能。\n\n该工具主要解决了 JavaScript 环境下缺乏高效硬件加速推理能力，以及微信小程序原生不支持复杂机器学习库的痛点。通过封装 TensorFlow.js 核心功能并适配微信环境，它打通了从模型训练到移动端部署的最后一步。\n\ntfjs-wechat 非常适合前端开发者、全栈工程师及 AI 应用研究者使用。只要熟悉 JavaScript 和小程序开发流程，即可快速上手构建具备本地智能交互能力的应用。\n\n其技术亮点在于灵活的按需加载机制：针对小程序 2MB 的大小限制，开发者可仅引入必要的核心包（如 tfjs-core、converter 及 WebGL\u002FCPU 后端），大幅减小体积。此外，它还提供了独特的本地缓存方案，支持将模型存储于 localStorage 或用户文件中，有效减少重复下载带来的带宽消耗与等待时间，同时通过 Polyfill","tfjs-wechat 是专为微信小程序打造的 TensorFlow.js 插件，由谷歌官方支持。它成功将强大的机器学习能力引入微信生态，让开发者无需依赖云端服务器，即可在小程序端直接运行预训练的 AI 模型，实现如物体识别、图像分类等智能功能。\n\n该工具主要解决了 JavaScript 环境下缺乏高效硬件加速推理能力，以及微信小程序原生不支持复杂机器学习库的痛点。通过封装 TensorFlow.js 核心功能并适配微信环境，它打通了从模型训练到移动端部署的最后一步。\n\ntfjs-wechat 非常适合前端开发者、全栈工程师及 AI 应用研究者使用。只要熟悉 JavaScript 和小程序开发流程，即可快速上手构建具备本地智能交互能力的应用。\n\n其技术亮点在于灵活的按需加载机制：针对小程序 2MB 的大小限制，开发者可仅引入必要的核心包（如 tfjs-core、converter 及 WebGL\u002FCPU 后端），大幅减小体积。此外，它还提供了独特的本地缓存方案，支持将模型存储于 localStorage 或用户文件中，有效减少重复下载带来的带宽消耗与等待时间，同时通过 Polyfill 技术完美兼容微信的网络请求环境，确保模型加载流畅稳定。","# TensorFlow.js 微信小程序插件\n[TensorFlow.js](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs)是谷歌开发的机器学习开源项目，致力于为javascript提供具有硬件加速的机器学习模型训练和部署。\nTensorFlow.js 微信小程序插件封装了TensorFlow.js库，用于提供给第三方小程序调用。\n例子可以看TFJS Mobilenet [物体识别小程序](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-wechat\u002Ftree\u002Fmaster\u002Fdemo\u002Fmobilenet)\n## 添加插件\n在使用插件前，首先要在小程序管理后台的“设置-第三方服务-插件管理”中添加插件。开发者可登录小程序管理后台，通过 appid [wx6afed118d9e81df9] 查找插件并添加。本插件无需申请，添加后可直接使用。\n\n### 引入插件代码包\n使用插件前，使用者要在 app.json 中声明需要使用的插件，例如：\n\n代码示例：\n```\n{\n  ...\n  \"plugins\": {\n    \"tfjsPlugin\": {\n      \"version\": \"0.0.6\",\n      \"provider\": \"wx6afed118d9e81df9\"\n    }\n  }\n  ...\n}\n```\n### 引入TensorFlow.js npm\nTensorFlow.js 最新版本是以npm包的形式发布，小程序需要使用npm或者yarn来载入TensorFlow.js npm包。也可以手动修改 package.json 文件来加入。\n\nTensorFlow.js v2.0 有一个联合包 - @tensorflow\u002Ftfjs，包含了六个分npm包：\n- tfjs-core: 基础包\n- tfjs-converter: GraphModel 导入和执行包\n- tfjs-layers: LayersModel 创建，导入和执行包\n- tfjs-backend-webgl: webgl 后端\n- tfjs-backend-cpu: cpu 后端\n- tfjs-data：数据流\n\n\n对于小程序而言，由于有2M的app大小限制，不建议直接使用联合包，而是按照需求加载分包。\n- 如果小程序只需要导入和运行GraphModel模型的的话，建议至少加入tfjs-core， tfjs-converter， tfjs-backend-webgl 和tfjs-backend-cpu包。这样可以尽量减少导入包的大小。\n- 如果需要创建,导入或训练LayersModel模型，需要再加入 tfjs-layers包。\n\n下面的例子是只用到tfjs-core， tfjs-converter，tfjs-backend-webgl 和tfjs-backend-cpu包。代码示例：\n```\n{\n  \"name\": \"yourProject\",\n  \"version\": \"0.0.1\",\n  \"main\": \"dist\u002Findex.js\",\n  \"license\": \"Apache-2.0\",\n  \"dependencies\": {\n    \"@tensorflow\u002Ftfjs-core\": \"3.5.0\"，\n    \"@tensorflow\u002Ftfjs-converter\": \"3.5.0\"，\n    \"@tensorflow\u002Ftfjs-backend-webgl\": \"3.5.0\"\n  }\n}\n```\n\n参考小程序npm工具[文档](https:\u002F\u002Fdevelopers.weixin.qq.com\u002Fminiprogram\u002Fdev\u002Fdevtools\u002Fnpm.html)如何编译npm包到小程序中。\n\n__注意__\n请从微信小程序[开发版Nightly Build更新日志](https:\u002F\u002Fdevelopers.weixin.qq.com\u002Fminiprogram\u002Fdev\u002Fdevtools\u002Fnightly.html)下载最新的微信开发者工具，保证版本号>=v1.02.1907022.\n\n### Polyfill fetch 函数\n如果需要使用tf.loadGraphModel或tf.loadLayersModel API来载入模型，小程序需要按以下流程填充fetch函数：\n\n1. 如果你使用npm, 你可以载入fetch-wechat npm 包\n\n```\n{\n  \"name\": \"yourProject\",\n  \"version\": \"0.0.1\",\n  \"main\": \"dist\u002Findex.js\",\n  \"license\": \"Apache-2.0\",\n  \"dependencies\": {\n    \"@tensorflow\u002Ftfjs-core\": \"3.5.0\"，\n    \"@tensorflow\u002Ftfjs-converter\": \"3.5.0\"，\n    \"@tensorflow\u002Ftfjs-backend-webgl\": \"3.5.0\"\n    \"fetch-wechat\": \"0.0.3\"\n  }\n}\n```\n\n2. 也可以直接拷贝以下文件到你的javascript源目录：\nhttps:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Ffetch-wechat@0.0.3\u002Fdist\u002Ffetch_wechat.min.js\n\n\n### 在app.js的onLaunch里调用插件configPlugin函数\n\n```\nvar fetchWechat = require('fetch-wechat');\nvar tf = require('@tensorflow\u002Ftfjs-core');\nvar webgl = require('@tensorflow\u002Ftfjs-backend-webgl');\nvar plugin = requirePlugin('tfjsPlugin');\n\u002F\u002Fapp.js\nApp({\n  onLaunch: function () {\n    plugin.configPlugin({\n      \u002F\u002F polyfill fetch function\n      fetchFunc: fetchWechat.fetchFunc(),\n      \u002F\u002F inject tfjs runtime\n      tf,\n      \u002F\u002F inject webgl backend\n      webgl,\n      \u002F\u002F provide webgl canvas\n      canvas: wx.createOffscreenCanvas()\n    });\n  }\n});\n```\n\n### 支持模型localStorage缓存\n采用localStorage缓存可以减少模型下载耗费带宽和时间。由于微信小程序对于localStorage有10MB的限制，这个方法适用于小于10MB的模型。\n步骤如下：\n1. 在app.js中提供localStorageHandler函数.\n\n```\nvar fetchWechat = require('fetch-wechat');\nvar tf = require('@tensorflow\u002Ftfjs-core');\nvar plugin = requirePlugin('tfjsPlugin');\n\u002F\u002Fapp.js\nApp({\n  \u002F\u002F expose localStorage handler\n  globalData: {localStorageIO: plugin.localStorageIO},\n  ...\n});\n```\n\n2. 在模型加载时加入localStorageHandler逻辑。\n\n```\nconst LOCAL_STORAGE_KEY = 'mobilenet_model';\nexport class MobileNet {\n  private model: tfc.GraphModel;\n  constructor() { }\n\n  async load() {\n\n    const localStorageHandler = getApp().globalData.localStorageIO(LOCAL_STORAGE_KEY);\n    try {\n      this.model = await tfc.loadGraphModel(localStorageHandler);\n    } catch (e) {\n      this.model =\n        await tfc.loadGraphModel(MODEL_URL);\n      this.model.save(localStorageHandler);\n    }\n  }\n\n```\n\n### 支持模型保存为用户文件\n微信也支持保存模型为文件。同localStorage, 微信小程序对于本地文件也有10MB的限制，这个方法适用于小于10MB的模型。由于最终模型是按 binary 保存，较 localstorage 保存为 base64 string 更为节省空间。\n\n步骤如下：\n1. 在app.js中提供 fileStorageHandler 函数.\n\n```js\nvar fetchWechat = require('fetch-wechat');\nvar tf = require('@tensorflow\u002Ftfjs-core');\nvar plugin = requirePlugin('tfjsPlugin');\n\u002F\u002Fapp.js\nApp({\n  \u002F\u002F expose fileStorage handler\n  globalData: {fileStorageIO: plugin.fileStorageIO},\n  ...\n});\n```\n\n2. 在模型加载时加入 fileStorageHandler 逻辑。\n\n```js\nconst FILE_STORAGE_PATH = 'mobilenet_model';\nexport class MobileNet {\n  private model: tfc.GraphModel;\n  constructor() { }\n\n  async load() {\n\n    const fileStorageHandler = getApp().globalData.fileStorageIO(\n        FILE_STORAGE_PATH, wx.getFileSystemManager());\n    try {\n      this.model = await tfc.loadGraphModel(fileStorageHandler);\n    } catch (e) {\n      this.model =\n        await tfc.loadGraphModel(MODEL_URL);\n      this.model.save(fileStorageHandler);\n    }\n  }\n}\n```\n\n### 使用 WebAssembly backend\n微信小程序在 Android 手机上提供 WebAssembly的支持。TensorFlow.js的WASM backend非常适合在中低端Android手机上使用。\n中低端手机的GPU往往相对CPU要弱一些，而WASM backend是跑在CPU上的，这就为中低端手机提供了另一个加速平台。而且WASM的能耗一般会更低。\n使用WASM backend需要修改package.json文件：\n\n```\n{\n  \"name\": \"yourProject\",\n  \"version\": \"0.0.1\",\n  \"main\": \"dist\u002Findex.js\",\n  \"license\": \"Apache-2.0\",\n  \"dependencies\": {\n    \"@tensorflow\u002Ftfjs-core\": \"2.0.0\"，\n    \"@tensorflow\u002Ftfjs-converter\": \"2.0.0\"，\n    \"@tensorflow\u002Ftfjs-backend-wasm\": \"2.0.0\",\n    ...\n  }\n}\n```\n\n然后在app.js中设置 wasm backend, 你可以自行host wasm file以提高下载速度, 下面例子中的 `wasmUrl`可以替代成你host的URL。\n```\n    const info = wx.getSystemInfoSync();\n    const wasmUrl = 'https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@tensorflow\u002Ftfjs-backend-wasm@2.0.0\u002Fwasm-out\u002Ftfjs-backend-wasm.wasm';\n    const usePlatformFetch = true;\n    console.log(info.platform);\n    if (info.platform == 'android') {\n      setWasmPath(wasmUrl, usePlatformFetch);\n      tf.setBackend('wasm').then(() => console.log('set wasm backend'));\n    }\n```\n\n__注意__\nWASM backend is broken due to bundle imcompatible with WeChat npm loader, will update here when it is fixed.\n\n\n__注意__\n由于最新版本的WeChat的OffscreenCanvas会随页面跳转而失效，在app.js的 onLaunch 函数中设置 tfjs 会导致小程序退出或页面跳转之后操作出错。建议在使用tfjs的page的onLoad中调用 configPlugin 函数。\nWeChat的12月版本会修复这个问题。\n\n```\nvar fetchWechat = require('fetch-wechat');\nvar tf = require('@tensorflow\u002Ftfjs-core');\nvar plugin = requirePlugin('tfjsPlugin');\n\u002F\u002Findex.js\nPage({\n  onLoad: function () {\n    plugin.configPlugin({\n      \u002F\u002F polyfill fetch function\n      fetchFunc: fetchWechat.fetchFunc(),\n      \u002F\u002F inject tfjs runtime\n      tf,\n      \u002F\u002F provide webgl canvas\n      canvas: wx.createOffscreenCanvas(),\n      backendName: 'wechat-webgl-' + Date.now()\n    });\n    ...\n  }\n});\n```\n\n组件设置完毕就可以开始使用 TensorFlow.js库的[API](https:\u002F\u002Fjs.tensorflow.org\u002Fapi\u002Flatest\u002F)了。\n\n### 使用 [tfjs-models](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-models) 模型库注意事项\n模型库提供了一系列训练好的模型，方便大家快速的给小程序注入ML功能。模型分类包括\n- 图像识别\n- 语音识别\n- 人体姿态识别\n- 物体识别\n- 文字分类\n\n由于这些API默认模型文件都存储在谷歌云上，直接使用会导致中国用户无法直接读取。在小程序内使用模型API时要提供 modelUrl 的参数，可以指向我们在谷歌中国的镜像服务器。\n谷歌云的base url是 https:\u002F\u002Fstorage.googleapis.com， 中国镜像的base url是https:\u002F\u002Fwww.gstaticcnapps.cn\n模型的url path是一致的，比如\n- posenet模型的谷歌云地址是：\nhttps:\u002F\u002Fstorage.googleapis.com\u002Ftfjs-models\u002Fsavedmodel\u002Fposenet\u002Fmobilenet\u002Ffloat\u002F050\u002Fmodel-stride16.json\n- 中国镜像的地址为 https:\u002F\u002Fwww.gstaticcnapps.cn\u002Ftfjs-models\u002Fsavedmodel\u002Fposenet\u002Fmobilenet\u002Ffloat\u002F050\u002Fmodel-stride16.json\n\n他们的 URL Path 都是 \u002Ftfjs-models\u002Fsavedmodel\u002Fposenet\u002Fmobilenet\u002Ffloat\u002F050\u002Fmodel-stride16.json\n\n下面是加载posenet模型的例子：\n\n```\nimport * as posenet from '@tensorflow-models\u002Fposenet';\n\nconst POSENET_URL =\n    'https:\u002F\u002Fwww.gstaticcnapps.cn\u002Ftfjs-models\u002Fsavedmodel\u002Fposenet\u002Fmobilenet\u002Ffloat\u002F050\u002Fmodel-stride16.json';\n\nconst model = await posenet.load({\n  architecture: 'MobileNetV1',\n  outputStride: 16,\n  inputResolution: 193,\n  multiplier: 0.5,\n  modelUrl: POSENET_URL\n});\n```\n\n## [tfjs-examples](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-examples) tfjs例子库\ntfjs API 使用实例。\n\n## 版本需求\n- 微信基础库版本 >= 2.7.3\n- 微信开发者工具 >= v1.02.1907022\n- tfjs-core >= 1.5.2\n- tfjs-converter >= 1.5.2 如果使用localStorage模型缓存\n\n__注意__\n在微信开发者工具 v1.02.19070300 中，你需要在通用设置中打开硬件加速，从而在TensorFlow.js中启用WebGL加速。\n![setting](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_tfjs-wechat_readme_5ac8d1670b48.png)\n## 更新说明\n- 0.0.2 plugin不再映射TensorFlow.js API库，由小程序端提供。\n- 0.0.3 使用offscreen canvas，小程序无需加入plugin component。\n- 0.0.5 修改例子程序使用tfjs分包来降低小程序大小。\n- 0.0.6 支持 tfjs-core版本1.2.7。\n- 0.0.7 允许用户设置webgl backend name, 这可以解决小程序offscreen canvas会失效的问题。\n- 0.0.8 加入localStorage支持，允许小于10M模型在localStorage内缓存。\n- 0.0.9 加入fileSystem支持，允许小于10M模型在local file system内缓存。fixed missing kernel bug.\n- 0.1.0 支持 tfjs版本2.0.x。\n- 0.2.0 支持 tfjs版本3.x。\n","# TensorFlow.js 微信小程序插件\n[TensorFlow.js](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs)是谷歌开发的机器学习开源项目，致力于为javascript提供具有硬件加速的机器学习模型训练和部署。\nTensorFlow.js 微信小程序插件封装了TensorFlow.js库，用于提供给第三方小程序调用。\n例子可以看TFJS Mobilenet [物体识别小程序](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-wechat\u002Ftree\u002Fmaster\u002Fdemo\u002Fmobilenet)\n## 添加插件\n在使用插件前，首先要在小程序管理后台的“设置-第三方服务-插件管理”中添加插件。开发者可登录小程序管理后台，通过 appid [wx6afed118d9e81df9] 查找插件并添加。本插件无需申请，添加后可直接使用。\n\n### 引入插件代码包\n使用插件前，使用者要在 app.json 中声明需要使用的插件，例如：\n\n代码示例：\n```\n{\n  ...\n  \"plugins\": {\n    \"tfjsPlugin\": {\n      \"version\": \"0.0.6\",\n      \"provider\": \"wx6afed118d9e81df9\"\n    }\n  }\n  ...\n}\n```\n### 引入TensorFlow.js npm\nTensorFlow.js 最新版本是以npm包的形式发布，小程序需要使用npm或者yarn来载入TensorFlow.js npm包。也可以手动修改 package.json 文件来加入。\n\nTensorFlow.js v2.0 有一个联合包 - @tensorflow\u002Ftfjs，包含了六个分npm包：\n- tfjs-core: 基础包\n- tfjs-converter: GraphModel 导入和执行包\n- tfjs-layers: LayersModel 创建，导入和执行包\n- tfjs-backend-webgl: webgl 后端\n- tfjs-backend-cpu: cpu 后端\n- tfjs-data：数据流\n\n\n对于小程序而言，由于有2M的app大小限制，不建议直接使用联合包，而是按照需求加载分包。\n- 如果小程序只需要导入和运行GraphModel模型的的话，建议至少加入tfjs-core， tfjs-converter， tfjs-backend-webgl 和tfjs-backend-cpu包。这样可以尽量减少导入包的大小。\n- 如果需要创建,导入或训练LayersModel模型，需要再加入 tfjs-layers包。\n\n下面的例子是只用到tfjs-core， tfjs-converter，tfjs-backend-webgl 和tfjs-backend-cpu包。代码示例：\n```\n{\n  \"name\": \"yourProject\",\n  \"version\": \"0.0.1\",\n  \"main\": \"dist\u002Findex.js\",\n  \"license\": \"Apache-2.0\",\n  \"dependencies\": {\n    \"@tensorflow\u002Ftfjs-core\": \"3.5.0\"，\n    \"@tensorflow\u002Ftfjs-converter\": \"3.5.0\"，\n    \"@tensorflow\u002Ftfjs-backend-webgl\": \"3.5.0\"\n  }\n}\n```\n\n参考小程序npm工具[文档](https:\u002F\u002Fdevelopers.weixin.qq.com\u002Fminiprogram\u002Fdev\u002Fdevtools\u002Fnpm.html)如何编译npm包到小程序中。\n\n__注意__\n请从微信小程序[开发版Nightly Build更新日志](https:\u002F\u002Fdevelopers.weixin.qq.com\u002Fminiprogram\u002Fdev\u002Fdevtools\u002Fnightly.html)下载最新的微信开发者工具，保证版本号>=v1.02.1907022.\n\n### Polyfill fetch 函数\n如果需要使用tf.loadGraphModel或tf.loadLayersModel API来载入模型，小程序需要按以下流程填充fetch函数：\n\n1. 如果你使用npm, 你可以载入fetch-wechat npm 包\n\n```\n{\n  \"name\": \"yourProject\",\n  \"version\": \"0.0.1\",\n  \"main\": \"dist\u002Findex.js\",\n  \"license\": \"Apache-2.0\",\n  \"dependencies\": {\n    \"@tensorflow\u002Ftfjs-core\": \"3.5.0\"，\n    \"@tensorflow\u002Ftfjs-converter\": \"3.5.0\"，\n    \"@tensorflow\u002Ftfjs-backend-webgl\": \"3.5.0\"\n    \"fetch-wechat\": \"0.0.3\"\n  }\n}\n```\n\n2. 也可以直接拷贝以下文件到你的javascript源目录：\nhttps:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Ffetch-wechat@0.0.3\u002Fdist\u002Ffetch_wechat.min.js\n\n\n### 在app.js的onLaunch里调用插件configPlugin函数\n\n```\nvar fetchWechat = require('fetch-wechat');\nvar tf = require('@tensorflow\u002Ftfjs-core');\nvar webgl = require('@tensorflow\u002Ftfjs-backend-webgl');\nvar plugin = requirePlugin('tfjsPlugin');\n\u002F\u002Fapp.js\nApp({\n  onLaunch: function () {\n    plugin.configPlugin({\n      \u002F\u002F polyfill fetch function\n      fetchFunc: fetchWechat.fetchFunc(),\n      \u002F\u002F inject tfjs runtime\n      tf,\n      \u002F\u002F inject webgl backend\n      webgl,\n      \u002F\u002F provide webgl canvas\n      canvas: wx.createOffscreenCanvas()\n    });\n  }\n});\n```\n\n### 支持模型localStorage缓存\n采用localStorage缓存可以减少模型下载耗费带宽和时间。由于微信小程序对于localStorage有10MB的限制，这个方法适用于小于10MB的模型。\n步骤如下：\n1. 在app.js中提供localStorageHandler函数.\n\n```\nvar fetchWechat = require('fetch-wechat');\nvar tf = require('@tensorflow\u002Ftfjs-core');\nvar plugin = requirePlugin('tfjsPlugin');\n\u002F\u002Fapp.js\nApp({\n  \u002F\u002F expose localStorage handler\n  globalData: {localStorageIO: plugin.localStorageIO},\n  ...\n});\n```\n\n2. 在模型加载时加入localStorageHandler逻辑。\n\n```\nconst LOCAL_STORAGE_KEY = 'mobilenet_model';\nexport class MobileNet {\n  private model: tfc.GraphModel;\n  constructor() { }\n\n  async load() {\n\n    const localStorageHandler = getApp().globalData.localStorageIO(LOCAL_STORAGE_KEY);\n    try {\n      this.model = await tfc.loadGraphModel(localStorageHandler);\n    } catch (e) {\n      this.model =\n        await tfc.loadGraphModel(MODEL_URL);\n      this.model.save(localStorageHandler);\n    }\n  }\n\n```\n\n### 支持模型保存为用户文件\n微信也支持保存模型为文件。同localStorage, 微信小程序对于本地文件也有10MB的限制，这个方法适用于小于10MB的模型。由于最终模型是按 binary 保存，较 localstorage 保存为 base64 string 更为节省空间。\n\n步骤如下：\n1. 在app.js中提供 fileStorageHandler 函数.\n\n```js\nvar fetchWechat = require('fetch-wechat');\nvar tf = require('@tensorflow\u002Ftfjs-core');\nvar plugin = requirePlugin('tfjsPlugin');\n\u002F\u002Fapp.js\nApp({\n  \u002F\u002F expose fileStorage handler\n  globalData: {fileStorageIO: plugin.fileStorageIO},\n  ...\n});\n```\n\n2. 在模型加载时加入 fileStorageHandler 逻辑。\n\n```js\nconst FILE_STORAGE_PATH = 'mobilenet_model';\nexport class MobileNet {\n  private model: tfc.GraphModel;\n  constructor() { }\n\n  async load() {\n\n    const fileStorageHandler =.getApp().globalData.fileStorageIO(\n        FILE_STORAGE_PATH, wx.getFileSystemManager());\n    try {\n      this.model = await tfc.loadGraphModel(fileStorageHandler);\n    } catch (e) {\n      this.model =\n        await tfc.loadGraphModel(MODEL_URL);\n      this.model.save(fileStorageHandler);\n    }\n  }\n}\n```\n\n### 使用 WebAssembly backend\n微信小程序在 Android 手机上提供 WebAssembly的支持。TensorFlow.js的WASM backend非常适合在中低端Android手机上使用。\n中低端手机的GPU往往相对CPU要弱一些，而WASM backend是跑在CPU上的，这就为中低端手机提供了另一个加速平台。而且WASM的能耗一般会更低。\n使用WASM backend需要修改package.json文件：\n\n```\n{\n  \"name\": \"yourProject\",\n  \"version\": \"0.0.1\",\n  \"main\": \"dist\u002Findex.js\",\n  \"license\": \"Apache-2.0\",\n  \"dependencies\": {\n    \"@tensorflow\u002Ftfjs-core\": \"2.0.0\"，\n    \"@tensorflow\u002Ftfjs-converter\": \"2.0.0\"，\n    \"@tensorflow\u002Ftfjs-backend-wasm\": \"2.0.0\",\n    ...\n  }\n}\n```\n\n然后在app.js中设置 wasm backend, 你可以自行host wasm file以提高下载速度, 下面例子中的 `wasmUrl`可以替代成你host的URL。\n```\n    const info = wx.getSystemInfoSync();\n    const wasmUrl = 'https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@tensorflow\u002Ftfjs-backend-wasm@2.0.0\u002Fwasm-out\u002Ftfjs-backend-wasm.wasm';\n    const usePlatformFetch = true;\n    console.log(info.platform);\n    if (info.platform == 'android') {\n      setWasmPath(wasmUrl, usePlatformFetch);\n      tf.setBackend('wasm').then(() => console.log('set wasm backend'));\n    }\n```\n\n__注意__\nWASM backend is broken due to bundle imcompatible with WeChat npm loader， will update here when it is fixed.\n\n\n__注意__\n由于最新版本的WeChat的OffscreenCanvas会随页面跳转而失效，在app.js的 onLaunch 函数中设置 tfjs 会导致小程序退出或页面跳转之后操作出错。建议在使用tfjs的page的onLoad中调用 configPlugin 函数。\nWeChat的12月版本会修复这个问题。\n\n```\nvar fetchWechat = require('fetch-wechat');\nvar tf = require('@tensorflow\u002Ftfjs-core');\nvar plugin = requirePlugin('tfjsPlugin');\n\u002F\u002Findex.js\nPage({\n  onLoad: function () {\n    plugin.configPlugin({\n      \u002F\u002F polyfill fetch function\n      fetchFunc: fetchWechat.fetchFunc(),\n      \u002F\u002F inject tfjs runtime\n      tf,\n      \u002F\u002F provide webgl canvas\n      canvas: wx.createOffscreenCanvas(),\n      backendName: 'wechat-webgl-' + Date.now()\n    });\n    ...\n  }\n});\n```\n\n组件设置完毕就可以开始使用 TensorFlow.js库的[API](https:\u002F\u002Fjs.tensorflow.org\u002Fapi\u002Flatest\u002F)了。\n\n### 使用 [tfjs-models](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-models) 模型库注意事项\n模型库提供了一系列训练好的模型，方便大家快速的给小程序注入ML功能。模型分类包括\n- 图像识别\n- 语音识别\n- 人体姿态识别\n- 物体识别\n- 文字分类\n\n由于这些API默认模型文件都存储在谷歌云上，直接使用会导致中国用户无法直接读取。在小程序内使用模型API时要提供 modelUrl 的参数，可以指向我们在谷歌中国的镜像服务器。\n谷歌云的base url是 https:\u002F\u002Fstorage.googleapis.com， 中国镜像的base url是https:\u002F\u002Fwww.gstaticcnapps.cn\n模型的url path是一致的，比如\n- posenet模型的谷歌云地址是：\nhttps:\u002F\u002Fstorage.googleapis.com\u002Ftfjs-models\u002Fsavedmodel\u002Fposenet\u002Fmobilenet\u002Ffloat\u002F050\u002Fmodel-stride16.json\n- 中国镜像的地址为 https:\u002F\u002Fwww.gstaticcnapps.cn\u002Ftfjs-models\u002Fsavedmodel\u002Fposenet\u002Fmobilenet\u002Ffloat\u002F050\u002Fmodel-stride16.json\n\n他们的 URL Path 都是 \u002Ftfjs-models\u002Fsavedmodel\u002Fposenet\u002Fmobilenet\u002Ffloat\u002F050\u002Fmodel-stride16.json\n\n下面是加载posenet模型的例子：\n\n```\nimport * as posenet from '@tensorflow-models\u002Fposenet';\n\nconst POSENET_URL =\n    'https:\u002F\u002Fwww.gstaticcnapps.cn\u002Ftfjs-models\u002Fsavedmodel\u002Fposenet\u002Fmobilenet\u002Ffloat\u002F050\u002Fmodel-stride16.json';\n\nconst model = await posenet.load({\n  architecture: 'MobileNetV1',\n  outputStride: 16,\n  inputResolution: 193,\n  multiplier: 0.5,\n  modelUrl: POSENET_URL\n});\n```\n\n## [tfjs-examples](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-examples) tfjs例子库\ntfjs API 使用实例。\n\n## 版本需求\n- 微信基础库版本 >= 2.7.3\n- 微信开发者工具 >= v1.02.1907022\n- tfjs-core >= 1.5.2\n- tfjs-converter >= 1.5.2 如果使用localStorage模型缓存\n\n__注意__\n在微信开发者工具 v1.02.19070300 中，你需要在通用设置中打开硬件加速，从而在TensorFlow.js中启用WebGL加速。\n![setting](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_tfjs-wechat_readme_5ac8d1670b48.png)\n## 更新说明\n- 0.0.2 plugin不再映射TensorFlow.js API库，由小程序端提供。\n- 0.0.3 使用offscreen canvas，小程序无需加入plugin component。\n- 0.0.5 修改例子程序使用tfjs分包来降低小程序大小。\n- 0.0.6 支持 tfjs-core版本1.2.7。\n- 0.0.7 允许用户设置webgl backend name, 这可以解决小程序offscreen canvas会失效的问题。\n- 0.0.8 加入localStorage支持，允许小于10M模型在localStorage内缓存。\n- 0.0.9 加入fileSystem支持，允许小于10M模型在local file system内缓存。fixed missing kernel bug.\n- 0.1.0 支持 tfjs版本2.0.x。\n- 0.2.0 支持 tfjs版本3.x。","# tfjs-wechat 快速上手指南\n\n## 环境准备\n\n在开始之前，请确保满足以下系统和版本要求：\n\n*   **微信基础库**：版本 >= 2.7.3\n*   **微信开发者工具**：版本 >= v1.02.1907022\n    *   *注意*：需在开发者工具的“通用设置”中开启**硬件加速**以启用 WebGL。\n*   **Node.js**：用于管理 npm 依赖。\n*   **TensorFlow.js 核心包**：建议 tfjs-core >= 3.x (根据插件版本适配)。\n\n## 安装步骤\n\n### 1. 添加小程序插件\n登录 [微信小程序管理后台](https:\u002F\u002Fmp.weixin.qq.com\u002F)，进入 **设置 -> 第三方服务 -> 插件管理**。\n搜索插件 AppID `wx6afed118d9e81df9` 并添加。该插件无需申请，添加后即可使用。\n\n### 2. 配置 app.json\n在小程序根目录的 `app.json` 中声明插件：\n\n```json\n{\n  \"plugins\": {\n    \"tfjsPlugin\": {\n      \"version\": \"0.2.0\",\n      \"provider\": \"wx6afed118d9e81df9\"\n    }\n  }\n}\n```\n\n### 3. 安装 TensorFlow.js npm 包\n由于小程序有 2MB 代码包大小限制，**强烈建议按需安装分包**，不要直接安装联合包 `@tensorflow\u002Ftfjs`。\n\n若仅需运行预训练模型（GraphModel），执行以下命令：\n\n```bash\nnpm install @tensorflow\u002Ftfjs-core @tensorflow\u002Ftfjs-converter @tensorflow\u002Ftfjs-backend-webgl fetch-wechat\n```\n\n若需训练或构建 LayersModel，还需额外安装：\n```bash\nnpm install @tensorflow\u002Ftfjs-layers\n```\n\n安装完成后，在微信开发者工具中点击 **工具 -> 构建 npm**。\n\n## 基本使用\n\n### 1. 初始化插件 (app.js 或 Page onLoad)\n由于微信离线画布（OffscreenCanvas）的生命周期特性，建议在需要使用 TFJS 的页面 `onLoad` 中进行初始化（或在 `app.js` 中初始化但需注意页面跳转失效问题）。\n\n需引入 `fetch-wechat` 来填充网络请求函数，并注入 TFJS 运行时。\n\n```javascript\n\u002F\u002F index.js (或其他页面文件)\nvar fetchWechat = require('fetch-wechat');\nvar tf = require('@tensorflow\u002Ftfjs-core');\nvar webgl = require('@tensorflow\u002Ftfjs-backend-webgl');\nvar plugin = requirePlugin('tfjsPlugin');\n\nPage({\n  onLoad: function () {\n    plugin.configPlugin({\n      \u002F\u002F polyfill fetch function\n      fetchFunc: fetchWechat.fetchFunc(),\n      \u002F\u002F inject tfjs runtime\n      tf,\n      \u002F\u002F inject webgl backend\n      webgl,\n      \u002F\u002F provide webgl canvas (必须创建离线画布)\n      canvas: wx.createOffscreenCanvas(),\n      \u002F\u002F 设置唯一的 backend name 以避免画布失效问题\n      backendName: 'wechat-webgl-' + Date.now()\n    });\n    \n    \u002F\u002F 此时可以开始调用 TensorFlow.js API\n    console.log('TFJS initialized');\n  }\n});\n```\n\n### 2. 加载模型 (使用国内镜像)\n由于默认模型托管在 Google Cloud，国内访问受限。加载 `tfjs-models` 或自定义模型时，请将 URL 前缀替换为国内镜像源：\n*   **原地址前缀**：`https:\u002F\u002Fstorage.googleapis.com`\n*   **国内镜像前缀**：`https:\u002F\u002Fwww.gstaticcnapps.cn`\n\n以下以加载 PoseNet 人体姿态识别模型为例：\n\n```javascript\nimport * as posenet from '@tensorflow-models\u002Fposenet';\n\n\u002F\u002F 使用国内镜像地址\nconst POSENET_URL = 'https:\u002F\u002Fwww.gstaticcnapps.cn\u002Ftfjs-models\u002Fsavedmodel\u002Fposenet\u002Fmobilenet\u002Ffloat\u002F050\u002Fmodel-stride16.json';\n\nasync function loadModel() {\n  try {\n    const model = await posenet.load({\n      architecture: 'MobileNetV1',\n      outputStride: 16,\n      inputResolution: 193,\n      multiplier: 0.5,\n      modelUrl: POSENET_URL \u002F\u002F 指定国内镜像 URL\n    });\n    console.log('Model loaded successfully', model);\n    \u002F\u002F 在此处进行预测操作...\n  } catch (error) {\n    console.error('Failed to load model', error);\n  }\n}\n```\n\n### 3. (可选) 模型本地缓存\n对于小于 10MB 的模型，建议使用 `localStorage` 或文件系统缓存以减少重复下载。\n\n**配置 localStorage 缓存示例：**\n\n1.  在 `app.js` 暴露 handler：\n    ```javascript\n    App({\n      globalData: { localStorageIO: plugin.localStorageIO },\n      \u002F\u002F ...\n    });\n    ```\n\n2.  在加载逻辑中使用：\n    ```javascript\n    const LOCAL_STORAGE_KEY = 'my_model_cache';\n    const localStorageHandler = getApp().globalData.localStorageIO(LOCAL_STORAGE_KEY);\n\n    try {\n      \u002F\u002F 尝试从缓存加载\n      model = await tf.loadGraphModel(localStorageHandler);\n    } catch (e) {\n      \u002F\u002F 缓存未命中，从网络加载并保存\n      model = await tf.loadGraphModel(MODEL_URL);\n      await model.save(localStorageHandler);\n    }\n    ```","一家生鲜电商团队希望在微信小程序中实现“拍照识菜”功能，让用户拍摄蔬菜即可识别品种并推荐食谱。\n\n### 没有 tfjs-wechat 时\n- **无法本地运行模型**：小程序环境不支持原生 TensorFlow.js，必须将图片上传至云端服务器进行识别，导致用户等待时间长。\n- **隐私与合规风险**：用户上传的食材照片需传输到第三方服务器，存在隐私泄露隐患，且增加了数据合规成本。\n- **服务器成本高昂**：高并发下的图像推理需要昂贵的 GPU 服务器集群支撑，运维压力大且响应速度受网络波动影响明显。\n- **开发适配复杂**：开发者需自行编写复杂的底层代码来桥接微信环境与 JS 机器学习库，甚至需要绕过小程序对 WebGL 的限制。\n\n### 使用 tfjs-wechat 后\n- **端侧实时推理**：通过插件直接调用手机 GPU 加速，在用户手机端毫秒级完成物体识别，无需上传图片，体验流畅。\n- **数据隐私安全**：所有计算均在本地完成，图片不出设备，彻底消除了数据传输过程中的隐私泄露风险。\n- **大幅降低成本**：移除了后端推理服务器需求，仅依靠用户手机算力，显著节省了带宽和云计算资源开支。\n- **开箱即用集成**：只需在后台添加插件并配置少量代码（如注入 fetch polyfill 和 WebGL 后端），即可快速加载 MobileNet 等预训练模型。\n\ntfjs-wechat 让高性能的浏览器端机器学习能力无缝落地微信小程序，实现了低成本、高隐私的智能化交互升级。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ftensorflow_tfjs-wechat_d005acd2.png","tensorflow","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ftensorflow_07ed5093.png","",null,"github-admin@tensorflow.org","http:\u002F\u002Fwww.tensorflow.org","https:\u002F\u002Fgithub.com\u002Ftensorflow",[82,86],{"name":83,"color":84,"percentage":85},"TypeScript","#3178c6",95.3,{"name":87,"color":88,"percentage":89},"JavaScript","#f1e05a",4.7,572,105,"2026-04-16T09:21:20",4,"未说明 (基于微信小程序平台，支持 iOS 和 Android)","非必需。默认使用 WebGL 后端（依赖手机 GPU），在中低端 Android 设备上可切换至 WASM 后端（运行于 CPU）。无需特定显卡型号或 CUDA 版本。","未说明 (受限于微信小程序整体包大小限制及 localStorage\u002F本地文件 10MB 缓存限制)",{"notes":98,"python":99,"dependencies":100},"1. 开发环境需安装微信开发者工具 (版本 >= v1.02.1907022)，并在设置中开启硬件加速以启用 WebGL。\n2. 小程序基础库版本需 >= 2.7.3。\n3. 由于国内网络限制，使用 tfjs-models 时需将模型 URL 域名从 storage.googleapis.com 替换为国内镜像 www.gstaticcnapps.cn。\n4. 模型缓存推荐使用 localStorage 或本地文件系统，但单个模型文件大小建议小于 10MB。\n5. 建议在页面的 onLoad 生命周期中调用 configPlugin 初始化插件，以避免 OffscreenCanvas 在页面跳转后失效的问题。\n6. WASM 后端在部分版本中可能因 npm 加载器兼容性问题而不可用。","不需要",[101,102,103,104,105,106,107],"@tensorflow\u002Ftfjs-core (>=3.5.0)","@tensorflow\u002Ftfjs-converter (>=3.5.0)","@tensorflow\u002Ftfjs-backend-webgl (>=3.5.0)","@tensorflow\u002Ftfjs-backend-cpu","@tensorflow\u002Ftfjs-layers (可选，用于 LayersModel)","@tensorflow\u002Ftfjs-backend-wasm (可选，用于 Android WASM 加速)","fetch-wechat (>=0.0.3)",[14,27],"2026-03-27T02:49:30.150509","2026-04-20T16:46:05.037496",[112,117,122,127,132,137],{"id":113,"question_zh":114,"answer_zh":115,"source_url":116},45228,"为什么模型在微信开发者工具上预测正常，但在真机（iOS\u002FAndroid）上结果异常或速度极慢？","这通常是因为 WebGL 后端未正确注册，导致程序回退到了 CPU 后端运行。请检查控制台日志确认后端是否为 `wechat-webgl`。建议在插件配置中开启调试模式，并确保正确传入 `wx.createOffscreenCanvas()`。配置代码如下：\n```javascript\nplugin.configPlugin({\n  fetchFunc: fetchWechat.fetchFunc(),\n  tf: tf,\n  canvas: wx.createOffscreenCanvas()\n}, true); \u002F\u002F 最后一个参数设为 true 以启用调试\n```\n如果 iOS 上速度依然慢，可能是 `offScreenCanvas` 在特定版本下工作不正常，需尝试更新微信版本或检查后端注册状态。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-wechat\u002Fissues\u002F10",{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},45229,"在 Android 微信新版本（如 7.0.10）加载 CocoSSD 模型时报 \"tensorshape is zero\" 错误怎么办？","这是特定微信版本的兼容性问题。根据社区反馈，该问题在更新的微信版本（如基础库版本 2.10.3 及以上）中已得到修复。如果遇到此错误，请尝试升级手机上的微信客户端到最新版本。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-wechat\u002Fissues\u002F43",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},45230,"为什么 Mobilenet 模型在微信中的推理速度（约 800ms）远慢于 Chrome 浏览器（约 80ms）？","速度差异通常由设备硬件和后端实现决定。部分 Android 机型（尤其是某些小米、锤子、vivo 机型）可能存在 WebGL 支持不佳或回退到 CPU 计算的情况，而 iPhone 和部分华为机型表现较好。建议：\n1. 检查是否成功启用了 `wechat-webgl` 后端。\n2. 在不同品牌手机上进行测试，确认是否为特定机型优化问题。\n3. 确保使用的是经过优化的模型版本。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-wechat\u002Fissues\u002F22",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},45231,"使用 tfl.loadLayersModule 加载模型时，model.json 能加载但权重文件 (.bin) 一直 pending 无法下载？","这通常与微信开发者工具的“远程调试”模式有关，而非域名白名单问题。即使在工具中勾选了“不校验合法域名”，在远程调试模式下仍可能出现请求挂起。\n解决方案：请在微信的“体验版”或正式发布的真机环境中测试，通常可以正常加载权重文件。开发阶段若必须调试，可尝试关闭远程调试模式或使用本地资源模拟。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-wechat\u002Fissues\u002F21",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},45232,"反复打开关闭页面导致内存泄漏（numTensors 持续增加），特别是在调用 executeAsync 后，如何解决？","这是一个已知的内存泄漏问题，主要影响 Android 设备。解决方案如下：\n1. **升级库版本**：将 `@tensorflow-models\u002Fcoco-ssd` 升级到 **2.0.3** 或更高版本，该版本修复了相关的内存泄漏问题。\n2. **降级 TensorFlow.js**：如果无法升级模型库，有用户反馈将 `tfjs` 核心库降级到 **1.2.5** 版本可以避免此问题，在该版本中调用 `tf.dispose()` 能正常释放内存。\n注意：在 Android 上调用 `tf.engine().reset()` 可能会报错，请避免使用该方式清理内存。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-wechat\u002Fissues\u002F56",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},45233,"运行时报错 \"Cannot get WebGL rendering context, WebGL is disabled\" 导致后端初始化失败，如何处理？","该错误表示当前环境无法获取 WebGL 上下文。虽然小程序可能仍能运行（回退到其他后端），但性能会受影响。\n1. 检查项目文档，确认是否需要在微信开发者工具中开启特定的 WebGL 支持标志（部分旧版本工具需要手动开启）。\n2. 注意：在某些 iOS 设备上，无论是否开启该标志，WebGL 后端都可能自动启用或禁用，若无明显速度差异可忽略此警告。\n3. 确保微信基础库版本较新，以获得更好的 WebGL 支持。","https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftfjs-wechat\u002Fissues\u002F27",[]]