通往一个 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:fs、net、process、env、time、log,加上 Astrid 特有的模块如ipc、kv、http、hooks、identity、approval、capabilities、interceptors。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 提供什么、需要什么,对着熟悉的 fs、net、process 和 Astrid 特有的 ipc、kv、http 模块写逻辑,然后 @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 本身。