CAD Agent:AI 驱动的 3D 建模与渲染 - Openclaw Skills

作者:互联网

2026-03-20

AI教程

什么是 CAD Agent?

CAD Agent 充当执行机械设计和 3D 建模的 AI 智能体的“视觉皮层”。通过为 build123d 库和 VTK 渲染引擎提供容器化环境,它允许智能体将代码转换为物理几何体并立即查看结果。这座桥梁对于 Openclaw Skills 生态系统中的高保真工程工作流至关重要,确保智能体不仅仅是盲目编写代码,而是能够实际验证其设计的物理特性。

系统基于“指令-观察”循环运行。智能体通过 API 发送建模指令,服务器返回高分辨率的 PNG 渲染图。这允许进行快速迭代和错误修正,而无需智能体在本地处理复杂的网格处理或 STL 操作。

下载入口:https://github.com/openclaw/skills/tree/main/skills/clawd-maf/cad-agent

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install cad-agent

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 cad-agent。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

CAD Agent 应用场景

  • 通过迭代的自然语言提示创建可 3D 打印的零件。
  • 开发由复杂逻辑驱动尺寸的参数化机械组件。
  • 为工程组件生成技术文档和多视图图纸。
  • 在自动化 AI 开发环境中快速原型化 3D 几何体。
CAD Agent 工作原理
  1. AI 智能体向容器化服务器发送基于 Python 的 build123d 建模命令。
  2. 服务器在受保护的会话中执行代码以生成 3D 几何体。
  3. 智能体请求特定的渲染图(如等轴测、顶视图或多视图)以视觉检查模型。
  4. 智能体分析返回的 PNG 图像并发送修改命令以改进零件。
  5. 设计验证后,智能体触发导出以生成行业标准的 STL 或 STEP 文件。

CAD Agent 配置指南

1. 克隆仓库

git clone https://github.com/clawd-maf/cad-agent.git
cd cad-agent

2. 构建 Docker 镜像

docker build -t cad-agent:latest .

3. 运行服务器

docker-compose up -d

4. 验证连接

curl http://localhost:8123/health

CAD Agent 数据架构与分类体系

该技能管理容器内的模型状态,并通过结构化的 API 响应提供数据。以下是数据的组织方式:

数据类型 描述 格式
模型会话 当前几何状态的内存存储。 build123d 对象
视觉反馈 阴影 3D 或 2D 技术渲染图。 PNG
几何数据 物理尺寸和包围盒测量。 JSON
生产文件 用于制造的可导出资产。 STL, STEP, 3MF

CAD Agent

Give your AI agent eyes for CAD work.

Description

CAD Agent is a rendering server that lets AI agents see what they're building. Send modeling commands → receive rendered images → iterate visually.

Use when: designing 3D-printable parts, parametric CAD, mechanical design, build123d modeling

Architecture

Critical: All CAD logic runs inside the container. You (the agent) only:

  1. Send commands via HTTP
  2. View the returned images
  3. Decide what to do next
YOU (agent)                     CAD AGENT CONTAINER
─────────────                   ───────────────────
Send build123d code      →      Executes modeling
                         ←      Returns JSON status
Request render           →      VTK renders the model
                         ←      Returns PNG image
*Look at the image*
Decide: iterate or done

Never do STL manipulation, mesh processing, or rendering outside the container. The container handles everything — you just command and observe.

Setup

1. Clone the Repository

git clone https://github.com/clawd-maf/cad-agent.git
cd cad-agent

2. Build the Docker Image

docker build -t cad-agent:latest .

Or using docker-compose:

docker-compose build

3. Run the Server

# Using docker-compose (recommended)
docker-compose up -d

# Or using docker directly
docker run -d --name cad-agent -p 8123:8123 cad-agent:latest serve

4. Verify Installation

curl http://localhost:8123/health
# Should return: {"status": "healthy", ...}

Docker-in-Docker caveat: In nested container environments (e.g., Clawdbot sandbox), host networking may not work—curl localhost:8123 will fail even though the server binds to 0.0.0.0:8123. Use docker exec cad-agent python3 -c "..." commands instead. On a normal Docker host, localhost access works fine.

Workflow

1. Create Model

curl -X POST http://localhost:8123/model/create r
  -H "Content-Type: application/json" r
  -d '{
    "name": "my_part",
    "code": "from build123d import *
result = Box(60, 40, 30)"
  }'

2. Render & View

# Get multi-view (front/right/top/iso)
curl -X POST http://localhost:8123/render/multiview r
  -d '{"model_name": "my_part"}' -o views.png

# Or 3D isometric
curl -X POST http://localhost:8123/render/3d r
  -d '{"model_name": "my_part", "view": "isometric"}' -o iso.png

Look at the image. Does it look right? If not, modify and re-render.

3. Iterate

curl -X POST http://localhost:8123/model/modify r
  -d '{
    "name": "my_part", 
    "code": "result = result - Cylinder(5, 50).locate(Pos(20, 10, 0))"
  }'

# Re-render to check
curl -X POST http://localhost:8123/render/3d r
  -d '{"model_name": "my_part"}' -o updated.png

4. Export

curl -X POST http://localhost:8123/export r
  -d '{"model_name": "my_part", "format": "stl"}' -o part.stl

Endpoints

Endpoint What it does
POST /model/create Run build123d code, create model
POST /model/modify Modify existing model
GET /model/list List models in session
GET /model/{name}/measure Get dimensions
POST /render/3d 3D shaded render (VTK)
POST /render/2d 2D technical drawing
POST /render/multiview 4-view composite
POST /export Export STL/STEP/3MF
POST /analyze/printability Check if printable

build123d Cheatsheet

from build123d import *

# Primitives
Box(width, depth, height)
Cylinder(radius, height)
Sphere(radius)

# Boolean
a + b   # union
a - b   # subtract
a & b   # intersect

# Position
part.locate(Pos(x, y, z))
part.rotate(Axis.Z, 45)

# Edges
fillet(part.edges(), radius)
chamfer(part.edges(), length)

Important

  • Don't bypass the container. No matplotlib, no external STL libraries, no mesh hacking.
  • Renders are your eyes. Always request a render after changes.
  • Iterate visually. The whole point is you can see what you're building.

Design File Safety

The project has safeguards against accidentally committing CAD outputs:

  • .gitignore blocks *.stl, *.step, *.3mf, etc.
  • Pre-commit hook rejects design files
  • User's designs stay local, never versioned
  • Repository
  • build123d docs
  • VTK