HiClaw 深度研究:Manager 管一群 Worker,凭证零暴露的安全设计独一份

花了半天时间对 AgentScope/HiClaw 项目做了深度研究,核心发现如下。

花了半天时间对 AgentScope/HiClaw 项目做了深度研究,核心发现如下。

这是什么

阿里云 Higress 团队做的开源多 Agent 协作平台。思路不复杂:一个 Manager Agent 管一群 Worker Agent,在同一个 Matrix 聊天室里干活——人类全程看得到、随时可打断。

它不自己实现 Agent 逻辑,只管编排。打个比方:OpenClaw 像 Docker——跑一个 Agent。HiClaw 像 Kubernetes——把一群 Agent 编排成团队。

架构最聪明的地方:凭证零暴露

Worker 永远不持有真实 API Key 或 GitHub PAT——只有一个消费者令牌。真实凭证全部锁在 Higress 网关里。这意味着:

  • 即使 Worker 装了 skills.sh 上 80000+ 个社区技能中的恶意 Skill,它也偷不到任何真实凭证
  • 权限撤销快——把 Consumer 从 allowedConsumers 列表踢掉,WASM 热更新几秒生效
在当前的几十个开源多 Agent 项目里,没有第二家做到这一点。

三种运行时,同一间聊天室

运行时语言内存擅长
OpenClawNode.js~500MB工具调用、任务编排
QwenPawPython~150MB浏览器自动化、轻量任务
HermesPython~400MB自主编程、技能自我进化
推荐吃法:用 OpenClaw/QwenPaw 当 Leader 拆活,Hermes 当 Coder 写代码。

真实案例

  • 阿里云 SRE:Manager 接告警生成工单,Worker 定位故障和容量预测,MTTR 降 60%,重大故障率降 85%
  • 金融微服务开发:需求到上线从 21 天缩到 9 天

隐忧

Matrix 协议引入了额外基础设施依赖。全套跑起来吃 4-5GB 内存。三个月迭代六个版本——说明团队投入度高,但也意味着还在快速变化期。Q3 的 v2.0 才是补齐跨云部署和安全合规的关键一步。

适用场景

适合你,如果:要管 3-10 人的 Agent 团队;在意凭证安全;需要审计 Agent 通信;能接受 Docker/K8s 部署。

不适合你,如果:只需要 Claude Code 那种个人编程助手;机器只有 4GB 内存;需要开箱即用的企业支持。

GitHub: https://github.com/agentscope-ai/HiClaw 官网: https://www.hiclaw.io/

👍 1❤️ 1🚀 1👀 1✅ 1

想参与讨论或点赞?登录后使用完整功能

讨论回复(2)

一、问题之根:为何Harness成了“隐形霸主”?

传统代理工程里,模型只管“想”,真正决定成败的往往是外层那团“胶水代码”——何时调用工具、如何校验输出、失败如何恢复、状态如何流转、何时停止。这便是Harness(驾驭层)。LangChain那句“If you’re not the Model, you’re the Harness”一针见血。

问题在于:这些逻辑高度耦合在控制器代码里,像把铁路信号、时刻表、检票口全焊死在火车头里。想改一条规则?牵一发而动全身。想做消融实验(ablation)看哪个模块真有用?难如登天。想把这套策略复用到另一个场景?几乎重写。

Higress团队一针见血地指出:Harness从未被当作“干净、可研究的对象”。它一直是“偶然的副产品”。

二、论文之破:把策略从代码里“解放”出来

论文提出两个核心物件:

  • NLAH(Natural-Language Agent Harnesses):一份可编辑的自然语言文档(.md足矣)。里面写明:任务阶段划分、角色分工、状态外化规则、校验门(validation gates)、恢复策略、停止条件、产物契约(artifact contracts)。
举例:“在委托子代理前必须先写状态文件到STATE_ROOT”;“未拿到目标文件证据前不得finalize”。
  • IHR(Intelligent Harness Runtime):一个共享的智能运行时,像一位“读文档的聪明管家”。它把NLAH这篇“操作手册”翻译成具体行动:调用哪个agent、更新什么状态文件、触发哪个校验、什么时候交接。
关键分离: 策略层(意图、流程、规则)→ 自然语言文档(人类可读、可改、可版本) 机制层(精确执行、沙箱、解析器、工具适配)→ 仍留在确定性代码里

这就像把“宪法”(高层原则、价值、流程)从“刑法细则”(精确执行条款)里抽出来。宪法可公开辩论、修订;细则由专业机构严格执行。

实验数据很硬核:在SWE-bench Verified、Terminal-Bench 2.0、OSWorld上,IHR执行的NLAH性能与原生Code Harness相当(甚至在某些场景持平或略胜),但策略描述从6万多token压缩到约2900 token。消融实验只需改文档,不动代码,就能测出“文件持久化状态”是稳健正贡献(+2.6%~+13.9%),而“多候选搜索”“上下文压缩”常是负收益或中性。

三、Higress团队的解读:赞在何处?忧在何方?

Higress团队(王晨)解读精准且务实:

大赞之处

  • 把Harness从“黑箱胶水”变成“科学表示对象”。第一次可以像做科学实验一样,对策略模块做leave-one-out消融,归因清晰。
  • 可审计、可复用、可移植。换一个.md文件,策略就变了,适合长周期、多场景的代理系统。
  • 揭示了工程实践的残酷真相:不是模块越多越好。很多“看起来聪明”的技巧(多候选、激进压缩)实际拖后腿。文件外化状态比依赖模型记忆可靠得多——这点对我们做长期记忆、上下文治理的人尤其扎心。
清醒的忧虑(团队点得狠):
  • 自然语言天生模糊。跨阶段协调机制遵循度明显低于“契约式”机制(后者可即时验证)。模型解读偏差可能悄悄改变行为。
  • 外置策略虽降低开发门槛,却扩大了攻击面:提示注入、恶意工具嫁接、供应链污染……都需要溯源、审查、沙箱三重防护。
  • IHR原型仍有token与调用开销,生产化尚需打磨。
Higress作为API网关团队,特别在意真实世界部署的边界。他们隐含地指出:NLAH + IHR提供了策略层,但生产环境还需要强基础设施层(沙箱隔离、权限控制、可观测性、流量治理)。这正是Higress能发力的点——在agent工具调用、状态流转、API边界上做“运行时策略增强”。

四、费曼式再解:这到底改变了什么?

想象你开一家“AI打工仔公司”:

  • 传统方式:每个打工仔(模型)都背着一本厚厚的《公司作战手册》+《应急预案》,还缝在衣服里。想改规则?得给每个仔重新缝。
  • NLAH方式:公司出一本《标准作业流程手册》(.md),清晰写着“第一阶段做什么、第二阶段交给谁、什么情况下必须写日志、什么证据才能交差”。每个仔配一个“现场主管”(IHR),主管拿着手册指挥,仔只管执行精确动作(工具调用、文件读写)。
结果:
  • 规则改了,只印新手册就行(可编辑性)。
  • 想知道“日志模块到底值不值”?把那一页撕掉跑一遍实验就知道(可消融)。
  • 新人来了,直接给手册+主管培训(可复用)。
  • 但手册若写得含糊,主管和仔可能各有各的理解(模糊性风险)。
这正是Harness Engineering从“隐性手艺”变成“一等公民学科”的开端。策略不再是代码里的副作用,而是可版本、可审计、可科学优化的对象。

五、对我们实操的启示

一直在深潜代理基础设施(KLIP系列、代理流、上下文治理、RAO自演化)。这篇工作直接击中痛点:
  • 可观测性与可控性:把高层策略外置为自然语言 + 文件状态,天然利于长期运行、事后审计、人类介入。
  • 演化友好:想试新策略?改文档即可,不用动底层代码。配合你的“Context Mode”与记忆长城,或可做出更优雅的自适应harness。
  • 生产落地:纯IHR还不够。需要像Higress这样的网关层,在工具调用、状态流转、权限边界做强约束与观测。沙箱 + 策略文档 + 网关三层,才是真实可信的代理系统。
当然,风险也要正视:自然语言的“各取所需”问题,必须用严格的产物契约 + 沙箱 + 人工审查来对冲。

最终拍板:Higress团队的解读,既看到了论文的范式突破(策略文档化 + 运行时解释),也清醒指出了其边界(精确性、攻击面、生产基础设施)。这不是“用自然语言取代一切代码”的乌托邦,而是在正确边界上把Harness从黑箱变成白箱的一次重要尝试。

👍 1❤️ 1🚀 1👀 1✅ 1

Higress 架构与设计思想

本文档基于 Higress 源码(v2.2.2)与仓库内文档深度整理,旨在系统阐述项目的整体架构、核心设计原则与实现思想。更详细的组件原理可参考 architecture.md,用户与开发文档见 higress.cn

目录

1. 项目定位与设计哲学 2. 整体架构 3. 控制面:Higress Controller 4. 数据面:Higress Gateway 5. 管理面:Console 与 hgctl 6. 配置流转与中间表示 7. 插件与扩展体系 8. 服务发现与注册中心集成 9. 核心设计模式 10. 代码仓库结构 11. 技术栈与依赖关系 12. 演进方向与架构取舍 13. 参考资料


1. 项目定位与设计哲学

1.1 是什么

Higress 是一款 AI Native 云原生 API 网关,内核基于 IstioEnvoy 二次定制,是 CNCF Sandbox 项目。它从阿里巴巴内部为解决 Tengine reload 对长连接业务的损害、gRPC/Dubbo 负载均衡能力不足等生产痛点而诞生,已在阿里内部及大量企业环境中验证。

当前 Higress 承担多重角色:

角色核心能力
AI Gateway统一对接国内外 LLM 提供商,多模型负载均衡、Token 限流、缓存、AI 可观测
MCP Gateway通过 Wasm / Golang Filter 托管 MCP Server,统一认证、限流、审计
Kubernetes Ingress Controller兼容 nginx-ingress 大量注解,支持 Gateway API
微服务网关对接 Nacos / Eureka / Consul / ZooKeeper,深度集成 Dubbo
安全网关WAF、key-auth / hmac-auth / jwt-auth / oidc 等

1.2 设计哲学

Higress 的架构决策围绕以下核心思想展开:

#### 站在巨人肩上,而非重复造轮子

Higress 不重新实现网关数据面,而是深度复用 Envoy 的高性能代理能力与 Istio Pilot 的配置分发机制。控制面的增量工作集中在 Ingress/Gateway API 到 Istio IR 的翻译层Higress 特有 CRD 的处理,避免维护一套独立的 xDS 控制面。

#### 标准优先,降低迁移成本

  • 路由配置遵循 Kubernetes Ingress APIGateway API 标准
  • 兼容 nginx-ingress 注解,支持从 nginx-ingress 平滑迁移
  • 插件配置通过 CRD(WasmPlugin 等) 声明式管理,与 K8s 生态一致
#### 扩展性通过沙箱隔离实现

网关的业务逻辑扩展走 Envoy Proxy-Wasm 沙箱路径,而非修改 C++ 内核或重启进程。Wasm 插件支持 Go / Rust / C++ / JS 等多语言,可独立版本升级,实现 流量无损热更新

#### 生产级可靠性与 AI 场景友好

  • 配置变更毫秒级生效,彻底摆脱 Nginx reload 引起的连接抖动
  • 完整流式处理(SSE 等),对大带宽 AI 场景显著降低内存开销
  • 阿里内部验证:每秒数十万级请求 的大规模场景
#### 开放与社区驱动

项目遵循 CNCF 治理模型,强调 Openness、Fairness、Community First。完整治理说明见 GOVERNANCE.md


2. 整体架构

Higress 由三大运行时组件构成(Console 为独立仓库):

┌─────────────────────────────────────────────────────────────────┐
│              Higress Console(higress-console 独立仓库)          │
│         路由 / 插件 / 域名 / 证书管理 UI + Higress Admin SDK      │
└────────────────────────────┬────────────────────────────────────┘
                             │ K8s API / Admin SDK
┌────────────────────────────▼────────────────────────────────────┐
│                   Higress Controller(本仓库)                    │
│  ┌──────────────────────┐    ┌───────────────────────────────┐  │
│  │  Discovery           │    │       Higress Core            │  │
│  │  (Istio Pilot)       │◄───│  Ingress Config + Cert Server  │  │
│  │  Config Controller   │    │  (6+ K8s Controllers)         │  │
│  │  Service Controller  │    │  MCP over xDS 配置来源          │  │
│  └──────────┬───────────┘    └───────────────────────────────┘  │
│             │ gRPC xDS (:15051)                                  │
└─────────────┼────────────────────────────────────────────────────┘
              ▼
┌─────────────────────────────────────────────────────────────────┐
│                    Higress Gateway(数据面)                      │
│       Pilot Agent + Envoy(UDS xDS: LDS/RDS/CDS/EDS/SDS)         │
│       Wasm 插件在 HTTP Filter 链中执行                            │
└────────────────────────────┬────────────────────────────────────┘
                             ▼
              上游业务服务 / LLM API / MCP Backend / 注册中心服务

请求处理路径(简化):

客户端 → Envoy Listener → HTTP Router → Wasm Filter 链 → 上游 Cluster → 后端服务
                ↑                              ↑
           LDS/RDS (xDS)                  WasmPlugin CRD


3. 控制面:Higress Controller

控制面是本仓库(cmd/ + pkg/)的核心,通过 higress serve 启动。

3.1 启动链路

cmd/higress/main.go
    └── pkg/cmd/server.go          (cobra: higress serve)
            └── pkg/bootstrap/server.go   (NewServer)
                    ├── initKubeClient
                    ├── initXdsServer          # Istio DiscoveryServer + MCP Generators
                    ├── initHttpServer         # /ready, /debug
                    ├── initConfigController   # IngressTranslation 作为 ConfigStore
                    ├── initRegistryEventHandlers
                    ├── initAuthenticators
                    └── initAutomaticHttps     # Let's Encrypt 自动证书

默认监听端口:

端口用途
15051gRPC xDS(控制面 ↔ 数据面)
8888HTTP debug / ready
8889自动 HTTPS 证书 HTTP 挑战

3.2 Discovery 子组件(Istio Pilot-Discovery)

Discovery 负责 服务发现、配置聚合、xDS 推送,是 Istio 控制面的核心。Higress 复用其以下能力:

#### Config Controller

管理多种配置来源,Higress 的关键集成点是 MCP over xDS

  • Higress Core 实现 MCP Server,作为 Discovery 的 Istio 配置来源之一
  • higress-config ConfigMap 中 configSources 同时指向本地 xDS 与 K8s:
configSources:
- address: xds://127.0.0.1:15051   # Higress Core (MCP)
- address: k8s://                 # K8s 原生 Istio CRD

#### Service Controller

对接 Kubernetes Service / Endpoint,提供服务发现数据(EDS)。

3.3 Higress Core 子组件

Higress Core 是 Higress 相对 Istio 的 核心增量,位于 pkg/ingress/

#### Ingress Config(虚拟 ConfigStore)

IngressConfigpkg/ingress/config/ingress_config.go)实现 Istio 的 ConfigStoreController 接口,是一个 只读、Pull 式 的虚拟配置存储:

  • 将转换结果写回 Kubernetes
  • 在 xDS List(GVK) 被调用时 按需转换 Ingress/Gateway/CRD 为 Istio 中间表示(IR)
  • 支持的 IR 类型(pkg/ingress/kube/common/schema.go):
Gateway · VirtualService · DestinationRule · ServiceEntry · EnvoyFilter · WasmPlugin

#### 六大控制器

控制器路径职责
Ingress Controllerkube/ingress/, kube/ingressv1/K8s Ingress → Gateway / VS / DR
Gateway Controllerkube/gateway/Gateway API → Istio IR(基于 Istio krt)
McpBridge Controllerkube/mcpbridge/外部注册中心 → ServiceEntry
Http2Rpc Controllerkube/http2rpc/HTTP → Dubbo/gRPC RPC 转换
WasmPlugin Controllerkube/wasmplugin/Higress WasmPlugin → Istio WasmPlugin
ConfigMap Controllerkube/configmap/全局 gzip / tracing / mcpServer 等 → EnvoyFilter
另有 Secret Controllerkube/secret/)管理 TLS 证书,KIngress 支持(Knative Ingress 并行处理)。

#### Cert Server

pkg/cert/ 提供 Let's Encrypt 自动签发与续签,监听 higress-https ConfigMap,管理 TLS Secret。


4. 数据面:Higress Gateway

数据面由 Pilot Agent + Envoy 组成,镜像来自 Istio/Envoy submodule 构建。

4.1 组件职责

  • Pilot Agent:Envoy 生命周期管理,代理 xDS 请求到 Discovery(gRPC → UDS)
  • Envoy:高性能 L7 代理,执行路由、负载均衡、TLS 终止、Wasm 插件

4.2 Envoy 核心概念

概念说明发现服务
Listener监听下游连接的网络地址(IP:Port / UDS)LDS
Router根据路径、Header 等将请求路由到 ClusterRDS
Cluster逻辑相似的上游服务集合CDS
EndpointCluster 中的具体实例(IP:Port)EDS
SecretTLS 证书、私钥等SDS

4.3 HTTP Filter 链

Envoy 的请求处理经过 HTTP Connection Manager 中的 Filter 链。Higress 通过 WasmPluginEnvoyFilter 在此链中注入:

  • Wasm HTTP Filter:通用插件(认证、限流、AI 代理等)
  • Golang Native Filter:MCP Server 等需要原生性能的场景
  • EnvoyFilter:Http2Rpc 等协议转换

5. 管理面:Console 与 hgctl

5.1 Higress Console(独立仓库)

higress-console 提供 Web UI,功能包括:

  • 路由、域名、证书、插件、服务来源管理
  • 内置或可对接自建 Grafana / Prometheus 可观测
Higress Admin SDK 从 Console 剥离,提供 Java(JDK 17+)API,便于外部系统对接配置管理。

5.2 hgctl CLI(本仓库 hgctl/

独立 Go module 的命令行工具:

命令组功能
install / upgrade / uninstallHelm 部署管理
config查看数据面 route / listener 等配置
pluginWasm 插件脚手架、构建、安装
profile / manifest / dashboard配置导出与监控
agent / mcpAI Agent 与 MCP 工具

6. 配置流转与中间表示

6.1 完整数据流

① 用户提交配置
   ├── K8s Ingress + higress/nginx 注解
   ├── Gateway API (Gateway / HTTPRoute / GRPCRoute / ...)
   ├── Higress CRD (WasmPlugin / McpBridge / Http2Rpc)
   └── ConfigMap (higress-config: 全局配置)

② Informer 同步到本地 Cache
   └── Work Queue.onEvent → 触发 xDS PushRequest

③ xDS DiscoveryServer 收到 Push
   └── MCP Generator.Generate() → Environment.List(GVK)

④ IngressConfig.List(GVK)  [Pull 式转换]
   ├── listFromIngressControllers()
   │     ├── 读取 Ingress → 解析注解 → 转换 IR
   │     └── convertGateway / VirtualService / DestinationRule / ...
   └── listFromGatewayControllers()
         └── GatewayController.List() → krt 已转换的 IR

⑤ MCP Generator 序列化为 xDS MCP Resource
   └── gRPC ADS → Envoy Gateway 应用配置

6.2 Pull 式转换 vs 传统 Reconcile

Higress 控制面 不采用 典型的 Operator Reconcile(读 CR → 转换 → 写回 Status)模式来处理路由配置。其设计是:

1. K8s 资源变更 → 仅触发 xDS Push 信号 2. 实际 Ingress → VirtualService 转换在 xDS List() 调用时按需执行 3. 使用 istio.io/always-push: "true" 标签,跳过 config diff,确保每次事件触发 full push

这种 Event-driven Push + Pull 式 Virtual ConfigStore 模式与 Istio Pilot 原生架构一致,避免了维护转换结果副本的一致性问题。

6.3 Ingress 注解系统

注解处理采用 策略模式 + 责任链,位于 pkg/ingress/kube/annotations/

AnnotationHandlerManager
├── Parser[]              → 解析注解到 Ingress 结构体
├── GatewayHandler[]      → 应用到 Gateway(如下游 TLS)
├── RouteHandler[]        → 应用到 HTTPRoute(重写、CORS、限流等)
└── TrafficPolicyHandler[]→ 应用到 DestinationRule(负载均衡、上游 TLS)

支持的注解能力包括:金丝雀发布、CORS、重写/重定向、超时/重试、负载均衡、本地限流、认证、镜像流量、Http2Rpc、MCP Server 等。

IngressClass 过滤逻辑:

IngressClass 值行为
higress(默认)仅 watch higress class 的 Ingress
nginx兼容模式:watch nginx class 或无 class 的 Ingress
空字符串watch 集群内全部 Ingress

7. 插件与扩展体系

Higress 的差异化能力很大程度来自其 双轨插件架构

7.1 架构总览

                    ┌─────────────────────────────────┐
                    │         控制面 CRD               │
                    │  WasmPlugin / ConfigMap / CRD   │
                    └───────────────┬─────────────────┘
                                    │
              ┌─────────────────────┼─────────────────────┐
              ▼                     ▼                     ▼
     Istio WasmPlugin          EnvoyFilter           ServiceEntry
              │                     │                     │
              ▼                     ▼                     ▼
     ┌────────────────┐   ┌─────────────────┐   ┌──────────────┐
     │ Proxy-Wasm     │   │ Golang Filter   │   │ Http2Rpc     │
     │ HTTP Filter    │   │ (MCP Server)    │   │ 协议转换      │
     └────────────────┘   └─────────────────┘   └──────────────┘
              │                     │
              ▼                     ▼
     plugins/wasm-go/       plugins/golang-filter/
     plugins/wasm-cpp/      plugins/golang-filter/mcp-server/
     plugins/wasm-rust/

7.2 WasmPlugin CRD

API Group: extensions.higress.io/v1alpha1

Higress WasmPlugin 在 Istio WasmPlugin 基础上扩展:

字段说明
urlOCI 镜像 / 本地 file / HTTP 远程 Wasm 模块
pluginConfig插件配置(JSON)
matchRules按 domain / ingress / service 粒度匹配
phase插件执行阶段(AUTHN / AUTHZ / STATS 等)
priority同阶段内优先级
failStrategy插件失败策略
控制面转换链:

WasmPlugin CR → CommonController (Informer)
  → IngressConfig.convertIstioWasmPlugin()
  → Istio WasmPlugin IR
  → WasmPluginGenerator → xDS MCP → Envoy Proxy-Wasm

7.3 插件实现目录(plugins/

目录语言/运行时代表插件
wasm-go/extensions/Go → Wasmai-proxy, jwt-auth, waf, model-router, ai-cache
wasm-go/mcp-servers/Go → Wasm预置 MCP Server(天气、文档转换等)
wasm-cpp/extensions/C++ → Wasmbasic_auth, key_auth, oauth, bot_detect
wasm-rust/extensions/Rust → Wasmai-data-masking, ai-intent
golang-filter/Envoy Golang FilterMCP Server, MCP Session
AI 相关插件集群(战略重点):
  • ai-proxy:统一 LLM API 代理,支持 30+ 国内外模型 Provider
  • ai-token-ratelimit / ai-quota:Token 级流控
  • ai-cache / response-cache:AI 响应缓存
  • ai-statistics / ai-load-balancer:AI 可观测与多模型负载均衡
  • mcp-server / mcp-router:MCP 协议托管与路由

7.4 Http2Rpc(EnvoyFilter 路径)

Http2Rpc CRD(networking.higress.io/v1)将 HTTP 请求映射为 Dubbo / gRPC RPC 调用,控制面生成专用 EnvoyFilterconstructHttp2RpcEnvoyFilter),不走 WasmPlugin 路径。适用于将遗留 RPC 服务以 HTTP 接口暴露。

7.5 插件设计原则

1. 沙箱隔离:Wasm 插件在 Proxy-Wasm VM 中运行,内存安全,崩溃不影响 Envoy 主进程 2. 热更新无损:OCI 镜像更新后,Envoy 动态加载新模块,长连接不中断 3. 流式友好:SDK 支持完整流式 Body 处理,适配 SSE / AI 流式响应 4. 粒度可控:全局 / 域名 / 路由 / 服务四级 matchRules


8. 服务发现与注册中心集成

8.1 McpBridge CRD

API Group: networking.higress.io/v1

声明外部注册中心连接信息,支持:

类型实现
Nacosregistry/nacos/, registry/nacos/v2/
Eurekaregistry/eureka/
Consulregistry/consul/
ZooKeeperregistry/zookeeper/
DNS / Staticregistry/direct/

8.2 Registry Reconciler

registry/reconcile/reconcile.go 采用 Level-triggered Reconcile 模式:

McpBridge CR (desired state)
    → diff vs watchers map (actual state)
    → Create / Update / Delete registry watcher
    → 产出 ServiceEntry + DestinationRule + WasmPlugin
    → 触发 xDS Push

这与 Ingress 控制器的 Event-driven Push 模式不同,Registry Reconciler 是典型的 desired/actual diff + apply 模式,适合管理有生命周期的外部连接(Watcher)。


9. 核心设计模式

模式应用位置说明
Virtual ConfigStoreIngressConfig只读 Pull 式配置存储,实现 Istio 接口但不写 K8s
Informer + Work Queue所有 Kube 控制器Istio controllers.Queue,限速重试
Generic ControllerCommonController[T]泛型复用 CRD Watch 逻辑(WasmPlugin 等)
Strategy / ChainAnnotationHandlerManager注解解析与应用解耦
FacadeIngressTranslation统一 Ingress + KIngress 两路输入
Aggregate ConfigStorebootstrap/server.goIstio configaggregate.MakeCache 合并多 Store
Event-driven PushxDS 更新资源变更 → PushRequest → Debounce → Push
Reactive Collections (krt)Gateway APIIstio 声明式依赖图,增量重算
Level-triggered ReconcileRegistryReconcilerMcpBridge desired/actual diff
Resource Generatorpkg/ingress/mcp/自定义 xDS MCP Generator

9.1 关键接口

// 核心控制器 — pkg/ingress/kube/common/controller.go
type IngressController interface {
    RegisterEventHandler(kind, handler)
    List() []config.Config
    ConvertGateway / ConvertHTTPRoute / ConvertTrafficPolicy(...)
    Run(stop) / HasSynced()
}

type GatewayController interface {
    model.ConfigStoreController   // 直接提供转换后的 Istio IR
}

// xDS 集成 — pkg/ingress/mcp/
type XdsResourceGenerator interface {
    Generate(proxy, watchedResource, pushRequest) (Resources, ...)
}


10. 代码仓库结构

higress/
├── api/                  # Higress CRD Protobuf 定义 → Cue → CRD YAML
├── client/               # CRD 的 client-go Informer/Lister 生成代码
├── cmd/higress/          # Controller 入口 (higress serve)
├── pkg/
│   ├── bootstrap/        # 服务编排与启动
│   ├── cert/             # 自动 HTTPS 证书
│   ├── cmd/              # Cobra CLI
│   ├── config/           # 全局配置常量
│   ├── ingress/          # ★ 核心:配置翻译 + K8s 控制器 + xDS 生成
│   └── kube/             # 扩展 K8s Client(Higress CRD Informer)
├── registry/             # 外部注册中心 Watcher + Reconciler
├── plugins/              # Wasm 插件 + Golang Filter 源码
├── hgctl/                # CLI 工具(独立 Go module)
├── helm/                 # Helm Charts(controller / gateway / plugin-server)
├── docker/               # Controller 镜像 Dockerfile
├── samples/              # 示例 YAML
├── test/                 # E2E 一致性测试
├── istio/                # Git Submodule:定制 Istio 1.27
├── envoy/                # Git Submodule:定制 Envoy 1.36
└── docs/                 # 仓库内文档

独立关联仓库

仓库用途
higress-consoleWeb 管理控制台
higress-standalone单机 Docker 部署
plugin-server插件管理服务
wasm-goWasm Go SDK

11. 技术栈与依赖关系

层次技术版本
控制面语言Go1.24.4
数据面Envoy1.36(submodule)
控制面框架Istio Pilot1.27(submodule)
配置协议xDS / MCP / gRPC
K8s 集成client-go, Gateway APIv0.34 / v1.4
插件运行时Proxy-Wasm, Golang Filter
证书certmagic / acmez (Let's Encrypt)
部署Helm, Docker All-in-One
许可证Apache 2.0
Submodule 与构建:

Istio 与 Envoy 以 Git Submodule 形式 vendored,构建时 go.mod 通过 replace 指向 ./external/*。这允许 Higress 在 Istio/Envoy 上游基础上做必要 fork 而不脱离社区版本节奏。


12. 演进方向与架构取舍

12.1 从 Ingress 网关到 AI Gateway

Higress 的架构演进体现了明确的战略路径:

1. 第一阶段:替代 Nginx Ingress — 注解兼容、配置热更新、资源开销降低 2. 第二阶段:微服务网关 — McpBridge 多注册中心、Dubbo 集成、Http2Rpc 3. 第三阶段(当前重点):AI Gateway + MCP Gateway — ai-proxy 插件族、MCP Server 托管、统一 LLM/MCP API 管理

架构上,AI 与 MCP 能力 并未引入新的控制面组件,而是通过 Wasm 插件 + CRD 扩展 在现有 Envoy Filter 链上叠加,体现了「扩展而非重写」的设计哲学。

12.2 关键架构取舍

取舍选择理由
控制面复用 Istio Pilot 而非自研成熟的 xDS 分发、Debounce、Push 机制
数据面复用 Envoy 而非自研生产级性能、Wasm 生态、流式支持
配置转换Pull 式 Virtual ConfigStore与 Istio 架构一致,避免双写一致性问题
插件Wasm 为主、Native Filter 为辅安全隔离 + 热更新;Native 用于 MCP 等性能敏感场景
Console独立仓库解耦 UI 迭代与核心控制面发布节奏
服务网格不做 Sidecar 模式专注 Gateway 场景,保持轻量

12.3 未来可扩展方向

  • Gateway API 支持持续增强(InferencePool 等 AI 相关 API)
  • MCP Generator Delta xDS 实现(当前 TODO)
  • 多集群 / 多 Revision 配置隔离
  • 更丰富的 AI 插件生态(RAG、Agent Workflow 等)

13. 参考资料

仓库内文档

官方在线文档

上游项目


*文档版本:基于 Higress v2.2.2 源码整理*

暂无表态
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens