核心要点速览

  • Handwired 是程璐公布的一个玩具项目,核心能力是把普通 JavaScript 代码直接编译成神经网络结构,而不是让神经网络去学习这段代码的行为。
  • 它最大的特点是免训练:网络输出与原始 JS 程序逐位一致,同时整个结构是可微分的,因此可以在浏览器里直接做反向传播类操作。
  • 运行环境要求极低,纯浏览器、无需 GPU,手机和桌面浏览器都能跑,但目前还没有公开版本可下载。
  • 现阶段只有一段简短的预览演示,想上手的人应先在官方页面确认是否已放出可运行版本,再决定是否纳入工作流。

项目速览

类型/定位开发者实验性玩具项目,JS 到神经网络的编译器
适用设备浏览器即可,手机与桌面均可用,无需 GPU
费用说明官方尚未公布定价信息,需以官网说明为准
语言支持输入为 JavaScript 代码,界面语言以官方发布为准
核心亮点免训练、输出与原程序精确一致、结构可微分
使用门槛需要会写基础 JavaScript,并理解神经网络基本概念
分类开发与工具
作者 / 发布方Cheng Lou
热度🔥 热度 143万
最后更新

Handwired 到底做了什么:把代码变成网络,而不是让网络学会代码

Handwired 由开发者程璐公布,定位是一个玩具项目。它做的事情听起来有点反常识:你给它一段普通的 JavaScript 代码,它把这段代码的逻辑直接转成神经网络结构。注意这里的顺序——不是训练一个网络去模仿这段代码,而是把代码本身编译成网络,所以网络天生就代表这段逻辑。

正因为是编译而非学习,它才有两个关键性质。第一是免训练,你不需要准备数据集、不需要跑梯度下降、也不存在训练不收敛的问题。第二是输出精确一致,网络算出来的结果和原始 JavaScript 程序逐位相同,而不是「差不多接近」。这两点结合在一起,让它在概念上非常干净。

第三个性质是可微分。转出来的网络结构支持求导,这意味着你可以对这段程序做梯度相关的操作,比如分析输入对输出的敏感度、做基于梯度的优化,或者把一段确定性逻辑嵌进更大的可微系统里。这三点——免训练、精确输出、可微分——正是它被开发者反复讨论的原因。

  • 编译而非训练

    代码逻辑被直接映射成网络结构,因此不存在训练阶段,也没有数据集和收敛问题。

  • 输出精确一致

    网络结果与原始 JavaScript 程序完全相同,而不是近似拟合,这让它可用于需要确定性的场景。

  • 结构可微分

    转出的网络支持求导,可以参与梯度优化或嵌入更大的可微计算流程中。

  • 浏览器内运行

    整个流程在浏览器里完成,不依赖 GPU,手机和桌面浏览器都能使用。

为什么「免训练 + 精确输出」在工程上值得关注

通常我们提到神经网络,默认它需要训练:给一堆样本,调参数,让输出逼近目标。这条路的问题是成本高、结果不确定,而且你很难保证网络在某个具体输入上给出完全正确的答案。Handwired 换了个思路,把确定性程序直接翻译成网络,于是「正确性」由编译过程保证,而不是由训练质量保证。

这种思路在需要把传统代码和可微计算结合的场景里很有价值。比如你想对一段业务逻辑做梯度分析,或者想让一段规则代码参与端到端的优化,传统做法是重写成可微形式,工作量大且容易出错。如果代码能自动转成可微分网络,这部分工作就被省掉了。

当然,玩具项目的定位意味着它目前更适合探索和演示,而不是直接上生产。代码规模、支持的 JavaScript 语法子集、性能表现这些关键问题,官方都还没有公开细节。想评估它是否适合自己的项目,最稳妥的做法是等公开版本出来后,用自己真实的代码片段去试。

  • 正确性来自编译而非训练

    输出一致是结构决定的,不依赖训练数据和调参,因此结果可复现、可预期。

  • 适合代码与可微计算的混合场景

    需要把确定性逻辑接入梯度优化流程时,自动转换比手工重写更省事。

  • 目前仍是实验性质

    支持的语法范围、可处理的代码规模、运行性能都还没有公开说明,需以官方信息为准。

怎么开始用:从一段小函数到完整流程

需要先说清楚一件事:截至现在,Handwired 还没有公开的可运行版本、下载包或正式官网页面,程璐只通过一段简短的预览演示展示了它的效果。所以下面的步骤描述的是它公布出来的使用方式,真正动手前请先到官方渠道确认是否已经放出可体验的版本。

从演示透露的信息看,使用方式应该是把 JavaScript 代码交给工具,由它完成到神经网络的转换,然后对比网络输出与原程序的输出是否一致。整个流程在浏览器里进行,不需要 GPU,手机浏览器也能跑。这意味着你不需要配置本地环境,打开页面就能试。

上手时建议从最小的函数开始,比如一个只做加减乘除或简单条件判断的函数,先确认转换结果和原程序输出一致,再逐步换成更复杂的逻辑。这样做的原因是,一旦输出出现偏差,你能立刻定位到是哪一段逻辑导致的,而不是在一大段代码里排查。

如果你打算把它用在实际项目里,建议先明确目标:是要做梯度分析、要把规则代码接入可微流程,还是只想理解它的转换机制。不同目标对应的验证方式不同,但共同点是都要先在小样本上确认输出精确一致,再考虑扩大范围。

  • 先确认版本状态

    目前只有预览演示,动手前先查官方渠道是否已发布可运行版本,避免按传言操作。

  • 从最小函数起步

    用简单算术或条件判断函数验证输出一致性,再逐步增加复杂度,便于定位问题。

  • 对比输出是核心验证手段

    把网络结果和原 JavaScript 程序的输出逐项比对,这是判断转换是否正确的最直接方法。

适用人群、同类思路对比与需要留意的限制

Handwired 最适合两类人。一类是对「代码与神经网络关系」这个命题本身感兴趣的开发者和研究者,他们关心的是可微分编程、程序合成这类方向;另一类是需要把确定性逻辑接入梯度优化流程的工程师,他们看重的是省去手工重写的工作量。如果你只是想找一个能自动生成模型的工具,它可能不是你要的东西。

和常见的机器学习工具相比,它的差异很明显。常规框架是先有数据、再训练模型,输出是概率性的;Handwired 是先有代码、再编译成网络,输出是确定性的。和可微分编程语言相比,它的切入点更轻,直接以 JavaScript 为输入,跑在浏览器里,不需要额外环境。这些差异决定了它更适合探索和验证想法,而不是替代现有训练流程。

限制方面,最需要留意的是信息不完整。官方还没有说明支持哪些 JavaScript 语法、能处理多大规模的代码、转换后的网络在性能上表现如何,也没有公布是否有公开版本或收费安排。在这些问题明确之前,不建议把它作为生产系统的依赖。想跟进进展,可以关注程璐的官方发布渠道,以官方页面上的说明为准。

  • 适合探索可微分编程的人

    对代码与网络关系、程序合成、梯度分析感兴趣的开发者,能从中获得直观理解。

  • 与训练型框架思路相反

    常规框架靠数据训练出概率性输出,Handwired 靠编译保证确定性输出,两者解决的问题不同。

  • 关键细节尚未公开

    语法支持范围、代码规模上限、性能表现和发布计划都未说明,使用前需以官方信息为准。

分步上手指南

  1. 确认当前是否已有可体验版本

    由于官方尚未发布公开版本、下载包或正式页面,第一步是到程璐的官方发布渠道查看最新说明,确认是否已经放出可运行版本。如果还没有,可以先了解它的概念和演示内容,等版本发布后再动手。

  2. 准备一段最小可验证的 JavaScript 函数

    写一个只包含基础运算或简单条件判断的函数,输入输出都容易手算验证。函数越短,后续排查转换问题时越容易定位。避免一上来就用涉及复杂对象、异步或大量副作用的代码。

  3. 把代码交给工具完成转换

    按照官方说明把这段 JavaScript 输入到工具中,由它转换成神经网络结构。整个过程在浏览器里完成,不需要 GPU,手机或桌面浏览器都可以操作,也不需要本地安装环境。

  4. 逐项对比网络输出与原程序输出

    用同一组输入分别跑原始 JavaScript 程序和转换后的网络,比较两者结果是否完全一致。这是验证转换正确性的核心步骤,也是这个项目最强调的特性,建议多测几组边界输入。

  5. 逐步扩大代码范围并记录问题

    在小函数验证通过后,逐步替换成更复杂的逻辑,每次只增加一点复杂度,并记录哪些写法出现了问题。这些记录能帮你判断它当前的能力边界,也能为后续是否用于实际项目提供依据。

常见问题

Handwired 现在可以下载或在线使用吗?

目前还不行。根据公开信息,程璐只通过一段简短的预览演示展示了这个项目,还没有发布公开版本、下载包或正式官网页面。想第一时间体验的话,建议关注他的官方发布渠道,等官方明确说明后再动手,不要轻信第三方转载的所谓下载地址。

它真的不需要训练吗?输出为什么能完全一致?

是的,免训练是它的核心设计。它并不是让神经网络去学习这段代码的行为,而是把 JavaScript 代码的逻辑直接编译成网络结构,所以正确性由转换过程本身保证,而不是由训练质量决定。这也是它能做到输出与原程序逐位一致的原因,而不是近似拟合。

运行它需要什么设备?必须要有独立显卡吗?

不需要 GPU。按照公布的信息,整个流程都在浏览器里完成,手机和桌面浏览器都能运行。这意味着你不需要配置本地开发环境,也不需要显卡,只要能打开网页就能使用。不过具体支持哪些浏览器版本,官方还没有详细说明,使用前最好确认一下。

它支持所有 JavaScript 语法吗?能处理多复杂的代码?

这一点官方目前没有公开说明。已知的信息只提到它能把普通 JavaScript 转成神经网络,但没有说明支持的语法子集、可处理的代码规模上限,也没有性能数据。稳妥的做法是从最简单的函数开始试,逐步增加复杂度,自己摸清当前版本的能力边界。

它和常见的机器学习框架有什么区别?适合用在生产环境吗?

思路正好相反。常规框架靠数据训练模型,输出是概率性的;Handwired 靠编译代码生成网络,输出是确定性的,并且结构可微分。由于它被定位为玩具项目,且关键细节尚未公开,现阶段更适合探索、演示和验证想法,不建议直接作为生产系统的依赖。