今天在 GitHub Trending 上看到一个有意思的项目:AOS Community Edition——一个为智能体(Agent)设计的开源操作系统,目标是给开发者一个「可检视、可组合」的运行时环境。它不止是一套 SDK,而是把 CLI、HTTP API、首方 Capsule、模型/提供方接入与审计能力打包成一个完整的「操作系统」形态。
一、项目概述
AOS(Unicity Agent Operating System)Community Edition 把自己定位为「运行智能体及其原生软件的操作系统」。它的产品面(product surface)由官方统一持有,包含几个核心部分:
aosCLI:统一的命令行入口,覆盖初始化、状态查询、升级、MCP 服务等;- HTTP API:基于 Rust + Axum 的常驻服务,供上层应用调用;
- 发行版(distributions)与首方 Capsule:约 21 个开箱即用的生产级胶囊(capsule),在
~/.aos下按产品版本固定安装; - 模型与提供方体验:统一接入 Codex、Claude、Grok 等客户端;
- Unicity Audit:内建的审计能力,保证动作可溯源。
仓库的工作区布局清晰划分了职责:
crates/ Product CLI, HTTP API, control client, and shared product code
capsules/ First-party production capsules
distros/ Community distribution manifests and release metadata
docs/ Product and operator documentation
核心理念是:Capsule 是通用的用户态积木,使用者可以把它们组合成 harness(执行框架)、meta-harness(元框架)、connector、service 等系统;而 Forge 工具链则让一个「全新的智能体」能够检视运行中的系统、学习 Capsule 模型、发现真实能力缺口,并构建、验证一个最小权限的 Capsule。
二、技术原理
2.1 架构分层:产品态 vs 运行时态
AOS 明确区分了「产品根(product root)」与「运行时根(runtime root)」。产品端只接管一部分命令边界(init、status、migrate、update、distro、mcp、daemon、serve-health),其余运行时根直接由 AOS CLI 透传:
# 产品端接管的命令
aos status
aos status --json
aos --principal codex-code mcp serve
aos daemon foreground --workspace /workspace
# 其余命令直接走 AOS CLI
aos doctor
aos capsule build
当 AOS 接管某个 root(如 status、init)时,会用产品实现替换底层同名命令,因此完整可用面始终是 aos <verb>。发布校验会比较「被锁定的运行时」公开命令清单与 AOS 分类后的 root 契约,一个新的运行时 verb 没有显式的 inherit-or-own 决策就无法进入产品发布。这种「命令边界契约」设计,保证了扩展行为可预期、可审计。
2.2 安全与供应链:fail-closed 的发布闸门
AOS 对分发态与升级态有强约束。每次发布都会附带 checksums、Sigstore 签名包、GitHub build-provenance 证明,以及 runtime-compatibility.toml(锁定确切的运行时版本与 WIT commit)。在 tag 发布前,两个机器可读的闸门必须同时为 true:
- runtime-compatibility 闸门:运行时版本与 WIT 提交必须匹配;
- upgrade / self-heal 闸门:候选版本必须保留一个冻结的 standalone-home 克隆,并以新生成的运行时协调状态成功启动,才会被批准。
此外,直接安装默认解析签名后的 stable 通道,也可选择 dev / nightly / 精确版本,但在签名元数据真正发布之前一律 fail-closed(失败即关闭)。
2.3 关键技术栈(来自 Cargo.toml)
仓库是一个 Rust workspace(resolver = “3”),关键依赖透露了它的工程取向:
astrid-sdk = { version = "=0.7.1", features = ["derive"] }
astrid-core = "=0.10.4"
astrid-uplink = "=0.10.4"
axum = "0.8" # HTTP API 服务
blake3 = "1.8.5" # 内容寻址 / 完整性校验
clap = { version = "4.6", features = ["derive"] } # CLI
tokio = { version = "1", features = ["...", "rt", "process", "net"] } # 异步运行时
toml = "0.8"
uuid = { version = "1.22", features = ["rng-getrandom", "serde", "v4"] }
值得注意的 release profile 完全是「安全 + 体积」导向:
[profile.release]
opt-level = "z" # 以体积最小化为优化目标
lto = true
codegen-units = 1
strip = true
panic = "abort" # 异常直接中止,避免 unwind 带来的不确定性
blake3 的引入与发布时的 checksums / Sigstore 证明相呼应,说明整个系统对「内容完整性」有一致的设计。
2.4 约 21 个 Capsule 的拼装模型
capsules/ 目录下是一组职责单一的胶囊,例如:capsule-agents、capsule-context-engine、capsule-forge、capsule-fs、capsule-identity、capsule-memory、capsule-mcp、capsule-openai / capsule-openai-compat、capsule-router、capsule-session、capsule-shell、capsule-skills、capsule-system、capsule-users 等。它们共同构成「用户态世界」:指令、记忆、技能、harness 代码、工具、capsule、trace、评估都是可改进的对象。
三、安装与快速开始
AOS 提供了官方安装器,会安装 aos 产品命令、被锁定的运行时,以及在 ~/.aos 下由本源码树构建出的确切 21 个 Community Edition Capsule:
curl --proto '=https' --tlsv1.2 -fsSL https://aos.unicity.ai/install.sh | sh
aos init
aos init(含 aos init --offline)会从本地、按产品版本固定的 Capsule 资源中完成配置;重复运行安装器则执行一次「协调式产品升级」,不会重写独立的运行时安装。
最简运行示例——启动守护进程并暴露 MCP 边缘:
# 查看系统状态
aos status --json
# 以前台方式运行持久化守护进程(Unix 上会用 bundled daemon 替换自身进程)
aos daemon foreground --workspace /workspace
# 为某个客户端提供 MCP 服务
aos --principal codex-code mcp serve
四、使用方法与实战
4.1 MCP 边缘与审批桥(approval bridge)
aos mcp serve 是 Codex、Claude、Grok 共享的产品边缘。当客户端支持 MCP form elicitation 时,会持续展示自己的受限审批表单;当不支持时,默认的 --interaction auto 会调用本地 AOS 决策面:macOS 上的 AppKit、Windows 原生对话框或 Linux 上的 Pinentry。也可以用 --interaction client|native|deny 显式指定策略:
aos --principal codex-code mcp serve --interaction auto
安全上的一个关键约束是:本地桥只接受单个布尔值或固定的 AOS 审批枚举,绝不收集任意字符串、密码形态字段或 URL 形态的诱导输入。这在「让 Agent 替你点确认」的场景里把攻击面压到了最小。
4.2 在 AOS 上构建(Forge + meta-harness)
Community Edition 随附 Forge 作为 OS 构建工具链:一个全新智能体可以检视运行中的系统、学习 Capsule 模型、识别真实能力缺口,并构建、验证一个最小权限 Capsule。Forge 还会安装 meta-harness 技能,教智能体把指令、记忆、技能、harness 代码、工具、capsule、trace、评估当作「可改进的用户态世界」来治理。
4.3 主体隔离与运行时导入
AOS 支持以「主体(principal)」为单位做隔离,让已认证的 operator 与目标环境解耦:
# 为目标主体 alice 初始化,operator 与 alice 的认证上下文分离
aos --principal operator init --target-principal alice
也可以从已有的独立运行时安装中,按白名单拷贝兼容状态而不改动源:
aos <import 命令> # 见 docs/runtime-migration.md 的精确白名单与完整性校验
本发行版将分发态固定为 Unicity CE;如需其它分发,需使用独立的 astrid 安装与运行时 home。Homebrew 安装通过 aos update 升级,所有通道在签名元数据发布前 fail-closed。
五、常见问题与解决方案
Q1:安装脚本超时或网络受限?
可用 aos init --offline 从本地、按产品版本固定的 Capsule 资源完成配置,前提是安装器已经把资源落到 ~/.aos。
Q2:aos mcp serve 弹出审批框太频繁?
客户端若支持 MCP form elicitation,会复用自身表单;否则用 --interaction 显式选择 client/native/deny,避免默认 auto 在不同平台调用不同本地决策面造成的差异。
Q3:能否把已有的运行时状态迁移进来?
可以。aos CLI 能按白名单从独立运行时安装拷贝兼容状态而不改动源(详见 docs/runtime-migration.md 的 allowlist、完整性校验与恢复行为)。
Q4:升级会破坏现有环境吗? 不会。重复运行安装器是「协调式升级」;发布闸门要求候选版本保留冻结的 standalone-home 克隆并能以新协调状态成功启动,才被批准发布。
Q5:想用非 Unicity CE 的分发?
本发行版固定为 Unicity CE;其它分发需使用独立的 astrid 安装与运行时 home。
六、总结
AOS Community Edition 的价值不在于「又一个 Agent 框架」,而在于它把运行时、命令边界契约、供应链签名、审计与最小权限 Capsule 模型统一到一个 OS 形态里。对希望自建可控、可检视智能体基础设施的团队来说,它提供了一条从 aos init 到 forge 构建自有 Capsule 的完整路径;而 fail-closed 的发布闸门与受限的审批桥,则把「让 Agent 拥有权限」这件事的安全兜底做在了系统层面。如果你正在评估把 Agent 能力下沉为可信基础设施,AOS CE 值得在 Trending 列表里被认真看一眼。
项目地址:https://github.com/unicity-aos/aos-ce