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会由脚本自动管理):
- Go— 构建与安装 CLI 工具
- kubectl— 与 Kubernetes 集群交互
- 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。
⚠️ 小贴士:
Actor、ActorTemplate、Worker都不是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 行命令,你:
- ✅ 搭建了本地 Agent Substrate 集群
- ✅ 部署了一个有状态计数器 Actor
- ✅ 通过路由器触发了 Actor 的按需唤醒与路由
- ✅ 验证了挂起/恢复后内存与文件双状态持久化
这就是面向 Agent 时代的"Agentic Infrastructure"——把大量空闲的有状态应用复用到少量物理资源上,恢复延迟低于 500 毫秒。现在,轮到把你的 Agent 搬上来了。
【免费下载链接】substrateAgent Substrate: the core system项目地址: https://gitcode.com/GitHub_Trending/substrate7/substrate
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考