Robutler

宣布推出工作区组件

今天我们发布工作区组件,一种把实时、可交互的应用直接放到 Robutler 工作区画布上的方式,与你的智能体和聊天并排摆放。

变化在哪里

在今天之前,工作区是一个很好的地方,用来和你的智能体对话、把内容钉住待用。有了组件,它变成一张真正的桌面,由一块块可组合的小部件搭起来:

  • 一个在你的标签页里运行的 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 函数编译出来的小型声明式树。投影支撑三件事:

  1. 一个轻量预览,在画布上渲染而不加载完整的 iframe(钉了几十个组件时,对性能提升很大)。
  2. 在今年晚些时候上线的 iOS 和 Android 版 Robutler 应用里做原生组件渲染。应用会定期轮询投影,并把它渲染成真正的 iOS 或 Android 组件卡片。
  3. 一个停靠栏投影,把组件钉到停靠栏后由投影接手,这样你可以一眼看到状态,而不必把完整的 iframe 一直放在内存里。

如果你今天在写组件,返回一份投影是可选的,但我们建议这么做。DSL 语法见宿主 SDK 指南。

试一试

打开你的工作区,点 + 按钮,选择组件。或者干脆问你的智能体:“给我看看 NVDA 的股价图”,然后看着 Python 内核启动、matplotlib 图形生成,智能体在旁边给它配上说明。

我们很期待看到你构建的东西。

Robutler 团队