@bldrs-ai/conway

中文文档
1.1643.778-g5233308a发布于 2026/11/08AGPL-3.0TypeScriptESM + CJS构建来源已验证近 30 天下载 5585

bldrers.ai 数据模型

中文使用文档
文档目录17 节
  1. 开始
  2. 代码设置
  3. 窗口设置
  4. MacOS 设置
  5. EMSDK 设置
  6. 初始构建
  7. 示例用途
  8. 发展
  9. CLI 几何输出选项
  10. 递归批次
  11. A级:内部速查模式 data/ (中文(简体) )
  12. 业绩基准
  13. 正常流量: 进行改变
  14. 弹出主
  15. 卷入无头三和分享
  16. 保佑一个 stable 版本
  17. 打开后续

康维

康威权力 焊德共享,将高质量,精准的CAD带入网络. 这种为IFC和STEP格式专门设计的尖端CAD引擎提供了先进的几何表示,使团队能够以超乎寻常的精确度和速度打开并可视化复杂的模型.

康威包括两个主要子组件:

  • IFC- gen (英语),一个大多是自动生成的 TypeScript 框架(~400kloc),用于对 IFC 2x3, 4 兼容的 API 覆盖解析 *.ifc 文档和初始支持 步骤AP2xx *.step 支持 Automotive 和 3D 打印应用程序的文件。 这是基于原始作品 hypar-io/IFC-gen 电源,由bldrs-ai为康威进一步发展. 运行时间在本计划中是完全开源的. 请与我们联系 以便我们完全进入我们的一代管道.
  • 连线地心 危险核心,bldrs-ai的重写 网络- ifc,为高性能而设计,支持国际金融公司和STEP家族内全套开放式CAD标准.

开始

代码设置

  1. 忽略以下内容并参考AGENTS.md.

窗口设置

  1. 安装 MinGW- 64 添加 g++.exe 位置到您的 PATH 变量.

MacOS 设置

  1. 安装 gmake 财务报告和审定财务报表 node 通过Homebrew的依赖性(brew install gmake node) (中文(简体) ).

EMSDK 设置

  1. 切开 EMSDK 服务器 复出并加入你的路径(见他们的指示)
  2. 康威正在使用 6.0.2 (或运行) scripts/setup-emsdk.sh,它安装了被绑定的版本)
> cd $EMSDK
> ./emsdk install 6.0.2
> ./emsdk activate 6.0.2
> cd $CONWAY
conway> emcc -v
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 6.0.2
...

初始构建

克隆 Conway 寄存器, 然后在寄存器的根目录 :

# Make sure EMSDK environment is set up.
yarn setup
yarn build
yarn test

示例用途

您现在可以装入您的 IFC 文件 。 从康威根:

  1. yarn browser model.ifc
  2. yarn validator model.ifc "IFCWINDOW.OverallHeight <= 1500"

见文件全文 浏览器. md 财务报告和审定财务报表 验证器. md

发展

更新客户端自上次同步以来的更改 :

git pull
yarn setup

完全建造Conway(TypeScript)和Conway-geom(WASM次级项目):

yarn build

构建仅仅是conway,而不是conway-geom,例如用于仅更新Conway API或工具:

yarn build-incremental

在不构建凸起地( 无 EMSDK) 的情况下进行测试

欢乐套间装入平时生产的 Conway-geom WASM 二进制 由EMSDK/Genie本土建筑所建. 如果您只碰了 TypeScript, 您可以跳过 整个工具链: yarn setup 构建类型脚本( E)build-incremental(中文(简体) ) 然后运行 yarn wasm-prebuilt,可以获取WASM Dist/ 捆绑从 最后发表的 @bldrs-ai/conway npm 软件包——如此新鲜 yarn setup && yarn test 工作没有 EMSDK。 以 CONWAY_PREBUILT_WASM_VERSION,或 刷新为 yarn wasm-prebuilt --force。 。 。 . 这是只为TS工作的便利——如果你改变 conway-geom 您必须做一个真实的子模块 yarn build 以获得匹配的二进制.

为了一个完整的,干净的重建:

yarn build-rebuild

您也可以使用 joest 进行测试 :

yarn test

最后,使用手表功能,您还可以在更改时自动重建代码,并使用:

yarn build-test-watch

IFC 解析控制台测试应用程序

Conway有一个测试应用程序,用于解析 IFC 步骤文件以查看性能,并在 src/core/ifc/ifc command line main.ts 中包含实体类型.

您可以设置一个别名来引用最新的软件包或从源创建并使用线程 cli:

alias conway='yarn cli'
OR
alias conway='npx --package=@bldrs-ai/conway@latest exec cli'

可以使用:

conway [ifc file path]
# To output geometry
conway -g [ifc file path]
# Use -m 1024 for larger files

CLI 几何输出选项

您现在可以使用 CLI 输出各种几何格式 :

conway [ifc file path] [options]

实例:

  • 输出全部几何( 默认 GLTF + GLB ):
    conway index.ifc --geometry
    
  • 只输出 GLTF :
    conway index.ifc --geometry --gltf
    
  • 仅输出 GLB :
    conway index.ifc --geometry --glb
    
  • 用 Draco 压缩输出 GLTF :
    conway index.ifc --geometry --gltf-draco
    
  • 输出带有 Draco 压缩的 GLB :
    conway index.ifc --geometry --glb-draco
    
  • 在不保存输出文件的情况下运行几何处理 :
    conway index.ifc --geometry --nooutput
    

也可以根据需要合并旗帜. 例如:

conway index.ifc --geometry --gltf-draco --glb-draco

运行 conway --help 用于完整可用的旗帜和选项列表.

建议测试repo中包含的索引.ifc.

在节点中分析 WASM 构建

利用DWARF信息建立Conway-Geom WASM二进制,并生成带有WASM符号的火焰图,可以通过下列步骤进行:

  1. 运行 构建- profile-conway geom 从康威的包裹
  2. 配置您的应用程序 :
node --prof --experimental-specifier-resolution=node ./compiled/src/ifc/ifc_command_line_main.js <model.ifc> -g
  1. 将生成一个孤立 *.log 文件 。 运行 :
node --prof-process --preprocess -j isolate*.log > v8.json # generate a V8 log
  1. 转到 https://mapbox.github.io/flamebearer/ 页面存档备份,存于互联网档案馆 并放下日志文件,查看详细的火焰图.

GIT 合并中的重命名问题

由于conway中有大量文件是代码修改,有时会导致合并中的大量修改,特别是如果生成位置被改变,因此有时需要为合并而上调git配置中重命名次数的限制. 可以这样:

git config merge.renameLimit 99999

您还不妨对其中一些情况使用低重命名阈值不承诺合并策略,以增加文件在合并过程中关联的可能性并跟踪一些更复杂的变化:

git merge -X rename-threshold=25 --no-commit

CI 和测试

CI为 分级 因此,全公司回归+性能成本每笔支付一次 释放候选者,而不是每次推。 完整的结构、成本理由和 rc/re-bless/LFS 运行本 : 设计/新/部分后退费用。 。 。 .

每张公关都封上两张支票 .github/workflows/build.yml数字 :

任务它会做什么
buildyarn install,WASM + TS 编译(WASM 缓存于 conway-geom sHA子模块, yarn test, (中文(简体) ), yarn lint,并检查在取回时的几何-Digest data/ 模特儿对抗忠心耿耿的金子.
run-ifc-regressionneeds: build重用相同的 WASM 缓存 。 将回归批次运行于 烟雾子集 (单位:千美元)regression/smoke_models.txt(a) 公众 test-models 参考(TEST_MODELS_REF默认值 main),被困在了解决的承诺SHA. 任何失败 failed.csv 行; 文摘 变动 信息化(通过可视-diff评论审查,在正弧处获得祝福)。 将每个PR的评论与解决的SHA + 烟雾镜一起张贴 failed.csv 编号 : errors.csv / perf 摘要,并上传候选 npm 沥青球 + perf.csv 作为工作流程的文物.

A 类 concurrency 组取消被取代的 PR 运行( 主运行从不) 已取消, 因此发布总是完整). 合并为 main 重新运行这两个 任务,然后链入 auto-publish (见 释放 页:1.

完整的公共+私人人身保护令每一次公布候选人 - 推一个 rc-* 标签和 rc-regression.yml 重新生成每个基线(打开 每一试验型号的可审查基准PR) perf-three-* 任务运行 完整的基准。 参见上文链接的CI-cost doc中的运行本.

递归批次

本地可以引用同样批次的回归 CI 任务运行 回归/README.md 用于文摘 / 动词 / 批量模式和模型固定件目录。 CI 轨迹 TEST_MODELS_REF 靠近顶端 build.yml (默认) main)),决心每跑一次承诺SHA并记录在PR注释+工作摘要中,因此每跑一次都是可复制的而无需依赖测试-模型剪切标记.

A级:内部速查模式data/(中文(简体) )

这个 build 工作还运行一个快速, 隐形的几何门 每个 data/*.ifc 型号——无 test-models 克隆和没有符号,所以它保护 每一个公关包括叉子。 每个模型的几何文摘(相同) ifc_regression_main.js -d 消化批量的出产) 被分解出它的金子 data/<name>.csv; 不匹配失败 build 带有再无提示的提示。 金子是检查的(由CI被钉住的EMSDK工具链生成),所以门是 现场直播。 。 。 .

重出所想变化. 由于正确的文摘只能从新代码上的 CI 运行中得知,所以门首先失败: 同一文摘上传重制文摘和 tierA-goldens-<run_id> 艺术品,所以你下载它, 承诺新的 data/<name>.csv推着 一次公关,但一次失败的时空无阻的回转而不是一次编辑. 一个全新的 data/*.ifc 没有金子的模型 只会发出警告(它不会失败) 并以同样的方式释放出其候选者.

业绩基准

1级——CI中只使用Conway-perf(活性). 每一次回归都会发出一个 perf.csv 联 合 国 parseTimeMs / geometryTimeMs / totalTimeMs / rssMb / heapUsedMb / heapTotalMb 每个模型。 最上-最慢的10个被张贴在PR评论上;完整的CSV被上传为工作流程文物. 现有回归批次上的这个回扣 所以成本是~0额外跑道分数.

2级——CI中全无头-3平方英寸活. 两个工作, perf-three-public 财务报告和审定财务报表 perf-three-private运行 rc-* 标签和 workflow_dispatch (单位:千美元)needs: run-ifc-regression)——每次释放一次 选手,不是每个合并, 所以每个模型的计时 保持低波动 被隔离的跑者(参见 部分递减成本 为什么频率,而不是跑道大小是成本杠杆。 每一次下载候选人 Conway tarball 返回任务包装, 克隆 无头 三 被钉住 H3_SHA,并迫使整个H3 → 适配器 → 接合链 候选人通过线条 resolutions 覆盖( 无) yarn link),然后运行 scripts/benchmark.cjs 给每个模特计时 公共职位a 每个模型表到合并后的公关;私人工作(test-models-private, (中文(简体) ), 打开 secrets.TEST_MODELS_PRIVATE_TOKEN从来没有在公关事件 所以叉子 不能泄露秘密)只公布汇总数据,所以没有私人模型 名称出现在公共线索中。 两者都计算出一个跨版本的 Delta vs 上一个 push: main 运行( 通过 .github/actions/perf-delta 复合动作)并上传细节CSV作为工作流程的文物.

释放

释放是连续的. 每个绿色合并到 main 自动标签和 发布到 npm 在 latest dis. 这个版本是 <major>.<commit>.<issue>-g<shorthash> 其中:

  • major 来自 package.json 打开 main (仅限第一部分; 在每一次发布之后,每一次发布都重述)
  • commit 实值 git rev-list HEAD --count 合并时的 (全球承诺立场)
  • issue 这是 第一个 #N 在合并中发送消息在此下 转帐 #<issue>: description (#<pr>) 标题公约,即 将合并关闭,而不是 PR 数字 壁球相接的附着物第二。 标题无问题 参考文献 附加的 PR 编号, 以及一个没有 PR 的 消息( 直接推) 改为 main)还原为 0
  • shorthash 是第一个 8 个字符 git rev-parse HEAD,所以一个 已公布的版本名称 。 这是一个 切换没有 git rev-parse --short - 见下文

第985期的321号合并结稿 main 发表 作为 1.985.321-g1a2b3c4d。没有 PR 编号编码,也不需要 : 散列名称 承诺名称 其公关.

为何承诺是次要的. npm 拒绝发布 a 除非 ditt-tag 被明确命名,并且 发行/PR 编号是 没有 单声道- 他们无序地降落,所以老人 <major>.<issue>.<commit> 计划 可能计算出一个低于全时最大值的版本, 且该版本的硬故障 发布(Conway#533). 承诺数是绝对单调的 main, (中文(简体) ), 所以,在小插槽里,每个放出 绝对大于 最后一个 发行号保持其可追踪值在补丁槽, 它不能颠倒命令.

为什么散列被切除,而不是被切除. 每个缩写 自动缩略语 财务报告和审定财务报表 --short=N 是一个 最低 宽度 : 以将结果相对于当前对象数据库保持唯一性。 开始 2.43, (韩语), git rev-parse --short=1 HEAD 返回四个字符,而不是一个; 根据同一规则 --short=8 开始返回九 二起 对象共享一个八字符前缀。 两者都算一个 不同 用于 repo 增长时相同承诺的版本字符串 恰好是散列可以复制的 断线 完全的散列只取决于承诺.

取舍:固定的截断 能够 撞来撞去,一个"出"字 缩写不能。 这一点在这里是可以接受的——承诺在 次要部分已经是每个任务独有的 main因此,散列是一个 方便指代人类 而不是识别钥匙 碰撞会 使两个版本共享后缀; 它不会使它们相等 命令不当.

为什么 -g 而不是赤裸的大麻. SemVer 不允许在其中出现领先的零 全部数字预发标识符,所以短的散列像 0512345 将 使该版本无效并未能发布(占承诺的0.4%)。 这个 g 前缀为 git describe 公约和确定标识符 字母数字。 大麻不能是四分点的部分 (单位:千美元)1.985.321.1a2b3c4d: SemVer 正好是三个数字组件,并且 npm 拒绝其他任何东西.

消费者必须精确地标注. 这个 -g<hash> 后缀使每个 已发布版本 a SemVer 预释,以及 ^编号 :~ 区域不匹配 预释. 共享已完全接通 Conway (单位:千美元)"@bldrs-ai/conway": "1.594.1554";任何其他消费者必须这样做 相同或通过 latest ditt-tag( 秒数) (yarn add @bldrs-ai/conway@latest) (中文(简体) ).

自动推出的工作住在 .github/workflows/build.yml 运行为 needs: [build, run-ifc-regression] 打开 push: branches: [main]。 从合并中解析发行号 计算版本为 package.json + 键 src/version/version.ts 内 CI的工作树(没有承诺返回),重建,出版到npm 明确 --tag latest,然后标记合并承诺.

这个 --tag latest 无条件,必须: npm 永远不适用 latest 隐含 每个版本都是现在的. (用于探测的一步) npm view @bldrs-ai/conway@latest version 财务报告和审定财务报表 只通过 --tag latest 当新版本失去比较时。 那个 与最高版本相比 曾经出版,而不是反对 latest ditt-tag, 探测器失败 打开后退为 0.0.0 任何错误,并采用隐含的 路径。 )

认证 : npm 通过 GitHub OIDC 信任出版. 一个信任的出版商 在 npmjs.com 上配置 @bldrs-ai/conway 绑定于此 repo + build.yml无长寿 NPM_TOKEN 使用密钥; 工作流程 每次通过OIDC获得一个短命的发布符.

正常流量: 进行改变

  1. 用你的零钱打开公关 CI 运行 build 财务报告和审定财务报表 run-ifc-regression。 。 。 .
  2. 一旦两张支票都是绿色的,就合并起来.
  3. 主推时,CI重跑 build + 键 run-ifc-regression,则 auto-publish 标记和船只。 监视动作中的工作流程运行 选项卡;新版本在合并后 ~5-10 分钟内的 npm 上.

弹出主

编辑 version 输入 package.json 在公关上 分节事项(每件事被重算后)。 譬如说, 变动 "version": "1.0.0" 改为 "version": "2.0.0" 开始 2.x.x 线条。 在那之后的第一台自动推放机 2.<commit>.<issue>-g<hash>。 。 。 .

没有手卷起的微小起落——承诺数生活在其中 插槽 - 横跨 1.x 线条看起来像 1.1556.546-g3eae7637, (中文(简体) ), 1.1557.610-g9f81cd0a等,每次合并一次.

卷入无头三和分享

同样的流动对双方都适用——真的 H3 先是共享数字 :

cd $H3_DIR
git fetch upstream                                       # or origin if not on a fork
git checkout -b conway-<VERSION> upstream/main
# Edit package.json dep for @bldrs-ai/conway to "<VERSION>"
yarn install
yarn build && yarn test
yarn serve
# Smoke test the local candidate: load all sample models, load a local model,
# exercise dialogs, etc.
git add . && git commit -m "Upgrade conway from <OLD> to <VERSION>"
git push origin HEAD

然后说:

  1. 发送公关审查.
  2. 在合并时,Netlify自动构建并部署到 prod;监视部署日志.
  3. 烟道测试(与当地检查相同).
  4. 员额 #bot 或者说 #share: 有链接的"新康威"在prod 到更改日志.

保佑一个 stable 版本

共享 prod 在给定的 Conway 版本中验证后 :

# Create the GitHub release from the auto-pushed tag
gh release create <VERSION> --generate-notes

# Promote the npm package to the stable dist-tag
npm dist-tag add @bldrs-ai/conway@<VERSION> stable

路线图

CI/释放管道是连续的,并且 分级数字 : build (固定)和 run-ifc-regression (烟雾子集) 门 每个公关; 完整的公用+私有 无头3个个人工作 rc-* 释放候选人; 每次绿色合并到 main 自动出版(参见 释放) (中文(简体) ). 这个 结构、成本原理和rc/re-bless/LFS 运行本都在 设计/新/部分后退费用。退缩 使(可视-diff注释)和按型号 per-in-CI 发送 伞形瀑布 (# 316) 和性能 CI (# 314) 问题关闭.

打开后续

  • 错误为硬门. errors.csv 重新生成和审查(和, 在弧度,祝福入基线),但公关不是 失败 意外发生 新错误——只针对解析/摘录失败(failed.csv) (中文(简体) ). 一个金发女郎 门可能故障 烟雾扫描错误churn 这不是一个预期的变化.
  • 烟花名人名录. 烟雾子集regression/smoke_models.txt(中文(简体) ) 是一个手工挑选的散开; 当引擎故障表面移动时, 重温 哪些模型最能便宜地捕捉回归.
  • 平地地取地为地. 这个 perf-three-* 任务后三角洲但不要 在回归时会失败弧; 阈值可以将perf变为放出门.

版本与发布记录

@bldrs-ai/conway 共发布 270 个版本,首次发布于 2025/02/06;过去 12 个月发布了 234 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.1643.778-g5233308alatest2026/11/08今天
1.1642.777-g3c8f07092026/11/08今天
1.1641.776-ge2a6eb6e2026/11/08今天
1.1640.774-g440109de2026/11/08今天
1.1639.773-gb4a874412026/11/071 天前
1.1638.771-gfd091d7b2026/11/071 天前

其他发布通道:stable → 0.8.750。

关于 @bldrs-ai/conway 的常见问题

@bldrs-ai/conway 是什么?

bldrers.ai 数据模型

如何安装 @bldrs-ai/conway?

在项目目录运行 npm install @bldrs-ai/conway,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 cli、step、browser、validator,可以用 npx cli 直接运行。

@bldrs-ai/conway 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bldrs-ai/conway 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bldrs-ai/conway 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@bldrs-ai/conway 可以商用吗?

@bldrs-ai/conway 使用 AGPL-3.0 许可。最严格的 Copyleft:除分发外,通过网络向用户提供基于它的服务也需要开源对应源码。闭源 SaaS 使用前务必评估。以上为概括,不构成法律意见,请以许可原文为准。

@bldrs-ai/conway 的下载量有多少?

根据 npm 官方下载统计,@bldrs-ai/conway 在 2026/10/09 – 2026/11/07 这 30 天内被下载 5,585 次,日均约 186 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bldrs-ai/conway 还在维护吗?

最新版本 1.1643.778-g5233308a 发布于 2026/11/08(今天);至今共发布 270 个版本,其中过去 12 个月发布了 234 个;首次发布于 2025/02/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。