📌 项目: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倍 |
完全不能。它不是通用深度学习框架,定位是"让普通代码可微分"的概念验证。训练大模型请用PyTorch。Handwired适合优化代码里的少量参数(几十到几百个),不适合百万参数级网络。
支持函数声明、调用、if/else、for循环、基本运算和类型注解。不支持class、async/await、generator、动态属性访问。编译器会报错指出不支持的语法,建议从简单函数开始尝试。
目前更多是思想实验和研究工具。实际用途:游戏AI的决策阈值自动学习、渲染参数优化、算法参数搜索。长期价值在于启发"可微分编程"范式——未来可能影响编程语言设计。