# @bldrs-ai/conway 中文文档

规范地址：https://npmcn.com/package/%40bldrs-ai/conway/

版本：1\.1643\.778-g5233308a
npm 元数据更新时间：2026-11-08T10:17:20.906Z
中文译文更新时间：2026-11-08T06:36:36.814Z
软件包许可：AGPL-3\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bldrs-ai/conway
原文对照：https://npmcn.com/package/%40bldrs-ai/conway/?lang=original
项目主页：https://github.com/bldrs-ai/conway#readme
源码仓库：https://github.com/bldrs-ai/conway

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：61.6 MB，12151 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=16\.0\.0
- 运行依赖：4 个
- 首次发布：2025-02-06T14:22:23.809Z
- 最新版本发布：2026-11-08T10:17:20.578Z
- 近 30 天下载量：5585（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：270（近 12 个月 234 个）

## 中文简介

bldrers.ai 数据模型

## 安装

```sh
npm install @bldrs-ai/conway
```

也可以使用：`pnpm add @bldrs-ai/conway`、`yarn add @bldrs-ai/conway`、`bun add @bldrs-ai/conway`

## README

# 康维

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

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

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

## 开始

### 代码设置

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

### 窗口设置

1.  [安装 MinGW- 64](https://github.com/msys2/msys2-installer/releases/download/2022-06-03/msys2-x86_64-20220603.exe) 添加 `g++.exe` 位置到您的 PATH 变量.

### MacOS 设置

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

### EMSDK 设置

1.  切开 [EMSDK 服务器](https://github.com/emscripten-core/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](https://npmcn.com/package/%40bldrs-ai/conway/examples/Browser.md) 财务报告和审定财务报表 [验证器. md](https://npmcn.com/package/%40bldrs-ai/conway/examples/Validator.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 输出各种几何格式 :

```bash
conway [ifc file path] [options]
```

**实例:**

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

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

```bash
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
```

3.  将生成一个孤立 \*.log 文件 。 运行 :

```
node --prof-process --preprocess -j isolate*.log > v8.json # generate a V8 log
```

4.  转到 [https://mapbox.github.io/flamebearer/ 页面存档备份,存于互联网档案馆](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 运行本 : [设计/新/部分后退费用](https://npmcn.com/package/%40bldrs-ai/conway/design/new/ci-regression-cost.md)。 。 。 .

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

| 任务 | 它会做什么 |
| --- | --- |
| `build` | `yarn install`,WASM + TS 编译(WASM 缓存于 `conway-geom` sHA子模块, `yarn test`, (中文(简体) ), `yarn lint`,并检查在取回时的几何-Digest `data/` 模特儿对抗忠心耿耿的金子. |
| `run-ifc-regression` | `needs: 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` (见 [释放](https://npmcn.com/package/%40bldrs-ai/conway/#readme-releases) 页:1.

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

## 递归批次

本地可以引用同样批次的回归 CI 任务运行 [回归/README.md](https://npmcn.com/package/%40bldrs-ai/conway/regression/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`)——每次释放一次 选手,不是每个合并, 所以每个模型的计时 保持低波动 被隔离的跑者(参见 [部分递减成本](https://npmcn.com/package/%40bldrs-ai/conway/design/new/ci-regression-cost.md) 为什么频率,而不是跑道大小是成本杠杆。 每一次下载候选人 Conway tarball 返回任务包装, 克隆 [无头 三](https://github.com/bldrs-ai/headless-three) 被钉住 `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` 自动出版(参见 [释放](https://npmcn.com/package/%40bldrs-ai/conway/#readme-releases)) (中文(简体) ). 这个 结构、成本原理和rc/re-bless/LFS 运行本都在 [设计/新/部分后退费用](https://npmcn.com/package/%40bldrs-ai/conway/design/new/ci-regression-cost.md)。退缩 使(可视-diff注释)和按型号 per-in-CI 发送 伞形瀑布 (# 316) 和性能 CI (# 314) 问题关闭.

### 打开后续

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

## 常见问题

### @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 和提交记录判断。

