Handwired指南:1706星把普通JavaScript代码变成神经网络

📌 项目:https://github.com/chenglou/handwired | 星数:1706 | 语言:TypeScript | 协议:MIT | 更新:2026-10-18

📋 项目简介

Handwired是chenglou(Rocq/Reason语言作者)的实验性项目,1706颗星,TypeScript编写,MIT协议。核心想法极其大胆:把你写的普通JavaScript/TypeScript代码本身变成一个神经网络。不是"用JS训练模型",而是"JS代码即网络"——每个函数调用是一个神经元,每个变量传递是一条突触,控制流(if/else/循环)变成门控机制。运行你的代码就是前向传播,修改代码就是改变网络结构。Handwired提供了一个编译器,把TS源码转成可微分计算图,然后你就能对这个"代码网络"做梯度下降优化——让代码自己学习最优参数,这是"可微分编程"范式的大胆探索。

Handwired把推理和代码融合的理念很前沿,进化式推理可参考EvoVLM进化推理指南;编译时类型系统的另类玩法可看GDP编译时鉴权指南,TS编译器原理方向可参考TS Rust TypeScript编译器。

🔧 核心功能

源码到计算图编译器:Handwired的编译器解析TypeScript AST,把每个表达式语句映射为计算图节点。函数调用映射为神经元(带可学习权重),条件分支映射为门控节点(学习走哪条路),循环映射为递归展开(学习迭代次数)。编译后的图保留原代码的执行语义,同时所有数值参数变成可微分的。

梯度下降优化代码参数:编译出计算图后,你定义损失函数(比如代码输出和目标的差距),Handwired用自动微分算出每个参数的梯度,然后做梯度下降。一个排序函数的阈值参数、一个渲染函数的颜色权重、一个游戏AI的决策系数——都能让代码自己学习最优值,无需手动调参。

运行时混合推理与执行:优化后的代码图既可以"正常执行"(确定性地跑你的原始逻辑),也可以"推理执行"(加入学习到的随机性和权重)。你可以在运行时切换两种模式,实现"代码写骨架、网络补肌肉"的混合编程范式,这是传统编程和机器学习的融合。

⚖️ 优缺点

✅ 优势❌ 劣势
概念极度创新,代码即网络极度实验性,不适合生产环境
现有JS代码无需改写即可使用编译器支持的TS语法子集有限
自动微分,代码参数可学习大型代码图梯度爆炸/消失
chenglou出品,工程质量有保证文档少,理解门槛高
MIT协议,学术研究友好性能慢,推理比原代码慢100倍

🔧 适用场景

❓ 常见问题

Handwired能替代PyTorch/TensorFlow吗?

完全不能。它不是通用深度学习框架,定位是"让普通代码可微分"的概念验证。训练大模型请用PyTorch。Handwired适合优化代码里的少量参数(几十到几百个),不适合百万参数级网络。

支持哪些TypeScript语法?

支持函数声明、调用、if/else、for循环、基本运算和类型注解。不支持class、async/await、generator、动态属性访问。编译器会报错指出不支持的语法,建议从简单函数开始尝试。

这东西到底有什么用?

目前更多是思想实验和研究工具。实际用途:游戏AI的决策阈值自动学习、渲染参数优化、算法参数搜索。长期价值在于启发"可微分编程"范式——未来可能影响编程语言设计。