ompdesk

omp 的浏览器工作台

代理在终端里跑。你在浏览器里看。

ompdesk 读取 omp 命令行工具已经写好的会话,在同一个进程里运行 omp 自己的 SDK。终端里开始的任务,可以在浏览器标签页里接着做,也可以经私有网络从手机上跟进长时间的运行。

$ bunx ompdesk@latest
源码在 GitHub

然后打开 127.0.0.1:30141。服务就绪后启动器会自己打开标签页。

终端 · omp
$ omp
> 把会话列表的加载逻辑抽成一个 hook
· 读取 components/SessionList.tsx
· 修改 hooks/useSessions.ts
> 别弄坏 fork 树
· 运行测试
浏览器 · ompdesk
把会话列表的加载逻辑抽成一个 hook
✓ 读取 components/SessionList.tsx
✓ 修改 hooks/useSessions.ts
别弄坏 fork 树
· 运行测试
同一个会话,两个客户端。浏览器读写的就是 omp 已有的那一份,不另做复制。

标签页打开之后

01 / 为什么
会话

同一份会话

终端里开始的对话可以在浏览器里继续,反过来也一样。设置、模型角色、凭据、skills、插件与 MCP 配置都来自 omp 已经在用的那个 ~/.omp/agent 目录。

对话

可以离开的运行

正文、思考、工具调用与结果通过服务器发送事件实时到达。可以追加消息、引导当前运行、停止、压缩上下文,或者撤回最后一轮。后台跑完会发通知。

边界

只监听本机

服务只绑定 127.0.0.1,并提供密码锁。远程访问应当经过 Tailscale 这类私有网络,不向公网开放端口。

工作台里有什么

02 / 功能

会话与项目

浏览 omp 有会话的每个项目,置顶与排序,按树查看 fork,重命名、归档或删除会话。归档的会话仍留在磁盘上。

模型角色

default、smol、slow、vision、plan、commit、tiny、memory、task、advisor。为每个角色指定模型,命令行读的是同一条记录。

文件与 Git

文件树支持源码、差异、Markdown(含 Mermaid 与 KaTeX)、图片、PDF 与 DOCX。Git 面板列出相对 HEAD 的改动,并能打开单个文件的差异。

子代理与会话地图

查看正在运行与已结束的子代理及其实时记录,打开会话地图按轮次浏览,并从任意一轮分出分支。

对话控制

斜杠命令、@ 引用文件、拖入图片、计划批准、带 token 预算的目标模式、提示历史,以及随时切换推理等级。

手机上

可以按 PWA 装到手机。布局与可点区域适配小屏,长时间运行的任务能经 tailnet 在手机上看完。

运行

03 / 安装

已发布的最新版本

$ bunx ompdesk@latest

打开 http://127.0.0.1:30141。需要 Bun 1.3.14 或更高版本。

全局安装

$ bun add -g ompdesk
$ ompdesk

启动器会找到 Bun 运行时并在那里启动服务。用 npm 安装也可以。

Docker

$ OMPDESK_PASSWORD='…' docker compose up --build

端口只发布在回环地址;omp 主目录会挂载进来,终端里的会话照常可见。

远程访问,不开放端口

$ tailscale serve --bg --tcp=30141 tcp://localhost:30141

然后在手机上打开 tailnet 地址,用户名填 omp。

端口就是信任边界

能连上这个端口的东西,就能读文件、执行命令、消耗模型额度。除非容器显式设置放行,ompdesk 拒绝非回环的监听地址。

每个页面与接口都可以开启 Basic Auth。密码以 scrypt 摘要保存,文件权限 0600,明文不会写进磁盘。