内容
="center">
# 开放工作台
**用于电子设计的开放工作台。**
设计电路图,使用真实的 SPICE 进行电路仿真它们变得生动 — LED 灯发光,电机旋转,按钮点击 — 所有这些都可以在一个浏览器选项卡中完成。
: Apache-2.0](https://img.shields.io/badgeApache--2.0-blue)
[](#development)
[](https://openbench-eta.vercel.app)
[](#how-builds-itselfPRs welcome](https://img.shields.io/badge/PRs-welcome-ff69b4.svg)](CONTRIBUTING.md)
**[▶台](https://openbench-eta.vercel.app)** · **[尝试交互式游乐场](https://eta.vercel.appground)** · **[交换格式](.context/interchange-format.md)**架构](.context/architecture.md)**
<img src="docs/assets/hero-live-mode.png" alt="OpenBench 直播模式:一个交互式电路,带有发光的 LED、播放器滚动条和ICE 仿真" width="920" />
*直播模式:按下按钮,拖动电位器,翻转开关 — 每次交互都会重新运行真正的 ngspice(WebAssembly),电路会做出反应。*
</div>
---
## 为什么选择开放工作台
电子工具功能强大但零散:原理图捕获在一个桌面应用程序中,仿真在另一个应用程序中,固件在第三个应用程序中 — 中间有专有格式。开放工作台在 **一种版本化的交换格式** 后面协调 **开放引擎**,在:
| | 引擎 | 这里的作用 |
| --- | --- | --- |
| 🎨 | **原理图编辑器**(定制) | Figma-feel 画布:放置部件,绘制网络,撤销/重做,自动保存 |
| ⚡ | **[ngspice](https://ngspice.sourceforge.io/)**(WebAssembly) | 真实的 SPICE 瞬态分析,本地在您的选项卡中 — 无服务器,无队列 |
| 🔀 | **[KiCad](https://www.kicad.org/)** 格式 | 导入/导出 `.kicad_sch` — 您的可移植 |
| 🔧PlatformIO](https://platformio.org/)** | ESP32件构建,闪存(QEMU) 🤖 | **[MCPmodelcontextprotocol.io 每个引擎都包装为 — AI 代理使用相同的合约 |
无需帐户。无需安装。所有内容均为 Apache-2.0(包含专利## ✨ 亮点
### 直播模式 — 摸的电路
<imgdocs/assets/live-mode.png="带有播放条的直播模式" width="820" />
进入 **直播**,原理图变成运行的设备:LED度跟随肖克模的电流,电机的按照电压比例旋转,器振动,灯泡发光。按钮是瞬时的,开关是锁定的,电位光敏电阻获得拖块 — 每次交互 IR 文档并在 ~ 实时运行仿真。像滚动时间线。
真正的编辑器,而不是 CAD
<img src="docs/assets/editor.png" alt="原理器" width="820" />
平移/缩放/吸附画布,框选,选择, pin-to-pin 连线,创建 IR 网络,键盘优先(R,⌘Z/⇧⌘Z),器,并带有浏览器缓存的防抖自动保存。基于 MetaAstryx](https:///facebook/astryx)构建。
### 来自ICE 的真实波形
docs/assets/wave" alt="波形" width="820" 低通演示通过 ng-WASM 驱动一个 P,并绘制真正的指数充电电 — 带有多迹,工程符号轴停读数和一个中完整的 SPICE 套件。
### 17 个精选添加中
电阻,电容,LED,RGB极管,NPN 三极管,电位器,开关,DC 电机,蜂鸣器,灯,,DC 和 PULSE 源,地线,ESP32 DevKit — 每个部件都是带有真实 SPICE 模型的验证 IR 文档(交互式部件使用安全的派生参数表达式)。
##
**使用它:** 打开 **[openbench-eta.vercel.app](https://openbench-eta.vercel.app)**,选择(RC 低通, 闪烁,或交互乐场),然后点击 **直播**。
**在本地**
```bash
git clone https://github.com/shuv/openbench.git
cd openbench
npm install
npm run dev # http://localhost:3000
npm test # 525 测试
```
## 工作原理
引擎之间从不相互通信 — 每次交接都是 [OpenBench IR](.context/interchange-format.md) 中的 JSON 文档(版本控制,来源戳记,zod 验证):
```mermaid
flowchart LR
["🎨 原理图<br/>(编辑器 /导入)"] --> IR| B["-compiler"]
B -->|netlist IR| C["⚡ mcp-sim-ngspice<br/>(WASM中)"]
CsimulationRun IR<br/>waveform-v1| D["形 +<br/>🔴 直播模式物理 A -->|原理图 E["🔀 micad<br/>.k_sch 导出"]
🔧 mcp-platformio"] -->|firmwareTarget IR| G[" 构建 →<br闪存(QEMU| 包 | | --- | --- |
packages/ir-schema`](packages/ir-schema) | :模式,验证,版本控制 |
| [`packages/registry`](packages/registry) | 精选组件库(验证的 IR 文档) |
| [`packages/netlist-compiler`](packages/netlist-compiler) | 原理图 → SPICE-ready 网络列表(交互式部件的安全表达式求值器) |
| [`packages/mcp-kicad`](packages/mcp-kicad) | KiCad 适配器 + MCP 服务器(通过元数据实现无损往返转换) |
| [`packages/mcp-sim-ngspice`](packages/mcp-sim-ngspice) | ngspice 适配器 + MCP 服务器(WASM 和模拟后端) |
| [`packages/mcp-firmware-platformio`](packages/mcp-firmware-platformio) | PlatformIO 适配器 + MCP 服务器(ESP32,QEMU 机器配置) |
| [`apps/web`](apps/web) | 浏览器应用(Next.js +) |
每个引擎的状态和文档化的损失字段`.context/engine-status.md`](.context/engine-status.md)。
## 这个仓库如何自行构建
开放工作台由 **AI 代理** 自主构建,通过 GitHub 问题进行协调 — 计划器将功能分解为测试型问题,TDD 实现者通过红→绿(预工具钩子机械地阻止源代码编辑而无需先前的失败测试)进行工作,对抗性审查者控制每次合并,每个合并到 `main` 分支都会自动部署到生产环境,并带有自动健康探测和回滚路径。人类欢迎在完全相同的流水线中 — 参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
仓库的“大脑”位于 [`.context/`](.context/):当前架构,追加决策日志(ADRs),交换格式,引擎状态和部署日志。在贡献之前请阅读它 — CI 强制保持其新鲜。
## 路线图
- ✅ **阶段 0** — 自主代理流水线(问题 → TDD → 审查门 → 部署)
- ✅ **阶段 1** — 垂直切片:编辑器 → IR → ngspice-WASM → 波形;KiCad 往返;PlatformIO 适配器;仪表板
- ✅ **阶段 1.5** — 直播模式,17 部分库,撤销/重做,KiCad UI,MCP 服务器,交互式游乐场
- 🔜 闭环固件:ESP32 固件驱动 GPIO 事件进入实时电路(QEMU)
- 🔜 工作点和交流分析;电流探头;示波器样式触发器
- 🔜 社区组件注册表(管理员门控提交)
- 🗓 **阶段 2** — 实时多人协作(CRDT),PCB 布局,更多 MCU 系列
## 开发
每个地方都使用 TypeScript,[vitest](https://vitest.dev),npm 工作区。TDD 合同,标签分类法和代理角色在 [CLAUDE.md](CLAUDE.md) 和 [`.context/agent-roles.md`](.context/agent-roles.md) 中有文档。
```bash
npm test # 完整测试套件
npm run test -w packages/ir-schema # 单个包
npm run validate:ir # IR 规范同步
```
## 许可证
[Apache-2.0](LICENSE) — 专利授予对硬件很重要。