文章
写 BIM、AI Agent 和工程实践。
2026 年 10 月 19 日 · AI · 计算机视觉 · 工程图纸 · 少样本学习
只给一个样例,AI 能在图纸上找全符号吗?
在一套公开的消防系统图数据集上,我把检测、OCR、免训练分类和少量训练拼成一条流水线,看看每类只给 1 个或 5 个样例时,能把图纸上的符号找到什么程度。
2026 年 10 月 12 日 · 模拟器 · Webulator · WebGL · Windows XP
绕过模拟 CPU:D3D/OpenGL API 转发与 x87 快速路径
浏览器里的 Windows XP 有了虚拟显卡之后,瓶颈变成了模拟 CPU 上跑的图形驱动。我写了两个替身 DLL,把 Direct3D 9 和 OpenGL 调用直接交给模拟器外面的 WebGL2,又给 v86 的 x87 浮点加了一条原生 f64 快速路径。
2026 年 10 月 11 日 · 模拟器 · Webulator · WebGL · Windows XP
在浏览器里给 Windows XP 装一块显卡:SVGA3D 到 WebGL2
v86 没有 3D 硬件。我在它里面实现了一块 VMware SVGA II 显卡和它的 SVGA3D 协议,用 WebGL2 执行 XP 驱动发来的命令,让浏览器里的 Windows XP 有了 Direct3D 和 OpenGL 加速,最后跑起了 OpenArena。
2026 年 10 月 11 日 · 模拟器 · WebAssembly · Webulator
把一张截图变成一台活电脑:我为什么做 Webulator
Webulator 把 v86、Mini vMac、Basilisk II、SheepShaver 这几个浏览器模拟器包成一套 API:同样的输入、同样的快照、同样的一致性测试。四台老电脑从快照里醒来,第一帧和存档时逐像素一致。
2026 年 10 月 2 日 · 模拟器 · WebAssembly · Asyncify · 经典 Mac
给经典 Mac 模拟器加存档:Asyncify、虚拟时钟与"磁盘忙"
Mini vMac、Basilisk II、SheepShaver 都没有存档功能。存档这部分我只改编译参数,用 Asyncify 在输入轮询处展开调用栈,让三台经典 Mac 能存档、能在全新页面里恢复,第一帧逐像素一致。顺带记录虚拟时钟为什么是必需的,以及磁盘慢时怎么让客户机不卡。
2026 年 7 月 31 日 · 网络 · iOS · SSH · Tailscale
只在 5G 下失败的 SSH 连接
iPhone 通过 Tailscale 发起的 SSH 连接在 5G 下 30 秒超时、线路上不见一个包,最后发现是 iOS 把 IPv4 字面地址合成成了 NAT64 地址。
2026 年 5 月 22 日 · BIM · AI
BIM 构件不是数据,是函数
门、钢梁、风管接头的本质是参数到几何的映射。把这个映射本身当作一等公民,就得到了 family:三条不变量、三档构件、Connector,以及由 AI 来发布的共享构件库。
2026 年 5 月 14 日 · 电气单线图 · 自动布局 · 图算法
单线图自动布局:一个有意思的小问题
开源电气单线图编辑器 sldeditor 里的自动布局算法:如何把母线、链、电气节点和层级这些领域概念编码进算法,让机器画出的图像电气工程师手画的一样。
2026 年 4 月 10 日 · AI · BIM
如何让 AI Agent 真正理解建筑?构建 AI 原生的 BIM 数据结构
探讨 BimDown 格式底层的纯技术细节与设计取舍,让 AI 回归用最熟悉的方式描述建筑。
2026 年 4 月 6 日 · BIM · AI
BimDown 内部机制:从 CSV+SVG 到几何推理引擎的工程实现
BimDown 系列的续篇,只讲实现:Schema 继承、CSV+SVG 合成为 DuckDB 表、用 DCEL 推导房间边界、重建 MEP 拓扑,以及与 Revit 的增量回写。
2026 年 4 月 6 日 · AI · BIM · OpenClaw · Revit
我给小龙虾开发了一个 Revit
BimDown 实战篇:让 OpenClaw(小龙虾)这样的 AI Agent 直接读写建筑模型,五个演示场景,以及跟 Revit 相比还差什么。
2025 年 6 月 8 日 · AI · Revit · BIM
Vibe Coding Revit 插件的最后一块拼图:不启动 Revit 跑通 API 测试
如何在不启动 Revit 的情况下跑通 API 测试,让 AI 自己闭环调试,彻底解放 Vibe Coding 的迭代速度。