연구자가 하는 일은 두 가지, 나머지는 시스템이 합니다
연구자가 새로 익히는 것은 작업공간을 만들 때 쓸 데이터를 고르는 것과, 결과를 공유할 때 결과 내보내기를 누르는 것뿐입니다. 이 페이지는 그 사이에 시스템이 하는 일을 설명합니다.
아직 출시 전입니다. 화면 그림은 개발 중인 포털 화면을 옮겨 그린 예시이고, 명령과 출력은 지금 동작하는 CLI의 것입니다.
작업공간: 브라우저의 VS Code 호환 편집기와 코딩 에이전트
지금 설치되는 에이전트는 Claude Code(명령줄 도구와 VS Code 확장)입니다. 버전을 고정하고 자동 업데이트를 꺼 두므로, 결과와 함께 저장한 작업 환경에도 그 버전이 그대로 남습니다.
폴더는 두 개입니다. 내 작업은 ~/project에, 내 데이터는 /data에 읽기 전용으로 있습니다.
탭을 닫아도 터미널에서 돌던 작업은 계속되고, 다시 열면 같은 터미널로 돌아옵니다. 작업 폴더는 작업 환경을 다시 만들어도 남습니다. 파이썬 패키지(pip install --user)는 작업 폴더에 남고, 시스템 패키지(sudo apt-get install)는 기록해 두었다가 작업 환경을 다시 만들 때 다시 설치합니다.
EXPLORER
outputsreproduce.shtrain.pyimages/ct_2024tables/patients데이터를 고르는 동안, 결과를 볼 수 있는 사람이 보입니다
고르는 동안 이 작업공간의 결과를 볼 수 있는 사람의 수가 바로 바뀌고, 데이터 위에 포인터를 올리면 더했을 때 볼 수 없게 되는 사람이 빗금으로 보입니다.
이 수는 브라우저가 아니라 서버가 권한을 보고 계산합니다(명령: ws preview). 화면은 받은 수를 그리기만 합니다.
이 작업공간에서 쓸 데이터
- (일부 고름)내 데이터 전체
- (고름)
/images/ct_20241,248개 - (고름)
/tables/patients4개 - (고르지 않음) (미리 보는 중)
/tables/labs4개
보이는 파일1,252개
이 작업공간의 결과를 볼 수 있는 사람
4명 (전체 31명 중)
관리자는 항상 볼 수 있습니다
이 데이터를 더하면 4명에서 2명으로 줄어듭니다: /tables/labs
필요한 권한 ct_research또는imaging_all중 하나 그리고 ehr_basic또는ehr_full중 하나
누르면 실행할 명령
ws create kim --data /images/ct_2024 /tables/patients 데이터를 더하면 줄어드는 까닭
데이터마다 볼 수 있는 사람이 다릅니다. 작업공간의 결과는 고른 데이터를 모두 볼 수 있는 사람에게만 보입니다. 예시에서 CT 영상은 9명, 환자 표는 14명이 볼 수 있지만, 둘 다 쓴 결과는 둘 다 볼 수 있는 4명만 봅니다. 검사 수치 표까지 더하면 2명으로 줄어듭니다.
이 규칙 덕분에 CT 영상과 진료 기록으로 만든 모델이, 진료 기록만 볼 수 있는 사람에게 보이는 일이 생기지 않습니다.
/images/ct_2024만 고르면
9명
/tables/patients만 고르면
14명
둘 다 고르면
4명
/tables/labs도 더하면
2명 (전에는 4명)
볼 수 없는 데이터는 없는 것과 같습니다
/data에는 내가 볼 수 있고 이 작업공간에 고른 파일만 있고, 읽기만 할 수 있습니다.원본을 복사하지 않고 그대로 보여 줍니다. 볼 수 없는 데이터는 막혀 있는 것이 아니라 아예 없습니다. 목록에 나오지 않고, 그 경로를 고르거나 요청하면 없는 경로와 똑같은 답이 돌아옵니다. 에이전트도 없는 파일은 읽을 수 없습니다.
관리자가 권한을 바꾸면 켜져 있는 작업공간의 /data에도 바로 반영됩니다. 다시 시작할 필요가 없습니다.
터미널
$ ws create kim --data /images/mr_brainCould not create the workspace. Not found: /images/mr_brainreason: No such path: /images/mr_brain. List your data with: lake ls 사용자 kim의 역할로는 볼 수 없는 경로를 적었을 때의 답입니다: /images/mr_brain. 정말 없는 경로를 적었을 때와 같습니다.
데이터는 더할 수만 있습니다
작업공간은 한 번이라도 볼 수 있었던 데이터를 계속 기억합니다. 나중에 권한이 바뀌어 /data에서 파일이 사라져도, 그 데이터로 만든 중간 파일이 작업 폴더에 남아 있을 수 있기 때문입니다. 그래서 권한을 거둬도 그 작업공간의 결과는 계속 그 데이터를 볼 수 있는 사람에게만 보입니다.
데이터를 빼고 싶으면 새 작업공간을 만듭니다. 화면도 그렇게 안내합니다: 「이미 이 작업공간에 있습니다. 빼려면 새 작업공간을 만드세요.」
에이전트는 요청하고, 연구자가 승인합니다
/data에 있는 데이터를 읽을 수 있습니다. 하지만 데이터를 더하거나 결과를 내보내려면 요청만 할 수 있습니다.연구자는 에이전트가 알려 준 승인 링크를 열고, 무엇이 바뀌는지(보이는 파일 수, 결과를 볼 수 있는 사람 수)를 본 다음 승인합니다. 승인한 명령은 연구자 이름으로, 요청한 그대로 한 번만 실행됩니다. 요청한 뒤 파일이 바뀌면 실행하지 않습니다.
승인은 서버가 지키므로 에이전트가 건너뛸 수 없습니다. 연구자가 포털에서 직접 누른 데이터 더하기와 결과 내보내기는 바로 실행됩니다.
데이터 더하기 요청 a-0031
Claude가 이 작업공간에 데이터를 더하려고 합니다.
- 요청한 곳
ws-0012- 더할 데이터
/tables/labs(4개)
| 언제 | 보이는 파일 | 볼 수 있는 사람 |
|---|---|---|
| 지금 | 1,252개 | 4명 (전체 31명 중) |
| 승인하면 | 1,256개 | 2명 (전체 31명 중) |
실행할 명령
ws add-data ws-0012 /tables/labs 승인하면 위 명령이 kim 이름으로 한 번 실행됩니다.
요청한 뒤 파일이 바뀌거나 더해지면 승인해도 실행하지 않습니다.
작업공간 터미널 (에이전트는 같은 일을 MCP 도구로 합니다)
$ synapse ws request add-data /tables/labsRequested approval: a-0031Data to add: /tables/labsVisible files: from 1,252 to 1,256Who can see this workspace's results: from 4 to 2 of 31 people. Admins can always see.It runs after the researcher approves it in the portal: https://app.example.org/approve/a-0031 작업공간마다 인터넷 규칙
작업공간은 인터넷에 바로 나갈 수 없습니다. 관리자가 작업공간마다 정한 규칙에 따라 프록시를 거쳐서만 나갑니다. 바꾼 규칙은 켜져 있는 작업공간에 바로 적용되고, 바꾼 기록이 남습니다.
작업공간은 바깥 이름(DNS)을 직접 찾을 수 없습니다. 다른 작업공간과 포털에는 어떤 규칙으로도 닿지 않습니다.
- Claude만
- Claude API만
- 패키지 저장소 (기본)
- Claude API, PyPI, VS Code 확장(Open VSX), Ubuntu apt
- 인터넷
- 인터넷 전체, 모든 포트 (사내망 제외)
- 완전 개방
- 인터넷과 사내망 전체, 모든 포트
- 추가 규칙
- 작업공간마다 도메인, 포트, 주소나 대역을 더 엽니다. 사내 모델 서버가 한 예입니다. 기관 템플릿도 만들 수 있습니다.
관리자 터미널
$ ws net set ws-0012 --allow huggingface.coInternet rules: Packages (packages)Extra rules: huggingface.coAllowed: api.anthropic.com, pypi.org, files.pythonhosted.org, open-vsx.org, openvsx.eclipsecontent.org, ports.ubuntu.com, archive.ubuntu.com, security.ubuntu.com, huggingface.coApplied to the running workspace now. 모든 작업공간에 같은 규칙
모든 작업공간의 에이전트는 같은 규칙 파일을 받습니다. 연구자도 에이전트도 이 파일을 고칠 수 없습니다. 작업공간 안에서 sudo로 root가 되어도 마찬가지입니다.
- 데이터는
/data에서 읽고, 원본을 다른 곳에 복사하지 않습니다. - 표는 같은 폴더의 설명 파일(
table.yaml)을 먼저 읽습니다. - 코드는
~/project에, 결과는~/project/outputs에 둡니다. - 랜덤 시드를 고정합니다.
- 결과를 다시 만드는 명령을
~/project/reproduce.sh에 적습니다. - 막힌 곳은 우회하지 않고 연구자에게 알립니다.
- 데이터 더하기와 결과 내보내기는 요청으로만 합니다.
규칙은 에이전트에게 주는 지시입니다. 시스템이 지키는 것은 이 파일을 고칠 수 없다는 것과, 결과를 내보낼 때 재현 명령 파일이 있는지 확인하는 것입니다. 에이전트가 규칙대로 했는지는 결과를 내보내기 전에 재현 명령 파일(reproduce.sh)을 열어 확인하세요.
결과를 내보내면, 다시 만들 재료가 함께 남습니다
- 내보낸 파일
- 결과 폴더에 복사하고, 파일마다 크기와 SHA-256 해시를 기록합니다. 볼 수 있는 사람만 열고 내려받습니다.
- 작업 폴더
- 코드, 중간 파일, 체크포인트, 에이전트와 나눈 대화 기록(
~/.claude)까지 그 순간 그대로입니다. 작업공간 주인과 관리자만 볼 수 있습니다. - 작업 환경
- 직접 설치한 시스템 패키지까지 그 순간의 작업 환경 그대로입니다. 작업공간 주인과 관리자만 볼 수 있습니다.
- 쓴 데이터
- 그 작업공간이 지금까지 볼 수 있던 데이터와, 거쳐 온 데이터 버전입니다. 복사하지 않고, 지울 수 없게 붙잡아 둡니다.
- 재현 명령
- 결과를 다시 만드는 명령을 적은 파일입니다. 지금은 파일이 있는지만 확인하고 실행하지 않습니다.
- 다시 실행해 확인준비 중
- 재현 명령으로 다시 실행해 같은 결과가 나오는지 확인하는 기능은 계획되어 있습니다. 지금은 모든 결과에 「아직 다시 실행해 확인하지 않았습니다」가 표시됩니다.
남지 않는 것: 실행 중이던 프로세스의 메모리와 터미널 화면 내용. 한 번도 시작하지 않은 작업공간은 작업 환경을 저장하지 않습니다.
release create --workspace ws-0012 --outputs project/outputs/gradcam_017.png project/outputs/roc_curve.png project/outputs/model.pt project/outputs/metrics.json --reproduce project/reproduce.sh ... Recording the input data... Saving the work folder and environment... Working out who can see it... Registering the outputsReleased: r-0137Who can see this release: 4 of 31 people. Admins can always see.Condition: one of ct_research or imaging_all and one of ehr_basic or ehr_full 공유 링크는 주소일 뿐, 권한은 열 때마다 확인합니다
/r/<결과 ID>)가 있습니다. 링크를 받은 사람도 볼 권한이 있어야 열 수 있습니다.볼 수 있는 사람에게는 미리 보기(이미지, 표의 앞부분, 지표), 요약, 결과 출처가 나옵니다. 모델 가중치는 정보만 보여 줍니다. 볼 수 없는 사람에게는 필요한 권한이 보이고, 관리자에게 요청할 수 있습니다. 열람과 내려받기는 기록됩니다.
원본의 권한이 바뀌면 그 데이터로 만든 결과를 볼 수 있는 사람도 다시 계산하고, 바뀐 이력이 남습니다. 권한을 거두면 그 링크로도 바로 볼 수 없습니다.
동료가 이 링크를 자기 작업공간의 에이전트에게 붙여 넣으면, 그 결과를 데이터로 더하는 요청이 됩니다.
project/outputs/gradcam_017.png이미지project/outputs/roc_curve.png이미지project/outputs/model.pt가중치project/outputs/metrics.json지표
요약
- 만든 사람
kim- 작업공간
ws-0012- 쓴 데이터
/images/ct_2024,/tables/patients- 볼 수 있는 사람
- 4명 (전체 31명 중)
- 재현 명령
project/reproduce.sh
아직 다시 실행해 확인하지 않았습니다. 재현 명령과 당시 환경은 저장되어 있습니다.
내려받기는 기록됩니다
결과 r-0137
이 결과를 보려면 다음 권한이 필요합니다. 각 줄에서 하나 이상 있어야 합니다.
필요한 권한
-
ct_research또는imaging_all중 하나 있음 -
ehr_basic또는ehr_full중 하나 없음
넓히기와 권한 요청
넓게 나눠도 되는 결과는 관리자가 사유를 적고 그 결과만 넓힐 수 있습니다. 집계 통계나, 작업공간이 본 원본 가운데 일부의 내용이 들어 있지 않은 결과가 그렇습니다. 넓힌 것은 사유와 함께 기록되고, 되돌릴 수 있습니다.
볼 수 없는 사람은 공유 화면에서 말을 남겨 권한을 요청하고, 관리자는 역할을 주거나, 결과를 넓히거나, 사유를 적어 거절합니다.
넓힌 결과의 출처 그림에서는, 보는 사람이 볼 수 없는 원본이 이름 없이 「접근 권한 없는 데이터」로 나옵니다.
관리자가 볼 수 있는 사람을 넓혔습니다.
관리자가 넓힐 때 실행하는 명령
release relax r-0101 --clause ct_research imaging_all --reason '폐 분할 마스크는 CT 영상에서만 만들었고, MR 영상의 내용은 들어 있지 않습니다.' 화면, 터미널, API가 같은 명령을 씁니다
예외는 로그인, IDE 열기, 올리고 내려받는 파일 내용입니다.
API 토큰으로 부르는 프로그램, 작업공간 안의 synapse 명령, 에이전트의 도구도 같은 명령을 같은 권한 확인을 거쳐 실행합니다. 그래서 화면이 하는 일은 모두 자동화하고, 감사하고, 가르칠 수 있습니다.
화면은 한국어와 영어를 지원하고, 명령과 콘솔은 영어입니다.
ws start ws-0012 ... Preparing the workspace network... Checking the internet proxy and gateway... Starting the environmentStarted workspace: ws-0012IDE: https://app.example.org/ws/ws-0012/open ws add-data ws-0012 /tables/labs Added data: /tables/labs (1,256 visible files)Who can see this workspace's results: 2 of 31 people. Admins can always see.Condition: ehr_full and one of ct_research or imaging_all ws start ws-0009 Could not start the workspace. The running workspace limit is reached.reason: 2 workspaces are running or were left running: ws-0007, ws-0012 (limit 2). Stop one (an ended one counts too), then try again. 관리자 화면
관리자 화면은 지금 만들고 있습니다. 화면이 실행할 명령은 지금 동작합니다.
화면: 개발 중실행하는 명령: 지금 동작함
| 화면 | 실행하는 명령 |
|---|---|
| 데이터 레이크 | lake lslake addlake grantlake revokelake rm |
| 계정과 역할 | synapse user addsynapse user add-rolesynapse user disablesynapse role add |
| 작업공간 현황 | ws lsws stopsynapse storage |
| 인터넷 규칙 | ws net setws net showws net log |
| 결과 관리 | release relaxrelease access grantrelease access deny |
| 감사 기록 | synapse audit |
imagesct_20241,248개mr_braintablespatients4개labs4개
/images/mr_brain의 역할
- (주지 않음)
ct_research - (주지 않음)
ehr_basic - (주지 않음)
ehr_full - (상위 폴더에서 받음)
imaging_all상위 폴더에서 받음: /images - (줌)
mr_research더할 예정 - (주지 않음)
pathology
적용할 명령 1개
lake grant /images/mr_brain mr_research 널리 쓰이는 오픈소스 위에
- 작업 환경
- Docker, NVIDIA Container Toolkit
- 브라우저 편집기
- code-server (확장은 Open VSX에서)
- 데이터와 버전
- OpenZFS
- 인터넷 출입
- squid 프록시
- SSH
- OpenSSH (관리자가 사람마다 허용한 경우)
- 표 데이터
- Parquet 파일, DuckDB
코딩 에이전트: Claude Code: Anthropic의 상용 제품이고, 오픈소스가 아닙니다. 작업공간마다 버전을 고정해 설치합니다.