通过浏览器远程控制多台服务器上的 omp 编码代理会话
Spring Boot 4 + React 19 / Ant Design 6 构建的 Web 控制台,通过 omp 的 RPC 协议(stdio JSONL)直接驱动本地或远程服务器上的真实 omp 会话。
English · 简体中文
- 多主机管理 — 本地与 SSH 两种传输方式,SSH 支持密码 / 私钥认证,可为每台主机指定 omp 路径与工作目录
- 实时对话 — WebSocket 全量帧推送(agent 开始/结束、消息增量、工具调用、系统通知),断线自动重连 + 历史消息补齐
- 多轮对话界面 — 用户/助手/工具/系统分角色气泡渲染,Markdown 代码块与表格高亮,复制/重发,流式光标与打字指示,智能吸底滚动
- 会话管理 — 会话列表 / 新建 / 切换 / 重命名,历史上下文随会话恢复
- 工具调用可观测 — 工具调用条实时展示执行状态(运行中/完成/失败)
- 无外部依赖 — 除 omp 外零第三方服务,本地优先,SSH 直连
- Java 21+
- omp 已安装(RPC 模式:
omp --mode rpc) - Node.js 18+(仅前端构建时需要)
# 1. 构建前端(产物输出到 Spring 静态目录)
cd web/frontend && yarn && yarn build && cd ../..
# 2. 启动后端
./gradlew :web:bootRun
# 3. 打开浏览器
# http://localhost:9010前端产物已随提交保留,若未修改前端可直接跳过第 1 步。
在左侧「注册主机」表单中填写:
| 字段 | 说明 |
|---|---|
| 名称 / ID | 主机显示名与唯一标识 |
| 连接方式 | local(本机 omp)或 ssh(远程) |
| 目标 host / 用户 | SSH 时必填 |
| 密码 / 私钥路径 | SSH 认证,二者其一 |
| 远端 omp 路径 | 非交互 shell 下 omp 不在 PATH,需绝对路径 |
| 工作目录 | 决定 omp 会话归属目录 |
注册后在顶部选择主机即可开始对话。
Browser ──HTTP/WS──▶ Spring Boot (web)
│ HostManager(主机注册表 + client 池)
├── OmpRpcClient ──stdio JSONL──▶ omp(本地进程)
└── OmpSshClient ──JSch SSH──▶ omp(远程进程)
- kernel 模块 —
OmpRpcClient(omp RPC 协议客户端)、OmpSshClient(基于 JSch 的远程连接) - web 模块 —
HostManager(主机与 RPC 客户端管理)、SessionService(会话枚举)、WebSocket 事件流、REST API - 前端 — React 19 + antd 6,组件:
ChatArea/MessageBubble/ToolPanel/Markdown
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/hosts |
主机列表 |
| POST | /api/hosts |
注册主机 |
| DELETE | /api/hosts/{id} |
移除主机 |
| GET | /api/hosts/states |
全部主机状态(含模型/上下文) |
| POST | /api/hosts/{id}/prompt |
发送 prompt |
| POST | /api/hosts/{id}/abort |
中止当前 turn |
| GET | /api/hosts/{id}/state |
单主机状态 |
| GET | /api/hosts/{id}/messages |
历史消息 |
| GET | /api/hosts/{id}/sessions |
会话列表 |
| POST | /api/hosts/{id}/sessions |
新建会话 |
| POST | /api/hosts/{id}/sessions/switch |
切换会话 |
| POST | /api/hosts/{id}/sessions/rename |
重命名会话 |
当前处于 P0「可靠地基」 阶段。完整路线图见 ROADMAP.md,涵盖:
- P0 持久化、鉴权、错误语义化、测试基建、CI/CD
- P1 流式增量渲染、工具详情、消息操作、会话搜索/导出
- P2 多用户与角色、审计日志、通知、会话分享
- P3 模板编排、定时任务、开放 API、SFTP 文件
- P4 环境分层、成本看板、多模型路由、高可用
# 前端开发(热更新)
cd web/frontend && yarn dev
# 后端测试
./gradlew :web:testMIT © btboys