一、WebSocket 在 AI 智能体中的核心作用

一句话总结:WebSocket 是 AI 智能体与外部世界实时交互的 “神经通路”。

它解决 AI 智能体 3 个致命问题:

  1. 服务端 → 客户端主动推送AI 思考、执行、报错、进度都要实时推给前端 / 控制端,HTTP 做不到。
  2. 长连接、低延迟、双向通信智能体控制鼠标、键盘、浏览器、手机,必须毫秒级指令下发
  3. 持续会话状态智能体执行多步任务(打开 APP→搜索→点击→截图),必须保持连接不断。

所以:凡是需要 远程“实时控制 + 实时反馈” 的 AI 智能体,一定离不开 WebSocket。


二、AI 智能体中最典型的使用场景(全部是实战)

1)远程控制本地应用 / 浏览器

  • AI 决策 → WebSocket → 下发指令
    • 启动浏览器
    • 鼠标移动 / 点击
    • 键盘输入
    • 窗口操作
  • 执行结果 ← WebSocket ← 本地执行器返回
    • 截图
    • 页面内容
    • 执行成功 / 失败

架构:AI 模型 → 指令解析 → Gateway(WebSocket 服务) → 本地执行器

2)AI 思考过程实时流式输出

  • 大模型逐字返回思考过程
  • 不需要前端轮询
  • 体验像:豆包、ChatGPT 流式打字

3)多设备协同智能体

  • PC ↔ WebSocket ↔ 手机
  • PC ↔ WebSocket ↔ 服务器
  • 手机 ↔ WebSocket ↔ 浏览器

典型:手机控制电脑、电脑反向控制手机、跨设备 AI 任务链。

4)AI Agent 状态实时同步

  • 任务开始 / 进行中 / 完成 / 失败
  • CPU / 内存占用
  • 当前屏幕截图
  • 日志流推送

5)插件 / 工具实时调用

AI 调用外部能力:

  • 搜索
  • 爬虫
  • 文件读写
  • 数据库操作
  • 硬件控制

全部通过 WebSocket 双向指令完成。


三、WebSocket 在 AI 智能体里的标准用法(架构 + 协议 + 代码)

标准三层架构(所有 AI 智能体通用)

  1. AI 决策层(大模型、FunctionCalling)
  2. WebSocket Gateway(指令路由、权限、转发)
  3. 执行端(浏览器、手机、PC 应用、硬件)

标准指令格式(JSON 帧)

所有智能体通用,你可以直接用:

json

{
  "id": "uuid-123",
  "type": "exec",        // exec / result / log / ping / error
  "action": "browser.click",
  "params": {
    "x": 100,
    "y": 200
  },
  "timestamp": 1741666000000
}

type 说明:

  • ping 心跳
  • exec 指令下发
  • result 执行结果
  • log 日志
  • error 异常

四、真实可运行代码示例(Go + JS)

1)AI 智能体网关(WebSocket 服务端,Go)

负责:

  • 接收 AI 指令
  • 转发给执行端
  • 回收执行结果
  • 心跳保活

go

运行

package main

import (
	"github.com/gorilla/websocket"
	"net/http"
	"sync"
)

var upgrader = websocket.Upgrader{CheckOrigin: func(r *http.Request) bool { return true }}
var clientMap = make(map[*websocket.Conn]bool)
var mu sync.Mutex

func main() {
	http.HandleFunc("/ws", wsHandler)
	http.ListenAndServe(":18789", nil) // OpenClaw 默认端口
}

func wsHandler(w http.ResponseWriter, r *http.Request) {
	conn, _ := upgrader.Upgrade(w, r, nil)
	defer conn.Close()

	mu.Lock()
	clientMap[conn] = true
	mu.Unlock()

	// 循环读取指令(AI → 执行端)
	for {
		_, msg, _ := conn.ReadMessage()
		// 收到指令 → 转发给所有执行端
		broadcast(msg)
	}
}

// 广播指令
func broadcast(msg []byte) {
	mu.Lock()
	defer mu.Unlock()
	for c := range clientMap {
		_ = c.WriteMessage(websocket.TextMessage, msg)
	}
}

2)执行端(前端 / PC 控制器)

javascript

运行

const ws = new WebSocket("ws://127.0.0.1:18789/ws");

// AI 下发指令
ws.onmessage = (e) => {
  const cmd = JSON.parse(e.data);

  if (cmd.type === "exec") {
    if (cmd.action === "browser.click") {
      // 执行点击
      simulateClick(cmd.params.x, cmd.params.y);
    } else if (cmd.action === "browser.navigate") {
      window.location.href = cmd.params.url;
    }

    // 执行结果回传 AI
    ws.send(JSON.stringify({
      id: cmd.id,
      type: "result",
      success: true
    }));
  }
};

// 心跳
setInterval(() => {
  ws.send(JSON.stringify({ type: "ping" }));
}, 30000);

3)AI 智能体调用端(发送指令)

javascript

运行

// AI 思考后下发指令
function aiSendCommand(action, params) {
  ws.send(JSON.stringify({
    id: crypto.randomUUID(),
    type: "exec",
    action: action,
    params: params
  }));
}

// AI 让浏览器访问网址
aiSendCommand("browser.navigate", { url: "https://www.baidu.com" });

五、为什么 AI 智能体必须用 WebSocket?(关键对比)

HTTP

  • 被动
  • 客户端主动拉
  • 无法实时推送
  • 不适合控制

WebSocket

  • 全双工
  • 服务端可主动推送
  • 低延迟
  • 长连接不断
  • 适合控制、实时、流式、多步任务

结论:AI 智能体 = 大脑 + 神经(WebSocket) + 四肢(执行器)


六、我可以给你一套最精简的落地总结

你要做 OpenClaw 这类智能体,只需要记住:

  1. WebSocket 是指令通道
  2. 帧格式用 JSON
  3. 指令结构:type + action + params
  4. 架构:
    • AI → WebSocket Gateway → 执行端
  5. 最常用动作:
    • 启动应用
    • 鼠标点击
    • 键盘输入
    • 浏览器导航
    • 截图返回
  6. 必须加:心跳 + 重连 + 权限验证
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐