本机上的 Claude Code、Codex、Cursor Agent 已经很能干活了:改文件、跑测试、开 PR。但一旦任务要挂着跑几小时、要按日程扫依赖、要被 Slack / Linear 事件叫醒,本机会话就不合适——电脑休眠、网络断、密钥散落在个人环境里,都是硬伤。
Cortex 开源的 engrams 想解决的就是这件事:把 coding agent(内置 Claude Code、Codex harness,也可接自定义 runtime)放到你自己的云里跑,每个会话进独立 microVM,闲时快照、有活再唤醒,并用仪表盘、CLI、Slack、Webhook 把重复劳动收成自动化。
官方介绍:Introducing engrams
仓库:github.com/cortexapps/engrams
文档:engramsfactory.com/docs
注意:GitHub 上还有不少叫 Engram / engram 的「Agent 记忆」项目,和本文说的 engrams 软件工厂不是一回事。本文只讲 Cortex 这套自托管编排平台。
它是什么、不是什么
是什么
- 自托管的 coding agent 编排器:任务从仪表盘、CLI、Slack mention、定时任务、PR、Webhook 进来。
- 每个 agent 会话跑在 Firecracker microVM(生产)里;空闲时把内存/磁盘做成内容寻址快照,下次 prompt 再恢复(同机约百毫秒级,跨机约 1~2 秒量级,官方文档数字)。
- 会话镜像就是普通 OCI / Docker 镜像(约定带
/bin/sh);Claude Code、Codex 作为 harness 挂进去。 - 密钥、transcript、工作区默认不出你的云账号;模型侧你自带 Anthropic / OpenAI key,或指向 OpenRouter 这类路由。
不是什么(官方 README 说得很直白)
- 不是托管沙箱 SaaS(那是 E2B、Modal 一类)。
- 不是给人写代码的云桌面 / Coder 替代品。
- 不是容器编排器:生产隔离靠 KVM + Firecracker,没有「随便用 Docker 当生产隔离」的模式。
- 不是模型厂商:不帮你供 token。
- 还是 0.x:API 会变;许可证主体是 AGPL-3.0(harness SDK 等少数 crate 是 Apache-2.0)。
和「在本机聊 Agent」差在哪
| 维度 | 本机 Claude Code / Cursor Agent | engrams |
|---|---|---|
| 运行位置 | 你的笔记本 / 工位机 | 你的 GKE / EKS(或本机开发栈) |
| 生命周期 | 终端关了、电脑睡了就断 | 闲时快照,下次 prompt 接着干 |
| 触发方式 | 人敲命令、开 Chat | UI、CLI、Slack、日程、PR、Webhook |
| 隔离 | 基本等于本机权限 | 每会话独立 VM + 出站代理白名单 |
| 适合 | 交互式改代码、探索 | 重复 SDLC:升级依赖、扫 CVE、按 Linear 交付、值班式修 CI |
一句话:本机适合「我在跟它一起想」;engrams 适合「组织里有一批活,让 agent 在自有云里按规则干」。
本地先跑通(开发栈)
整栈可以先在一台机器上看效果(不是生产形态):
- Apple Silicon:会话走 Apple Virtualization。
- 有
/dev/kvm的 Linux:走 Firecracker。 - 其它环境:可能退化为无隔离的子进程,只适合摸 UI。
依赖大致是 Rust、Docker、just、Tilt、jq、bun 等(可用 Nix nix develop 一次拉齐)。仓库根目录:
just bootstrap # 写本地 master key 到 .env(一次)
just pull-kernel # 拉当前后端用的 guest kernel(一次)
just dev # Tilt 拉起全栈Tilt 状态页通常是 http://localhost:10350,仪表盘是 http://localhost:5173。再开一个终端:
just bake-demo-enable # 构建并启用 demo 镜像,第一次会花一两分钟做 base snapshot在仪表盘 Settings 里配模型:交互会话可接 Claude Code token;CLI / 自动化会话需要 org secret,例如 ANTHROPIC_API_KEY。然后构建 CLI 开会话:
(cd cli && bun install && bun run build)
export ENGRAMS_URL=http://localhost:8787
export ENGRAMS_API_KEY=$(cat var/dev-api-key)
SID=$(cli/dist/engrams session create \
--image localhost:5001/demo:warm-1 \
--harness claude \
--prompt "List /workspace and describe what you find.")
cli/dist/engrams session logs "$SID"同一会话会出现在仪表盘里;闲置几分钟会快照停下,再用 engrams session prompt 续跑。
更细的步骤以仓库 Quick start 和 文档站 为准。
上云:GCP / AWS 生产形态(概览)
生产是 一个 K8s 集群、两套 Helm:
- 控制面:coordinator + orchestrator + Web(鉴权、任务、集成、调度)。
- Firecracker host fleet:挂在带嵌套虚拟化的 Intel 节点池上(GKE 常见 C3;EKS 常见 m8i / 8 代虚机或
*.metal)。
还有 Terraform quickstart:建集群、库、对象存储、密钥壳。细节见仓库:
上云前先认清两件硬约束:
- 嵌套虚拟化基本是 Intel-only,而且要在建节点池时打开;和部分自动扩缩 / 自动供应策略不兼容。
- 快照与 CPUID 绑定:更新一代 CPU 平台上 bake 的镜像,不一定能在更老的平台上恢复。跨云混跑要想好 bake 策略。
真正提效的地方:自动化,而不是多开几个 Chat
Cortex 自己内部用法里,UI / Slack 叫 agent 只是日常入口;亮点是自动化(支持 OpenRouter,可按任务挑模型控成本)。官方举例包括:
1. 依赖升级与 CVE
定时扫过期依赖和 CVE → 逐个升级、跑测试、修破损 → 每个变更单独开 PR → 再走 PR review 自动化。遇到测试盖不住的大版本 runtime 跳变,会升级给人而不是硬推。
2. 线上内存热点
每日查 Datadog 等 profiling 里最大的分配栈 → 落到对应服务开任务 → 改热点路径 → PR 里带前后数据,方便人审「值不值得合」。
3. Bug triage
运行时新错误进来:复现、归因,能修就修,不能修就开 issue;同一错误重复出现会并入已在飞的 run,避免重复开工。噪音告警可以直接说明「这是噪音」并写原因,而不是为了交差硬开 PR。
4. Linear + Slack 的端到端交付(实验向)
给 agent 一个 Linear 项目 + 一个 Slack 频道:领 issue、开 PR、在线程里答问题、每日状态更新;有人说 CI 红了,同一 agent 去查、修、回绿。单个 ticket 可再拉起跑在独立 microVM 里的 sub-agent。
对读者更可操作的理解是:engrams 把「agent 一次会话」产品化成 可触发、可审计、可快照恢复的流水线步骤——日程、Slack 线程、PR、Webhook 都能当触发器,每一步有持久记录。内置还有一批 connector;PR review、Slack 线程等自动化可以启用现成模板。
什么时候值得试
更值得
- 团队已经用 Claude Code / Codex,想把重复 SDLC搬进自有云,而不是每人笔记本挂机。
- 合规要求 transcript / 代码 / key 不出账号。
- 需要 Slack / Linear / 定时任务驱动的「值班式」agent,而不是纯 IDE 对话。
先观望或只跑本地 demo
- 没有(或不想维护)带嵌套虚拟化的 Intel 节点池。
- 不能接受 AGPL 主体与 0.x API 变动。
- 其实只需要「本机偶尔让 AI 改几行」——那继续用本机 Agent 更简单。
小结
engrams 解决的不是「再换一个会聊天的模型」,而是:在你自己的云里,用 microVM 隔离跑 Claude Code / Codex(或自定义 harness),并把日程、Slack、Linear、PR 等事件收成可恢复的自动化。本机 Agent 负责人机结对;engrams 负责组织级、可挂起再续的软件工厂流水线。
上手路径建议:先 just bootstrap && just pull-kernel && just dev 把 demo 会话跑通,确认模型和镜像流程,再按 GCP/AWS 文档评估节点池与 Helm。项目很新,跟文档和 GitHub Issues 对齐即可。