6行命令创建你的第一个Actor:Agent Substrate计数器Demo实战
2026/9/18 3:29:29 网站建设 项目流程

6行命令创建你的第一个Actor:Agent Substrate计数器Demo实战

【免费下载链接】substrateAgent Substrate: the core system项目地址: https://gitcode.com/GitHub_Trending/substrate7/substrate

Agent Substrate 是谷歌开源的 Agent 运行时底座,专为大规模运行有状态沙箱而生。本文带你用6 行命令跑通它的官方计数器 Demo(Counter Demo):在本地创建集群、部署一个 Actor、发出一条 HTTP 请求,并亲眼看到"挂起/恢复"后状态依然延续的魔法。

为什么是"计数器"?理解这个 Demo 在演示什么

这个计数器 counter.go 非常小巧,但藏着 Substrate 最核心的能力:

计数器存放位置验证什么能力
内存计数(preserved memory count)进程内存Full 快照能恢复整块进程内存
文件计数(preserved file counter)持久卷上的文件文件系统状态跨挂起/恢复保留

它每收到一次请求,两个计数器同时 +1 并返回给你。当你把 Actor **挂起(suspend)恢复(resume)**后,计数从断点继续——哪怕 Actor 被调度到了另一台 Worker Pod 上。这正是 Substrate 面向 AI Agent 的核心价值:Agent 应用大部分时间是空闲的,用"多路复用"把成千上万个 Actor 映射到少数几个 Worker 上,实现低成本的超卖调度。

💡 核心概念速查:

  • Actor:一个可挂起/恢复的应用实例(比如你的 Agent 会话)
  • Atespace:Actor 的命名空间(类似 k8s 的 namespace,但不属于 k8s)
  • WorkerPool:预热好的 Worker Pod 池(Kubernetes CRD)
  • ActorTemplate:Actor 的"类定义",类似 Pod 模板

术语详解见 docs/glossary.md,整体架构见 docs/architecture.md。

环境准备:装好3个工具就能开工

开始前,确保开发机上已安装并配置好以下三件套(其余依赖如kind会由脚本自动管理):

  1. Go— 构建与安装 CLI 工具
  2. kubectl— 与 Kubernetes 集群交互
  3. Docker— 本地 kind 集群的容器运行时

然后获取项目源码(仓库地址见下方 clone 命令):

git clone https://gitcode.com/GitHub_Trending/substrate7/substrate cd substrate

一键搭建:6行命令跑通Agent Substrate集群

以下 6 条命令按顺序执行即可(前两条负责集群,后四条负责 Demo)。完整脚本见 hack/create-kind-cluster.sh 和 hack/install-ate-kind.sh:

# 1. 创建 kind 本地集群 + 本地镜像仓库 ./hack/create-kind-cluster.sh # 2. 安装 Agent Substrate 核心系统 + PostgreSQL + rustfs ./hack/install-ate-kind.sh --deploy-ate-system # 3. 构建并部署计数器 Demo(WorkerPool + ActorTemplate) ./hack/install-ate-kind.sh --deploy-demo-counter # 4. 安装 kubectl-ate 命令行插件 go install ./cmd/kubectl-ate # 5. 创建你的第一个 Actor kubectl ate create actor my-counter-1 -a ate-demo-counter --template counter # 6. 把网络路由转发到本地 8000 端口 kubectl port-forward -n ate-system svc/atenet-router 8000:80

几条命令各做了什么?

  • 第 2 步部署了控制平面(API Server、控制器、节点守护进程 atenet/atelet 等,见 manifests/ate-install/ 目录)。
  • 第 3 步ko构建计数器镜像,应用 counter.yaml.tmpl(创建ate-demo-counter命名空间和counterWorkerPool),再通过 ate API 创建 counter-template.yaml.tmpl 定义的 ActorTemplate,并等待"黄金快照"就绪。
  • 第 5 步-a指定 Actor 所在的 atespace,--template counter指定基于哪个模板创建。
  • kubectl-ate是原生的 kubectl 插件,会自动发现 API Server 并建立临时隧道,用法详解见 cmd/kubectl-ate/README.md。

⚠️ 小贴士:ActorActorTemplateWorker不是Kubernetes CRD,它们存在 Substrate 控制平面的 PostgreSQL 里。所以要用kubectl ate get ...查询,而不是kubectl get ...

发送第一个请求:让计数器动起来

另一个终端中,向本地 8000 端口发一条 POST 请求,关键是那个路由头ate-target-actor

curl -X POST \ -H "ate-target-actor: ate-demo-counter/my-counter-1" \ -i http://localhost:8000/

你会看到类似这样的响应:

hello from: 10.244.0.5 | preserved memory count: 1 | preserved file counter: 1

这一刻发生了三件奇妙的事:Substrate 路由器识别出请求指向一个尚未运行的 Actor → 自动把它从快照存储中唤醒并调度到某个空闲 Worker Pod 上 → 再把流量代理过去。全程无需你手动"启动"任何东西。

验证 Actor 状态:

kubectl ate get actor my-counter-1 -a ate-demo-counter

此时STATE应为RUNNING,并能看到它被分配的 Worker Pod 和 IP。

见证魔法:挂起再恢复,状态不丢

这是整个 Demo 的高光时刻。手动挂起 Actor,让它回到快照存储:

kubectl ate suspend actor my-counter-1 -a ate-demo-counter

然后再发一次上面的 curl 请求。观察响应中的两个计数:

  • preserved memory count没有归零——进程内存被Full级快照完整恢复(由模板中的snapshotsConfig配置,见 counter-template.yaml.tmpl);
  • preserved file counter同样延续——来自持久卷上的文件。

如果多建几个 Actor 试试,你可能会看到响应里的hello from: <IP>变了——Actor 被传送到了另一台 Worker,但记忆完好无损。这就是官方 Demo 视频展示的"Actor 传送"能力。

玩完清理:

# 永久删除挂起状态的 Actor kubectl ate delete actor my-counter-1 -a ate-demo-counter # 卸载整个计数器 Demo(模板、WorkerPool、Atespace) ./hack/install-ate.sh --delete-demo-counter # 删除本地 kind 集群 ./hack/delete-kind-cluster.sh

进阶玩法:从计数器到真实Agent

Counter 只是起点。项目里还有这些官方示例等你折腾(完整列表见 README.md):

  • Sandbox Demo:Alpine 沙箱里执行任意 shell,文件系统状态跨会话保留 → demos/sandbox/README.md
  • Claude Code Multiplex:多个编码 Agent 复用到少量 Worker 上,体验 30 倍超卖 → demos/claude-code-multiplex/README.md
  • Request Parking:请求在 Worker 紧张时被"停泊"等待,而不是直接返回 503 → demos/parking/README.md
  • Micro-VM 变体:同一套计数器逻辑跑在 micro-VM 沙箱上 → demos/counter/counter-microvm.yaml.tmpl

想深入原理?推荐阅读:

资料路径
架构总览(控制平面/节点守护/网络栈)docs/architecture.md
API 配置指南(WorkerPool/ActorTemplate/Secrets)docs/api-guide.md
术语表(Actor/Atespace/Worker 等核心概念)docs/glossary.md
可观测性(日志/指标/分布式追踪)docs/observability.md

📌 注意:项目目前处于早期开发阶段,API 可能随时变动,尚不适用于生产环境。

总结:你刚刚完成了什么

6 行命令,你:

  1. ✅ 搭建了本地 Agent Substrate 集群
  2. ✅ 部署了一个有状态计数器 Actor
  3. ✅ 通过路由器触发了 Actor 的按需唤醒与路由
  4. ✅ 验证了挂起/恢复后内存与文件双状态持久化

这就是面向 Agent 时代的"Agentic Infrastructure"——把大量空闲的有状态应用复用到少量物理资源上,恢复延迟低于 500 毫秒。现在,轮到把你的 Agent 搬上来了。

【免费下载链接】substrateAgent Substrate: the core system项目地址: https://gitcode.com/GitHub_Trending/substrate7/substrate

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询