OpenClaw Gateway 服务:启动、停止、监控

OpenClaw Gateway 服务:启动、停止、监控

目 录

摘要

本文深入探讨 OpenClaw Gateway 服务的核心架构与运维实践。作为 OpenClaw 框架的中枢神经,Gateway 承担着消息路由、会话管理、安全认证等关键职责。文章从架构设计出发,详细解析启动配置参数、优雅停止策略、监控方案实现,并结合生产环境经验,提供故障排查指南与高可用部署最佳实践。通过本文,读者将全面掌握 Gateway 服务的运维技能,构建稳定可靠的 AI 助手基础设施。


1. 引言

在现代 AI 助手架构中,网关服务扮演着至关重要的角色。它不仅是系统对外的统一入口,更是内部各组件协调运转的核心枢纽。OpenClaw Gateway 正是这样一款专为 AI 助手场景设计的网关服务,它将多渠道消息接入、会话状态管理、安全认证、流量控制等功能集于一身,为开发者提供开箱即用的基础设施。

Gateway 服务的稳定性直接决定了整个 AI 助手系统的可用性。一个设计良好的网关,能够在高并发场景下保持稳定响应,在异常情况下优雅降级,在故障发生时快速恢复。本文将从实践角度出发,系统性地介绍 OpenClaw Gateway 的启动配置、停止策略、监控方案,帮助读者构建生产级的 AI 助手服务。


2. Gateway 架构概述

2.1 整体架构设计

OpenClaw Gateway 采用模块化的微服务架构设计,核心组件包括消息接收器、会话管理器、路由引擎、安全认证层和监控采集器。各组件之间通过定义良好的接口进行通信,既保证了系统的灵活性,又确保了组件的可替换性。

📊 监控层

🤖 内部服务

⚙️ Gateway 核心层

🌐 外部渠道

Telegram

飞书

Discord

微信

消息接收器

安全认证层

会话管理器

路由引擎

AI 引擎

技能系统

工具执行器

指标采集器

日志聚合

告警系统

从架构图可以看出,Gateway 处于系统的核心位置,所有外部消息都必须经过 Gateway 的处理后才能到达内部服务。这种设计带来了几个显著优势:

统一入口管理:所有渠道的消息通过统一接口接入,便于实施统一的认证、限流、日志等策略。

松耦合设计:外部渠道与内部服务解耦,新增渠道或修改服务逻辑互不影响。

可观测性:监控层独立部署,可全面采集系统运行指标,为故障排查提供数据支撑。

2.2 核心组件详解

2.2.1 消息接收器

消息接收器负责处理来自不同渠道的消息请求。它实现了多协议适配,支持 HTTP、WebSocket、gRPC 等多种通信协议。接收器将各渠道的原始消息格式统一转换为 OpenClaw 内部消息格式,屏蔽了渠道差异。

2.2.2 安全认证层

安全认证层实现了多层安全机制。首先是 Token 认证,每个请求必须携带有效的认证令牌;其次是签名验证,确保消息在传输过程中未被篡改;最后是权限校验,根据用户身份限制可访问的资源。

2.2.3 会话管理器

会话管理器维护着所有活跃会话的状态信息。它支持会话的创建、更新、查询和销毁操作,并实现了会话超时自动清理机制。会话数据可选择存储在内存、Redis 或数据库中,以适应不同规模的部署需求。

2.2.4 路由引擎

路由引擎是 Gateway 的决策中心。它根据消息类型、用户意图、技能配置等信息,将消息路由到正确的处理单元。路由引擎支持优先级配置、负载均衡和故障转移策略。

2.3 数据流转过程

技能系统AI引擎Gateway外部渠道用户技能系统AI引擎Gateway外部渠道用户alt[技能匹配成功][需要AI处理]发送消息Webhook 推送1. 消息解析2. 安全认证3. 会话查询/创建4. 路由决策调用技能处理器返回处理结果发送AI请求返回AI响应5. 响应格式化返回响应消息展示给用户


3. 启动配置详解

3.1 配置文件结构

OpenClaw Gateway 的配置采用 YAML 格式,配置文件通常位于 ~/.openclaw/config.yaml。配置项分为全局配置、Gateway 配置、模型配置、渠道配置等几个主要部分。

# OpenClaw Gateway 完整配置示例# 全局配置openclaw:# Gateway 服务配置gateway:port:18789# 服务监听端口host:"0.0.0.0"# 绑定地址,0.0.0.0 表示所有网卡auth_token:"your-secret-token"# 认证令牌(必填,建议32位以上)max_connections:1000# 最大并发连接数request_timeout:30000# 请求超时时间(毫秒)enable_https:false# 是否启用 HTTPSssl_cert:"/path/to/cert.pem"# SSL 证书路径ssl_key:"/path/to/key.pem"# SSL 私钥路径# 会话管理配置session:storage:"memory"# 存储类型:memory/redis/sqlitettl:3600# 会话超时时间(秒)max_sessions:10000# 最大会话数cleanup_interval:300# 清理间隔(秒)# 日志配置logging:level:"info"# 日志级别:debug/info/warn/errorformat:"json"# 日志格式:json/textoutput:"/var/log/openclaw/gateway.log"# 日志文件路径max_size:100# 单文件最大大小(MB)max_backups:10# 最大备份文件数max_age:30# 最大保留天数# 监控配置monitoring:enabled:true# 是否启用监控metrics_port:9090# 指标暴露端口health_check_path:"/health"# 健康检查路径prometheus:true# 是否启用 Prometheus 格式

上述配置文件展示了 Gateway 的核心配置项。gateway 部分定义了服务的基本参数,包括端口、认证令牌、连接限制等。session 部分配置会话存储策略,可根据部署规模选择合适的存储后端。logging 部分控制日志输出,生产环境建议使用 JSON 格式便于日志聚合。monitoring 部分开启监控指标暴露,支持 Prometheus 采集。

3.2 环境变量覆盖

除了配置文件,Gateway 还支持通过环境变量覆盖配置项。环境变量名采用 OPENCLAW_ 前缀,层级关系用双下划线连接。例如:

# 设置 Gateway 端口exportOPENCLAW_GATEWAY_PORT=8080# 设置认证令牌exportOPENCLAW_GATEWAY_AUTH_TOKEN="production-token-xxx"# 设置日志级别exportOPENCLAW_LOGGING_LEVEL=debug # 设置会话存储类型exportOPENCLAW_SESSION_STORAGE=redis 

环境变量覆盖机制在容器化部署场景中尤为实用。通过环境变量注入敏感配置(如认证令牌、数据库密码),可以避免将敏感信息写入配置文件,降低安全风险。

3.3 启动命令详解

OpenClaw 提供了 openclaw gateway 命令组来管理 Gateway 服务:

# 查看 Gateway 服务状态 openclaw gateway status # 前台启动 Gateway(调试用) openclaw gateway start # 后台启动 Gateway(生产环境推荐) openclaw gateway start --daemon# 使用指定配置文件启动 openclaw gateway start --config /path/to/config.yaml # 停止 Gateway 服务 openclaw gateway stop # 重启 Gateway 服务 openclaw gateway restart # 查看 Gateway 帮助信息 openclaw gateway --help

3.4 启动参数配置表

参数默认值说明推荐值
port18789服务监听端口生产环境建议使用 80/443
host0.0.0.0绑定地址内网部署可绑定内网 IP
auth_token-认证令牌32位以上随机字符串
max_connections1000最大并发连接根据服务器配置调整
request_timeout30000请求超时(ms)AI 场景建议 60s 以上
session.ttl3600会话超时(s)根据业务需求调整
logging.levelinfo日志级别生产环境 info,调试 debug

4. 停止策略(优雅关闭)

4.1 优雅关闭的重要性

在生产环境中,服务的停止操作绝非简单的进程终止。一个设计良好的停止策略需要考虑以下几个关键问题:

请求完整性:正在处理的请求不能被中断,必须等待其完成或超时。

资源释放:数据库连接、文件句柄、网络连接等资源需要正确释放,避免资源泄漏。

状态持久化:会话状态、缓存数据等需要持久化保存,确保服务重启后能恢复现场。

下游通知:需要通知下游服务即将下线,避免流量继续路由到已停止的实例。

4.2 Gateway 关闭流程

收到停止信号

停止接收新请求

等待现有请求完成

所有请求是否完成?

持久化会话状态

是否超时?

强制终止请求

释放资源连接

通知下游服务

关闭监控端口

写入关闭日志

进程退出

4.3 优雅关闭实现

OpenClaw Gateway 实现了完整的优雅关闭机制。当收到 SIGTERM 或 SIGINT 信号时,Gateway 会按照以下步骤执行关闭:

# Gateway 优雅关闭核心逻辑(伪代码示意)import signal import asyncio from typing import Set classGatewayServer:def__init__(self): self.active_requests: Set[asyncio.Task]=set() self.shutdown_event = asyncio.Event() self.graceful_timeout =30# 优雅关闭超时时间(秒)defsetup_signal_handlers(self):"""注册信号处理器""" loop = asyncio.get_event_loop()for sig in(signal.SIGTERM, signal.SIGINT): loop.add_signal_handler( sig,lambda: asyncio.create_task(self.graceful_shutdown()))asyncdefgraceful_shutdown(self):"""优雅关闭主流程""" self.logger.info("开始优雅关闭...")# 1. 停止接收新请求 self.server.close() self.logger.info("已停止接收新请求")# 2. 等待现有请求完成if self.active_requests: self.logger.info(f"等待 {len(self.active_requests)} 个请求完成...")try:await asyncio.wait_for( asyncio.gather(*self.active_requests, return_exceptions=True), timeout=self.graceful_timeout )except asyncio.TimeoutError: self.logger.warning("优雅关闭超时,强制终止剩余请求")# 3. 持久化会话状态await self.session_manager.persist_sessions() self.logger.info("会话状态已持久化")# 4. 释放资源await self.resource_pool.close_all() self.logger.info("资源已释放")# 5. 设置关闭事件 self.shutdown_event.set() self.logger.info("Gateway 已安全关闭")

上述代码展示了 Gateway 优雅关闭的核心逻辑。首先注册信号处理器,捕获 SIGTERM 和 SIGINT 信号。当收到停止信号时,依次执行:停止接收新请求、等待现有请求完成、持久化会话状态、释放资源连接。整个过程设置了超时保护,避免无限等待导致服务无法停止。

4.4 停止命令与超时配置

# 正常停止(优雅关闭) openclaw gateway stop # 强制停止(立即终止) openclaw gateway stop --force# 设置优雅关闭超时时间 openclaw gateway stop --timeout60# 停止并保存会话状态 openclaw gateway stop --save-session 

5. 监控方案

5.1 监控体系架构

完善的监控体系是保障服务稳定性的基石。OpenClaw Gateway 的监控方案包含三个层次:健康检查、指标采集、日志聚合。

🚨 告警

📊 可视化

💾 数据存储

📡 数据采集

健康检查端点

Prometheus 指标

日志输出

Prometheus

Loki/ES

Grafana

AlertManager

5.2 健康检查

Gateway 提供了标准的健康检查端点,用于负载均衡器和服务编排系统(如 Kubernetes)探测服务状态。

# 健康检查端点 GET /health # 返回示例{"status":"healthy", "timestamp":"2024-01-15T10:30:00Z", "version":"1.2.0", "uptime":86400, "components":{"database":"healthy", "redis":"healthy", "ai_engine":"healthy"}}# 就绪检查端点(Kubernetes Readiness Probe) GET /ready # 存活检查端点(Kubernetes Liveness Probe) GET /live 

健康检查返回的信息包括服务状态、启动时间、运行时长以及各组件的健康状态。负载均衡器可以根据 /health/ready 的返回结果决定是否将流量路由到该实例。

5.3 Prometheus 指标

Gateway 内置了丰富的 Prometheus 指标,涵盖请求量、延迟、错误率、资源使用等维度。

# Prometheus 抓取配置示例scrape_configs:-job_name:'openclaw-gateway'static_configs:-targets:['localhost:9090']metrics_path:'/metrics'scrape_interval: 15s 

核心指标列表

指标名称类型说明
openclaw_requests_totalCounter请求总数
openclaw_request_duration_secondsHistogram请求延迟分布
openclaw_active_sessionsGauge活跃会话数
openclaw_errors_totalCounter错误总数
openclaw_webhook_latency_secondsHistogramWebhook 延迟
openclaw_ai_request_duration_secondsHistogramAI 请求延迟
openclaw_connections_currentGauge当前连接数

5.4 Grafana 监控面板

配合 Grafana,可以构建直观的监控面板。以下是一个典型的 Gateway 监控面板配置:

{"dashboard":{"title":"OpenClaw Gateway 监控","panels":[{"title":"请求 QPS","type":"graph","targets":[{"expr":"rate(openclaw_requests_total[5m])","legendFormat":"{{method}} - {{channel}}"}]},{"title":"请求延迟 P99","type":"stat","targets":[{"expr":"histogram_quantile(0.99, rate(openclaw_request_duration_seconds_bucket[5m]))"}]},{"title":"错误率","type":"gauge","targets":[{"expr":"rate(openclaw_errors_total[5m]) / rate(openclaw_requests_total[5m]) * 100"}]}]}}

6. 故障排查

6.1 常见问题诊断

在生产环境中,Gateway 可能遇到各种问题。本节整理了常见问题的诊断方法和解决方案。

问题一:服务无法启动

症状:执行 openclaw gateway start 后服务立即退出。

诊断步骤

# 1. 查看详细日志 openclaw gateway start --log-level debug # 2. 检查端口占用lsof-i :18789 # 3. 检查配置文件语法 openclaw gateway config validate # 4. 检查权限ls-la ~/.openclaw/ 

常见原因及解决方案

原因解决方案
端口被占用更换端口或停止占用进程
配置文件语法错误使用 config validate 检查
权限不足检查配置目录权限
依赖服务未启动先启动 Redis/数据库等依赖
问题二:请求超时

症状:客户端请求长时间无响应,最终返回超时错误。

诊断步骤

# 1. 检查 Gateway 日志tail-f /var/log/openclaw/gateway.log |greptimeout# 2. 检查 AI 引擎状态curl http://localhost:18789/health # 3. 检查网络连通性ping your-ai-service.com # 4. 查看当前连接数netstat-an|grep18789|wc-l

解决方案

  1. 增加请求超时时间配置
  2. 检查 AI 服务响应时间
  3. 优化网络链路
  4. 增加服务器资源
问题三:内存持续增长

症状:Gateway 进程内存占用持续增长,最终触发 OOM。

诊断步骤

# 1. 监控内存使用watch-n1'ps aux | grep openclaw'# 2. 分析内存分布curl http://localhost:9090/metrics |grep memory # 3. 检查会话数量curl http://localhost:18789/admin/sessions/count # 4. 开启 pprof 分析 openclaw gateway start --enable-pprof 

解决方案

  1. 减小会话 TTL
  2. 降低最大会话数限制
  3. 启用会话持久化(减少内存占用)
  4. 检查是否存在内存泄漏

6.2 日志分析技巧

Gateway 日志采用结构化格式,便于使用日志分析工具进行处理。

# 查看最近错误日志cat gateway.log | jq 'select(.level=="error")'# 统计各渠道请求量cat gateway.log | jq -r'.channel'|sort|uniq-c# 分析慢请求(超过 5 秒)cat gateway.log | jq 'select(.duration > 5000)'# 按时间范围过滤cat gateway.log | jq 'select(.timestamp >= "2024-01-15T10:00:00" and .timestamp < "2024-01-15T11:00:00")'

7. 高可用部署

7.1 多实例部署架构

生产环境通常需要部署多个 Gateway 实例,通过负载均衡器分发流量,实现高可用和水平扩展。

🤖 AI 服务

💾 共享存储

🔄 Gateway 集群

⚖️ 负载均衡层

👥 客户端

Telegram 用户

飞书用户

Discord 用户

Nginx/HAProxy

Gateway-1

Gateway-2

Gateway-3

Redis 集群

数据库

AI 引擎

7.2 负载均衡配置

使用 Nginx 作为负载均衡器的配置示例:

# Nginx 负载均衡配置 upstream openclaw_gateway { # 使用最少连接算法 least_conn; # Gateway 实例列表 server 192.168.1.101:18789 weight=1 max_fails=3 fail_timeout=30s; server 192.168.1.102:18789 weight=1 max_fails=3 fail_timeout=30s; server 192.168.1.103:18789 weight=1 max_fails=3 fail_timeout=30s; # 健康检查(需要 nginx-plus 或 tengine) check interval=3000 rise=2 fall=3 timeout=1000 type=http; check_http_send "GET /health HTTP/1.0\r\n\r\n"; check_http_expect_alive http_2xx http_3xx; } server { listen 80; server_name gateway.openclaw.ai; # 请求体大小限制 client_max_body_size 10m; # 超时配置 proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; location / { proxy_pass http://openclaw_gateway; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 

上述 Nginx 配置实现了 Gateway 集群的负载均衡。关键配置说明:least_conn 指令使用最少连接算法,将请求分发到当前连接数最少的实例;max_failsfail_timeout 配置实例健康检查,连续 3 次失败后暂时剔除;check 指令配置主动健康检查,定期探测 /health 端点。

7.3 会话共享方案

多实例部署时,会话状态需要共享存储。Gateway 支持将会话存储在 Redis 中:

# 会话 Redis 存储配置session:storage:"redis"redis:host:"redis-cluster.openclaw.internal"port:6379password:"${REDIS_PASSWORD}"db:0pool_size:50key_prefix:"openclaw:session:"ttl:3600

7.4 高可用部署检查清单

检查项要求验证方法
多实例部署至少 2 个实例openclaw gateway status
负载均衡配置健康检查手动停止实例观察流量切换
会话共享使用 Redis 存储重启实例后会话保持
数据库高可用主从/集群部署模拟数据库故障
监控告警配置关键指标告警触发告警测试
日志聚合集中存储日志检查日志平台
备份策略定期备份配置和数据恢复演练

8. 生产环境最佳实践

8.1 安全加固

生产环境的 Gateway 必须进行安全加固,防止未授权访问和攻击。

# 安全配置示例security:# 认证配置auth:enabled:truetoken_rotation_days:30# 令牌轮换周期# 限流配置rate_limit:enabled:truerequests_per_minute:100burst:20# IP 白名单ip_whitelist:enabled:trueallowed:-"10.0.0.0/8"-"172.16.0.0/12"# HTTPS 配置tls:enabled:truecert_path:"/etc/ssl/certs/gateway.pem"key_path:"/etc/ssl/private/gateway.key"min_version:"TLS1.2"

8.2 性能优化

# 性能优化配置performance:# 连接池配置connection_pool:max_idle:100max_open:200idle_timeout:300# 缓存配置cache:enabled:truetype:"redis"ttl:300# 并发配置concurrency:max_workers:100queue_size:1000

8.3 运维建议

部署规范

  • 使用配置管理工具(Ansible/Terraform)管理配置
  • 配置文件版本控制,变更可追溯
  • 使用容器化部署,保证环境一致性

监控规范

  • 设置关键指标告警阈值
  • 配置多级告警渠道(邮件/短信/IM)
  • 定期检查监控面板

备份规范

  • 定期备份配置文件和会话数据
  • 定期进行恢复演练
  • 异地备份关键数据

9. 总结

本文系统性地介绍了 OpenClaw Gateway 服务的启动、停止和监控实践。从架构设计到配置详解,从优雅关闭到监控方案,从故障排查到高可用部署,我们全面覆盖了 Gateway 运维的各个环节。

核心要点回顾

  1. 架构设计:Gateway 采用模块化设计,消息接收器、安全认证层、会话管理器、路由引擎各司其职,通过清晰的接口协作,实现了高内聚低耦合的架构目标。
  2. 启动配置:配置文件采用 YAML 格式,支持环境变量覆盖。生产环境需要重点关注端口配置、认证令牌、会话存储、日志级别等参数的合理设置。
  3. 优雅关闭:Gateway 实现了完整的优雅关闭机制,包括停止接收新请求、等待现有请求完成、持久化会话状态、释放资源连接等步骤,确保服务停止过程平滑可控。
  4. 监控方案:通过健康检查端点、Prometheus 指标、日志聚合三层监控体系,实现了对 Gateway 运行状态的全面可观测性,为故障发现和排查提供了有力支撑。
  5. 高可用部署:多实例部署配合负载均衡器,会话共享使用 Redis 存储,构建了具备故障转移能力的高可用架构。

实践建议

  • 在部署前充分测试配置参数,确保符合业务需求
  • 建立完善的监控告警体系,做到问题早发现早处理
  • 定期进行故障演练,验证高可用方案的有效性
  • 持续关注性能指标,及时优化瓶颈点

Gateway 作为 OpenClaw 的核心组件,其稳定性直接影响整个 AI 助手系统的可用性。希望本文能帮助读者建立起对 Gateway 运维的全面认识,在实际工作中构建稳定可靠的服务基础设施。


参考资料

Read more

【前端】Vue 组件开发中的枚举值验证:从一个Type属性错误说起

【前端】Vue 组件开发中的枚举值验证:从一个Type属性错误说起

🌹欢迎来到《小5讲堂》🌹 🌹这是《小程序》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹 👨💻 作者简介 🏆 荣誉头衔:2024博客之星Top14 | ZEEKLOG博客专家 | 阿里云专家博主 🎤 经历:曾多次进行线下演讲,亦是 ZEEKLOG内容合伙人 以及 新星优秀导师 💡 信念:“帮助别人,成长自己!” 🚀 技术领域:深耕全栈,精通 .NET Core (C#)、Python、Java,熟悉主流数据库 🤝 欢迎交流:无论是基础概念还是进阶实战,都欢迎与我探讨! 目录 * 前言 * 解决过程 * 一、错误场景还原 * 1.1 错误发生的位置 * 1.2 常见的触发场景 * 二、深入理解 Vue

By Ne0inhk

Android WebRTC VAD 实战指南:从原理到避坑

快速体验 在开始今天关于 Android WebRTC VAD 实战指南:从原理到避坑 的探讨之前,我想先分享一个最近让我觉得很有意思的全栈技术挑战。 我们常说 AI 是未来,但作为开发者,如何将大模型(LLM)真正落地为一个低延迟、可交互的实时系统,而不仅仅是调个 API? 这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。 从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验 Android WebRTC VAD 实战指南:从原理到避坑 在语音通话或语音识别应用中,如何让设备"聪明&

By Ne0inhk
【踩坑记录】使用 Layui 框架时解决 Unity WebGL 渲染在 Tab 切换时黑屏问题

【踩坑记录】使用 Layui 框架时解决 Unity WebGL 渲染在 Tab 切换时黑屏问题

【踩坑记录】使用 Layui 框架时解决 Unity WebGL 渲染在 Tab 切换时黑屏问题 在开发 Web 应用时,尤其是集成了 Unity WebGL 内容的页面,遇到一个问题:当 Unity WebGL 渲染内容嵌入到一个 Tab 中时,切换 Tab 后画面会变黑,直到用户点击黑屏区域,才会恢复显示。 这个问题通常是因为 Unity 渲染在 Tab 切换时被暂停或未能获得焦点所致。 在本文中,我们将介绍如何在使用 Layui 框架时,通过监听 Tab 切换事件并强制 Unity WebGL 渲染恢复,来解决这一问题。 1. 问题描述 当 Unity WebGL 内容嵌入到页面中的多个

By Ne0inhk
Flutter for OpenHarmony:web 拥抱 Web 标准的桥梁(Wasm GC 与 DOM 互操作) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:web 拥抱 Web 标准的桥梁(Wasm GC 与 DOM 互操作) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 随着 Flutter 3.x 全面拥抱 Wasm(WebAssembly),Dart 团队推出了全新的 package:web 来取代老旧的 dart:html。 package:web 是基于最新的 JS Interop 机制构建的,它不仅性能更好,而且兼容 Wasm GC 标准。 虽然这个库通过名字看是为 “Web” 平台的,但对于 OpenHarmony 开发者来说,了解它有着特殊的意义: 1. 混合开发:鸿蒙原生支持 ArkWeb (WebView),在 Flutter 中通过 JS互操作与 Web 页面交互是常见需求。 2.

By Ne0inhk