一个做DXF文件对比的开源工具,在24小时内把自己"杀死"了5次。
2024年3月,cad-dxf-agent的GitHub仓库突然静默。不是 abandoned,是 metamorphosis。开发者把过去18个月积累的确定性比对引擎——那个能逐像素检测工程图纸差异的CLI工具——连根拔起,种进了一个叫IntentCAD的新骨架里。
同一天,5个EPIC(工程史诗)通过PR #73到#82集体落地。这不是版本迭代,是物种跃迁。
从"比对两个文件"到"理解你想干什么"
旧工具的工作流很诚实:你丢进两个DXF,它吐出差异报告。像一台精密的天平,只回答"哪里不同"。
新架构的核心是intent router(意图路由器),PR #74。用户用自然语言描述需求——"找出这张图纸里所有重复的标注模式"——系统不再硬编码响应,而是走一套契约驱动的管道:
解析意图 → 匹配能力契约 → 验证前置条件 → 执行最高优先级匹配
代码很直白。每个能力(capability)注册时声明三件事:处理什么意图类型、需要什么会话状态、产出什么结果。路由器本身不碰任何领域逻辑,新能力即插即用。
这不是聊天机器人套壳。是显式阶段(explicit stages)对隐式方法签名的取代。
PR #75的提交信息很说明问题:"Harden contracts against spec"。能力契约上线第一天就被加固——松散的类型提示变成严格schema,本该必填的可选字段被修正。契约刚诞生就需硬化,这恰恰证明显式schema比隐式签名更值得维护。
单用户CLI的"器官移植"
比对引擎最初为单人命令行会话设计。平台化需要三件器官:认证、授权、工作区隔离。
PR #80的UserManager类暴露了迁移的残酷性。Google身份令牌验证后,系统检查白名单、upsert用户记录、隔离会话状态。旧引擎的假设——"运行这段代码的人就是操作者"——被彻底推翻。
更隐蔽的改动在PR #76:绘图上下文(DrawingContext)现在携带用户ID作用域。同一个比对算法,执行时看到的图纸视图可能完全不同。多租户不是加个字段,是重新设计数据流经的每一条血管。
被低估的第五个EPIC
PR #78和#81处理了看似边缘的场景:标记语言解析(markup interpretation)和区域问答(region Q&A)。
工程图纸的标记不是装饰。红圈、引线、云线批注承载着审查者的意图——"这里有问题"。旧工具把这些当像素差异处理,新系统尝试理解"这个红圈指向的公差标注是否与其他视图冲突"。
区域问答更激进。用户框选图纸一角,问"这个装配间隙的历史变更记录"。系统需要关联几何位置、版本历史、变更工单——把静态图纸变成可查询的知识库。
这两个能力没出现在早期产品路线图上。是intent router的架构弹性让它们成为可能:新契约注册,路由器自动识别,无需改动核心管道。
命名即战略
从cad-dxf-agent到IntentCAD,删除的是文件格式名,增加的是主语。
旧名字描述工具能处理什么文件。新名字描述用户能表达什么意图。这个重命名发生在PR #73,比五个EPIC早几个小时——不是事后贴标签,是预先框定架构方向。
开发者在一个commit message里坦承:"Calling it 'cad-dxf-agent' was underselling it by a factor of five." 低估五倍。五个EPIC恰好对应五个被低估的能力维度:路由、契约硬化、多用户、标记理解、区域查询。
GitHub的contribution graph显示,这一天有11个contributor提交记录。对于一个小众工程工具,这密度暗示着某种协作模式的转变——从个人维护者的问题驱动,到平台架构的能力驱动。
IntentCAD的README至今保留着一行小字:"Formerly cad-dxf-agent"。不是怀旧,是考古层。下一个从这个地基上长出来的能力会是什么——当用户开始用自然语言追问"为什么这个设计在2023年Q2被否决"时,系统需要嫁接多少新的数据源?
热门跟贴