4.5 KiB
4.5 KiB
VPS-Commander 详细技术规格与开发实施方案 (v1.1.0)
一、 系统架构角色划分
整个系统划分为两个独立二进制产物(单一代码库仓库编译):
vps-commander-hub(中央网关 + 控制面板):- 部署在有公网域名或反代的主机上(当前主力机
wjyhk)。 - 监听端口:
127.0.0.1:9521(由 Lucky 负责 TLS 证书卸载与反代)。 - 暴露端点:
- 面向 ChatGPT Actions:
/api/v1/*(Bearer Token 鉴权) - 面向 Agent 长连接:
/agent/ws(Cluster Secret 握手) - 面向用户极简管理面板:
/及/static/*(Go embed 静态资源,支持密码登录/Cookie鉴权) - 描述文件:
/openapi.json
- 面向 ChatGPT Actions:
- 本身内置 Local Executor(直接代表本地主力机,设备名:
local或自定义主机名)。
- 部署在有公网域名或反代的主机上(当前主力机
vps-commander-agent(节点轻量客户端):- 部署在其他受管节点(如
hwsg等)。 - 主动向 Hub 发起安全 WebSocket 连接(支持断线指数退避重连)。
- 纯受控执行器,只响应 Hub 下发指令,不开放任何公网入站端口(彻底规避防火墙/NAT问题)。
- 部署在其他受管节点(如
二、 协议设计 (RPC over WebSocket)
2.1 握手与注册 (Handshake)
Agent 连接 URL: wss://hub.domain.com/agent/ws?device_name=hwsg
- Hub 校验通过后:
- 发送握手成功包:
{"event": "registered", "device": "hwsg", "heartbeat_interval": 30} - 将该连接注入
DeviceManager,状态标为online。
- 发送握手成功包:
2.2 心跳 (Ping/Pong)
- 每 30 秒由 Hub 发送
{"event": "ping", "ts": 1727049600}。 - Agent 回复
{"event": "pong", "ts": 1727049600}。连续 2 次无响应标记为offline。
2.3 命令下发与响应 (Request-Response)
- Hub 下发:
{ "id": "task_6b7a8c9d", "action": "exec", "payload": { "command": "free -h", "workdir": "/root", "timeout": 30 } } - Agent 执行完返回:
{ "id": "task_6b7a8c9d", "status": "success", "exit_code": 0, "stdout": "...", "stderr": "", "duration_ms": 45 }
三、 ChatGPT Actions (OpenAPI 3.1) 接口定义
完整的 openapi.json 规范定义了以下 4 个原子能力:
list_devices:GET /api/v1/devices- 返回受管设备名、IP、状态(online/offline)、最后心跳。
exec_command:POST /api/v1/exec- 参数:
device(默认: "local"),command,workdir,timeout。
read_file:POST /api/v1/file/read- 参数:
device,path,offset,limit。
write_file:POST /api/v1/file/write- 参数:
device,path,content。
四、 Hub Web 控制面板功能规范
4.1 技术实现
- 单二进制静态内嵌:基于 Go
embed.FS打包 HTML5 + TailwindCSS + Vanilla JS。 - 零外部 npm/node 依赖,开箱即用。
4.2 功能矩阵
- 设备看板 (Devices Dashboard):
- 节点列表展示(名称、IP、状态、架构/系统版本、最后活跃时间)。
- 一键生成 Agent 安装注册命令(带 Token 参数)。
- 手动注销/踢出无效节点。
- ChatGPT Actions 向导 (Actions Guide):
- 动态渲染
openapi.json并提供一键复制。 - API Key 凭据生成、轮换与撤销。
- 预设 System Prompt 最佳实践一键复制。
- 动态渲染
- 安全审计追踪 (Audit Trails):
- 实时日志流水:时间戳、来源 IP、目标节点、操作类型、执行命令、执行耗时、退出状态。
- 支持日志按设备名、时间区间筛选。
- 快速网页终端 (Quick Console):
- 应急测试控制台,免切 ChatGPT 直接在 Web 端选择节点跑指令验证联通性。
五、 存储与安全审计 (SQLite)
- 数据库文件:
data/commander.db - 数据表结构:
devices:记录设备名、备注、添加时间、密钥 Hash。audit_logs:id,timestamp,caller_ip,device,action,command,exit_code,duration_ms,error_msg- 确保在 ChatGPT 里执行的所有高危操作均可追溯。
六、 开发实施里程碑 (Milestones)
- M1: 基础骨架与单机执行(完成本地 Local Executor + Gin API + Bearer 鉴权 +
/openapi.json) - M2: Agent WebSocket 协议与多节点分发(完成 Agent 注册、心跳保活、Hub 路由转发)
- M3: 审计日志与嵌入式 Web 管理页(完成前端内嵌、看板交互、命令历史审计与快速控制台)
- M4: 本机 Lucky 证书反代与 ChatGPT 联调上线