通往一个 Rust 智能体 OS 的 JavaScript 入口

Astrid 是一个微内核智能体 OS,内核之上的一切都是一个 WASM capsule,而历来写一个 capsule 意味着写 Rust。sdk-js 是那个把这扇门向 JavaScript 和 TypeScript 开发者打开的伙伴。让它有意思的主张是二进制等价:它产出和 Rust SDK 相同的 WIT 契约、相同的 wasip2 Component Model 输出、相同的 .capsule 归档格式,于是内核分不出哪种语言构建了这个组件。你不离开 Node 工具链就进了 Astrid 生态。

设计目标是地道、而不只是可及。Rust SDK 写起来像对着 std,这个写起来像对着 node:fs/promises、WHATWG API 和 Node 的 EventEmitter。底下宿主 ABI 相同;表面被翻译成一个 JavaScript 开发者已经知道的样子。

三个包

SDK 按职责拆分:

  • @unicity-astrid/sdk 是 capsule 作者 API,逐模块镜像 Rust SDK 的 prelude:fsnetprocessenvtimelog,加上 Astrid 特有的模块如 ipckvhttphooksidentityapprovalcapabilitiesinterceptors。TypeScript 装饰器(@capsule@tool@interceptor@command@install@upgrade@run)替代 Rust 的属性宏。
  • @unicity-astrid/build 是构建编排器,跑 tsc、esbuild 和 ComponentizeJS 的编程式 API,产出一个 wasm32-wasip2 组件、由 Rust 侧的 astrid-build 打包成一个 .capsule
  • @unicity-astrid/sdk/contracts 装着从 astrid-contracts.wit 自动生成的 TypeScript 类型,即 IPC 事件类型,可用在跨 capsule 通信的两端,于是一个 JS capsule 和一个 Rust capsule 能交换类型化消息。

安装

mkdir my-capsule && cd my-capsule
npm init -y
npm install @unicity-astrid/sdk
npm install --save-dev @unicity-astrid/build typescript

你随后写一个描述组件的 Capsule.toml,用 @unicity-astrid/build 工具链构建,它产出供 Astrid 内核加载的 WASM 组件。

写一个 capsule 长什么样

撰写模型是装饰器驱动的,这正是让它感觉像普通 TypeScript、而非一个陌生 ABI 的原因。你用 @capsule@tool@interceptor@command,以及 @install@upgrade@run 这类生命周期装饰器标注一个类和它的方法;那些替代 Rust SDK 的属性宏,让构建步骤替你生成 WASM 样板。你在一个 Capsule.toml 里声明这个 capsule 提供什么、需要什么,对着熟悉的 fsnetprocess 和 Astrid 特有的 ipckvhttp 模块写逻辑,然后 @unicity-astrid/build 工具链跑 tsc、esbuild 和 ComponentizeJS,产出一个 wasm32-wasip2 组件。从那里内核就把它当成一个 Rust 写的 capsule 一模一样地对待。要点是 WASM 和 Component Model 那套机器待在你视线之外:你写 TypeScript,工具链产出一个组件,OS 加载它。

为什么一个「第二语言」SDK 是一个真信号

值得读一读这个仓库的存在对 Astrid 说明了什么。发布一个「编译到和 Rust 相同组件格式」的 JavaScript SDK,是一个押注:capsule 边界稳定到足以支持多种作者语言,而这是那种「核心契约沉淀之后才会做一次」的事。WIT 加 Component Model 的路子在挑大梁:它把接口定义一次,任何面向 wasip2 的语言都能据它实现。对更广的智能体工具世界,这比任何单个 capsule 都更有意思,一个真实的、与语言无关的智能体软件组件边界。

它有多早期

相应地设好预期。这个 SDK 创建于 2026-05、很年轻,只有少数几个 open issue。它的 README 声明 MIT OR Apache-2.0,但写作时还没提交 LICENSE 文件、GitHub 也检测不到许可,所以在它之上构建任何你打算发布或再分发的东西前,先确认条款。更根本地,它只和 Astrid 本身一样有用,而后者在 v0.5.0、capsule 生态年轻。如果你想用 TypeScript 写 Astrid capsule、且你乐于在一个快速移动的 v0.x 平台上构建,就采纳 sdk-js。如果你在评估是否要用 Astrid,先从 OS 本身开始,把这个 SDK 当成你决定进去之后的那扇 JavaScript 门。

相关

这是 Astrid 智能体 OS 的伙伴;先读那个、理解什么是 capsule、以及组件边界为何要紧。想看还有什么在往上爬,见 LLM 工具每日速报周报

FAQ

sdk-js 是做什么的? 用 JavaScript 或 TypeScript 为 Astrid 智能体 OS 写 capsule,编译到 Rust SDK 产出的同一个 WASM 组件格式。

一个 JS capsule 能和一个 Rust capsule 通信吗? 能。两者共享同一个 WIT 契约和自动生成的 IPC 类型,所以跨 capsule 消息在两端都是类型化的、无论源语言。

怎么安装? npm install @unicity-astrid/sdk 加上 @unicity-astrid/build 和 TypeScript 作为开发依赖,然后用提供的工具链构建。

我现在该用它吗? 仅当你想用 TypeScript 构建 Astrid capsule、且乐于在一个「README 声明 MIT OR Apache-2.0、但还没提交 LICENSE 文件」的 v0.x 平台上。先评估 Astrid 本身。