Community编程与开发github.com

24601/surreal-skills

SurrealDB Surrealism WASM 扩展开发。用 Rust 编写函数,编译为 WASM,作为数据库模块部署。属于 surreal-skills 系列。

surreal-skills 是什么?

该技能专注于 SurrealDB 的 Surrealism 扩展开发,允许开发者使用 Rust 编写自定义函数,编译为 WebAssembly (WASM),并作为原生数据库模块部署,通过 SurrealQL 直接调用。它适用于 SurrealDB 3 及以上版本,需要 Rust 工具链、wasm32-unknown-unknown 目标以及 SurrealDB CLI v3.1.4+。开发流程包括使用 #[surrealism] 注解函数、创建 manifest 文件、通过 surreal module compile 编译,最后在 SurrealDB 中通过 DEFINE BUCKET 和 DEFINE MODULE 注册模块。该技能支持自定义标量函数、伪造数据生成、领域特定逻辑(如语言处理、金融计算)以及与核心 SurrealDB 功能互补的复杂 Rust 库功能。目前处于积极开发中,API 可能随 SurrealDB 3.x 更新而变化。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/24601/surreal-skills/tree/main/skills/surrealism

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Surrealism -- SurrealDB 的 WASM 扩展

SurrealDB 3 的新特性。用 Rust 编写自定义函数,编译为 WebAssembly (WASM),并作为原生数据库模块部署,可通过 SurrealQL 调用。

先决条件

  • Rust 工具链(稳定版),包含 wasm32-unknown-unknown 目标
  • SurrealDB CLI v3.1.4+(包含 surreal module 子命令的 surreal 二进制文件)
  • 熟悉 SurrealQL 的 DEFINE MODULE 和 DEFINE BUCKET

开发工作流

1. 注解   -- surrealism.toml + 在 Rust 函数上添加 #[surrealism]
2. 编译   -- surreal module compile  (生成 .wasm 二进制文件)
3. 注册   -- 在 SurrealQL 中执行 DEFINE BUCKET + DEFINE MODULE

快速开始

# 创建新的 Surrealism 项目
cargo new --lib my_extension
cd my_extension

# 添加 WASM 目标
rustup target add wasm32-unknown-unknown

# 创建 surrealism.toml(必需的清单文件)
cat > surrealism.toml << 'TOML'
[package]
name = "my_extension"
version = "0.1.0"
TOML

# 编写你的扩展(使用 #[surrealism] 注解)
cat > src/lib.rs << 'RUST'
use surrealism::surrealism;

#[surrealism]
fn greet(name: String) -> String {
    format!("Hello, {}!", name)
}
RUST

# 使用 SurrealDB CLI 编译为 WASM
surreal module compile

# 在 SurrealDB 中注册
surreal sql --endpoint http://localhost:8000 --user root --pass root --ns test --db test
-- 授予对 WASM 文件的访问权限
DEFINE BUCKET my_bucket;

-- 注册模块函数
DEFINE MODULE my_extension FROM 'my_bucket:my_extension.wasm';

-- 在查询中使用函数
SELECT my_extension::greet('World');

使用场景

  • 可从 SurrealQL 调用的自定义标量函数
  • 用于测试的模拟/伪造数据生成
  • 领域特定逻辑(语言处理、量化金融、自定义编码)
  • 访问过于专用于 SurrealDB 核心的 Rust crate 功能
  • 用于全文搜索的自定义分析器

状态

Surrealism 正在积极开发中,尚未稳定。API 可能在 SurrealDB 3.x 版本间发生变化。请通过 GitHub Issues/PR 在 surrealdb/surrealdb 仓库提交反馈。

完整文档

关于完整指导,请参见主技能的规则文件:

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

相关技能