# 워크스페이스 위젯을 소개합니다 (/docs/ko/posts/announcing-workspace-widgets)



# 워크스페이스 위젯을 소개합니다 [#워크스페이스-위젯을-소개합니다]

오늘 **워크스페이스 위젯**을 내놓습니다. 살아 움직이는
인터랙티브 앱을 Robutler 워크스페이스 캔버스에, 에이전트와 채팅
바로 옆에 올려놓는 방법입니다.

<!-- more -->

## 무엇이 바뀌었나 [#무엇이-바뀌었나]

지금까지 워크스페이스는 에이전트와 대화하고 나중에 볼 내용을
고정해 두기에 좋은 곳이었습니다. 위젯이 생기면서, 작고 조합
가능한 조각으로 직접 꾸리는 진짜 데스크톱이 됩니다.

* 탭 안에서 돌아가는 **Python 커널**. numpy와 matplotlib가
  미리 설치되어 있습니다. 차트를 그리면 터미널 창에 묻히지 않고
  캔버스의 옆 위젯으로 올라옵니다.
* 내 컴퓨터의 데몬에 연결되는 **로컬 셸**.
* 자주 들어가는 운영 서버를 위한 **SSH 위젯**. 기존 터미널과 같은
  키·호스트 관리 방식이지만 더 깔끔합니다.
* 늘 보고 있는 대시보드를 위한 **브라우저 임베드**.
* 텍스트와 코드를 빠르게 고치기 위한 **CodeMirror** 편집기.
* 캔버스에서 계획을 스케치하기 위한 **스티키 노트**, **도형**,
  **연결선**(Figjam처럼, 다만 에이전트 바로 옆에서).
* 그리고 워크스페이스는 즐거워야 하니까, 아케이드 게임 몇 개
  (스네이크, 테트리스, 스페이스 인베이더).

`+` 버튼 → **위젯**으로 카탈로그를 검색해 하나
띄워 보세요.

## 에이전트를 만드는 사람들에게 새로운 것 [#에이전트를-만드는-사람들에게-새로운-것]

위젯은 사람만을 위한 것이 아닙니다. 에이전트는 다음을 할 수 있습니다.

* **캔버스에 위젯 띄우기**: `present.*` 도구 계열을 사용합니다.
  `present.image`, `present.code`, `present.url`,
  `present.chart`, `present.note`, 그리고 범용 `present.widget`
  도우미로 에이전트가 대화 옆에 시각 산출물을 올릴 수 있습니다.
* **Python 커널 조작하기**: `workspace_widgets_invoke(id,
  'eval' | 'run', ...)`로 가능합니다. `stdout` / `stderr` / `display`
  이벤트를 구독하면 matplotlib 그림이 실시간으로 캔버스에 바로
  흘러 들어옵니다.
* **셸 명령 실행하기**: 데몬과 SSH 위젯에서 같은
  `workspace_widgets_invoke(id, 'run', ...)` 도구로 실행합니다. 모든 명령은
  감사 기록용 `widget.agent_command` 알림을 남기므로 무엇이
  실행되었는지 정확히
  확인할 수 있습니다.

에이전트 팩토리도 이 새 화면을 알고 있습니다. 프롬프트 힌트
몇 개로 위젯을 만들고, 상태 저장을 위해 `host.kv`를 연결하고,
네이티브 iOS·Android Robutler 앱용 DSL 프로젝션을 내보낼 수 있습니다.

## 기본은 신뢰, 위험한 것은 직접 켜기 [#기본은-신뢰-위험한-것은-직접-켜기]

토글이 항상 켜져 있다면 에이전트에게 셸 명령을 맡기는 것은
위험합니다. 그래서 우리는 반대의 기본값을 씁니다. 모든 데몬과 SSH
위젯은 **에이전트의 명령 실행 허용**이 꺼진 상태로 시작합니다. 준비가
되면 위젯별로 켜고, 다 끝나면 다시 끄세요.

Python 커널은 여러분의 탭 안에서 샌드박스로 돌아가기 때문에 기본이
켜짐입니다. 아무리 엉뚱하게 행동하는 에이전트라도 Pyodide를 벗어날
수 없습니다. 공유 세션에서 커널을 잠가 두고 싶다면 토글은 그대로
있습니다.

허용된 에이전트 명령과 거부된 에이전트 명령 모두 감사 기록을 남깁니다.
알림 피드를 열고 `widget.agent_command`를 찾아보면
한 주의 이력을 볼 수 있습니다.

## 여러 플랫폼에서 쓰는 위젯 [#여러-플랫폼에서-쓰는-위젯]

위젯은 선택적으로 **프로젝션**을 함께 내보낼 수 있습니다. JS
함수에서 컴파일한 작은 선언적 트리입니다. 프로젝션은 세 가지를
가능하게 합니다.

. 전체 iframe을 불러오지 않고 캔버스에 그려지는 가벼운
  미리보기(위젯을 수십 개 고정해 둘 때 성능에 큰 도움이
  됩니다).
. 올해 후반에 나올 iOS·Android Robutler 앱에서의 네이티브 위젯
  렌더링. 앱이 프로젝션을 주기적으로 가져와
  실제 iOS·Android 위젯 타일로 그립니다.
. 독 프로젝션. 위젯을 독에 고정하면 프로젝션이 대신 표시되므로,
  전체 iframe을 메모리에 올리지 않고도 상태를 한눈에 읽을 수
  있습니다.

지금 위젯을 만들고 있다면, 프로젝션 반환은
선택이지만 권장합니다. DSL 문법은
[호스트 SDK 가이드](/guides/widgets/host-sdk/)를 참고하세요.

## 써 보기 [#써-보기]

[워크스페이스](/workspace)를 열고 `+` 버튼을 누른 뒤
**위젯**을 고르세요. 아니면 그냥 에이전트에게 "NVDA 주가 차트
보여 줘"라고 말하고, Python 커널이 켜지고 matplotlib 그림이
생기고 에이전트가 그 옆에 설명을 붙이는 것을 지켜보세요.

여러분이 무엇을 만들지 정말 기대됩니다.

Robutler 팀
