# Giới thiệu Workspace Widgets (/docs/vi/posts/announcing-workspace-widgets)



# Giới thiệu Workspace Widgets [#giới-thiệu-workspace-widgets]

Hôm nay chúng tôi phát hành **Workspace Widgets**, một cách đặt những
ứng dụng sống và tương tác được trực tiếp lên canvas không gian làm
việc Robutler, ngay cạnh các agent và cuộc trò chuyện của bạn.

<!-- more -->

## Có gì thay đổi [#có-gì-thay-đổi]

Cho tới hôm nay, không gian làm việc là một chỗ tuyệt vời để nói
chuyện với agent và ghim nội dung để xem sau. Với Widget, nó trở
thành một mặt bàn thật mà bạn tự dựng từ những mảnh nhỏ ghép được:

* Một **kernel Python** chạy ngay trong thẻ trình duyệt của bạn, có
  sẵn numpy và matplotlib. Vẽ một biểu đồ và nó hiện ra thành một
  widget bên cạnh trên canvas, chứ không bị vùi trong một khung
  terminal.
* Một **shell cục bộ** gắn với một daemon trên chính máy của bạn.
* Một **widget SSH** cho những máy chạy thật mà bạn cứ phải quay
  lại. Vẫn cách quản lý khóa và máy chủ như terminal cũ, chỉ gọn
  gàng hơn.
* Một **khung nhúng trình duyệt** cho những bảng số liệu bạn sống
  trong đó.
* Một trình soạn thảo **CodeMirror** để sửa văn bản và mã thật nhanh.
* **Ghi chú dán**, **hình khối** và **đường nối** để vẽ phác kế
  hoạch trên canvas (như Figjam, nhưng ngay cạnh agent của bạn).
* Và một nhúm game kiểu arcade (Snake, Tetris, Space Invaders) vì
  không gian làm việc thì nên vui.

Mở một cái từ nút `+` → **Widget** → tìm trong danh mục.

## Có gì mới cho người xây agent [#có-gì-mới-cho-người-xây-agent]

Widget không chỉ dành cho con người. Agent có thể:

* **Tạo widget lên canvas** qua họ công cụ `present.*`.
  `present.image`, `present.code`, `present.url`, `present.chart`,
  `present.note`, và một hàm trợ giúp chung `present.widget` cho
  phép agent đăng những sản phẩm hình ảnh ngay cạnh cuộc trò
  chuyện.
* **Điều khiển kernel Python** qua `workspace_widgets_invoke(id,
  'eval' | 'run', ...)`. Đăng ký nhận các sự kiện `stdout` /
  `stderr` / `display` và các hình matplotlib chảy trực tiếp về
  canvas theo thời gian thực.
* **Chạy lệnh shell** trên widget daemon và SSH qua cùng công cụ
  `workspace_widgets_invoke(id, 'run', ...)`. Mỗi lệnh đều ghi một
  thông báo `widget.agent_command` có kiểm toán, nên bạn thấy chính
  xác thứ gì đã
  chạy.

Xưởng tạo agent đã biết về mặt phẳng mới này: nó có thể xây widget
từ vài gợi ý trong prompt, đấu `host.kv` để lưu trạng thái, và phát
ra các phép chiếu DSL cho ứng dụng Robutler gốc trên iOS và Android.

## Tin cậy theo mặc định, rủi ro thì phải chủ động bật [#tin-cậy-theo-mặc-định-rủi-ro-thì-phải-chủ-động-bật]

Để một agent chạy lệnh shell là chuyện nguy hiểm nếu công tắc luôn
BẬT. Nên chúng tôi phát hành với mặc định ngược lại: mọi widget
daemon và SSH đều bắt đầu với **Allow agents to run commands** TẮT.
Bật nó lên cho từng widget khi bạn thấy sẵn sàng, rồi tắt đi khi
xong việc.

Kernel Python mặc định BẬT vì chúng chạy cách ly bên trong thẻ
trình duyệt của bạn, kể cả một agent hành xử điên loạn cũng không
thoát ra khỏi Pyodide. Công tắc vẫn ở đó nếu bạn muốn khóa kernel
lại cho một buổi làm việc chung.

Mọi lệnh của agent, được chấp nhận HAY bị từ chối, đều ghi một dòng
kiểm toán. Mở luồng thông báo và tìm `widget.agent_command` để xem
lịch sử theo tuần của bạn.

## Widget đa nền tảng [#widget-đa-nền-tảng]

Widget có thể tùy chọn kèm theo một **phép chiếu**, một cây khai
báo tí hon được biên dịch từ một hàm JS. Phép chiếu phục vụ ba việc:

. Một bản xem trước nhẹ, hiển thị trên canvas mà không cần nạp cả
  iframe (lợi rất lớn về hiệu năng khi bạn ghim vài chục widget).
. Bản hiển thị widget gốc trong ứng dụng Robutler cho iOS và
  Android sẽ ra mắt cuối năm nay. Ứng dụng lấy phép chiếu theo
  chu kỳ và vẽ nó thành một ô widget iOS hoặc Android thật.
. Một phép chiếu cho dock: ghim một widget vào dock và phép chiếu
  sẽ thay thế nó, để bạn đọc được trạng thái trong một nháy mắt
  mà không phải giữ cả iframe trong bộ nhớ.

Nếu hôm nay bạn đang viết một widget, việc trả về một phép chiếu là
tùy chọn nhưng rất nên làm. Xem
[hướng dẫn host SDK](/guides/widgets/host-sdk/) để biết ngữ pháp
DSL.

## Thử ngay [#thử-ngay]

Mở [không gian làm việc](/workspace) của bạn, chạm nút `+`, và chọn
**Widget**. Hoặc chỉ cần nói với agent: "Cho tôi xem biểu đồ giá cổ
phiếu NVDA" rồi xem kernel Python khởi động, hình matplotlib hiện
ra, và agent viết chú thích cho nó ngay bên cạnh.

Chúng tôi rất nóng lòng xem bạn sẽ làm gì.

Đội ngũ Robutler
