@julien_c: 周五项目:对 @midudev 的 canirun-ai 背后的硬件检测模块进行可读的重写。相同的启发式规则、着色器…

X AI KOLs Following 工具

摘要

对 canirun.ai 背后的硬件检测模块进行可读的重写,提供了描述性名称、JSDoc 和更清晰的代码,同时保留了原有的启发式规则和规格表。

周五项目: 对 @midudev 的 canirun-ai 背后的硬件检测模块进行可读的重写。相同的启发式规则、着色器 & 规格表——只是加上了描述性名称 + JSDoc。 https://t.co/A4Xjb6z7vv
查看原文
查看缓存全文

缓存时间: 2026/05/16 07:16

周五项目:@midudev 的 canirun-ai 背后硬件检测模块的可读重写。相同的启发式方法、着色器与规格表——只是换成了描述性名称 + JSDoc。https://t.co/A4Xjb6z7vv

julien-c/canirun.ai

来源:https://github.com/julien-c/canirun.ai

canirun-ai.js

canirun.ai(https://www.canirun.ai/)所用浏览器端硬件检测模块的可读重写——该网站可告诉你当前机器能运行哪些本地 AI 模型。
原始模块以压缩形式发布为 hardware-ui..js。这里是同一份代码,带有描述性名称、分节、JSDoc 以及命名常量,替代了魔法数字。行为、阈值、着色器和规格表均未改变。

功能

  1. 读取浏览器所披露的信息:

    • WebGL WEBGL_debug_renderer_info → GPU 厂商 + 渲染器字符串
    • WebGPU adapter.info → 设备 + 架构(可用时)
    • navigator.deviceMemorynavigator.hardwareConcurrency、User-Agent
  2. 在设备上执行基准测试

    • CPU:一个约 30ms 的 sqrt + sin + cos 循环
    • GPU 计算(WebGPU):FMA 循环 → 估算 GPU 核心数
    • GPU 内存带宽:WebGPU 缓冲区拷贝,WebGL 纹理采样作为回退方案
  3. 当 API 被屏蔽或信息模糊时回退到规格表查找:Apple GPU 仅报告 “Apple GPU”;iOS 隐藏所有信息;移动端厂商拒绝暴露适配器信息。包含桌面独立 GPU、Apple Silicon、移动 SoC GPU 和单板计算机的规格表。

  4. 评估模型适配度:将模型分类为 can-runcan-run-slowtightcannot-rununknown;估算 tokens/秒;计算 0–100 的分数和 S–F 的等级。所有检测均在浏览器本地运行,无需网络请求。

用法

这是一个 ES 模块:

import { detectHardware, scoreModel, describeDevice } from "./canirun-ai.js";

const hw = await detectHardware();
console.log(describeDevice(hw), hw);

// 评分一个 7B 模型,大约需要 4.5 GB 内存
const result = scoreModel(4.5, hw, 4.5);
console.log(result); // { status, toksPerSec, memPct, score, grade }

致谢

原作者为 midudev(https://midu.dev)。本仓库是为教育目的进行的代码可读性重写;其中的方法、启发式方法和规格表均为他的工作。

相似文章