中国版的OpenClaw--OpenOcta(八爪鱼)为运维人打造的 7×24h 数字员工

0 阅读11分钟

OpenOcta(八爪鱼) ,中国版的OpenClaw、国产开源智能体,专为运维而生,旨在为每一位运维人打造一批7*24h工作的数字员工。

区别于OpenClaw的Node.js开发语言,OpenOcta 采用 Go 语言完全重写后端,更轻、更快、更安全,安装部署只需一条命令、无需任何依赖。采用Go+ 内嵌前端的轻量化架构,原生适配无桌面服务器环境,通过 AI Agent 能力为运维团队提供 7*24 小时智能化运维支持,解放运维生产力。

一、现象级开源项目:OpenOcta 是什么?

image.png 2026 年初,国内开源社区迎来了一款重磅产品 —— OpenOcta(八爪鱼) 。这是国内首款专为运维场景深度优化的开源 AI 智能体,被业界称为"中国版 OpenClaw"。

但与 OpenClaw 的通用型设计不同,OpenOcta 从诞生之初就瞄准了运维、可观测性、自动化运维这三大核心场景,旨在为每一位运维工程师配备一批 7×24 小时不间断工作的数字员工

🎯 核心定位

维度OpenClawOpenOcta(八爪鱼)
目标用户通用开发者、个人用户运维工程师、SRE、DevOps 团队
核心场景个人助理、自动化办公服务器运维、监控告警、故障自愈
架构设计Node.js + 多进程Go 语言单二进制 + 内嵌前端
运行环境需要桌面环境原生支持无桌面服务器
部署方式复杂依赖安装单一二进制,一键启动

🔥 为什么选择 Go 语言重构?

OpenOcta 团队基于 OpenClaw 的 Gateway 通信协议与 Control UI 进行了全量重写

  1. 单二进制文件:无需 Node.js 运行时,单个可执行文件即可运行
  2. 内嵌前端:Web UI 直接编译进二进制,无需单独部署前端服务
  3. 无桌面依赖:原生兼容无桌面 Linux 服务器,完美适配云服务器场景
  4. 性能提升:Go 的并发模型比 Node.js 更适合高并发运维任务处理

二、核心架构解析:为运维而生的设计哲学

2.1 一体化轻量化架构

┌─────────────────────────────────────────┐
│         OpenOcta Single Binary           │
│  ┌─────────────┐    ┌───────────────┐   │
│  │  Go Backend │◄──►│ Embedded Web  │   │
│  │  (API/WS)   │    │    Frontend   │   │
│  └──────┬──────┘    └───────────────┘   │
│         │                               │
│  ┌──────┴──────┐    ┌───────────────┐   │
│  │  AI Agent   │    │  Ops Skills   │   │
│  │   Engine    │    │   (Built-in)  │   │
│  └─────────────┘    └───────────────┘   │
└─────────────────────────────────────────┘
           │
           ▼
┌─────────────────────────────────────────┐
│           External Systems              │
│  Zabbix │ Prometheus │ Grafana │ K8s   │
│  Docker │  Jenkins   │  GitLab │ CMDB  │
└─────────────────────────────────────────┘

2.2 专为运维设计的核心能力

能力模块功能描述典型应用场景
智能告警分析自动解析告警内容,关联历史事件,生成处置建议P0 故障 30 秒响应
自动化巡检定时执行巡检脚本,生成可视化报告每日 200+ 台服务器健康检查
故障自愈基于规则引擎自动执行修复操作磁盘满自动清理、服务宕机自动重启
变更辅助审核变更方案,预测风险点,生成回滚策略发布窗口风险评估
知识问答基于内部运维知识库的智能问答新人上手、故障排查指导

三、安装部署指南:3 分钟打造你的数字员工

3.1 环境准备

系统要求:

  • Linux: CentOS 7+/Ubuntu 18.04+/Debian 10+
  • Windows: Windows 10/Server 2016+
  • macOS: 11.0+
  • 架构: x86_64 / ARM64

依赖:

  • 无需 Node.js、无需 Python、无需 Docker
  • 仅需一个可执行文件(约 50-80MB)

3.2 一键安装(推荐)

Linux/macOS:

# 使用官方安装脚本
curl -fsSLk https://116.62.136.121:10443/install.sh | bash

# 或手动下载最新版本
wget https://github.com/openocta/openocta/releases/latest/download/openocta-linux-amd64 -O openocta
chmod +x openocta
sudo mv openocta /usr/local/bin/

Windows:

# PowerShell 一键安装
iwr -useb https://www.openocta.ai/install.ps1 | iex

# 或手动下载
# 访问 https://github.com/openocta/openocta/releases

3.3 快速启动

openocta gateway run

4. 查看运行状态

openocta gateway status

启动后访问 http://127.0.0.1:18900 即可进入 Web 控制台。

四、实战案例:

mcp 接入prometheus为例,演示接入prometheus后对指标的NL自然语言问数,设置定时任务巡检,以及对告警的处理和推送等作业场景 OpenOcta 可以使用npx,docker,uv等方式启动mcp server,或者直接连接远程mcp server,以便Agent通过标准协议调用外部工具,比如Prometheus / ElasticSearch 等存储引擎。

OpenOcta 对外暴露三个webhook endpoint ,提供了一个alert告警端口,允许接入第三方的信息。

配置样例:

可以使用配置快速拉起该演示样例,注意替换对应的APIKey,appId,appSecret等配置内容

{
  "mcp": {
    "servers": {
      "prometheus_test": {
        "enabled": true,
        "command": "npx",
        "args": [
          "prometheus-mcp@latest",
          "stdio"
        ],
        "env": {
          "PROMETHEUS_URL": "http://192.168.50.59:9090"
        }
      }
    }
  },
  "env": {
    "vars": {
      "KIMI_API_KEY": "sk-......",
      "KIMI_BASE_URL": "https://api.kimi.com/coding/"
    }
  }
}   

01

启动OpeOcta进行对话

这里简单输入之后,可以看到已经开始调用工具进行查询指标,然后开始分析

图片

图片1080×582 22.4 KB

查询结果:

图片

图片1080×527 15.5 KB

02

设置定时任务巡检

配置定时任务,并推送消息到飞书消息渠道:

图片

图片1080×596 16.1 KB

点击定时任务 History → Open run chat 查看 对话过程

图片

图片1080×580 16.4 KB

查看飞书消息推送内容,由于飞书对于文本内的表格等内容限制,OpenOcta统一使用文本推送消息。

图片

图片1080×992 32.6 KB

03

配置Prometheus告警推送

由于Prometheus alert告警推送内容格式比较固定,可能缺乏对应的prompt,OpenOcta对外暴露了一个alert 的webhook endpoint ,允许直接推送告警信息。

3.1 配置Prometheus alert告警:

Prometheus Server 目录下创建:redis_alerts.yaml文件。这里配置内存,CPU,慢日志,三个常见告警规则

groups:
  - name: redis-alerts
    rules:
      # Redis 内存使用率 > 80%
      - alert: RedisMemoryHigh
        expr: redis_memory_used_bytes / redis_memory_max_bytes > 0.8
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "Redis memory usage is high on {{ $labels.instance }}"
          description: "Redis is using more than 80% of its max memory ({{ $value | humanizePercentage }})."

      # Redis CPU 使用过高(需 node_exporter 提供)
      - alert: RedisCPUHigh
        expr: rate(process_cpu_seconds_total{job="redis"}[5m]) * 100 > 80
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "High CPU usage by Redis on {{ $labels.instance }}"
          description: "Redis CPU usage is over 80% in the last 5 minutes."

      # Slowlog 条目数在过去5分钟内新增超过5条(需 exporter 支持)
      - alert: RedisSlowLogDetected
        expr: increase(redis_slowlog_length[5m]) > 5
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Redis slow queries detected on {{ $labels.instance }}"
          description: "More than 5 new slowlog entries in the last 5 minutes."

最终在prometheus server页面可以看到如下告警配置:

图片

图片1080×499 21 KB

3.2 配置Alert Manager 推送告警信息:

global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'redis-webhook'

receivers:
  - name: 'redis-webhook'
    webhook_configs:
      - url: 'http://192.168.50.230:18900/hooks/alert'  
        send_resolved: true

3.3 模拟告警

手动执行DEBUG SLEEP 1 ,制造SlowLog

图片

图片1080×669 15.5 KB

3.4 查看 OpenOcta 告警分析

新增了一个sessionKey包含alert的key,点击后,可以看到接收告警后,调用工具,查询指标的分析对话内容

图片

图片1080×465 19.4 KB

图片

图片1080×589 19 KB

04

OpenOcta配置告警消息渠道-飞书

Prometheus alert告警格式比较固定,无法在发送的时候进行修改,无法在发送到OpenOcta的时候携带额外的发送渠道,使用模型,以及think程度等内容,这里可能需要对告警内容处理一下。

4.1 告警内容预处理

这里提供一个简单的python脚本对prometheus告警预处理,处理后进行转发到OpenOcta的/hooks/agent  接口

import uuid
import requests
from flask import Flask, request, jsonify

app = Flask(__name__)

# 目标 Webhook 配置
TARGET_URL = "http://localhost:18900/hooks/agent"
# OpenOcta Gateway 的 Webhook Token
TOKEN = "9fbe5742732ad7762201408cf22a97c559efc8106e616318"

@app.route('/alert', methods=['POST'])
def handle_alert():
    # 获取 Prometheus 原始告警数据
    data = request.get_json()
    if not data:
        return jsonify({"error": "Invalid request data"}), 400
    
    # 构造 OpenOcta 接收的负载参数
    session_key = f"hook:email:msg-{str(uuid.uuid4())[:8]}"
    headers = {
        "Authorization": f"Bearer {TOKEN}",
        "Content-Type": "application/json"
    }
    payload = {
        "message": data,
        "name": "prometheus alert",
        "sessionKey": session_key,
        "wakeMode": "now",
        "deliver": True,
        "channel": "feishu",
        "to": "oc_eaea5e4fdfaxxxxxx",  # 飞书机器人会话ID
        "thinking": "low"
    }
    
    # 转发告警至 OpenOcta
    try:
        response = requests.post(TARGET_URL, json=payload, headers=headers, timeout=10)
        response.raise_for_status()
        return jsonify({"status": "success", "data": response.json()}), 200
    except Exception as e:
        return jsonify({"error": str(e)}), 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

4.2 查看告警分析和消息推送

触发告警后,查看接收到告警后的分析过程会话:

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘SVG namespace’ xmlns:xlink=‘XLink namespace’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

分析完后,同步信息到飞书:

![图片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘SVG namespace’ xmlns:xlink=‘XLink namespace’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

五、进阶玩法:打造你的专属运维智能体

5.1 自定义运维技能开发

OpenOcta 支持使用 Go 语言开发自定义技能插件:

// skills/disk_cleaner.go
package skills

import (
    "context"
    "fmt"
    "os/exec"
    "strings"
)

// DiskCleaner 磁盘清理技能
type DiskCleaner struct {
    Threshold int    // 磁盘使用率阈值
    Paths     []string // 要清理的路径
}

func (d *DiskCleaner) Name() string {
    return "disk-cleaner"
}

func (d *DiskCleaner) Execute(ctx context.Context, params map[string]interface{}) (string, error) {
    // 1. 获取当前磁盘使用率
    usage, err := d.getDiskUsage()
    if err != nil {
        return "", err
    }
    
    // 2. 如果超过阈值,执行清理
    if usage > d.Threshold {
        freed := 0
        for _, path := range d.Paths {
            size, _ := d.cleanPath(path)
            freed += size
        }
        return fmt.Sprintf("磁盘使用率 %d%%,已清理 %d MB", usage, freed), nil
    }
    
    return fmt.Sprintf("磁盘使用率 %d%%,无需清理", usage), nil
}

func (d *DiskCleaner) getDiskUsage() (int, error) {
    cmd := exec.Command("df", "-h", "/")
    output, err := cmd.Output()
    if err != nil {
        return 0, err
    }
    // 解析输出获取使用率...
    return 85, nil // 示例
}

func (d *DiskCleaner) cleanPath(path string) (int, error) {
    // 执行清理逻辑
    cmd := exec.Command("find", path, "-mtime", "+7", "-delete")
    cmd.Run()
    return 1024, nil // 返回释放的空间(MB)
}

5.2 与现有运维体系集成

# 与 CMDB 集成
integrations:
  cmdb:
    type: "nacos"  # 支持 nacos/consul/etcd
    server: "http://nacos:8848"
    
# 与告警平台集成
  alertmanager:
    webhook: "http://openocta:8080/webhook/alerts"
    
# 与工单系统集成
  jira:
    url: "https://jira.company.com"
    project: "OPS"

5.3 多智能体协作(Swarm)

# 配置多个专业智能体
agents:
  - name: "network-doctor"
    role: "网络专家"
    skills: ["ping", "traceroute", "tcpdump", "iptables"]
    
  - name: "db-guardian"
    role: "数据库专家"
    skills: ["mysql", "redis", "postgresql", "backup"]
    
  - name: "k8s-pilot"
    role: "Kubernetes 专家"
    skills: ["kubectl", "helm", "prometheus", "istio"]

# 主智能体协调任务
coordinator:
  - trigger: "database-connection-timeout"
    workflow:
      - assign: "network-doctor"
        task: "检查网络连通性"
        
      - assign: "db-guardian"
        task: "检查数据库状态"
        depends_on: "network-doctor.result == 'network-ok'"
        
      - assign: "k8s-pilot"
        task: "检查 Pod 资源限制"
        depends_on: "db-guardian.result == 'db-overloaded'"

六、性能优化与生产环境建议

6.1 高可用部署

# 使用 systemd 管理
sudo tee /etc/systemd/system/openocta.service > /dev/null <<EOF
[Unit]
Description=OpenOcta Ops Agent
After=network.target

[Service]
Type=simple
User=openocta
ExecStart=/usr/local/bin/openocta server
Restart=always
RestartSec=5
Environment="OPENAI_API_KEY=sk-xxx"
Environment="ZABBIX_PASSWORD=xxx"

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable openocta
sudo systemctl start openocta

6.2 安全加固

security:
  # 启用 HTTPS
  tls:
    cert: "/etc/openocta/server.crt"
    key: "/etc/openocta/server.key"
    
  # 访问控制
  auth:
    type: "ldap"  # 支持 ldap/oauth2/local
    ldap_url: "ldap://company.com:389"
    
  # 审计日志
  audit:
    enabled: true
    retention: "90d"
    storage: "/var/log/openocta/audit.log"

七、未来展望:AIOps 的终局形态

OpenOcta 团队公布的路线图 :

时间里程碑
2026 Q2发布 OpenOcta 2.0,支持多智能体协作(Swarm)
2026 Q3集成大模型微调能力,支持私有化模型部署
2026 Q4发布运维行业知识图谱,覆盖 100+ 常见故障场景
2027 Q1支持自然语言编排复杂运维工作流(NL2Workflow)

八、总结:为什么运维人需要 OpenOcta?

传统运维OpenOcta 赋能
7×24 小时轮班,人力成本高数字员工永不下班,人力释放到创新工作
故障响应靠经验,新人成长慢AI 辅助决策,知识沉淀为可复用的代码
告警风暴,疲于奔命智能压缩与根因分析,聚焦关键问题
变更风险难预测,故障频发变更前自动风险评估,事中实时监控
工具分散,数据孤岛统一智能体平台,打通全链路数据

OpenOcta 不仅仅是一个工具,它是运维工程师的"数字分身" —— 让每个人都能拥有一支 7×24 小时待命的专业运维团队。


🚀 立即开始

# 一键安装
curl -fsSL https://www.openocta.ai/install.sh | bash

# 启动你的第一个数字员工
openocta init
openocta server

# 访问 http://localhost:8080 开始配置

项目资源:


💡 互动话题: 你在运维工作中最希望自动化处理的场景是什么?欢迎在评论区分享,点赞最高的 3 位同学将获得《OpenOcta 企业级部署配置模板》+ 官方周边 T 恤!

如果这篇文章对你有帮助,请点个 👍 关注,持续追踪 AIOps 最新实战!