vork by Voyager
에이전트가 장면을 코드로 작성해 GPU에 렌더링하고 결과를 보고 코드를 수정합니다 소스 공개 연구 미리보기 기간 무료
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Drawing-in, smaller-layout-out: function-preserving building & plant layout optimization (Claude Code plugin + MCP server, deterministic solver)
README 전체를 불러오는 중입니다.
README 전문 보기 ↗도면을 넣으면, 각 공간의 역할을 지키면서 더 작게. 건물·플랜트의 배치 계획(General Arrangement)을 결정론적 솔버로 다시 짜고, 원래 도면과 같은 기준으로 비교한다. Claude Code 플러그인 + MCP 서버(Claude · ChatGPT · Codex) + 브라우저 스튜디오. Python 표준 라이브러리만 쓴다.
English summary. GA Layout Optimizer takes an existing drawing (DXF, SVG, vector PDF, PNG, IFC, or an equipment table), recognises the as-is layout, and searches for a smaller layout in which every space still works — rooms stay reachable, corridors stay connected, egress distances hold, pipe racks and cranes still serve their equipment. Requirements are formalised as a JSON Design Intent IR with cited sources, frozen after human approval, and solved by a deterministic Sequence-Pair / simulated-annealing engine; the LLM never generates a single coordinate. The as-is layout is scored with the same objective, so the tool reports "keep as-is" or "not adoptable" instead of inventing an improvement. Example domains: petrochemical plant, offshore FPSO topside, hospital surgical suite, a nuclear auxiliary building, and two real public BIM models (a medical-dental clinic and a research institute). Concept-study use only — NOT FOR CONSTRUCTION.
왼쪽은 원래 배치, 오른쪽은 같은 모듈들이 위험구역 이격·크레인 작업반경을 지키며 새 자리로 옮겨 가는 과정 (FPSO 상부, 가상 도면, 6,528 → 2,600 m²).
3D 로 직접 돌려 보기 → 사례 6건과 벤치마크를 브라우저에서 돌려 보고, "변형 재생" 으로 배치가 바뀌는 과정을 볼 수 있다. 설치 필요 없음.
NOT FOR CONSTRUCTION — 개념검토용. 산출물은 시공·인허가 제출·상세설계에 그대로 쓸 수 없고, 예제의 치수·이격·제약 파라미터는 전부 가정값이다. 설계 책임은 유자격자에게 있다. 그리고 실제 설계값을 LLM 대화에 입력하지 말 것 — 로컬인 것은 엔진뿐이다 (한계 18항).
Python 3.8+ 만 있으면 된다. 엔진·파서·MCP 서버 모두 표준 라이브러리만 쓰고 외부 네트워크가 필요 없다.
Claude Code 플러그인 (MCP 서버 자동 등록)
git clone https://github.com/hajun011103/ga-layout-optimizer.git smr-ga-plugin
# Claude Code 안에서
/plugin marketplace add ./smr-ga-plugin
/plugin install smr-ga@smr-ga-marketplace
/smr-ga:ga-layout # 도면 경로 또는 자연어 경로로 전체 진행
Claude Desktop · Codex CLI — MCP 서버 server/mcp_server.py 를 stdio 로 등록한다.
ChatGPT 웹 · Claude.ai 웹 — --http --token 으로 띄우고 터널(예: cloudflared)로 연 뒤 원격 MCP 커넥터로 등록한다.
LLM 없이 — python3 server/mcp_server.py --http → http://127.0.0.1:8765/studio 브라우저 스튜디오.
설정 파일 예시와 주의사항(원격 연결 시 도면·결과가 LLM 서비스로 전송됨): guide/CONNECT.md.
python3 tests/run_all.py # 테스트
python3 engine/validate_spec.py examples/spec_smr_aux.json --freeze # Gate 1 검증 + 동결
python3 engine/run.py examples/spec_smr_aux.json --iters 60000 --restarts 6
flowchart LR
A["도면 파일<br/>DXF · SVG · PDF · PNG · IFC · CSV"] --> B["결정론적 파서<br/>현황 배치 (as-is)"]
B --> C["요건 → Design Intent IR<br/>근거 출처 명시 · 모르면 질문"]
C --> D{"Gate 1<br/>규칙 검증 + 사람 승인<br/>→ IR 해시 동결"}
D --> E["결정론적 솔버<br/>Sequence-Pair + SA / NSGA-II<br/>현황에서 출발, seed 고정"]
E --> F["같은 목적함수로<br/>현황 vs 최적화 채점"]
F --> G["판정 · SVG/DXF 도면 · 보고서<br/>채택 후보 / 현황 유지 / 채택 불가"]
LLM 의 역할은 두 곳뿐이다 — 요구사항을 IR 로 정형화하며 되묻는 것(Gate 1 앞), 그리고 결과를 읽기 전용으로 해설하는 것(맨 뒤). Gate 1 이후는 LLM 호출 0회로 재현된다. 자세한 구조와 제약 라이브러리: guide/ARCHITECTURE.md.
실제 도면에서는 "가장 작은 배치" 가 무엇인지 아무도 모른다. 그래서 같은 엔진을 논문이 최적해를 증명해 둔 문제에 돌렸다. "+x%" 는 증명된 최적보다 x% 비싼 배치를 찾았다는 뜻이다 — 낮을수록 좋고, 0% 가 정답이다. 증명된 최적보다 싼 답은 나올 수 없다.
| 벤치마크 | 문제 | 결과 (정답 대비) |
|---|---|---|
| QAPLIB (12건) | 시설 배치 표준 문제, n = 12~36 | n ≤ 19 0.00% · n = 20~36 +0.16 ~ +5.37% |
| Ejeh et al. 2019 — 다층 공정 플랜트 | 요소 비료 8기기 (증명된 최적) | +1.48% (seed 5개 중 최선, 중앙 +6.19%) |
| CDU 17기기 (증명된 최적) | +15.04% (중앙 +19.54%) | |
| LNG 22기기 (논문도 2.2% 갭) | +14.36% (중앙 +21.60%) | |
| COGP 25기기 (논문도 11.8% 갭) | +39.64% (중앙 +40.74%) — 기기가 많아질수록 갭이 커진다 | |
| Wrigley et al. 2019 — 원전 계통 배치 | Shearon Harris 20개 모듈, 기존 배치 14,914 | 한 면 4층 6,793 (−54.5%), 논문 8,036 (−46.1%) — 같은 문제라고 단정할 수 없어 "논문보다 낫다" 고 말하지 않는다 |
전체 표, 층 수 스윕, 조건 해석: guide/BENCHMARKS.md.
tools/make_viewer_data.py, tools/make_bench_data.py 로 다시 만들 수 있다.가상 도면 4건과 실제 공개 BIM 2건에 같은 방식으로 돌렸다. 숫자와 3D 는 웹페이지에, 표·요건·가정은 guide/RESULTS.md 에 있다.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗