작업 / P-03 · 2026년 7 – 9월 · 도착, 2026

교통
시뮬레이션을
편집하고
실행하는,
가드레일이
있는
AI
에이전트

PTV VISSIM을 위한 웹 대시보드. 에이전트가 자연어로 시뮬레이션을 편집하고 실행하되, 모든 편집은 검증 계층과 한 번의 사람 승인을 거쳐야 모델에 닿습니다.

역할
도착(Dochak) 프로덕트 개발자, 원격 · 프런트엔드, 에이전트 도구, 검증 계층
수상·인정
8주 만에 구축 · 2026년 7월 16일 – 9월 9일, 482 커밋
기술
Next.js · React · FastAPI · PTV VISSIM (COM) · Claude · d3 · Leaflet
성과
세 단계에 걸친 제약 조건 117개 · 승인 1회 = 실행 1회 · 원본 파일은 건드리지 않음

시연, 장면별로

시연, 2026년 8월
단계 01 / 7

지도에서 네트워크 생성

영역 이름을 지정하면 Prism이 OpenStreetMap에서 도로망을 가져와 투영하고, 연결성을 검사하고, 수요와 신호 초안을 만들어 VISSIM 파일로 내보냅니다. 검증 게이트는 저장 전에 돌아갑니다. 8월 11일 저희 네트워크를 거부한 바로 그 파이프라인입니다.

Genesis · Overpass → osm → 투영 → 연결성 → 초안 → 수요 → 신호 → 조합 → 출력 → 게이트(V1 – V9)

단계 02 / 7

편집은 실제로 이렇게 일어난다

요청이 에이전트에 들어갑니다. 에이전트는 엄격한 디스패치의 타입 지정 도구 87개 중에서 고릅니다. 모든 쓰기는 각각 이유 코드가 있는 이름 붙은 제약 117개와 대조됩니다. 승인 카드 없이는 아무것도 쓰이지 않고, 승인 한 번은 정확히 한 번 실행됩니다.

도구 레지스트리(87) · 제약 카탈로그(117) · 사람의 승인 · 일회용, 호출에 묶임

단계 03 / 7

데이터 입력

모델과 관측값이 파일로 들어옵니다. .inpx 자체, 교통량 워크북, 기존 결과 테이블. Prism은 이를 프로파일링하고 열을 매핑하며, 보정을 시작하기 전에 빠진 것을 표시합니다. 빈틈이 보고서가 아니라 여기서 드러나도록.

.inpx · 관측 교통량 · 결과 데이터베이스 · 열 매핑 · VISSIM 설치 없는 상태 점검

단계 04 / 7

시뮬레이션은 진짜다

PTV Vissim 2026을 새 인스턴스에서 COM으로 구동합니다. 실행은 큐에 들어가고, 시드가 하나씩 진행되며, 결과 데이터베이스를 다시 읽어 서로 대조합니다. 모형이 아닙니다.

COM 자동화 · 큐 실행 · 시드 1 … 5 · 결과 DB 읽기 · 실행 후 대조

단계 05 / 7

대시보드 큐레이션

모든 차트를 출력하는 대신, LLM이 질문에 답하는 차트를 고르고 이유를 말합니다. 평균 속도가 왜 낮은지 물으면 그것을 설명하는 차트 두 개를 받습니다. 마흔 개가 아니라.

질문 → 차트 선택 → 짧은 근거 · 시나리오 비교 · 한 / 영 / 일

단계 06 / 7

검증과 보정 화면

관측 교통량 대비 GEH 검사와, 발주 기관의 운영 모델링 사다리 13단계가 상태 레일로 UI에 보입니다. 슬라이드에 적힌 솔직한 한계: 실제 프로젝트에는 아직 시험하지 않았습니다.

GEH 기본 모델 검증 · 상태 레일로서의 13단계 MRWA 사다리 · 한계: 실제 사례 미검증

단계 07 / 7

보고서는 회사 고유 서식을 물려받는다

과거 보고서를 .docx로 올리면 Prism이 스타일 프로파일을 추출합니다. 색, 서체 단계, 용지 크기와 여백, 제목 번호 체계, 표 머리글 채우기. 새 보고서는 그 스타일로 렌더링되어 회사가 직접 쓴 것처럼 보입니다.

.docx → 스타일 프로파일 → 렌더링된 보고서 · 색 · 서체 · 여백 · 번호 체계 · 표 스타일

시연, 2026년 8월01 · 지도에서 네트워크 생성
01 / 7 · 네트워크 생성
117
편집 전·후, 실행 후 검사하는 제약 조건
482
8주간 커밋
87
에이전트 도구
825
검증 코퍼스의 실제 VISSIM 네트워크

배경

2026년 7 – 9월
01 — 문제

VISSIM은 조용히 실패한다

교통 엔지니어는 VISSIM 모델을 손으로 보정합니다. 주기 길이, 시간대별 수요, 경로 분배, 상충 우선순위. 잘못된 편집은 오류를 내지 않습니다. 그럴듯한 숫자를 내놓고, 몇 주 뒤 보고서에서 문제가 드러납니다.

그 편집을 언어 모델에 맡기면 속도 문제는 나아지지만 조용한 실패 문제는 더 나빠집니다. 제품의 질문은 AI가 네트워크를 편집할 수 있느냐가 아니라, 엔지니어가 그 결과를 어떻게 믿을 수 있느냐였습니다.

02 — 접근

검증 계층이 제품의 본체

모든 요청은 한 가지 경로를 따릅니다. 편집 초안 작성, 사전 검사, 바뀔 부분을 미니맵으로 보여주는 승인 카드, 승인당 한 번의 실행, 파일을 다시 읽어 확인, 그리고 보고. 승인은 서명 기반이며 일회용입니다.

편집은 작업 사본에서 이뤄지고 원자적 교체로 저장되므로 원본은 건드리지 않습니다. 실행 후에는 결과 파일, 차량 도착 수, 평가 테이블을 서로 대조합니다. 저희는 이것을 거짓말 탐지라고 불렀습니다. 원칙은 하나였습니다. 명확한 이유와 함께 거부된 편집이, 숫자가 틀린 채 완료된 편집보다 낫다.

00

배경

도착은 교통 엔지니어를 위해 PTV VISSIM 주변의 디지털 트윈 도구를 만듭니다. 보정은 숙련이 필요하고 느린 일입니다. 엔지니어가 신호 주기, 수요, 경로 분배를 손으로 고치고, 시드 묶음을 돌리고, 표를 읽습니다. 잘못된 편집은 오류를 내지 않습니다. 그럴듯한 숫자를 내놓습니다.

2026년 7월, 저는 질문 하나를 들고 원격으로 합류했습니다. 에이전트가 그 조용한 실패 문제를 더 키우지 않으면서 편집을 대신할 수 있을까. 8주와 482 커밋 뒤의 답은, 에이전트를 앞세운 제품이 아니라 검증 계층 뒤에 에이전트를 둔 제품이었습니다.

작동 방식

그림 — 편집 파이프라인, 요청 하나
단계 01 / 8

자연어로 요청

엔지니어가 변경을 요청합니다. 7번 노드의 주기를 120초에서 90초로. 에이전트는 기억이 아니라 백엔드를 통해 실제 네트워크를 읽습니다.

Next.js 채팅 → FastAPI → 에이전트 도구(87) · 신호 현시, 수요, 경로, 상충 영역 읽기

단계 02 / 8

편집 초안

에이전트가 건드릴 객체 ID와 함께 구체적인 파라미터 변경을 제안합니다. 아직 아무것도 쓰지 않습니다.

초안 = { tool, params } · 정규화 JSON · 영향 객체 미니맵과 함께 표시

단계 03 / 8

사전 검사가 첫 초안을 거부

어떤 쓰기보다 먼저 제약 카탈로그가 실행됩니다. 첫 초안은 최소 녹색 시간을 위반해, 조용히 보정되는 대신 이유와 함께 거부됩니다.

제약 117개 · 사전 검사 94 · 거부 52 / 경고 65 · 거부에 이유 첨부

단계 04 / 8

재초안 통과

에이전트가 한계 안에서 수정하고 사전 검사를 통과합니다. 이제야 승인 카드가 나타납니다.

사전 검사 ✓ · 승인 카드: 변경 전/후 값, 객체, 예상 효과

단계 05 / 8

호출에 묶인 승인 한 번

엔지니어가 한 번 승인합니다. 승인은 정확히 그 도구 호출에 묶이고 사용 시 소모됩니다. 클릭 한 번은 작업 하나를 실행합니다. 여섯 개가 아니라.

식별자 = 도구 + 정렬된 정규화 JSON(암호학적 서명 아님) · 일회용 · 검토자 또는 관리자 권한

단계 06 / 8

작업 사본에서 실행

새 인스턴스에서 COM으로 VISSIM을 구동하되, 파일의 사본 위에서 합니다. 시드 묶음이 돌고, 원본은 쓰기 모드로 열리지 않습니다.

SaveNetAs <stem>_saving.inpx → os.replace · 새 VISSIM 인스턴스, 사용자의 열린 GUI는 건드리지 않음 · 시드 1 – 5

단계 07 / 8

다시 읽고, 대조하기

쓰기 후에는 파일을 다시 읽어 요청과 비교합니다. 실행 후에는 결과 파일, 차량 도착 수, 평가 테이블을 서로 대조합니다.

쓰기 후 검사 8 · 실행 후 검사 12 · 실행 후 단계를 저희는 거짓말 탐지라고 불렀습니다

단계 08 / 8

보고서, 그리고 롤백

엔지니어는 KPI 요약과 궤적, 버전이 매겨진 .inpx 다운로드, 한 단계 롤백을 받습니다.

한국어 / 영어 / 일본어 보고서 · 버전별 다운로드 · GEH 기본 모델 검증

그림 — 편집 파이프라인, 요청 하나01 · 자연어로 요청
데이터승인거부승인 1회 = 실행 1회일회용 승인, 정확한 호출에 묶임롤백엔지니어에이전트 초안사전 검사승인 카드실행다시 읽기대조 검사보고서제약 카탈로그작업 사본VISSIM (COM)원본 파일단계 1 / 8
user
Prism 웹 UI의 교통 엔지니어 · 승인에는 검토자 또는 관리자 권한 필요
draft
백엔드 계획 루프의 Claude · 도구 87개 · 현시, 수요, 경로 분배, 상충 영역, 감속 구간 읽기
check
backend/services/agent/constraints.py · 7개 섹션, Constraint 데이터클래스 117개
approve
pending_approval.json · 식별자 = 도구 + 정규화 JSON, 암호학적 서명 아님 · 검증 시 삭제 · PreapprovedWriteGate는 첫 사용 후 폐기
run
COM으로 PTV VISSIM 2026 · 실행마다 새 인스턴스 · 시드별 진행률
readback
쓴 값, 다시 읽은 값, 저장된 파일이 일치해야 함
cross
결과 파일 · 차량 도착 수 · 평가 테이블 대조 · SIMULATIONRUN 행 기준
report
KPI 요약 · 궤적(.fzp 재생) · 시나리오 비교 · 한 / 영 / 일
catalog
사전 94 · 쓰기 후 8 · 실행 후 12 · 데이터셋 3 · 거부 52 / 경고 65
copy
편집은 작업 사본에 적용되고 원자적으로 교체됨
vissim
PTV VISSIM 2026 · COM 자동화 · FastAPI :8001
original
쓰기 모드로 열지 않음 · 버전별 다운로드 · 롤백

자세히

05
03 — 결과

검증이 가장 먼저 잡은 것은 우리 자신의 실수

검증 게이트는 사용자가 보기도 전에 팀이 직접 생성한 네트워크를 거부했습니다. 150개 링크에 걸친 고립 구역 8개 때문이었습니다. 평가 하네스는 결함을 주입한 15개 과제를 가드레일 유무로 각각 실행해, 검증 계층이 실제로 무엇을 막는지 측정합니다.

Prism에는 VISSIM 설치 없이 동작하는 모델 상태 점검, 11종 요소를 그리는 네트워크 렌더러와 궤적 재생, GEH 기반 기본 모델 검증, 그리고 한국어·영어·일본어 보고서도 들어 있습니다.

04 — 아키텍처

두꺼운 검증 계층 위의 얇은 에이전트

앞단은 Next.js 16과 React 19, 뒷단은 FastAPI, PTV VISSIM 2026은 COM으로 구동합니다. 에이전트는 도구 87개를 가진 Claude 계획 루프이며, 각 도구는 사람의 편집과 같은 게이트를 통해 읽고 씁니다. 저장은 파일뿐입니다. .inpx와 작업 사본, 결과 테이블, 승인별 JSON 로그.

제약 카탈로그가 제품의 본체입니다. README의 약 50개 규칙에서 코드의 데이터클래스 117개로 자랐고, 사전·쓰기 후·실행 후·데이터셋 검사로 나뉘어 각각 거부 또는 경고로 표시됩니다.

05 — 규칙과 가드레일

승인이 일회용인 이유

초기에 승인 클릭 한 번이 300초짜리 시뮬레이션 여섯 개를 실행한 적이 있습니다. 그 사고가 지금의 설계를 만들었습니다. 승인은 정확한 도구 호출에 묶이며, 한 번 저장되고, 검증되면 삭제되고, 쓰기 게이트가 첫 사용 후 폐기합니다. 모든 편집은 사본에서 이뤄져 원자적 이름 변경으로 들어가고, 사용자가 열어 둔 VISSIM 창에는 절대 붙지 않습니다.

Genesis의 자체 검증 게이트가 2026년 8월 11일, 150개 링크에 걸친 고립 구역 8개를 이유로 저희가 직접 생성한 네트워크를 거부했습니다. 다른 사람이 보기 전에.

06 — 평가

조용한 실패를 측정하기

평가 하네스는 15개 과제를 실행합니다. 읽기, 편집, 거부, 실행, 그리고 되묻기 하나. 결함 주입기 다섯 개가 일부러 에이전트의 동작을 망가뜨립니다. 잘못된 파라미터 이름, 환각된 객체 ID, 잘려 나가거나 무시된 쓰기. 그다음 탐지기가 그 실패가 사용자 모르게 도달했을지를 채점합니다.

가드레일을 켜면 주입된 조용한 실패의 60%가 잡혔고, 끄면 80회 시행에서 하나도 잡히지 않았습니다. 남은 사각지대는 하네스에 기록되어 있습니다. 유망해 보였던 보정 결과, GEH 7.53에서 4.19는 합성 워크북을 상대로 관측 진입 입력값을 편집했던 것으로 드러나 철회했습니다. 지금 제품은 그 편집을 이름으로 거부하고, 그 사례는 회귀 테스트가 되었습니다.

07 — 에이전트 너머

8주 동안 함께 나온 것들

VISSIM 설치 없이 동작하는 모델 상태 점검. 11종 요소를 그리는 네트워크 렌더러와 궤적 재생. 관측 교통량 대비 GEH 기반 기본 모델 검증. OpenStreetMap에서 연결성·수요·신호 단계를 거쳐 VISSIM 네트워크를 만드는 Genesis. 서호주 Main Roads의 13단계 사다리를 추적하는 보정 상태 레일. 실제 프로젝트에는 아직 시험하지 않았습니다.

사양

08
스택
Next.js 16 · React 19 · Tailwind 4 · d3 · Leaflet · FastAPI · PTV VISSIM 2026 (COM) · Claude
규모
482 커밋 · API 라우트 126 · 페이지 19 · 에이전트 도구 87 · 테스트 약 5,400
제약 조건
코드상 117개: 사전 94 · 쓰기 후 8 · 실행 후 12 · 데이터셋 3 · 거부 52 / 경고 65
평가
과제 15 · 결함 주입기 5 · 조용한 실패 탐지기 · 가드레일 있을 때 60% 탐지, 없을 때 0% (N = 80)
검증 코퍼스
실제 .inpx 네트워크 825개
기간
2026년 7월 16일 – 9월 9일, 원격
역할
도착 프로덕트 개발자: 프런트엔드, 에이전트 도구, 검증 계층, 시연 파트 B·C·E·F
상태
비공개 제품 · 고객 데이터 없음