[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-WebAssembly--wasi-nn":3,"tool-WebAssembly--wasi-nn":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":79,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":79,"stars":82,"forks":83,"last_commit_at":84,"license":79,"difficulty_score":85,"env_os":86,"env_gpu":87,"env_ram":88,"env_deps":89,"category_tags":95,"github_topics":79,"view_count":23,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":96,"updated_at":97,"faqs":98,"releases":128},3433,"WebAssembly\u002Fwasi-nn","wasi-nn","Neural Network proposal for WASI","wasi-nn 是 WebAssembly 系统接口（WASI）中专为机器学习推理设计的标准 API 提案。它的核心目标是让运行在 WebAssembly 环境中的程序能够便捷、高效地调用宿主系统的神经网络加速能力，从而完成图像分类、概率预测等推理任务，而非模型训练。\n\n这一工具主要解决了两大痛点：一是易用性问题，它允许开发者直接复用 TensorFlow、ONNX、OpenVINO 等成熟生态中的现有模型格式，无需重新编码或转换；二是性能瓶颈，通过抽象出后端（backend）、图（graph）和张量（tensor）等核心概念，wasi-nn 能让应用无缝利用宿主硬件的多样化加速能力（如 GPU、TPU、FPGA 或 SIMD 指令集），避免纯软件模拟带来的数百倍性能下降。其架构设计与具体框架和解耦，由设备厂商提供对应的后端支持，具有极强的扩展性。\n\nwasi-nn 非常适合需要在边缘计算、服务器端或浏览器环境中部署高性能 AI 应用的开发者使用。如果你正在构建跨平台的 WebAssembly 应用，并希望集成成熟的机器学习模型以获得原生级别的推理速度，wasi-nn 提供了标准化且灵","wasi-nn 是 WebAssembly 系统接口（WASI）中专为机器学习推理设计的标准 API 提案。它的核心目标是让运行在 WebAssembly 环境中的程序能够便捷、高效地调用宿主系统的神经网络加速能力，从而完成图像分类、概率预测等推理任务，而非模型训练。\n\n这一工具主要解决了两大痛点：一是易用性问题，它允许开发者直接复用 TensorFlow、ONNX、OpenVINO 等成熟生态中的现有模型格式，无需重新编码或转换；二是性能瓶颈，通过抽象出后端（backend）、图（graph）和张量（tensor）等核心概念，wasi-nn 能让应用无缝利用宿主硬件的多样化加速能力（如 GPU、TPU、FPGA 或 SIMD 指令集），避免纯软件模拟带来的数百倍性能下降。其架构设计与具体框架和解耦，由设备厂商提供对应的后端支持，具有极强的扩展性。\n\nwasi-nn 非常适合需要在边缘计算、服务器端或浏览器环境中部署高性能 AI 应用的开发者使用。如果你正在构建跨平台的 WebAssembly 应用，并希望集成成熟的机器学习模型以获得原生级别的推理速度，wasi-nn 提供了标准化且灵活的解决方案。","# `wasi-nn`\n\nA proposed [WebAssembly System Interface](https:\u002F\u002Fgithub.com\u002FWebAssembly\u002FWASI) API for machine\nlearning (ML).\n\n### Current Phase\n\n`wasi-nn` is currently in [Phase 2].\n\n[Phase 2]: https:\u002F\u002Fgithub.com\u002FWebAssembly\u002FWASI\u002Fblob\u002F42fe2a3ca159011b23099c3d10b5b1d9aff2140e\u002Fdocs\u002FProposals.md#phase-2---proposed-spec-text-available-cg--wg\n\n### Champions\n\n- [Andrew Brown](https:\u002F\u002Fgithub.com\u002Fabrown)\n- [Mingqiu Sun](https:\u002F\u002Fgithub.com\u002Fmingqiusun)\n\n### Phase 4 Advancement Criteria\n\n`wasi-nn` must have at least two complete independent implementations.\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Goals](#goals)\n- [Non-goals](#non-goals)\n- [API walk-through](#api-walk-through)\n- [Detailed design discussion](#detailed-design-discussion)\n- [Considered alternatives](#considered-alternatives)\n- [Stakeholder Interest & Feedback](#stakeholder-interest--feedback)\n- [References & acknowledgements](#references--acknowledgements)\n\n### Introduction\n\n`wasi-nn` is a WASI API for performing ML inference. Its name derives from the fact that ML models\nare also known as neural networks (`nn`). ML models are typically trained using a large data set,\nresulting in one or more files that describe the model's weights. The model is then used to compute\nan \"inference,\" e.g., the probabilities of classifying an image as a set of tags. This API is\nconcerned initially with inference, not training.\n\nWhy expose ML inference as a WASI API? Though the functionality of inference can be encoded into\nWebAssembly, there are two primary motivations for `wasi-nn`:\n1. __ease of use__: an entire ecosystem already exists to train and use models (e.g., Tensorflow,\n   ONNX, OpenVINO, etc.); `wasi-nn` is designed to make it easy to use existing model formats as-is\n2. __performance__: the nature of ML inference makes it amenable to hardware acceleration of various\n   kinds; without this hardware acceleration, inference can suffer slowdowns of several hundred\n   times. Hardware acceleration for ML is very diverse &mdash; SIMD (e.g., AVX512), GPUs, TPUs,\n   FPGAs &mdash; and it is unlikely (impossible?) that all of these would be supported natively in\n   WebAssembly\n\nWebAssembly programs that want to use a host's ML capabilities can access these capabilities through\n`wasi-nn`'s core abstractions: _backends_, _graphs_, and _tensors_. A user selects a _backend_ for\ninference and loads a model, instantiated as a _graph_, to use in the _backend_. Then, the user\npasses _tensor_ inputs to the _graph_, computes the inference, and retrieves the _tensor_ outputs.\n\n`wasi-nn` _backends_ correspond to existing ML frameworks, e.g., Tensorflow, ONNX, OpenVINO, etc.\n`wasi-nn` places no requirements on hosts to support specific _backends_; the API is purposefully\ndesigned to allow the largest number of ML frameworks to implement it. `wasi-nn` _graphs_ can be\npassed as opaque byte sequences to support any number of model formats. This makes the API\nframework- and format-agnostic, since we expect device vendors to provide the ML _backend_ and\nsupport for their particular _graph_ format.\n\nUsers can find language bindings for `wasi-nn` at the [wasi-nn bindings] repository; request\nadditional language support there. More information about `wasi-nn` can be found at:\n\n[wasi-nn bindings]: https:\u002F\u002Fgithub.com\u002Fbytecodealliance\u002Fwasi-nn\n\n - Blog post: [Machine Learning in WebAssembly: Using wasi-nn in\n   Wasmtime](https:\u002F\u002Fbytecodealliance.org\u002Farticles\u002Fusing-wasi-nn-in-wasmtime)\n - Blog post: [Implementing a WASI Proposal in Wasmtime:\n   wasi-nn](https:\u002F\u002Fbytecodealliance.org\u002Farticles\u002Fimplementing-wasi-nn-in-wasmtime)\n - Blog post: [Neural network inferencing for PyTorch and TensorFlow with ONNX, WebAssembly System\n   Interface, and wasi-nn](https:\u002F\u002Fdeislabs.io\u002Fposts\u002Fwasi-nn-onnx\u002F)\n - Recorded talk: [Machine Learning with Wasm\n   (wasi-nn)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=lz2I_4vvCuc)\n - Recorded talk: [Lightning Talk: High Performance Neural Network Inferencing Using\n   wasi-nn](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=jnM0tsRVM_8)\n\n### Goals\n\nThe primary goal of `wasi-nn` is to allow users to perform ML inference from WebAssembly using\nexisting models (i.e., ease of use) and with maximum performance. Though the primary focus is\ninference, we plan to leave open the possibility to perform ML training in the future (request\ntraining in an [issue](https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fissues)!).\n\nAnother design goal is to make the API framework- and model-agnostic; this allows for implementing\nthe API with multiple ML frameworks and model formats. The `load` method will return an error\nmessage when an unsupported model encoding scheme is passed in. This approach is similar to how a\nbrowser deals with image or video encoding.\n\n### Non-goals\n\n`wasi-nn` is not designed to provide support for individual ML operations (a \"model builder\" API).\nThe ML field  is still evolving rapidly, with new operations and network topologies emerging\ncontinuously. It would be a challenge to define an evolving set of operations to support in the API.\nInstead, our approach is to start with a \"model loader\" API, inspired by WebNN’s model loader\nproposal.\n\n### API walk-through\n\nThe following example describes how a user would use `wasi-nn`:\n\n```rust\n\u002F\u002F Load the model.\nlet encoding = wasi_nn::GRAPH_ENCODING_...;\nlet target = wasi_nn::EXECUTION_TARGET_CPU;\nlet graph = wasi_nn::load(&[bytes, more_bytes], encoding, target);\n\n\u002F\u002F Configure the execution context.\nlet context = wasi_nn::init_execution_context(graph);\nlet tensor = wasi_nn::Tensor { ... };\nwasi_nn::set_input(context, 0, tensor);\n\n\u002F\u002F Compute the inference.\nwasi_nn::compute(context);\nwasi_nn::get_output(context, 0, &mut output_buffer, output_buffer.len());\n```\n\nNote that the details above will depend on the model and backend used; the pseudo-Rust simply\nillustrates the general idea, minus any error-checking. Consult the\n[AssemblyScript](https:\u002F\u002Fgithub.com\u002Fbytecodealliance\u002Fwasi-nn\u002Ftree\u002Fmain\u002Fassemblyscript\u002Fexamples) and\n[Rust](https:\u002F\u002Fgithub.com\u002Fbytecodealliance\u002Fwasi-nn\u002Ftree\u002Fmain\u002Frust\u002Fexamples) bindings for more\ndetailed examples.\n\n### Detailed design discussion\n\nFor the details of the API, see [wasi-nn.wit](wit\u002Fwasi-nn.wit).\n\n\u003C!--\nThis section should mostly refer to the .wit.md file that specifies the API. This section is for\nany discussion of the choices made in the API which don't make sense to document in the spec file\nitself.\n-->\n\n#### Should `wasi-nn` support training models?\n\nIdeally, yes. In the near term, however, exposing (and implementing) the inference-focused API is\nsufficiently complex to postpone a training-capable API until later. Also, models are typically\ntrained offline, prior to deployment, and it is unclear why training models using WASI would be an\nadvantage over training them natively. (Conversely, the inference API does make sense: performing ML\ninference in a Wasm deployment is a known use case). See associated discussion\n[here](https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fissues\u002F6) and feel free to open pull requests or\nissues related to this that fit within the goals above.\n\n#### Should `wasi-nn` support inspecting models?\n\nIdeally, yes. The ability to inspect models would allow users to determine, at runtime, the tensor\nshapes of the inputs and outputs of a model. As with ML training (above), this can be added in the\nfuture.\n\n\u003C!--\nMore \"tricky\" design choices fit here.\n-->\n\n### Considered alternatives\n\nThere are other ways to perform ML inference from a WebAssembly program:\n\n1. a user could specify a __custom host API__ for ML tasks; this is similar to the approach taken\n   [here](https:\u002F\u002Fgithub.com\u002Fsecond-state\u002Fwasmedge_tensorflow_interface). The advantages and\n   disadvantages are in line with other \"spec vs. custom\" trade-offs: the user can precisely tailor\n   the API to their use case, etc., but will not be able to switch easily between implementations.\n2. a user could __compile a framework and\u002For model to WebAssembly__; this is similar to\n   [here](https:\u002F\u002Fgithub.com\u002Fsonos\u002Ftract) and\n   [here](https:\u002F\u002Fblog.tensorflow.org\u002F2020\u002F03\u002Fintroducing-webassembly-backend-for-tensorflow-js.html).\n   The primary disadvantage to this approach is performance: WebAssembly, even with the recent\n   addition of 128-bit SIMD, does not have optimized primitives for performing ML inference or\n   accessing ML-optimized hardware. The performance loss can be of several orders of magnitude.\n\n\n### Stakeholder Interest & Feedback\n\nTODO before entering Phase 3.\n\n\u003C!--\nThis should include a list of implementers who have expressed interest in implementing the proposal\n-->\n\n### References & acknowledgements\n\nMany thanks for valuable feedback and advice from:\n\n- [Brian Jones](https:\u002F\u002Fgithub.com\u002Fbrianjjones)\n- [Radu Matei](https:\u002F\u002Fgithub.com\u002Fradu-matei)\n- [Steve Schoettler](https:\u002F\u002Fgithub.com\u002Fstevelr)\n","# `wasi-nn`\n\n一项用于机器学习（ML）的拟议 [WebAssembly 系统接口](https:\u002F\u002Fgithub.com\u002FWebAssembly\u002FWASI) API。\n\n### 当前阶段\n\n`wasi-nn` 目前处于 [第 2 阶段]。\n\n[第 2 阶段]: https:\u002F\u002Fgithub.com\u002FWebAssembly\u002FWASI\u002Fblob\u002F42fe2a3ca159011b23099c3d10b5b1d9aff2140e\u002Fdocs\u002FProposals.md#phase-2---proposed-spec-text-available-cg--wg\n\n### 发起人\n\n- [Andrew Brown](https:\u002F\u002Fgithub.com\u002Fabrown)\n- [Mingqiu Sun](https:\u002F\u002Fgithub.com\u002Fmingqiusun)\n\n### 第 4 阶段推进标准\n\n`wasi-nn` 必须至少拥有两个完整的独立实现。\n\n## 目录\n\n- [引言](#introduction)\n- [目标](#goals)\n- [非目标](#non-goals)\n- [API 概览](#api-walk-through)\n- [详细设计讨论](#detailed-design-discussion)\n- [备选方案](#considered-alternatives)\n- [利益相关方兴趣与反馈](#stakeholder-interest--feedback)\n- [参考文献与致谢](#references--acknowledgements)\n\n### 引言\n\n`wasi-nn` 是一个用于执行 ML 推理的 WASI API。其名称源自 ML 模型也被称为神经网络（`nn`）。ML 模型通常使用大型数据集进行训练，生成描述模型权重的一个或多个文件。随后，该模型被用于计算“推理”，例如将图像分类为一组标签的概率。本 API 目前主要关注推理，而非训练。\n\n为什么要把 ML 推理暴露为 WASI API？尽管推理功能可以编码到 WebAssembly 中，但 `wasi-nn` 的推出主要有两个动机：\n1. __易用性__：已经存在一个完整的生态系统来训练和使用模型（例如 TensorFlow、ONNX、OpenVINO 等）；`wasi-nn` 的设计旨在使用户能够直接使用现有的模型格式。\n2. __性能__：ML 推理的特性使其非常适合各种硬件加速；如果没有这些硬件加速，推理速度可能会降低数百倍。ML 的硬件加速方式多种多样——SIMD（如 AVX512）、GPU、TPU、FPGA 等——而所有这些加速方式都不太可能（甚至不可能）在 WebAssembly 中得到原生支持。\n\n希望利用主机 ML 能力的 WebAssembly 程序可以通过 `wasi-nn` 的核心抽象——_后端_、_图_和 _张量_——来访问这些能力。用户首先选择一个用于推理的 _后端_，然后加载以 _图_ 形式表示的模型，并在该 _后端_ 上运行。接着，用户将 _张量_ 输入传递给 _图_，执行推理，并获取 _张量_ 输出。\n\n`wasi-nn` 的 _后端_ 对应于现有的 ML 框架，例如 TensorFlow、ONNX、OpenVINO 等。`wasi-nn` 不要求宿主系统必须支持特定的 _后端_；该 API 的设计初衷就是尽可能让更多的 ML 框架能够实现它。`wasi-nn` 的 _图_ 可以作为不透明的字节序列传递，从而支持任意数量的模型格式。这使得 API 具备框架和格式无关性，因为我们期望设备厂商提供 ML _后端_ 并支持其特定的 _图_ 格式。\n\n用户可以在 [wasi-nn 绑定] 仓库中找到 `wasi-nn` 的语言绑定；如有需要其他语言的支持，可在此处提出请求。更多关于 `wasi-nn` 的信息请参见：\n\n[wasi-nn 绑定]: https:\u002F\u002Fgithub.com\u002Fbytecodealliance\u002Fwasi-nn\n\n - 博文：[WebAssembly 中的机器学习：在 Wasmtime 中使用 wasi-nn](https:\u002F\u002Fbytecodealliance.org\u002Farticles\u002Fusing-wasi-nn-in-wasmtime)\n - 博文：[在 Wasmtime 中实现 WASI 提案：wasi-nn](https:\u002F\u002Fbytecodealliance.org\u002Farticles\u002Fimplementing-wasi-nn-in-wasmtime)\n - 博文：[使用 ONNX、WebAssembly 系统接口和 wasi-nn 进行 PyTorch 和 TensorFlow 的神经网络推理](https:\u002F\u002Fdeislabs.io\u002Fposts\u002Fwasi-nn-onnx\u002F)\n - 录播演讲：[使用 Wasm 进行机器学习（wasi-nn）](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=lz2I_4vvCuc)\n - 录播演讲：[闪电演讲：使用 wasi-nn 实现高性能神经网络推理](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=jnM0tsRVM_8)\n\n### 目标\n\n`wasi-nn` 的首要目标是让用户能够从 WebAssembly 中使用现有模型进行 ML 推理（即易用性），同时获得最佳性能。虽然目前的重点是推理，但我们计划在未来保留进行 ML 训练的可能性（可在 [issue](https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fissues) 中提出训练需求！）。\n\n另一个设计目标是使 API 具备框架和模型无关性；这样就可以用多种 ML 框架和模型格式来实现该 API。当传入不受支持的模型编码方案时，`load` 方法会返回错误信息。这种方法类似于浏览器处理图像或视频编码的方式。\n\n### 非目标\n\n`wasi-nn` 并非旨在提供对单个 ML 操作的支持（即“模型构建者”API）。ML 领域仍在快速发展，新的操作和网络拓扑不断涌现。要在 API 中定义一套不断变化的操作集将是一项挑战。因此，我们的方法是从“模型加载器”API 开始，灵感来源于 WebNN 的模型加载器提案。\n\n### API 概览\n\n以下示例描述了用户如何使用 `wasi-nn`：\n\n```rust\n\u002F\u002F 加载模型。\nlet encoding = wasi_nn::GRAPH_ENCODING_...;\nlet target = wasi_nn::EXECUTION_TARGET_CPU;\nlet graph = wasi_nn::load(&[bytes, more_bytes], encoding, target);\n\n\u002F\u002F 配置执行上下文。\nlet context = wasi_nn::init_execution_context(graph);\nlet tensor = wasi_nn::Tensor { ... };\nwasi_nn::set_input(context, 0, tensor);\n\n\u002F\u002F 执行推理。\nwasi_nn::compute(context);\nwasi_nn::get_output(context, 0, &mut output_buffer, output_buffer.len());\n```\n\n请注意，上述细节将取决于所使用的模型和后端；这段伪 Rust 代码仅用于说明总体思路，未包含任何错误检查。有关更详细的示例，请参阅 [AssemblyScript](https:\u002F\u002Fgithub.com\u002Fbytecodealliance\u002Fwasi-nn\u002Ftree\u002Fmain\u002Fassemblyscript\u002Fexamples) 和 [Rust](https:\u002F\u002Fgithub.com\u002Fbytecodealliance\u002Fwasi-nn\u002Ftree\u002Fmain\u002Frust\u002Fexamples) 绑定。\n\n### 详细设计讨论\n\n有关 API 的详细信息，请参阅 [wasi-nn.wit](wit\u002Fwasi-nn.wit)。\n\n\u003C!--\n本节应主要参考指定 API 的 .wit.md 文件。此处用于讨论 API 中做出的一些选择，这些选择不适合在规范文件中记录。\n-->\n\n#### `wasi-nn` 是否应支持模型训练？\n\n理想情况下，是的。然而，在短期内，暴露（并实现）以推理为中心的 API 已经足够复杂，因此可以将支持训练的 API 推迟到以后再实现。此外，模型通常是在部署之前离线训练的，目前尚不清楚使用 WASI 进行模型训练相比原生训练有何优势。（相反，推理 API 则很有意义：在 Wasm 部署中执行机器学习推理是一个已知的用例）。相关讨论请参见[这里](https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fissues\u002F6)，欢迎根据上述目标就此提出拉取请求或议题。\n\n#### `wasi-nn` 是否应支持模型检查？\n\n理想情况下，是的。能够检查模型将使用户在运行时确定模型输入和输出的张量形状。与机器学习训练一样（如上所述），这一功能也可以在未来添加。\n\n\u003C!--\n更“棘手”的设计选择可放在此处。\n-->\n\n### 曾考虑的替代方案\n\n还有其他方式可以从 WebAssembly 程序中执行机器学习推理：\n\n1. 用户可以为机器学习任务指定一个__自定义宿主 API__；这类似于[此处](https:\u002F\u002Fgithub.com\u002Fsecond-state\u002Fwasmedge_tensorflow_interface)所采用的方法。其优缺点与其他“规范 vs. 自定义”权衡一致：用户可以根据自身用例精确定制 API 等，但将难以在不同实现之间轻松切换。\n2. 用户可以将__框架和\u002F或模型编译为 WebAssembly__；这类似于[此处](https:\u002F\u002Fgithub.com\u002Fsonos\u002Ftract)和[此处](https:\u002F\u002Fblog.tensorflow.org\u002F2020\u002F03\u002Fintroducing-webassembly-backend-for-tensorflow-js.html)的做法。这种方法的主要缺点是性能：即使 WebAssembly 最近增加了 128 位 SIMD 指令，它仍然缺乏针对机器学习推理或访问机器学习优化硬件的高效原语。由此带来的性能损失可能高达几个数量级。\n\n\n### 利益相关方的兴趣与反馈\n\n在进入阶段 3 之前待办事项。\n\n\u003C!--\n此处应列出已表示有意实现该提案的实现者名单。\n-->\n\n### 参考文献与致谢\n\n非常感谢以下人士提供的宝贵反馈和建议：\n\n- [Brian Jones](https:\u002F\u002Fgithub.com\u002Fbrianjjones)\n- [Radu Matei](https:\u002F\u002Fgithub.com\u002Fradu-matei)\n- [Steve Schoettler](https:\u002F\u002Fgithub.com\u002Fstevelr)","# wasi-nn 快速上手指南\n\n`wasi-nn` 是 WebAssembly 系统接口 (WASI) 中用于机器学习推理的 API 提案。它允许 WebAssembly 程序调用宿主环境的机器学习能力（如 TensorFlow, ONNX, OpenVINO 等后端），在利用硬件加速的同时保持模型格式的通用性。\n\n## 环境准备\n\n在使用 `wasi-nn` 之前，请确保满足以下系统和软件要求：\n\n*   **操作系统**: Linux, macOS 或 Windows (WSL2 推荐)。\n*   **运行时支持**: 需要支持 `wasi-nn` 提案的 WebAssembly 运行时。目前 **Wasmtime** 是主要的支持者。\n    *   注意：`wasi-nn` 处于 WASI Phase 2 阶段，功能可能随版本更新而变化。\n*   **开发工具链**:\n    *   Rust 工具链 (推荐使用，官方示例多为 Rust)。\n    *   或者 AssemblyScript 工具链。\n*   **模型文件**: 准备好已训练好的模型文件 (例如 `.onnx`, `.bin` 等格式)，`wasi-nn` 专注于推理而非训练。\n*   **后端依赖**: 根据你选择的后端（如 ONNX Runtime, TensorFlow, OpenVINO），宿主系统可能需要安装相应的底层库。\n\n## 安装步骤\n\n### 1. 安装支持 wasi-nn 的 Wasmtime\n\n你需要安装最新版本的 Wasmtime，并确保其编译时启用了 `wasi-nn` 特性（官方预编译二进制通常已包含，或需从源码编译）。\n\n```bash\n# 使用官方安装脚本 (Linux\u002FmacOS)\ncurl https:\u002F\u002Fwasmtime.dev\u002Finstall.sh -sSf | bash\n\n# 验证安装并检查版本\nwasmtime --version\n```\n\n> **提示**: 如果你需要特定的后端支持（如 ONNX），在安装 Wasmtime 时可能需要通过 Cargo 从源码构建并开启相应 feature，例如：\n> ```bash\n> cargo install wasmtime-cli --features wasi-nn --locked\n> ```\n\n### 2. 设置项目依赖 (以 Rust 为例)\n\n创建一个新的 Rust 项目并添加 `wasi-nn` 绑定库。\n\n```bash\ncargo new wasi-nn-demo\ncd wasi-nn-demo\n```\n\n编辑 `Cargo.toml`，添加 `wasi-nn` crate：\n\n```toml\n[dependencies]\nwasi-nn = \"0.2\" # 版本号请参考 crates.io 最新状态\n```\n\n### 3. 准备模型文件\n\n将你的模型文件（例如 `model.onnx`）放入项目目录中，以便后续加载。\n\n## 基本使用\n\n以下是一个基于 Rust 的最小化使用示例，演示如何加载模型、设置输入张量、执行推理并获取输出。\n\n### 代码示例 (`src\u002Fmain.rs`)\n\n```rust\nuse wasi_nn::{GraphEncoding, ExecutionTarget, Tensor};\n\nfn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    \u002F\u002F 1. 读取模型文件字节流\n    \u002F\u002F 假设当前目录下有一个 model.onnx 文件\n    let model_bytes = std::fs::read(\"model.onnx\")?;\n\n    \u002F\u002F 2. 加载模型 (Load)\n    \u002F\u002F 指定编码格式 (如 ONNX) 和执行目标 (如 CPU)\n    let graph = wasi_nn::load(\n        &[&model_bytes], \n        GraphEncoding::Onnx, \n        ExecutionTarget::Cpu\n    )?;\n\n    \u002F\u002F 3. 初始化执行上下文 (Init Context)\n    let context = wasi_nn::init_execution_context(graph)?;\n\n    \u002F\u002F 4. 设置输入张量 (Set Input)\n    \u002F\u002F 构造输入数据，这里假设是一个简单的 f32 数组\n    let input_data: Vec\u003Cf32> = vec![0.1, 0.2, 0.3, 0.4]; \n    let tensor = Tensor {\n        dimensions: &[1, 4], \u002F\u002F 维度形状\n        r#type: wasi_nn::TensorType::Fp32,\n        data: &input_data,\n    };\n    \n    \u002F\u002F 将张量设置为第 0 号输入\n    wasi_nn::set_input(context, 0, tensor)?;\n\n    \u002F\u002F 5. 执行推理 (Compute)\n    wasi_nn::compute(context)?;\n\n    \u002F\u002F 6. 获取输出 (Get Output)\n    let mut output_buffer = vec![0u8; 1024]; \u002F\u002F 预分配输出缓冲区\n    let bytes_written = wasi_nn::get_output(context, 0, &mut output_buffer)?;\n    \n    println!(\"推理完成，输出字节数: {}\", bytes_written);\n    \u002F\u002F 此处可根据模型输出类型解析 output_buffer\n    \n    Ok(())\n}\n```\n\n### 编译与运行\n\n使用 `wasm32-wasi` 目标编译代码，并通过 `wasmtime` 运行：\n\n```bash\n# 添加 wasm32-wasi 目标\nrustup target add wasm32-wasi\n\n# 编译为 WebAssembly\ncargo build --target wasm32-wasi --release\n\n# 运行 (确保模型文件在当前目录)\nwasmtime run --dir=. target\u002Fwasm32-wasi\u002Frelease\u002Fwasi-nn-demo.wasm\n```\n\n> **注意**: 运行命令中的 `--dir=.` 是为了让 Wasm 模块能够访问当前目录下的模型文件。如果使用了特定的后端（如 ONNX），请确保运行 Wasmtime 的环境中已安装对应的运行时库。","一家边缘计算公司正在将基于 PyTorch 训练的图像缺陷检测模型部署到成千上万台异构的工业网关设备上。\n\n### 没有 wasi-nn 时\n- **开发适配成本极高**：由于不同网关芯片架构各异（ARM、x86、RISC-V），团队必须为每种硬件单独编译原生推理引擎，维护多套代码分支。\n- **性能严重受限**：若仅使用纯 WebAssembly 字节码运行模型，无法调用设备底层的 GPU 或 NPU 加速指令，导致推理速度比原生慢数百倍，无法满足实时检测需求。\n- **模型格式转换繁琐**：为了兼容特定运行时，往往需要强行转换模型格式（如转为 TensorFlow Lite），这不仅增加了流程复杂度，还可能因算子不支持导致精度损失。\n- **部署包体积臃肿**：每个应用包都必须捆绑完整的推理框架库，导致镜像体积庞大，难以在存储受限的边缘设备上快速分发和更新。\n\n### 使用 wasi-nn 后\n- **一次构建，处处运行**：开发者只需编写标准的 WebAssembly 模块，wasi-nn 自动对接宿主环境提供的后端（如 OpenVINO 或 TensorRT），彻底屏蔽底层硬件差异。\n- **原生级推理性能**：wasi-nn 直接调用宿主设备的硬件加速能力（SIMD、GPU 等），使 WebAssembly 中的模型推理速度逼近原生 C++ 实现，满足毫秒级响应要求。\n- **模型格式无缝兼容**：支持直接加载 ONNX 等主流训练产出的模型文件，无需额外转换，保留了原始模型的完整算子和精度。\n- **轻量化部署**：应用不再捆绑庞大的推理引擎，而是依赖宿主系统提供的 wasi-nn 接口，显著减小了分发包体积，提升了边缘节点的更新效率。\n\nwasi-nn 通过标准化的系统接口，让机器学习模型在 WebAssembly 生态中既能享受“写一次，跑到处”的便携性，又能获得原生的硬件加速性能。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FWebAssembly_wasi-nn_67b7d0c3.png","WebAssembly","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FWebAssembly_18ae998a.png","Development of WebAssembly and associated infrastructure",null,"https:\u002F\u002Fwebassembly.org","https:\u002F\u002Fgithub.com\u002FWebAssembly",540,39,"2026-04-03T15:11:34",4,"","未说明（支持多种硬件加速后端如 GPU、TPU、FPGA，具体取决于宿主实现）","未说明",{"notes":90,"python":88,"dependencies":91},"wasi-nn 是一个 WebAssembly 系统接口（WASI）提案，用于在 WebAssembly 中执行机器学习推理。它本身不直接规定操作系统、Python 版本或具体的内存需求，因为这些取决于宿主环境（如 Wasmtime）和所选的后端框架（如 Tensorflow, ONNX, OpenVINO）。该 API 旨在利用宿主提供的硬件加速能力（SIMD, GPU, TPU, FPGA），目前仅支持推理，不支持训练。",[92,93,94],"Tensorflow","ONNX","OpenVINO",[13],"2026-03-27T02:49:30.150509","2026-04-06T05:17:42.409461",[99,104,108,113,118,123],{"id":100,"question_zh":101,"answer_zh":102,"source_url":103},15761,"WASI-NN 是否支持加载“命名模型”以便在多个 Wasm 实例间共享？","是的，该功能已通过 PR #38 添加。现在支持通过名称加载模型，允许主机在实例化前预加载模型并在多个 Wasm 模块实例之间复用，从而解决大模型加载耗时和后端文件系统依赖问题。规范中新增了 `load_named`（按名称加载并保留映射）和 `get_named`（通过名称检索已加载的图）函数。","https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fissues\u002F36",{"id":105,"question_zh":106,"answer_zh":107,"source_url":103},15762,"模型编译（如字节码转换）是由用户预处理还是由 WASI-NN 自动处理？","模型编译步骤不应暴露给 Guest（Wasm 模块）。如果暴露，会泄露不同后端（有的需要编译，有的不需要）的实现差异。WASI-NN 的设计是让主机端自由优化编译时机和方式，对 Guest 隐藏这一过程。因此，这不属于 WASI-NN 绑定的一部分，而是主机实现的内部优化行为。",{"id":109,"question_zh":110,"answer_zh":111,"source_url":112},15763,"如何在当前环境中使用 TensorFlow 作为 WASI-NN 的后端？","用户可以通过以下几种方式使用 TensorFlow 后端：\n1. 在 Wasmtime 中使用相关的开放 PR：https:\u002F\u002Fgithub.com\u002Fbytecodealliance\u002Fwasmtime\u002Fpull\u002F3977\n2. 使用 WAMR (WebAssembly Micro Runtime) 中的实现，参考其 C 语言编写的 wasi-nn 库。\n3. 使用 WasmEdge 中的 TF-Lite 实现：https:\u002F\u002Fwasmedge.org\u002Fbook\u002Fen\u002Fcontribute\u002Fbuild_from_src\u002Fplugin_wasi_nn.html\n注意：使用 TensorFlow 时需留意相关的安全影响。","https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fissues\u002F35",{"id":114,"question_zh":115,"answer_zh":116,"source_url":117},15764,"WASI-NN 中的句柄（graphs 和 execution context）生命周期是多久？如何释放它们？","原始接口中似乎没有显式关闭句柄的方法，但根据 `wit-bindgen` 的更新，应该提供销毁资源的方式。建议使用 `wit-bindgen` 生成的绑定来管理资源生命周期。如果遇到解析错误（如 `expected 'default', 'world' or 'interface'`），可能是 `.wit` 文件版本过旧，需确保使用与工具链版本匹配的接口定义文件。","https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fissues\u002F22",{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},15765,"WASI-NN 是否支持获取张量的内存布局（如 NCHW 或 NHWC）？","社区曾在 ML 会议中讨论过此问题。结论是：NCHW\u002FNHWC 等布局差异主要针对图像张量，而 WASI-NN 目前的设计并未在接口层面强制暴露或校验具体的内存布局。错误的布局通常会在后端执行时导致失败，而不是在 Wasm 层被提前拦截。如需支持，可能需要未来扩展接口添加枚举类型来明确指定布局。","https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fissues\u002F67",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},15766,"WASM 是否支持 8 位整数（i8）或半精度浮点（fp16）进行 GEMM 运算？","虽然 WebAssembly 核心规范尚未原生支持 i8 和 f16 类型，但可以通过内存缓冲区和位操作（如移位）模拟这些数据类型。对于性能敏感场景（如 8 位 GEMM），部分浏览器（如 Firefox 118）已内置自定义的 8 位 GEMM 算子以提升机器翻译等任务的速度。然而，出于安全考虑，浏览器通常不支持从互联网加载自定义算子，因此这类优化多由浏览器厂商自行实现，而非通过 WASI-NN 直接暴露给用户。","https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fissues\u002F4",[129],{"id":130,"version":131,"summary_zh":132,"released_at":133},90466,"0.2.0-rc-2024-06-25","这是一个初始标签，用于在发布前开始跟踪 wasi-nn 的变更。\n\n## 新贡献者\n* @abrown 在 https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fpull\u002F5 中完成了首次贡献。\n* @alexcrichton 在 https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fpull\u002F13 中完成了首次贡献。\n* @brianjjones 在 https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fpull\u002F15 中完成了首次贡献。\n* @radu-matei 在 https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fpull\u002F16 中完成了首次贡献。\n* @gusye1234 在 https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fpull\u002F25 中完成了首次贡献。\n* @geekbeast 在 https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fpull\u002F38 中完成了首次贡献。\n* @shschaefer 在 https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fpull\u002F54 中完成了首次贡献。\n* @danbev 在 https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fpull\u002F66 中完成了首次贡献。\n* @waywardmonkeys 在 https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fpull\u002F73 中完成了首次贡献。\n* @devigned 在 https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fpull\u002F72 中完成了首次贡献。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Fwasi-nn\u002Fcommits\u002F0.2.0-rc-2024-06-25","2024-08-01T17:23:22"]