Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>DS — Sequence Modeling & SimulationNew to Visual Studio Code? Get it now.
DS — Sequence Modeling & Simulation

DS — Sequence Modeling & Simulation

DualSoftDev

|
7 installs
| (0) | Free
View process sequence models (.sdf) in seven views, write them as DS2 Text (.ds2), and simulate right in the browser. Build models from PLC logic (IR), write processes with AI, and fix errors in the editor.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

DS — 공정 시퀀스 모델링 & 시뮬레이션

이 확장은 DS2 Text 전용입니다. 기존 [sys] 표기(DS1)를 쓰고 계시면 아래 DS1 사용자에게를 먼저 읽어 주세요.

.sdf 공정 모델을 6개 뷰로 열고, 브라우저에서 바로 시뮬레이션하고, DS2 Text(.ds2) 원문으로 읽고 쓰고, PLC 로직에서 가져오고, 채팅으로 물어보는 VS Code 확장입니다.

데스크톱과 vscode.dev 에서 같은 소스로 동작합니다. 진입점이 하나뿐이라 한쪽에만 기능을 넣으려면 소스에 분기를 써야 하고, 그 분기는 하나(__DS_HOST__)뿐입니다.

유일한 실제 차이는 우리가 만든 것이 아니라 플랫폼 제약입니다 — 웹에서는 AI 공급자 직접 호출이 그 공급자의 CORS 정책을 탑니다. 뷰·시뮬레이션·DS2 Text 는 양쪽이 동일합니다.


처음 쓰는 분께 — 3분

1. 카드를 누르면 글과 모델이 같이 열립니다

Ctrl+Alt+D 로 모델 대화를 엽니다. 카드를 하나 누르면:

  1. AI 가 공정 명세(JSON)를 만들고
  2. 확장이 그것을 DS2 Text 로 바꿔 편집기에 열고
  3. 서는 글이면 모델 뷰까지 바로 엽니다

AI 키를 아직 안 넣었어도 괜찮습니다 — 적어 둔 예제가 대신 열립니다. 그때는 「적어 둔 글입니다」라고 먼저 말합니다. AI 가 쓴 것처럼 보이지 않습니다.

카드가 아니라 직접 적어도 됩니다. 다만 문법은 직접 쓰지 마십시오 — 공정을 말로 적으면 확장이 DS2 Text 로 옮깁니다.

2. 뷰는 숫자키 1~6

키 뷰 먼저 보는 것
1 흐름-시퀀스 무엇이 어떤 차례로 도는가 — 처음에는 여기가 뜹니다
2 3D 인과 자리와 장비가 어떻게 놓였는가
3 시간 분석 한 바퀴가 얼마고 어디를 줄여야 하는가
4 모델 문서 AAS 서브모델과 DS2 Text 원문
5 θπ 테이블 어느 순간 어떤 상태인가
6 인과 분석 무엇이 무엇을 불렀는가

← → 로도 옮깁니다(탭에 포커스가 있을 때).

3. 시뮬레이션은 F5

키 하는 일
F5 시작 / 일시정지
Shift+F5 처음으로
F10 한 걸음

엔진은 브라우저 안에서 돕니다. 서버도, 설치도 없습니다.

막혔을 때

보이는 것 뜻
빨간 ❌ 2:10 … 그 글이 컴파일되지 않습니다. 「자동 수정」·「AI 에게 고치게 하기」가 같이 뜹니다
「설명 속의 예시입니다」 문법 설명에 든 예시입니다 — 고칠 거리가 아닙니다
「적어 둔 예제」 AI 가 안 붙어 있어 저장된 글을 연 것입니다
「permit 조건은 저장만 됩니다」 적은 대로 저장은 되지만 「허가 유지」는 아직 돌지 않습니다
아무 일도 안 일어남 DS: 기록 보기 명령으로 까닭을 볼 수 있습니다

단축키

키 하는 일
Ctrl+Alt+D 모델 대화 열기
Ctrl+Alt+B DS2 Text → 모델로 컴파일
F5 시뮬레이션 시작 / 일시정지 (상태에 따라 갈림)
Shift+F5 시뮬레이션 리셋
F10 한 걸음 밀기 (멈췄을 때)

시뮬레이션 관련 명령은 모델 뷰가 열려 있을 때만 팔레트에 뜹니다. | 1 ~ 6 | 뷰 바로 가기 (모델 뷰 안에서) | | ← → Home End | 탭 묶음 안에서 옮기기 (뷰 탭 · 채팅 Flow 탭) | | Ctrl+. | .ds2 수정안 비교 · 빈 파일에 뼈대 넣기 |

마우스 없이 끝까지 쓸 수 있습니다. 탭 묶음은 Tab 한 번이면 지나가고(안에서는 ← →), 뷰를 옮기면 포커스와 낭독 안내가 함께 따라갑니다. 화면낭독기에는 «버튼 7개» 가 아니라 «7개 중 3번째 탭, 선택됨» 으로 들립니다.

처음이시면 도움말 → 시작하기 → DS2 시작하기 에 4단계 안내가 있습니다.

시뮬레이션이 변화 없이 1초가 지나면 스스로 멈추고, 상태 표시줄이 노랗게 바뀝니다. 변화도 없이 시계만 올라가는 것은 진행이 아니라 진행처럼 보이는 것이라서, 끝난 것·서로 기다리는 것·애초에 시작 못 한 것이 전부 똑같아 보입니다. 멈추면 그때 무엇이 어느 상태로 남아 있는지 세어서 보여 줍니다 — 어느 쪽인지 단정하지는 않습니다. 그건 모델을 아는 사람이 봐야 합니다.

생성 결과를 검사합니다

채팅의 새 공정 생성은 공급자 공통 JSON 계약을 거쳐 DS2 Text로 변환합니다. 선언·값 타입·참조·지원 기능을 엄격하게 검사한 결과만 모델로 열거나 채팅에서 저장·병합합니다. 부족한 정보와 미지원 기능을 지우거나 장치·시간을 만들어 통과시키지 않습니다.

직접 작성하는 .ds2도 같은 엄격 검사 기준을 사용합니다. 장치 System과 ApiDef, 제품 투입·배출 역할을 원문에 명시하십시오. 기존 assisted 변환기는 호환용 초안 도구로 남지만 자동 보충을 검증 완료로 취급하지 않습니다. 수정 제안은 원문과 비교한 후 반영합니다.

현재 JSON 생성 범위는 단일 Active System/Flow의 DAG와 명시적 시간이 있는 동작입니다. 정적 검사 통과는 요구사항 충족이나 실제 실행·로그 정합성의 증명이 아닙니다.

개발 계획과 검증 범위는 DS2 언어 개발 계획(docs/DS2_LANGUAGE_ROADMAP.md), 현재 결과는 진행 기록(docs/DS2_LANGUAGE_PROGRESS.md)을 참고하십시오.

작성한 DS2 Text는 DS: 현재 DS2 Text를 요구사항과 비교 명령으로 별도 요구 JSON과 대조할 수 있습니다. 미저장 원문도 검사하고 요구별 결과와 지문을 보고서로 엽니다. 정적 요구 검사 통과와 실제 실행·로그 검증은 구분합니다.

npm run check:language
npm run test:language
npm run build:ts
node dist/cli/validate.cjs --json model.ds2
node dist/cli/validate.cjs --format process-json --json request.json
node dist/cli/validate.cjs --requirements requirements.json --json model.ds2
npm run test:runtime-contract

CLI 종료 코드는 통과 0, 계약 위반 1, 사용법·파일 입력 오류 2입니다. 런타임 검사는 Playwright Chromium과 빌드된 wasm/_framework가 필요합니다. 상세 범위와 한계는 진행 기록에 남깁니다. 요구사항·관측·후보 평가 파일 형식과 실행법은 검증 안내(docs/DS2_VALIDATION.md)를 참고하십시오.

JSON 생성은 기존 단일 Flow·장치 호출 형식과 ds2-work-graph/v1을 구분합니다. 새 형식은 다중 Flow의 말단 Work·Reference·Start/Reset/Group 관계를 명시하며 생성 전후 구조를 대조합니다. 두 형식을 섞거나 조건·IO·레시피를 자동으로 보충하지 않습니다. 프로필 선택과 예시(docs/DS2_VALIDATION.md#생성-프로필-선택)를 참고하십시오.

무엇을 하나

.sdf 모델을 6개 뷰로

표는 **「문서 복사」**로 스프레드시트에 칸칸이 붙고, 그림은 **「SVG 저장」**으로 바탕·글꼴까지 담겨 나갑니다 — 보고서에 그대로 붙일 수 있습니다.

구조 시간 분석
3D 인과 · Flow·시퀀스 시간 분석 (타임차트 + 크리티컬 패스) 모델 문서 · θπ 테이블 · 인과 분석

숫자 키 1~6 으로 옮겨 다니고, 탭에서 ← → 도 됩니다.

뷰는 밝은 테마·어두운 테마를 모두 따릅니다 — VS Code 테마를 바꾸면 같이 바뀝니다. 글자 대비는 두 테마 모두 4.5:1 이상으로 맞췄고, 바꿀 때마다 실제로 그려서 잽니다.

뷰는 한국어 · English · Deutsch · 日本語 로 뜹니다. 기본은 VS Code 표시 언어를 따르고, DS: 모델 뷰 언어… 또는 설정 ds2.language 로 고정할 수 있습니다. (확장의 알림·명령 이름은 한국어 그대로입니다.)

모든 뷰는 같은 모델 하나의 투영입니다. 뷰마다 다른 이야기를 하지 않습니다. 한 화면에 다 못 넣어 자를 때는 몇 개를 생략했는지 말합니다 — 화면에 없는 것을 «모델에 없는 것» 으로 읽게 두지 않습니다.

예전에는 뷰가 11개였습니다. 같은 이야기를 둘로 나눠 보여 주던 것들을 합쳤습니다 — 타임차트와 크리티컬 패스는 같은 시간 축이고, 인과 매트릭스와 원인·영향은 같은 그래프의 다른 투영입니다. IO 참조는 지웠습니다 — 모델에 IO 주소를 넣지 않으면 늘 빈 화면이었고, 빈 화면을 탭으로 지키는 것보다 없는 편이 낫습니다. 옛 뷰 이름으로 들어와도 합쳐진 뷰(없어진 것은 모델 문서)가 열립니다.

PLC 로직·현장 로그에서 DS2 만들기

모델 대화의 래더 + 로그 넣기, 또는 명령 DS: PLC IR·수집 로그에서 검토용 DS2 만들기를 엽니다. AI 설정이나 열린 모델 없이 사용할 수 있습니다.

  1. PLC IR JSON(최대 16 MB)과 SQLite 수집 로그(최대 64 MB)를 선택하거나 함께 끌어 놓습니다.
  2. 분석할 **수집 구간(Run)**을 직접 선택합니다.
  3. 원본 심볼·주소·관측 수·제외 사유를 확인합니다. 근거는 PLC 선언/로직 원문과 로그 행 번호를 보여 줍니다.
  4. 생성 가능한 심볼을 최대 128개 선택해 DS2 생성을 누릅니다.
  5. 사이클 분석 열기로 ON 구간과 반복 시간을 확인합니다. DS2 열기, 결과 폴더 저장도 사용할 수 있습니다.

표준작업표는 같은 시간축에서 원본 심볼의 여러 ON 구간을 보여 줍니다. 반복 기준 신호와 비교할 회차를 선택하면 확인된 0→1 사이의 반복 간격과 회차 차이, ON 합계, 전체 Run의 최소·중앙·최대 ON 시간을 확인합니다. 기본 화면은 심볼·ON 합계·시간축이며 상세 수치로 나머지 통계를 펼칩니다. 행의 기준으로 반복 신호를 고르고 ← / → 버튼으로 회차를 넘깁니다. ON 있는 심볼만·검색·정렬과 Ctrl + 휠 확대, 화면 맞춤을 지원합니다. 회차를 바꿔도 검색·확대·스크롤 위치를 유지합니다. 막대를 누르면 원본 로그 행 번호를 확인합니다. 처음부터 켜진 값·끝에서 잘린 구간·수집 품질 이상은 부분 관측으로 구별하며 완전 ON 시간 통계에서 제외합니다. 엑셀에는 화면의 수치, 전체 구간과 원본 rowid를 함께 저장합니다.

이름과 주소가 정확히 일치하는 BOOL 심볼을 원문 이름 그대로 생성하며 문법·참조를 엄격하게 검사합니다. 결과는 실행이 비활성화된 심볼 검토 모델입니다. Work/Flow는 검토용 컨테이너이며 실제 작업 단위·제품 경로가 아닙니다. Start/Reset·AutoAux·Call DAG·동작 시간은 시간 겹침이나 이름만으로 추정하지 않습니다.

원본은 바꾸지 않습니다. 저장할 때 새 폴더에 model.ds2, model.sdf, model.sdf.plc-log.json, evidence.json, 원본 두 파일의 복사본, README.txt, SHA-256 목록인 manifest.json을 묶습니다. model.sdf와 model.sdf.plc-log.json을 함께 보관하고 model.sdf를 열면 로그 표가 다시 나타납니다. 파일 지문이 다르면 잘못 연결된 로그를 표시하지 않습니다. PLC/LOG의 자료 시점 차이, 미관측과 수집 오류도 남깁니다. 지원 로그는 run·sample 수집 테이블을 가진 독립 SQLite 파일입니다. PLC 원본 프로젝트는 Brownfield에서 IR로 내보내세요.

기존 .seq 증거 그래프와 사이클 분석은 별도 메뉴에서 계속 열 수 있습니다.

사이클 타임 개선점 찾기

DS: 사이클 분석 — log.sqlite 와 plc.ir.json 을 넣으면 사이클을 실제로 늘리는 구간을 찾아 순위를 매깁니다. 둘을 같이 고르면 분석 창이 바로 열립니다.

심장은 흡수 시험입니다. «이 구간이 길다» 는 개선점이 아닙니다 — 줄였을 때 사이클이 줄어야 개선점입니다. 실데이터(620사이클 · 22.7시간)에서 이 시험이 뒤집은 것:

  • 「안착가능 창 5.80초가 전부 유휴다」 → 창이 길어질 때 사이클은 짧아졌습니다 → 기각
  • 「인덱스 선회 6.90초가 길다」 → 뒤 공백이 그만큼이라 줄여도 안 줍니다 → 기각

기각 목록을 반드시 보여 줍니다. 무엇을 왜 버렸는지 안 보이면 같은 후보를 다시 들고 오게 됩니다.

첫 화면은 AI 추천입니다. 분석이 끝나면 묻지 않고 바로 AI 가 Top 3 를 고르고 현장 사람이 읽을 말로 적습니다 — 숫자를 만들게 하지 않고, 계산된 후보와 기각된 것들과 한계를 전부 준 뒤 고르고 설명하는 일만 시킵니다. 근거를 보려면 위 단추로 «결정»·«개선점»·«증거 그래프» 로 갑니다. 「안내」 로 처음 화면에 돌아옵니다.

추천이 설 조건을 못 채웠으면(사이클 표본 부족 등) 그래도 부르되, 맨 앞에서 「지금은 결론이 아니라 가설」이라고 먼저 말하게 합니다. 조용히 안 부르면 고장 난 줄 알고, 경고 없이 부르면 9사이클짜리 추천을 사실로 읽습니다.

«결정» 의 막대와 점은 올려놓으면 태그와 근거가 다 나옵니다 — 길이·P10/P90·표본 수·사이클 비중·전달률·상관 r·게이트 신호·래더 위치·다음에 잴 것. 기각된 점은 왜 버렸는지가 뜹니다.

34MB 로그는 읽는 데 몇 초 걸립니다. 무엇을 하고 있는지와 얼마나 왔는지를 막대로 보여 주고, «취소» 로 멈출 수 있습니다.

쓰는 동안 오류를 봅니다

.ds2를 작성하면 엄격 컴파일러의 진단이 밑줄로 표시됩니다. Ctrl+.의 수정 제안은 원문과 비교하는 창으로 열립니다. 선언이나 관계를 바꿀 수 있으므로 내용을 확인한 후 편집하십시오. 제안이 컴파일된다는 사실만으로 원래 의도까지 보존됐다고 판단하지 않습니다.

알 수 없는 장치·API·시간을 자동 보충해서 모델을 실행하지 않습니다. 빈 파일의 예제 뼈대에는 실행에 필요한 진입과 이탈을 명시합니다.

이름을 외우지 않아도 됩니다

.ds2 를 쓰는 동안 이미 선언한 이름이 완성됩니다 — work·system·api·call 과 예약어. 실린더. 까지 치면 그 장비의 api 만, 본선. 까지 치면 그 flow 의 work 만 보여 줍니다 (= ref 에 씁니다).

지금 그 자리에서 쓸 수 있는 이름이 맨 앞에 옵니다 — 다른 flow 의 이름을 골라 컴파일 오류를 만나는 일이 없습니다.

  • 정의로 이동 (F12) — A > B; 의 B 에서 그 work B 로, 지그.잠금 에서 그 api 잠금 으로
  • 이름 바꾸기 (F2) — 선언과 참조를 함께 바꿉니다. 범위를 지킵니다: 다른 flow 에 같은 이름이 있어도 건드리지 않고, 같은 범위에 이미 있는 이름이면 거절합니다
  • 참조 찾기 (Shift+F12) — 이 이름을 누가 가리키는지. 고칠 때 무엇이 깨질지 먼저 봅니다
  • 서식 맞추기 (Shift+Alt+F) — 들여쓰기만 손댑니다. 줄을 합치거나 쪼개지 않아서 «내가 쓴 모양» 이 그대로 남고, 같은 모델이 나오는지 검사합니다
  • 마우스 올리기 — 그 이름이 무엇인지와 선언 줄을 그대로 보여 줍니다
  • 개요(Ctrl+Shift+O) 와 접기 — 블록 구조 그대로

DS1 원문에서는 거들지 않습니다 — 문법이 달라 엉뚱한 이름을 권하게 됩니다.

시뮬레이션

편집기 제목 표시줄의 ▶ 로 시작합니다. Work·Call 이 Ready → Going → Finish 로 전이하는 것이 3D 와 상태 패널에 실시간으로 나타납니다.

  • 속도 0.25× ~ 10× (논리 시간에만 곱하므로 결과가 재현됩니다)
  • 상태 표시줄에 ▶ 2.4s · 진행 2

엔진은 실제 DS2 런타임입니다. 데스크톱 Promaker 와 같은 코드가 WebAssembly 로 돌고, 같은 모델에 대해 같은 결과를 냅니다.

모델 대화

활동 표시줄의 DS 아이콘(또는 Ctrl+Alt+D)을 누르면 대화 패널이 열립니다. 열려 있는 모델을 보면서 답합니다.

답에 DS2 코드가 있으면 그 자리에서 컴파일해 보고 결과를 적습니다. 안 되면 수정 제안이나 「다시 생성」으로 돌아갈 수 있습니다. 모델이 길면 Flow 탭으로 갈라 보고, 탭을 고른 채 보내면 그 Flow를 수정합니다. 전체 System 원문이 없는 부분 편집에서는 기존 System 교체를 차단하고, 병합된 전체 원문을 검사한 뒤 적용합니다.

이 모델에서 제품 전달은 누가 맡아?
시퀀스 보여줘
시뮬 돌려봐
ST02 의 Call 순서를 설명해줘

왜 자체 패널인가 — VS Code 의 채팅 패널은 내장이 아닙니다. product.json 의 defaultChatAgent 가 가리키듯 GitHub Copilot Chat 이 제공합니다. 그것이 없는 PC 에서는 채팅 참가자를 등록해도 띄울 자리가 없습니다. 채팅 상자 하나 때문에 다른 확장의 구독에 묶일 이유가 없어 패널을 직접 둡니다.

Copilot Chat 이 설치돼 있으면 거기서 @ds2 로도 부를 수 있습니다. 두 창구는 같은 코드 경로를 쓰므로 답이 갈라지지 않습니다.

모델은 DS2 Text 원문으로 전달됩니다 — 그 표기가 애초에 사람과 AI 가 읽도록 설계됐습니다.

시퀀스 보여줘 · 시뮬 돌려봐 같은 조작은 언어 모델을 거치지 않고 바로 실행됩니다. 느릴 이유도, 비쌀 이유도 없습니다.

AI 공급자

기본값은 NAVER CLOVA Studio (HyperCLOVA X) 입니다. 처음 쓰실 때 명령 팔레트에서 DS: AI 키 등록… 으로 본인 키를 넣으시면 됩니다.

공급자 키 웹(vscode.dev)
NAVER CLOVA Studio (기본) 필요 CORS 로 막힘
Claude CLI 불필요 — 이미 로그인된 로컬 claude 실행 데스크톱 전용
VS Code 언어 모델 불필요 — 기존 로그인(Copilot 등) 사용 동일
Anthropic Claude (API 키) · OpenAI · Google · Azure OpenAI 필요 동작
Ollama (로컬) 불필요 데스크톱 전용

Claude CLI 를 고르면 키가 아예 필요 없습니다 — Claude Code 에 이미 로그인해 두셨다면 그 구독을 그대로 씁니다. claude 를 PATH 에서 찾고, 없으면 Windows 에서 wsl.exe -e claude 를 시도합니다(WSL 에만 설치한 흔한 경우). 직접 지정하려면 ds2.ai.claudeCliPath 를 쓰세요. 모델 원문은 명령행이 아니라 표준 입력으로 넘기므로 큰 모델도 잘립니다 — 61KB 까지 확인했습니다. 파일·셸·네트워크 도구는 모두 꺼 둡니다.

DS: AI 공급자 선택… 으로 언제든 바꿀 수 있고, DS: AI 사용 상태 에서 지금 무엇이 어디로 가는지 확인할 수 있습니다.

웹에서의 제약 — 브라우저 확장 호스트에서는 공급자가 교차 출처(CORS) 호출을 허용해야 합니다. NAVER CLOVA Studio 는 허용하지 않으므로(프리플라이트 403) 웹에서는 VS Code 언어 모델 이나 Anthropic 을 쓰세요. 데스크톱에는 이 제약이 없습니다. DS: AI 사용 상태 가 지금 어느 호스트인지 알려 줍니다.

키 보관 — API 키는 OS 키체인(SecretStorage) 에만 저장됩니다. 설정 파일에 키 항목을 아예 만들지 않았습니다. 설정 동기화와 git 으로 퍼지기 때문입니다. 실수로 ds2.ai.* 에 키 같은 값이 보이면 경고합니다.

전송 범위 — 모델 원문은 선택한 공급자에게만 갑니다. 이 확장은 자체 서버를 두지 않습니다.

DS2 Text (.ds2)

문법 강조 · 블록 접기 · 개요(Outline). 모델 뷰의 { } DS2 Text 탭에서 정규 원문을 언제든 뽑을 수 있습니다.


빠른 시작

가진 .sdf 가 없어도 됩니다. 예제가 함께 설치됩니다.

  1. DS: 예제 열기 — 바로 컴파일되는 조립 셀 예제가 열립니다 (실린더·클램프 5단계)
  2. Ctrl+Alt+B — 모델이 되고 뷰가 옆에 뜹니다
  3. F5 — 분홍 구슬이 인과를 따라 흐릅니다. 1~6 으로 뷰를 바꿔 보십시오
  4. Ctrl+Alt+D — 열려 있는 모델을 보면서 물어봅니다

도움말 → 시작하기 → DS2 시작하기 에 같은 순서가 5단계 안내로 있습니다.

이미 .sdf 가 있으시면 그냥 여십시오 — 모델 뷰가 자동으로 뜹니다. 처음 열 때 런타임 부팅에 0.5~1초 걸리고, 그 뒤로는 즉시 열립니다.

.sdf 는 다른 도구도 쓰는 확장자입니다. DS 모델이 아닌 파일을 열면 왜 아닌지 말하고 텍스트로 열 길을 줍니다 — 엔진까지 들여보내 알 수 없는 오류를 내지 않습니다.

엔진이 멈추면 뷰 안에 그렇게 적히고, 「다시 시도」나 DS: 엔진 다시 띄우기 로 모델을 닫지 않고 다시 띄울 수 있습니다.


아직 못 다루는 구문

문법에는 있지만 이 미리보기가 모델로 바꾸지 못하는 것이 있습니다. 쓰면 컴파일을 멈추고, 대신 무엇을 쓰면 되는지 말합니다 — 틀린 모델을 보여 주는 쪽이 더 나쁩니다.

아직 못 다루는 것 대신
start when · permit when · skip when 조건을 work 로 만들어 인과로 잇기
completion fresh\|existing (call 안) 그 줄을 지우기 — 기본 동작이 그대로 쓰입니다
timeout … (call 안) 기다림이 뜻이면 duration 으로 적기
on A start reset B; A => B; (끝나면 되돌림)
mutual reset A, B; A <|> B; (둘은 동시에 성립 불가)
type "…" (system 안) 그 줄을 지우기 — 모델 뜻에 영향 없음

되는 것: project · system(active) · flow · work · call · api · duration · group 이름 = A, B; · entry/exit · 인과(> -> => <|>) · A -> B reset C; · call { label body; } · call { interlocked true; } · bind · IO 태그 · = ref 참조.

묶음에는 이름이 있어야 합니다. 여럿이 모이거나 갈라지는 자리는 묶음으로 적습니다 — group 앞작업 = 도포1, 도포2; 로 묶고 앞작업 > 도포3; 으로 잇습니다. 관계문에 쉼표를 쓰는 꼴(A, B > C;)과 이름 없는 묶음(group A, B;)은 받지 않습니다. 이름이 없으면 가리킬 수 없고, 가리킬 수 없는 묶음은 쓸 데가 없기 때문입니다.

대화 창의 AI 도 이 목록을 알고 있어서, 못 쓰는 구문을 피해서 씁니다.


.sdf 가 정본입니다

.ds2(DS2 Text)는 원문이거나 투영입니다. 둘은 쓰임이 다릅니다.

방향 무엇인가
.sdf → .ds2 내보내기. 읽기·공유·AI 입력용. 언제든 다시 뽑습니다
.ds2 → .sdf 작성. 사람·AI 가 텍스트로 모델을 만듭니다 (다음 릴리스)

.ds2 를 고쳐도 열려 있는 .sdf 는 저절로 바뀌지 않습니다.

한 가지 알아 두실 것 — 왕복은 항등이 아닙니다. DS2 Text 는 Work 안 call 이름이 유일해야 해서, 한 Work 가 같은 장치를 여러 번 부르면 로봇1_아우터취출 처럼 이름을 넓힙니다. 시스템·Flow·Work·API·화살표와 호출 대상은 전부 보존되지만, Call 의 장치 별칭 표기는 달라질 수 있습니다.


DS1 사용자에게

이 확장은 DS2 Text v4 만 다룹니다. DS1([sys]·[flow] 블록, >|>·<|< 복합 연산자)은 별개의 확장이 담당합니다.

  • DS1 원문을 열면 잘못된 오류를 내지 않습니다. 진단을 끄고 한 번만 안내합니다. 판별은 실제 DS1 파일 162개로 확인했고 — DS2 를 DS1 로 잘못 찍는 일은 한 건도 없습니다. (잘못 찍히면 그 파일의 진단이 조용히 꺼지므로, 못 알아보는 쪽보다 나쁩니다)
  • 자동 변환은 제공하지 않습니다. DS1 → DS2 Text 변환기는 존재하지 않습니다. 대신 안내에서 「DS2 로 새로 시작」 을 고르면 바로 컴파일되는 뼈대를 옆에 열어 줍니다 — 왼쪽 DS1 을 보면서 옮겨 적고, 막히면 Ctrl+Alt+D 로 물어보시면 됩니다
  • 계속 DS1 이 필요하시면 dualsoft.ds (v1.0.27) 를 설치해 쓰세요. 두 확장은 나란히 설치해도 됩니다 — 이 확장은 .ds2, 그쪽은 .ds 를 다루므로 서로 건드리지 않습니다

브라우저에서도

vscode.dev 에서도 같은 기능이 돕니다 — 모델 보기·시뮬레이션·DS2 컴파일·수정안 비교·PLC IR 변환까지. 엔진(WASM)은 웹뷰 안에서 돌고, 압축·파일 보관은 브라우저 구현을 씁니다. 51개 검사로 확인합니다.

두 가지가 다릅니다. Claude CLI 공급자는 쓸 수 없고(로컬 실행 파일이 필요합니다), 파일 대화상자가 막힐 수 있습니다 — 그때는 .json 을 채팅 창에 끌어다 놓거나 새 편집기로 열어 저장하면 됩니다. 확장이 그렇게 안내합니다.

요구 사항

  • VS Code 1.95 이상 (데스크톱 또는 vscode.dev)
  • 모델 대화에는 AI 공급자 키 또는 언어 모델을 제공하는 확장(GitHub Copilot 등)이 필요합니다. 둘 다 없어도 뷰·시뮬레이션·DS2 Text 는 모두 동작하고, 시퀀스 보여줘·시뮬 돌려봐 같은 조작도 AI 없이 됩니다

설정

설정 기본 설명
ds2.language auto 모델 뷰의 말. auto 는 VS Code 표시 언어를 따릅니다 (모르는 말이면 English)
ds2.simulation.speed 1 배속. 논리 시간에만 곱하므로 결과는 배속과 무관합니다. 돌고 있는 중에 바꿔도 그 자리에서 먹고 시계는 유지됩니다
ds2.ai.provider vscode 어느 AI 를 쓸지. 기본값은 키가 필요 없습니다
ds2.ai.model "" 모델 이름. 비우면 공급자 기본값 (Claude CLI 는 sonnet)
ds2.ai.claudeCliPath "" claude 실행 파일 경로. 비우면 자동 탐지 (데스크톱 전용)
ds2.ai.azureEndpoint "" Azure OpenAI 엔드포인트
ds2.ai.anthropicWorkspaceId "" 조직 키를 쓸 때만 필요한 Anthropic 워크스페이스 ID
ds2.ai.clovaHost https://clovastudio.stream.ntruss.com CLOVA 엔드포인트
ds2.ai.clovaStage testapp CLOVA 테스트 앱 / 서비스 앱 (키가 다릅니다)
ds2.ai.ollamaHost http://127.0.0.1:11434 Ollama 주소
ds2.legacy.showDs1Notice true DS1 원문을 열었을 때 지원 종료 안내

API 키 설정은 목록에 없습니다. 일부러 만들지 않았습니다 — 키는 DS: AI 키 등록… 으로만 넣습니다.


소스

github.com/DualsoftDev/ds2 — 모델·엔진·언어가 모두 공개돼 있습니다.

DS2 는 IDTA Asset Administration Shell 을 따르는 공정 시퀀스 표현입니다. 확장에 들어 있는 런타임은 실제 설비를 구동하는 것과 같은 엔진입니다.

생성이 얼마나 자주 틀리는가

재서 압니다. npm run eval:gen 이 실제로 받은 글 12편을 같은 잣대로 세고, 어디를 고쳐야 내려가는지까지 찍습니다. 살아 있는 모델로 재려면 npm run eval:gen:live.

재는 법과 지금 숫자는 docs/생성-오류율-측정.md 에 있습니다.

사내망 게이트웨이로 쓰기

대부분의 사내 LLM 게이트웨이는 OpenAI 호환입니다. 공급자에서 «사용자 지정 (OpenAI 호환 · 사내 게이트웨이)» 를 고르고 셋만 맞추면 됩니다.

무엇 어디에
주소 설정 ds2.ai.customBaseUrl — 예 https://내부주소/v1
모델 설정 ds2.ai.model — 그 게이트웨이가 아는 이름
키 DS: AI 키 등록… — OS 키체인에 들어갑니다

인증 헤더 이름이 authorization 이 아니면 ds2.ai.customAuthHeader 에 적으십시오 (그때는 키를 Bearer 없이 그대로 보냅니다). 조직·부서 식별 같은 추가 헤더는 ds2.ai.customHeaders 에 넣습니다.

키는 설정에 넣지 마십시오. 설정은 기기 사이로 동기화되고 평문으로 남습니다. 키는 키체인(DS: AI 키 등록…)에만 둡니다.

웹(vscode.dev)에서 막히는 것

브라우저에서 다른 출처로 보내는 호출은 그쪽 서버가 허락해야 합니다(CORS). OpenAI·Azure·CLOVA·Gemini 는 허락하지 않으므로 웹에서는 못 씁니다 — 고르기 목록에서 미리 «브라우저에서 막힘» 으로 표시하고, 눌러도 부르기 전에 이유를 말합니다.

웹에서 되는 길은 VS Code 언어 모델(키 불필요)과 Anthropic Claude(브라우저 직접 호출을 허용합니다)입니다. 사내 게이트웨이가 CORS 를 열어 두었다면 «사용자 지정» 도 됩니다. 그 밖에는 데스크톱 VS Code 를 쓰십시오 — 거기서는 전부 됩니다.

작성한 모델의 실행과 기대 로그 비교

DS2 Text 편집기에서 DS: 현재 DS2 Text 실행을 기대 로그와 비교를 실행하고 별도 JSON 계획을 선택합니다. 미저장 원문을 독립 WASM 세션으로 실행하며, 요구사항과 원본 해시를 확인한 기대 자료에 맞는지 보고합니다. v1 계획은 상태·시간을, v2 계획은 같은 실행의 상태·시간·입력 관측점을 함께 검사합니다. 기존 모델 뷰의 시뮬레이션에는 영향을 주지 않습니다.

계획 형식·검사 범위·재현성의 한계는 실행 비교 사용법(docs/DS2_VALIDATION.md#편집기에서-실행과-기대-로그-비교)에 있습니다. 이 비교는 지정한 Work/Call 상태·시간과 v2에 명시한 입력 관측점에 한정됩니다. 물리 IO나 전체 사용자 의도를 검증했다는 뜻은 아닙니다.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft