内容
<div align="center">
<img src="docs/logo.svg" alt="PipelineKit" width="280">
<p><strong>AI 驱动的 Blender 生产流程。</strong></p>
<p>输入简短的描述,获取真实的场景。渲染产品可视化、灯光设置和转盘,借助您选择的 LLM 驱动的 Blender 操作。</p>
<p>
<a href="https://github.com/pradhankukiran/pipeline-kit/releases/latest"><img src="https://img.shields.io/github/v/release/pradhankukiran/pipeline-kit?include_prereleases&label=release&color=0a0a0a&style=flat-square" alt="最新版本"></a>
<a href="https://github.com/pradhankukiran/pipeline-kit/actions/workflows/ci.yml"><img src="https://github.com/pradhankukiran/pipeline-kit/actions/workflows/ci.yml/badge.svg" alt="持续集成"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="MIT 许可证"></a>
</p>
<p>
<img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white&style=flat-square" alt="TypeScript">
<img src="https://img.shields.io/badge/React-20232A?logo=react&logoColor=61DAFB&style=flat-square" alt="React">
<img src="https://img.shields.io/badge/Tauri-FFC131?logo=tauri&logoColor=black&style=flat-square" alt="Tauri">
<img src="https://img.shields.io/badge/Rust-000000?logo=rust&logoColor=white&style=flat-square" alt="Rust">
<img src="https://img.shields.io/badge/Vite-646CFF?logo=vite&logoColor=white&style=flat-square" alt="Vite">
<img src="https://img.shields.io/badge/Tailwind-06B6D4?logo=tailwindcss&logoColor=white&style=flat-square" alt="Tailwind CSS">
<img src="https://img.shields.io/badge/shadcn/ui-000000?logo=shadcnui&logoColor=white&style=flat-square" alt="shadcn/ui">
<img src="https://img.shields.io/badge/Node-339933?logo=nodedotjs&logoColor=white&style=flat-square" alt="Node.js">
<img src="https://img.shields.io/badge/pnpm-F69220?logo=pnpm&logoColor=white&style=flat-square" alt="pnpm">
<img src="https://img.shields.io/badge/Blender-E87D0D?logo=blender&logoColor=white&style=flat-square" alt="Blender">
</p>
</div>
---
## 概述
PipelineKit 是一个桌面应用程序,**通过 AI 驱动 Blender**。它使用大型语言模型(LLM)来规划、调度和审查生产工作 - 不是取代您的创意工具,而是通过输入操作和真正的调度器来驱动它们。
一次管道运行,获取提示,通过 Groq 规划 DAG,执行每个通道(Groq 用于快速结构化工作,OpenRouter 用于创意/视觉审查,Codex SDK 用于工具密集型生产,Blender MCP 用于实际场景/渲染操作),并显示每个步骤的实时进度、审批和渲染预览。
## 功能
- **输入 Blender 操作** - 8 个一流的操作(`create_scene`、`studio_set`、`apply_material`、`lighting_rig`、`camera_rig`、`render_shot`、`inspect_scene`、`save_checkpoint`)带有 Zod 验证参数。
- **真正的 Blender Python 代码生成** - 配方 ID(white-sweep、softbox-three-point、turntable-orbit、matte-clay、preview-1080p)编译为有效的 `bpy` 脚本,Blender 通过 MCP 执行。
- **DAG 管道执行器** - 通道感知调度器,支持 `dependsOn`,实时 SSE 事件流和每步审批门控。
- **多通道编排** - Groq(规划),OpenRouter(创意/审查),Codex SDK(生产),Blender(执行)。API 密钥通过设置模态配置,在本地持久化。
- **项目和审批实体** - 具有持久性的全 CRUD,URL 驱动的路由(`/projects/:id/{overview,blender,runs,review,assets}`),实时活动提要。
- **资产库** - 搜索 Poly Haven CC0 资产 + 程序化配方;一键导入 HDRIs 和材质到正在运行的 Blender 场景中。
- **渲染捕获** - 每个 `render_shot` 保存到 `~/.pipelinekit/renders/<runId>/<opId>.png`,通过 `/renders/*` 提供服务,并在应用中显示为缩略图。
- **实时场景状态** - 每 5 秒轮询 Blender,显示场景名称、引擎、帧范围、对象计数、活动相机。
- **单命令发布** - 推送 `v*` 标签,GitHub Actions 并行构建 Linux/Windows/macOS 本地安装程序,并将它们附加到草稿发布。
## 架构
```
┌─────────────────────────────────────────────────────────────────────────┐
│ Tauri 2 桌面版(Rust shell + React 18 + Vite + shadcn/ui) │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ 顶部栏 · 侧边栏 · 路由视图(欢迎 / 项目) │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ ▲ │
│ │ HTTP + SSE (127.0.0.1:4317) │
│ ▼ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ 侧车(Node,esbuild 捆绑,由 Rust 在应用程序启动时生成) │ │
│ │ ─ HTTP 服务器 (~25 路由:项目,审批,运行,Blender) │ │
│ │ ─ 管道编排器 (DAG,通道,事件,审批门控) │ │
│ │ ─ 提供者 (Groq,OpenRouter,Codex SDK) │ │
│ │ ─ 资产解析器 (程序化 · Poly Haven · 本地文件系统) │ │
│ │ ─ JSON 持久性 (~/.pipelinekit/state.json,原子写入) │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ ▲ │
│ │ MCP 标准输入输出 (uvx blender-mcp) │
│ ▼ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Blender + MCP 插件 (执行生成的 bpy Python) │ │
│ └────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
```
## 工作空间
```
apps/
desktop/ Tauri + React 应用程序
src-tauri/ Rust shell + Tauri 配置
src/ React UI(视图,面板,布局,shadcn 基元)
packages/
core/ 域类型,Zod 模式,管道合约
recipes/ 程序化配方注册表
assets/ 资产解析器(程序化 · Poly Haven · 本地文件系统)
sidecar/ HTTP 服务器,编排器,Blender 桥,提供者
tools/
sync-version.mjs 保持根目录,Cargo.toml,tauri.conf 处于同步状态
.github/workflows/
ci.yml 每次推送都进行类型检查,库构建,cargo 检查
release.yml 在标签推送时构建本地安装程序(Linux + Windows + macOS)
```
## 快速入门
### 从源码运行
```bash
git clone https://github.com/pradhankukiran/pipeline-kit.git
cd pipeline-kit
pnpm install
pnpm dev # 在 :1420 启动 Vite + Tauri shell
# 在另一个终端:
pnpm --filter @pipelinekit/sidecar dev # 在 :4317 启动 sidecar
```
### 配置 API 密钥
打开顶部栏的齿轮图标 → 粘贴您的 Groq 和(可选)OpenRouter 密钥 → 保存。设置将持久化到 `~/.pipelinekit/state.json`。
### 连接 Blender
1. 在 Blender 中安装 [Blender MCP 插件](https://github.com/ahujasid/blender-mcp)。
2. 从编辑 → 首选项 → 插件中启用它。
3. 在 3D 视口中打开 N 面板,点击“连接到 Claude / MCP”。
4. 在 PipelineKit 的 Blender 页面,点击 **连接 Blender**,然后 **列出工具**。
## 安装
### 用户
从 [版本](https://github.com/pradhankukiran/pipeline-kit/releases) 下载构建:
| 平台 | 文件 |
|---|---|
| Linux(Debian/Ubuntu) | `PipelineKit_x.y.z_amd64.deb` |
| Linux(RPM) | `PipelineKit-x.y.z-1.x86_64.rpm` |
| Linux(便携式) | `PipelineKit_x.y.z_amd64.AppImage` |
| Windows | `PipelineKit_x.y.z_x64-setup.exe` 或 `_x64_en-US.msi` |
| macOS(通用) | `PipelineKit_x.y.z_universal.dmg` |
> **系统路径上需要 Node 20+**。应用程序通过 `node` 生成捆绑的 sidecar。 在启动前,请从 [nodejs.org](https://nodejs.org/) 安装 Node。
sidecar 日志位于 `~/.pipelinekit/sidecar.log`。
### 开发者
先决条件:**Node 20+**,**pnpm 10+**,**Rust stable**(用于 Tauri 构建)。
```bash
pnpm install
```
#### 有用的脚本
| 命令 | 执行操作 |
|---|---|
| `pnpm dev` | Tauri 开发(Vite + 原生 shell,热重载) |
| `pnpm --filter @pipelinekit/sidecar dev` | 在 `:4317` 上以 TS 监视模式运行 sidecar |
| `pnpm -r typecheck` | 全工作区 TypeScript 检查 |
| `pnpm -r build` | 构建所有包(库到 `dist/`,sidecar 到 `dist-bundle/`) |
| `pnpm --filter @pipelinekit/sidecar bundle` | 将 sidecar 编译为单个 CJS 文件 |
| `pnpm sync:version` | 将根版本传播到 Cargo.toml,tauri.conf.json |
当 sidecar 在 `:4317` 上运行时(例如,从 `pnpm sidecar dev`),Tauri 应用程序检测到打开的端口并 **跳过生成其捆绑的副本** - 您的开发 sidecar 保持控制。
## Tauri 构建
在本地构建原生安装程序:
```bash
cd apps/desktop
pnpm tauri build
```
生成:
- `apps/desktop/src-tauri/target/release/bundle/deb/*.deb`
- `apps/desktop/src-tauri/target/release/bundle/rpm/*.rpm`
- `apps/desktop/src-tauri/target/release/bundle/appimage/*.AppImage`
`beforeBuildCommand` 链运行 `prebuild:desktop`,它按顺序构建库 → 通过 esbuild 捆绑 sidecar → 构建 Vite 前端。
## 发布
```bash
# 1. 提升根 package.json 版本
# 2. 同步到 Cargo.toml + tauri.conf.json
pnpm sync:version
# 3. 提交 + 标签 + 推送
git add -A && git commit -m "release: v0.x.y"
git tag v0.x.y
git push origin main --follow-tags
```
`release.yml` 工作流在标签推送时触发,并并行构建所有三个平台(~7-15 分钟)。安装程序将附加到 **草稿 GitHub 发布**,名称与标签相同 - 审查并点击 **发布** 即可。
要进行 dry-run 而不发布:GitHub Actions → 发布工作流 → **运行工作流** → 留空标签输入。
## 持续集成
每次推送和拉取请求到 `main` 时运行:
- `pnpm -r typecheck` — 全工作区 TS 检查
- 库构建,用于 `core`、`recipes`、`assets`、`sidecar`
- Sidecar esbuild 捆绑
- 用于桌面版的 Vite 生产构建
- `cargo check` 用于 Tauri Rust shell
状态: 
## 路线图
- [ ] 将 Codex SDK 通道编入真正的场景驱动流程
- [ ] 渲染缩略图实时显示(目前在完成后显示)
- [ ] 拖放资产导入
- [ ] 项目导入/导出
- [ ] Windows + macOS 安装程序的代码签名
- [ ] 通过 Tauri 更新器进行自动更新通道
- [ ] 可选的 Node SEA 捆绑,以便用户无需在系统上安装 Node
## 许可证
[MIT](LICENSE) — 版权所有 © 2026 Kiran Kumar Pradhan