核心要点速览
- 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 靠编译保证确定性输出,两者解决的问题不同。
- 关键细节尚未公开
语法支持范围、代码规模上限、性能表现和发布计划都未说明,使用前需以官方信息为准。
分步上手指南
确认当前是否已有可体验版本
由于官方尚未发布公开版本、下载包或正式页面,第一步是到程璐的官方发布渠道查看最新说明,确认是否已经放出可运行版本。如果还没有,可以先了解它的概念和演示内容,等版本发布后再动手。
准备一段最小可验证的 JavaScript 函数
写一个只包含基础运算或简单条件判断的函数,输入输出都容易手算验证。函数越短,后续排查转换问题时越容易定位。避免一上来就用涉及复杂对象、异步或大量副作用的代码。
把代码交给工具完成转换
按照官方说明把这段 JavaScript 输入到工具中,由它转换成神经网络结构。整个过程在浏览器里完成,不需要 GPU,手机或桌面浏览器都可以操作,也不需要本地安装环境。
逐项对比网络输出与原程序输出
用同一组输入分别跑原始 JavaScript 程序和转换后的网络,比较两者结果是否完全一致。这是验证转换正确性的核心步骤,也是这个项目最强调的特性,建议多测几组边界输入。
逐步扩大代码范围并记录问题
在小函数验证通过后,逐步替换成更复杂的逻辑,每次只增加一点复杂度,并记录哪些写法出现了问题。这些记录能帮你判断它当前的能力边界,也能为后续是否用于实际项目提供依据。
常见问题
Handwired 现在可以下载或在线使用吗?
目前还不行。根据公开信息,程璐只通过一段简短的预览演示展示了这个项目,还没有发布公开版本、下载包或正式官网页面。想第一时间体验的话,建议关注他的官方发布渠道,等官方明确说明后再动手,不要轻信第三方转载的所谓下载地址。
它真的不需要训练吗?输出为什么能完全一致?
是的,免训练是它的核心设计。它并不是让神经网络去学习这段代码的行为,而是把 JavaScript 代码的逻辑直接编译成网络结构,所以正确性由转换过程本身保证,而不是由训练质量决定。这也是它能做到输出与原程序逐位一致的原因,而不是近似拟合。
运行它需要什么设备?必须要有独立显卡吗?
不需要 GPU。按照公布的信息,整个流程都在浏览器里完成,手机和桌面浏览器都能运行。这意味着你不需要配置本地开发环境,也不需要显卡,只要能打开网页就能使用。不过具体支持哪些浏览器版本,官方还没有详细说明,使用前最好确认一下。
它支持所有 JavaScript 语法吗?能处理多复杂的代码?
这一点官方目前没有公开说明。已知的信息只提到它能把普通 JavaScript 转成神经网络,但没有说明支持的语法子集、可处理的代码规模上限,也没有性能数据。稳妥的做法是从最简单的函数开始试,逐步增加复杂度,自己摸清当前版本的能力边界。
它和常见的机器学习框架有什么区别?适合用在生产环境吗?
思路正好相反。常规框架靠数据训练模型,输出是概率性的;Handwired 靠编译代码生成网络,输出是确定性的,并且结构可微分。由于它被定位为玩具项目,且关键细节尚未公开,现阶段更适合探索、演示和验证想法,不建议直接作为生产系统的依赖。






