agent-substrate/substrate

GitHub: agent-substrate/substrate

Agent Substrate 是一个基于 Kubernetes 的 agent 工作负载调度系统,通过将有状态 actor 高度多路复用到少量 worker 上,实现大规模 agent 会话的低延迟管理与高资源利用率。

Stars: 839 | Forks: 144

# Agent Substrate [![许可证](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) 注意:这不是官方支持的 Google 产品。本项目不符合 [Google 开源软件漏洞奖励计划](https://bughunters.google.com/open-source-security) 的参与资格。 ## 什么是 Agent Substrate? Agent Substrate 是一个构建于 Kubernetes 之上的系统,它管理类 agent 工作负载,以实现比单纯使用 Kubernetes 更高的规模和效率,以及更低的延迟。它基于 Kubernetes 的 Pods 和 Pod 自动扩缩容等功能构建,但将 Kubernetes 控制平面移出关键路径,从而实现更低的延迟。 它可以运行在任何 Kubernetes 集群上,并且绝不会以任何方式阻碍 Kubernetes 的“常规”使用。Kubernetes 为所有类型的工作负载提供基础设施的置备和管理,而 Agent Substrate 提供特定于 agent 的调度和控制。 其核心在于,Agent Substrate 将更大规模的“actors”(如 agent 等应用程序)映射到较少数量的就绪“workers”(Kubernetes Pods)上,利用类 agent 应用程序在大部分时间内往往处于空闲状态这一特性,来实现重度多路复用。它提供了管理 actor 生命周期(例如创建/销毁、挂起/恢复)、实时将 actors 分配给 workers 以及将传入流量路由给它们的功能。 ## 演示 [![Agent Substrate 演示](https://img.youtube.com/vi/ZEzkCFJkzjY/hq1.jpg)](https://www.youtube.com/watch?v=ZEzkCFJkzjY) *观看 Agent Substrate 集群如何仅通过 8 个物理 pod 实现约 250 个有状态 actor 会话的多路复用。* 此演示突出了 Substrate 的核心开发者体验和“Agentic Infrastructure”能力: 1. **即时会话传送:** 在池中的任何可用 worker 上高性能地挂起和恢复 actor,实现亚秒级激活。 2. **状态持久化:** 通过全状态快照,在休眠周期中完美保留持久的工作内存(易失性 RAM)和文件系统状态。 3. **Agent 群集多路复用:** 通过将大量有状态 actor “杂耍”般地映射到一小部分共享的物理 pod 池上,演示了 30 倍以上的超额认购。 要在您自己的集群中重现此演示,请参阅 **[Counter Demo](demos/counter/README.md)** 和 **[Secret Agent Demo](demos/agent-secret/README.md)** 中的详细演练。 如需更多视频和演练,请访问我们的 YouTube 频道:**[agent-substrate](https://www.youtube.com/channel/UCN9PPqlTtVxlcpbQ-NWpfZQ)**。 ## 框架无关性与兼容性 Agent Substrate 旨在实现**与框架和 agent 框架无关**。由于它在内核级别(通过 gVisor)管理标准 OCI 容器,因此可以托管基于任何技术栈构建的 agent。 ## 生态系统与示例 * **[Agent Executor](https://github.com/google/ax):** 一个分布式 agent 运行时,演示了如何在 Agent Substrate 上构建安全、超高可扩展性的 agent 框架(参阅[发布博客](https://cloud.google.com/blog/products/ai-machine-learning/agent-executor-googles-distributed-agent-runtime)和[集成指南](https://github.com/google/ax/blob/main/manifests/README.md))。 ## 状态与兼容性 Agent Substrate 目前处于非常早期的开发阶段。它尚未准备好用于生产环境,并且 API 几乎必然会发生变化。在这个阶段,我们不对向后兼容性作任何保证,本项目中的所有内容都可能被更改。 ### 支持的 Kubernetes 版本 ## 开发说明 ## 快速开始(开发) 要快速设置完整环境: 1. 确保您的开发机器上已安装并配置好 [Go](https://go.dev/doc/install)、[`kubectl`](https://kubernetes.io/docs/tasks/tools/) 和 [`docker`](https://www.docker.com/)。我们将通过 Go 自动管理其他依赖项,包括 [`kind`](https://kind.sigs.k8s.io/)。 2. 运行以下步骤: ``` # 创建 cluster 和本地 registry hack/create-kind-cluster.sh # 安装 ate, valkey, rustfs hack/install-ate-kind.sh --deploy-ate-system # 安装 counter demo hack/install-ate-kind.sh --deploy-demo-counter # 安装 kubectl-ate go install ./cmd/kubectl-ate # 创建 atespace(创建 actors 前必需),然后在其中创建一个 counter actor kubectl ate create atespace demo kubectl ate create actor my-counter-1 -a demo --template ate-demo-counter/counter # port-forward network router 以绑定到本地端口 `8000` kubectl port-forward -n ate-system svc/atenet-router 8000:80 ``` 3. 在**另一个终端**中,发送 HTTP 请求以增加计数器: ``` curl -X POST -H "Host: my-counter-1.demo.actors.resources.substrate.ate.dev" -i http://localhost:8000/ ``` ### GKE 快速开始(开发) 1. 创建并配置您的环境文件: cp hack/ate-dev-env.sh.example .ate-dev-env.sh # 编辑 .ate-dev-env.sh 以匹配您的项目和偏好,然后加载它: source .ate-dev-env.sh 2. 启用 gcloud 的应用默认凭证: gcloud auth application-default login --project=${PROJECT_ID} 3. 置备所需的 GCP 资源(GKE 集群、Redis、GCS 和 IAM 绑定): go run ./tools/setup-gcp bootstrap 4. 将 Agent Substrate 系统部署到您的集群(记得在运行以下命令之前导航回本仓库的根目录): ./hack/install-ate.sh --deploy-ate-system 5. 然后,您可以部署示例应用程序。有关详细演练,请参见 [demos/counter/README.md](demos/counter/README.md) 或 [demos/sandbox/README.md](demos/sandbox/README.md)。 ./hack/install-ate.sh --deploy-demo-counter #### 自定义设置和部署 您可以根据需要运行单独的设置步骤来创建 GCP 资源。有关可用选项,请参见 `go run ./tools/setup-gcp --help`。例如: ``` go run ./tools/setup-gcp create cluster go run ./tools/setup-gcp create bucket ``` 同样,您可以使用安装脚本来部署或清理特定的 Agent Substrate 组件。有关所有选项,请参见 `./hack/install-ate.sh --help`。 ``` # 仅重新部署 ATE 系统的 ate-apiserver ./hack/install-ate.sh --deploy-ate-apiserver # 删除所有内容(核心系统和所有 demos) ./hack/install-ate.sh --delete-all ``` #### 卸载资源 (GCP) 如果您需要删除由设置脚本创建的资源,可以使用提供的脚本 `hack/teardown.sh`。此脚本将按创建的相反顺序删除资源,并能妥善处理部分失败的情况。 ``` ./hack/teardown.sh --all ``` 或者根据需要运行单独的卸载步骤(有关可用选项,请参见 `./hack/teardown.sh`)。 #### 卸载本地 `kind` 资源 如果您需要删除本地 `kind` 集群及其 registry(如果它是由 `hack/create-kind-cluster.sh` 创建的): ``` ./hack/delete-kind-cluster.sh ``` ## 演示 我们提供了几个示例应用程序来展示 Agent Substrate 的功能: 1. **[Counter Demo](demos/counter/README.md)**:一个有状态的 Go HTTP 服务器,演示了跨挂起/恢复的状态保留,以及动态 CRD 路由。 2. **[Sandbox Demo (Antigravity)](demos/sandbox/README.md)**:一个安全的沙盒执行环境(运行 Alpine Linux),允许任意 shell 执行,同时在会话之间保留文件系统状态。 3. **[Claude Code Multiplex](demos/claude-code-multiplex/README.md)**:通过将多个 Claude Code agent 多路复用到有限的 worker 池上,演示了物理硬件的超额认购。 4. **[Secret Agent](demos/agent-secret/README.md)**:突出了 Substrate 对易失性进程内存的“零空闲”自挂起和重新唤醒功能。 ### 文档与指南 * [API 配置指南](docs/api-guide.md):配置 WorkerPool、ActorTemplate、Secrets 和 Volumes 的详细参考。 * [完整 CLI 文档](cmd/kubectl-ate/README.md):`kubectl-ate` 的安装和使用说明。 * [术语表](docs/glossary.md):核心术语(Actor、ActorTemplate、WorkerPool、Worker、ate-api-server、atenet、atelet、ateom)及其相互关系。 * [可观测性指南](docs/observability.md):actor 日志记录、指标和分布式追踪指南。 * [基准测试指南](benchmarking/README.md):基于 Locust 的负载测试、监控堆栈和编排式基准测试工具。 ## 导览 ### 命令 * `cmd/ateapi`:核心控制平面 API 服务器,暴露 gRPC 端点以管理 actor 和 worker 的生命周期。 * `cmd/atelet`:节点级别的 DaemonSet,负责监督物理 worker pod、协调快照并管理状态传输。 * `cmd/atecontroller`:一个 Kubernetes 控制器,负责协调 WorkerPool 和 ActorTemplate 自定义资源。 * `cmd/atenet`:一个组合式网络控制器,提供 DNS、Envoy 路由和代理 sidecar。 * `cmd/ateom-gvisor`:在沙盒化的 worker pod 内部运行的内部 pod 辅助程序,用于执行 `runsc` 检查点和恢复命令。 * `cmd/podcertcontroller`:一个提供 Pod 证书签名者的“polyfill”,这些签名者 最终将随上游 Kubernetes 一起发布(使用不同的名称)。 * `cmd/kubectl-ate`:用于管理 Agent Substrate 资源的 CLI 工具。参见其 [README](cmd/kubectl-ate/README.md)。 * `tools/setup-gcp`:一个置备实用程序,用于设置必要的 GCP 基础设施资源(GKE、GCS、IAM)。 * `demos/`:演示 Agent Substrate 功能的示例应用程序。
标签:EVTX分析, Python工具, 子域名突变, 日志审计, 生命周期管理, 请求拦截, 调度系统