粤ICP备2026098386号-2
🚀 Ops (OpsPilot):基于 Go + Tauri 2 + LLM 的下一代智能 Web SSH/SFTP 工作台与 Agentic 运维平台
返回首页

🚀 Ops (OpsPilot):基于 Go + Tauri 2 + LLM 的下一代智能 Web SSH/SFTP 工作台与 Agentic 运维平台

Ops(OpsPilot)是一款基于 Go + Tauri 2 + LLM 的智能 Web SSH/SFTP 工作台与 Agentic 运维平台:内置 xterm.js 多会话 Web 终端、可视化 SFTP、自然语言运维助手与 Approval-Gated 工具审批闸门,SSH 凭据 AES-256-GCM 加密存储,支持 Web 与 Tauri 原生桌面端双形态交付。

项目官网https://www.opspilot.vip

一句话简介:Ops(又称 OpsPilot)是一款轻量、安全、跨平台的智能化 Web SSH/SFTP 工作台。它在现代 Web 终端体验之上内置了 Approval-Gated 智能运维 Agent,让大模型能够直接操作服务器,同时通过精细化的工具审批闸门确保系统绝对安全——AI 负责效率,人类掌握最终决定权。


📌 一、核心功能矩阵

模块功能特性详细描述
全功能 Web 终端多会话 Web SSH基于 xterm.js,支持标签页 / 多窗口并发连接、自定义 PTY 窗口大小调整(Resize)、多套色彩主题与快捷键
连接日志与审计实时捕获会话终端日志,提供完整审计链路与历史命令追溯
跳板机(Jump Host)支持通过跳板机代理登录内网主机,满足堡垒机 / 多级网络场景
可视化 SFTP文件全生命周期管理远程文件树浏览、在线文本编辑器(代码 / 配置实时修改)、文件上传 / 下载、权限控制
Agentic Ops(AI 运维)自然语言运维助手支持绑定自定义大模型(OpenAI、DeepSeek、SiliconFlow 等),理解自然语言需求并自动转换为运维指令
审批闸门(Approval Gate)高危操作(如 rm -rf、配置修改、服务重启)触发阻断并推送到前端界面,由人类工程师人工确认后方可继续执行
上下文绑定Agent 能自动识别当前正在操作的 SSH 会话与工作目录,实现「在当前终端上下文执行工具」
跨平台交付Web & 桌面原生客户端采用 Tauri 2(Rust) 替代传统 Electron,极低内存与 CPU 占用;搭配 Go 语言编写的本地 Sidecar 零依赖运行
企业级安全凭据与密钥安全存储SSH 密码与私钥使用 AES-256-GCM 加密存储,本地凭据自动对接 macOS Keychain / Windows Credential Manager

🛠️ 二、全栈技术栈选型

                       ┌──────────────────────────────────────────┐
                       │           React + Vite + xterm.js        │
                       │    (Web Frontend / Tauri Desktop UI)     │
                       └────────────────────┬─────────────────────┘
                                            │ HTTP / WebSocket (Port 3001 or Local Port)
                       ┌────────────────────▼─────────────────────┐
                       │           Go 1.22+ API / WS Server       │
                       │        (chi / gorilla/ws / pkg/sftp)     │
                       └───────────┬───────────────────┬──────────┘
                                   │                   │
                     ┌─────────────▼──────┐     ┌──────▼────────────────┐
                     │ LLM Provider Engine│     │  ssh.Client / Session │
                     │ (OpenAI / DeepSeek)│     │  golang.org/x/crypto  │
                     └────────────────────┘     └───────────────────────┘
  • 前端(Frontend):React 18 + TypeScript + Vite + Tailwind CSS,xterm.js(终端)、Monaco / Lucide(编辑器与图标)
  • 后端(Backend):Go 1.22+,go-chi/chi(轻量 HTTP 路由)、gorilla/websocket(双工通信)、pkg/sftp(SFTP 实现)
  • 数据库:GORM 驱动,原生支持 MySQL / PostgreSQL / CGO-Free SQLite,通过 DATABASE_URL 单环境变量零配置无缝切换
  • 桌面端(Desktop):Tauri 2(Rust)+ 本地 Go Sidecar(ops-local
  • 密码学与安全golang.org/x/crypto/ssh、AES-256-GCM 凭据加密

🔬 三、核心实现原理深度剖析

1. Web SSH 与 Web PTY 实时流传输原理

传统终端交互依赖本地 TTY/PTY,而 Ops 将其搬到了 Web 端,核心架构如下:

[Browser: xterm.js] ◄──(WebSocket Json: term-data / term-resize)──► [Go backend: ws.go] ◄──(io.Pipe / pty)──► [Remote Server: ssh.Session]
  1. 协议转换层(server/api/ws.go:前端用 xterm.js 捕捉用户的每一个按键输入,通过 WebSocket 封装为 JSON 消息(如 {"type": "term-data", "data": "ls\n"})发送给后端;后端经 gorilla/websocket 接收后,写入 Go ssh.Session 提供的 stdin 写入流。
  2. 远程 PTY 分配(server/ssh/manager.go:后端调用 golang.org/x/crypto/sshsession.RequestPty("xterm-256color", rows, cols, modes) 申请伪终端,并建立异步 Goroutine 轮询读取 ssh.Sessionstdout / stderr 数据流,以 term-data 消息实时推送到前端渲染。
  3. 窗口动态 Resize:前端监听浏览器窗口或终端面板尺寸变化,发送 term-resize 消息;后端调用 session.WindowChange(rows, cols) 实时更新远程 PTY 的行高与列宽,确保 Vim 等全屏 CLI 工具显示不乱码。

2. 审批闸门机制:Agentic Ops 的安全性设计

传统 AI 运维中,直接让 LLM 获得命令行权限极具风险(误删库、乱改配置)。Ops 设计了 Approval-Gated Tool Calling(带审批阻断机制的工具调用流程)

 用户发送提示词 "帮我排查并清理磁盘"
         │
         ▼
 ┌────────────────┐
 │ LLM (DeepSeek) │ 识别出需要调用 run_ssh_command("rm -rf /tmp/cache")
 └───────┬────────┘
         │  Tool Call 请求
         ▼
 ┌────────────────────────────────────────────────────────┐
 │ 后端工具策略引擎 (agent_tool_policy.go & execution.go)  │
 └───────┬────────────────────────────────────────────────┘
         │ 命中危险指令匹配规则 (Block / Require Approval)
         ├───────────────────────────────┐
         │ (危险/写入类操作)               │ (读操作/只读指令)
         ▼                               ▼
 ┌──────────────────────┐     ┌──────────────────────┐
 │ 挂起执行,生成审批单   │     │  自动批准,直接在     │
 │ 推送前端等待人类确认  │     │  当前 SSH 会话中执行 │
 └───────┬──────────────┘     └──────────────────────┘
         │ 用户在 UI 点击 "Approve"
         ▼
 ┌───────────────────────────┐
 │ 执行工具并把终端输出喂回   │
 │ LLM 产生下一步决策        │
 └───────────────────────────┘

关键技术点

  • 会话上下文绑定:用户在 UI 选中某台服务器并打开 Agent 窗口时,Agent 自动关联对应的 SessionID。Agent 发起的 run_ssh_commandread_ssh_file 等操作全部在真实的远程 SSH 会话通道中安全执行。
  • 规则分类器(classifyRunSSHCommand
    • Safe(自动执行):如 lscatdf -hsystemctl status
    • Requires Approval(需要人工确认):如 systemctl restartcpmvsed
    • Blocked(禁止执行):高危危险指令或注入行为

3. Tauri 2 + Go Sidecar 跨平台原生桌面端架构

不同于 Electron 动辄 150MB+ 的打包体积与上百兆的内存占用,Ops 采用 Tauri 2 + 嵌入式 Go Sidecar(ops-local 模式:

  1. 独立与轻量化:桌面前端位于 applications/desktop-ui,构建产物由 Tauri 渲染(macOS WebKit 或 Windows WebView2);后端通过 Go 编译为单文件二进制 ops-local,作为 Tauri 的 Sidecar 进程启动。
  2. 零信任通信机制ops-local 本地启动时绑定随机 Loopback 端口(如 127.0.0.1:54321),并生成仅限当次启动有效的临时 Bridge Token;Tauri 客户端通过 IPC 获知该 Token,后续所有 REST/WS 请求均带 Token 认证,防止本地恶意软件扫描端口非法入侵。
  3. 系统级凭据保护:桌面端的 AES 加密 Master Key 优先存储在系统原生安全凭据库(macOS Keychain / Windows Credential Manager)中,实现极高防护等级。

4. 零依赖多数据库兼容层与动态迁移

Ops 实现了完全解耦的数据库与存储层架构:

  • CGO-Free 零依赖:SQLite 驱动选用纯 Go 实现的 modernc.org/sqlite,无需安装 C 编译器(GCC/Clang)即可直接 go build 交叉编译。
  • 单环境变量 DATABASE_URL:通过判断 URL Scheme 自动识别并切换到对应的数据库驱动:
    • sqlite://./data/ops.db → 本地开发与轻量级部署
    • mysql://user:pass@tcp(127.0.0.1:3306)/ops → 团队 / 企业级生产部署
    • postgres://user:pass@127.0.0.1:5432/ops → Postgres 部署
  • 动态 AutoMigrate:服务启动时通过 GORM 自动补全表结构与索引,无需手动执行复杂的 SQL 建表脚本。

📂 四、代码库目录结构导航

web_ide/
├── web/                     # 网页端 React 源码
│   └── src/
│       ├── apps/            # SSH 终端 (SSHClient.tsx)、Agent 浮窗 (AgentDrawer.tsx)
│       └── features/        # 主机资产 (hosts)、凭据 (credentials)、审计日志 (connection-logs)
├── server/                  # Go 后端核心逻辑
│   ├── api/                 # REST 路由 (routes.go)、WebSocket 处理 (ws.go)、Agent 引擎与审批 (agent_tool_*.go)
│   ├── ssh/                 # SSH 会话池 (manager.go)、SFTP 文件管理 (sftp.go)
│   ├── db/                  # GORM 数据模型与 DB 驱动连接 (models.go, db.go)
│   ├── security/            # JWT 校验与 AES-256-GCM 秘钥加解密
│   └── cmd/ops-local/       # 桌面端 Go Sidecar 独立入口
├── applications/            # Tauri 2 原生桌面端源码
│   ├── desktop-ui/          # 桌面端轻量前端
│   └── src-tauri/           # Tauri Rust 配置文件与构建脚本
└── ops.sh                   # 统一任务执行脚本 (dev | build | test)

🎯 五、总结与展望

Ops(OpsPilot) 展示了现代 Web 技术与 AI 运维结合的最佳实践:

  1. 它不仅是性能卓越、外观现代的 Web SSH / SFTP 客户端
  2. 更是 Agentic AI 在真实运维场景落地的硬核实验——通过严格的「人类在环(Human-in-the-loop)审批闸门」,在 AI 生产力与系统安全性之间取得了平衡;
  3. 借助 Tauri 2 与 Go 的黄金组合,完美兼顾了 Web 部署的便捷性与桌面原生应用的轻量高效。

AI 能做的远不止「帮你写代码」——当工具调用型 Agent 与「人在环」审批机制相遇,AI 运维从概念走向生产,Ops 正在用代码给出它的答案。