面向企业开发者的远程开发控制台私有化部署桌面 · 手机

开发者的 Claude Code,
经由公司服务器随⁠处⁠可⁠用。

SSemBridge 是面向企业开发者的 Claude Code 远程开发控制台。企业在自己的服务器上部署中继服务器后,开发者即可经由该服务器,在桌面浏览器和手机上查看并控制各自 Mac 上用 tmux 启动的 Claude Code 会话 — 包括发送提示词 · 批准权限 · 回答问题 · 中断。

私有化部署 · 各 Mac 需 macOS + tmux · 已在 Claude Code 2.1.x 上验证 · 桌面浏览器和手机(主屏幕应用)

SSemBridge已连接 需要回应 2任务 1用量管理设置新会话
会话4 个 · 主机 2 台
api-server运行中
Mac Studio · Claude 1 · sonnet-5-5
正在将支付金额转换为最小单位
✻ Refactoring… 1:12
todo-app等待批准
MacBook · Claude 1 · opus-5-5
现在开始运行测试。
docs-site等待输入
MacBook · Claude 2 · haiku-4-5
已修改三页安装说明。
ml-notebook运行中
Mac Studio · Ollama · qwen3-coder
正在检查数据清理脚本
2 个子代理运行中 · 共 3 个
api-server 运行中
Mac Studio · Claude 1 · sonnet-5-5 · ~/work/api-server · main
■ 中断文件sonnet-5-5 · high权限:自动⋯
把支付金额转换为各币种的最小单位,并确保同一订单不会被重复扣款
我将编写金额转换函数,并在支付调用中加入幂等键。
修改src/payments/charge.ts +2 −1
31 export async function charge(order: Order) {32- const res = await gateway.pay(order.total);32+ const amount = toMinorUnits(order.total, order.currency);33+ const res = await gateway.pay(amount, { key: order.id });34 if (!res.ok) throw new PaymentError(res.code);
Bashnpm test -- payments
PASS src/payments/charge.test.ts ✓ 韩元金额不带小数发送 (3 ms) ✓ 同一订单不会重复扣款 (5 ms)再显示 14 行
18 个测试全部通过。退款部分也将按同样方式修改。
✻ Refactoring… 1:12 · ↓ 2.8k Token中断(Esc)
模型·effort/compact/clear/cost/status
发送到 api-server 的消息
⌘↵ 发送 · 文件可拖放或用 ⌘V 粘贴

等待批准 1

todo-app · 权限请求 · Bash
npm test -- login
允许拒绝

Agent 主机

MacBook会话 2 · 12ms
Mac Studio会话 2 · 18ms

Hook 事件

14:02PermissionRequest · todo-app
14:01PostToolUse · api-server
13:58Stop · docs-site
13:57SubagentStop · ml-notebook
todo-app等待批准
MacBook · opus-5-5 · xhigh · 权限:默认
在登录页面加一个显示密码的按钮,并运行测试
已添加按钮。现在开始运行测试。
修改src/Login.tsx +9 −1
41 <input type={show ? "text" : "password"} />42 + <button onClick={toggle}>显示</button>
权限请求 · Bash
npm test -- login
允许始终允许此命令拒绝
Brewing… 42 秒 · ↓ 1.2k Token
发送到 todo-app 的消息
会话通知任务用量管理

桌面会话列表 · 对话 · 批准,三栏宽屏显示

手机单手操作同一会话 — 批准 · 回答 · 中断

运行在公司服务器上

SSemBridge 安装在企业自行运营的服务器上。开发者照常在各自的 Mac 上使用 Claude Code,离开工位时也能经由公司服务器继续这些会话。

中继由公司服务器完成

网页控制台 · 中继 · 供界面显示的对话副本 · 对话备份全部集中在公司服务器上。远程控制不经过任何外部云服务。

账户密钥只留在各 Mac 上

Claude 登录信息和 Ollama 密钥只保存在开发者的 Mac 上。即使通过网页登录,服务器也只负责转发登录流程,不保存任何密钥。

Mac 只建立出站连接

各 Mac 上的 Agent 主动连接公司服务器。Mac 无需开放任何端口,Agent 连接只在内网(VPN)中接受。

远程命令全部记入审计日志

记录谁 · 在哪个会话 · 做了什么 · 结果如何。网页需通过账号 · 密码以及 OTP 验证才能打开。

管理员界面

管理员可在网页上管理主机(开发者 Mac)的注册 · 取消注册、各 Mac 的账户登录状态、可用模型及默认值、用量、服务器设置和保留期限。

对话备份 · 还原

每 10 分钟将各 Mac 的对话记录备份到公司服务器。管理员找到已备份的对话并还原后,即可在新会话中通过“继续”打开。

Claude Code 与模型之间的通信(Anthropic API 等)与控制台无关,仍照常由各 Mac 直接进行。

一览

即使不在终端前,也能回答 Claude 的提问、查看用量,并把工作交给另一台 Mac。以下界面均使用虚构的示例数据绘制。

Claude 在提问
部署范围
要进行到哪一步?
到开发服务器 (Recommended)生产环境待演练后再部署
到生产环境在今晚的维护时段
自行输入 — 用此内容代替选项作答
发送回答不回答
直接回答问题以卡片形式显示 Claude 的提问。无论单选、多选还是自行输入,都会以与终端相同的格式提交答案。
估算费用
$412
▲ 18%
缓存命中
96%
▼ 0.8%p
5 小时23%
每周71%
⚠ 按当前速度,将于周五 14:00 达到每周限额
用量与限额预测按模型 · 项目 · 时段查看账户限额(5 小时 · 每周)、基于当前速度的预测,以及按 API 单价换算的费用估算。
api-server → Mac Studio移动中
导出对话2.1 MB
打包工作文件夹38 MB
上传到服务器62%
在目标 Mac 上解包
继续打开
移到其他 Mac将对话(如有需要,连同工作文件夹)交给另一台 Mac 继续使用。关闭网页后仍会继续,重新进入即可看到进度。
MacBook · ShellEscTab^CPgUp关闭窗口
dev@macbook:~/work/api-server$ git status -s M src/payments/charge.ts ?? src/payments/refund.ts dev@macbook:~/work/api-server$ npm test -- payments Tests: 18 passed, 18 total dev@macbook:~/work/api-server$
网页终端在新窗口中打开开发者 Mac 的 Shell 以及 claude 会话的实际 tmux 画面。仅当在该 Mac 上直接开启时才能打开,打开时会再次验证 OTP。
提示词api-server · 24 条 · 最新在前
#24 · 14:02↳
退款部分也按同样方式修改,并运行测试
#23 · 13:41↳
把支付金额转换为各币种的最小单位,并确保同一订单不会被重复扣款
#22 · 11:20 · 图片 1 张↳
参照这个界面整理错误信息
提示词汇总只汇总淹没在 AI 工作记录中的自己的指令。点击 ↳ 即可跳到对话中的相应位置,从那里重新阅读。
SSemBridge
한국어English日本語简体中文FrançaisEspañolBahasa IndonesiaTiếng Việtភាសាខ្មែរالعربية
10 种语言用团队使用的语言操作网页控制台。所选语言由浏览器记住,数字和日期也按该语言显示。阿拉伯语从右向左显示。

桌面上宽屏浏览,手机上单手操作

同一个控制台,任何屏幕都能用。在桌面浏览器中,会话列表 · 对话 · 通知三栏并排,文件编辑器和用量仪表盘以宽屏显示;在手机上,则通过底部标签在会话 · 通知 · 任务 · 用量 · 管理之间切换。以下界面同样使用虚构的示例数据绘制。

三栏宽屏,需要时可收起

左侧会话列表 · 中间对话 · 右侧批准与主机,集中在一个画面中。收起两侧栏后,会话保留为摘要栏(状态 · 已用时间 · 批准数),通知保留为图标栏,对话区域随之变宽。

  • 修改的文件显示带行号的 diff,长输出自动折叠
  • 收起状态由此浏览器记住
  • 用 ⌘↵ 发送,文件直接拖放

左右滑动查看

文件浏览器与编辑器

以树形查看会话文件夹,并排打开两个文件进行编辑。解除锁定、修改后按 ⌘S 保存;Claude 修改过的文件会立即重新读取。

  • Markdown 预览 · 图片查看
  • 重命名 · 创建副本 · 删除到废纸篓(不会永久删除)
  • .git · .claude 内的文件不可修改

左右滑动查看

用量仪表盘

查看账户限额与基于当前速度的预测,并将估算费用 · 请求 · 输出 · 缓存命中与上一周期对比。通过按模型划分的每日柱状图和星期 × 小时热力图,了解何时 · 在何处使用。

  • 时间范围:今天 · 7 天 · 30 天 · 90 天 · 本月
  • 用量激增的日期以 ▲ 标示
  • 费用为按 API 单价换算的估算值

左右滑动查看

能做什么

在终端里做的事,在网页上同样可以完成。原始数据始终是各 Mac 上的对话文件,服务器只保存供界面显示的副本。

实时查看对话

按与终端相同的顺序实时查看对话 · 工具调用 · 结果 · 子代理。修改的文件以带行号的 diff 显示,长输出自动折叠,还能渲染 Markdown · mermaid 图表 · 图片。每个会话实际使用的账户(Claude · Ollama)也一目了然。

批准权限 · 回答问题

当 Claude 请求执行命令的权限或提出问题时,网页和手机上会弹出卡片。终端中也会同时显示相同的对话框,以先回答的一方为准。只在终端中出现的确认对话框(例如退出时确认后台任务)也可以在网页上选择。

提示词 · 文件 · 中断

长文本也能原样发送;把文件拖放或粘贴到输入框,即会上传到会话文件夹并以 @路径 的形式填入。可一边查看进度栏,一边像按 Esc 一样随时中断。

新会话 · 继续

在允许的文件夹内用 tmux 启动新会话,或继续打开已结束的对话。只在终端中使用过的文件夹的对话也会出现在继续列表中(与 claude --continue 相同);用其他账户继续打开时,会把对话文件复制到该账户下使用。

模型 · effort · 权限模式

在会话中切换模型和 effort(默认仅作用于此会话),并在五种权限模式(默认 · 自动接受编辑 · 计划 · 自动 · 全部允许)之间切换。

移动会话

将已结束的会话移到另一台 Mac 继续使用。工作文件夹也可以一起移动(可重新生成的文件夹除外),并通过进度条查看每个阶段。

文件浏览器 · 编辑器

浏览、预览和修改会话文件夹中的文件。Claude 修改的文件会立即反映,删除只会移到废纸篓。在新窗口中打开,即可边看对话边看文件。

网页终端

在网页中打开开发者 Mac 的 Shell 和 claude 会话的实际 tmux 画面。滚动 · 拖选复制 · ⌘K 清屏,用法与终端相同;保留的历史行数可在设置中指定。仅当在该 Mac 上直接开启时才能打开。

提示词汇总

只汇总该会话中由人输入的提示词,最新的在前。点击即可跳到对话中的相应位置,从那里开始检查;还能追溯到较早的记录(服务器保留期限内)。

任务 — 后台代理

跨会话在一个画面中查看正在运行的后台代理和工作流,也能查看最近 24 小时内已结束的任务。

用量仪表盘

查看账户限额与基于当前速度的预测、费用估算、按模型划分的每日柱状图、用量最多的会话,以及星期×小时热力图。费用为按 API 单价换算的估算值。

远程管理主机 · 账户

用“添加主机”生成的一行安装命令接入开发者 Mac。查看每台 Mac 上 Claude · Ollama 账户的登录状态并在网页上登录;Agent 可通过“立即更新”远程升级。

对话备份 · 还原

每 10 分钟将对话记录以及 Claude 修改前的文件副本上传到公司服务器。可查看存档大小 · 磁盘剩余空间 · 各主机的备份状态,并选择性还原。

审计日志 · 保留期清理 · 指标

远程命令的执行者 · 会话 · 内容 · 结果全部记录在案。旧记录按设定的期限清理,Token 等敏感值会被遮盖显示。还可查看各主机的连接延迟等指标。

10 种语言

网页控制台支持 韩语·English·日本語·简体中文·Français·Español·Bahasa Indonesia·Tiếng Việt·ភាសាខ្មែរ·العربية。通过顶部的 🌐 按钮选择,阿拉伯语从右向左显示。

引入后这样使用

把开发者的 Mac 接入一台公司服务器即可使用。开发者只需照常在 tmux 中使用 claude。

安装到公司服务器

将中继服务器(Web 应用服务器 · 数据库)部署在企业内部服务器上。网页控制台置于公司的 HTTPS 代理之后,Agent 连接只在内网中开放。

接入开发者 Mac

将管理员通过“添加主机”生成的一行安装命令(一次性注册码,15 分钟有效)粘贴到 Mac 的终端中,Agent 即完成安装并连接。

随时随地继续

在 tmux 中启动的 claude 会话会出现在网页上。可在桌面或手机上查看进度,进行批准 · 回答 · 下达下一条指令 · 中断。

工作原理

各 Mac 上的 Agent 读取 claude 的对话文件和 hook 并发送到公司服务器,再把网页发来的命令通过 tmux 输入。由于 Agent 主动连接服务器,Mac 端无需开放任何端口。

SSemBridge 架构图 左侧各 Mac 上,claude 写入对话文件并把 hook 发送给 Agent,Agent 读取对话文件并与中间的公司服务器建立 WebSocket 连接。公司服务器由 Web 应用服务器和数据库组成,右侧的浏览器和手机通过 HTTPS 和 WebSocket 连接到服务器。 各 Mac(多台) claude 在 tmux 窗口中运行的 Claude Code 对话文件 JSONL · 原始数据 SSemBridge Agent Go 单一可执行文件 · launchd 写入 读取 hook 公司服务器 Web Application Server SSemiYa F/W 中继 · 登录 · 审计 Database 界面副本 · 设置 网页 浏览器 桌面 手机 主屏幕应用 WebSocket · Agent 主动连接 HTTPS·WS 部署在内部服务器 登录 + OTP 通过后才可访问
左右滑动查看
  • 原始数据是各 Mac 上的对话文件。服务器只保存供界面显示的副本,即使重启服务器,Agent 也会接着重新发送并补齐。
  • Agent → 服务器单向连接 — 服务器不会连入 Mac。命令也通过同一连接接收,并经 tmux 输入。
  • hook 只在 127.0.0.1 上接收。即使 Agent 未运行,也不会拖慢 claude(1 秒内放弃)。
  • 网页位于公司的 HTTPS 代理之后,需通过登录 + OTP 才能打开,所有远程命令都会记入审计日志。
Agent

Go 单一可执行文件

通过 launchd 常驻在每台 Mac 上。对话文件 tail · hook 接收 · tmux 控制 · 远程更新。

服务器

SSemiYa F/W
Web Application Server

WebSocket 中继、REST、审计日志、对话备份存档。部署在企业内部服务器。

网页

原生 JS 模块

无需构建工具,不依赖外部资源。支持桌面 · 手机,浅色 · 深色主题。

DB

Database

供界面显示的对话副本、账户 · 模型目录、用量、审计日志。

安全原则

这是一个在开发者 Mac 上远程执行命令的工具,因此我们先划定了必须坚守的底线,再着手开发。

  • 远程控制所需的中继 · 存储全部在公司服务器上完成 — 不经过任何外部云服务。
  • Mac 只建立通往公司服务器的出站连接 — 没有供外部连入的端口。
  • 账户密钥(Claude Token · Ollama 密钥)只保存在各 Mac 上,服务器不保存。
  • 主机注册码 · Token 仅以哈希形式保存;注册码只能使用一次,且须在 15 分钟内使用。
  • Agent 连接不通过外部代理开放,只在内网(VPN)中接受。
  • 网页登录必须提供账号 · 密码以及 OTP;管理操作(主机 · 账户 · 设置 · 备份还原)仅限管理员执行。
  • 新会话只能在允许的文件夹内启动,文件路径由 Agent 做最终检查(拒绝会话文件夹之外 · .git · .claude)。
  • 所有远程命令都会记入审计日志(谁 · 哪个会话 · 做了什么 · 结果)。
  • 网页终端必须在该 Mac 上直接开启才能打开(无法从网页开启),管理员每次打开时都会再次验证 OTP。打开 · 关闭 · 字节数会记入审计日志,但不记录按键内容;30 分钟无输入即自动关闭。
  • 界面和记录中出现形似 Token 的值时,会被遮盖显示。
  • 网页不加载外部脚本 · 字体(CSP),上传文件的大小 · 路径会经过两次检查。

使用条件

SSemBridge 的运行条件如下。

  • 各 Mac 需要 macOS 和 tmux。在 tmux 之外(普通终端)启动的会话只能查看,需通过网页的“在 tmux 中继续打开”重新打开后才能控制。
  • 公司服务器需要 Web 应用服务器(WAS)和数据库。网页控制台置于公司的 HTTPS 代理之后,Agent 连接只在内网(VPN)中开放。
  • Claude Code 和 Ollama 账户沿用各 Mac 上原有的账户。账户与费用仍按与各服务的现有合同执行。
  • Claude Code 的记录格式 · hook · 界面会随版本变化。我们会根据已验证的版本(目前为 2.1.288~2.1.291)更新 Agent,并通过网页的“立即更新”推送到各 Mac。
  • 用量中的费用是按 API 单价换算的估算值,并非订阅费用或实际账单金额。

正在考虑引入 SSemBridge 吗?

请告诉我们开发者人数以及您正在使用的 Mac · 服务器环境,我们将为您推荐合适的配置。价格和引入条件也欢迎咨询。

联系销售

halo@levelupsoft.com

默认采用私有化部署 · Levelupsoft Inc.