@laplace.live/persona-sdk

中文文档
1.35.0发布于 2026/11/01MITTypeScriptES Module

拉普拉斯Persona插件API的TypeScript SDK和连线模式

中文使用文档
文档目录3 节
  1. 设置
  2. 识别你的应用
  3. 注册中心和编目元数据

@laplace.live / persona-sdk

的TypeScript SDK和连线模式 拉普拉斯的角色 插件API -一个令牌认证的WebSocket API,用于驱动头像,场景,表达式, 动作,热键和跟踪参数从应用程序外部。

同构:运行在Node≥24、Bun、浏览器和OBS浏览器源上 WebSocket. 一个运行时依赖项(zod(支持连接模式)。

设置

启用角色中的API 高级→插件API,创建密钥,并复制令牌。

import { PersonaClient } from '@laplace.live/persona-sdk'

const persona = new PersonaClient({ token: 'sk-lp-v1-…' })
await persona.connect()

// Typed request/response
const { scenes, activeSceneId } = await persona.call('scene.list')
await persona.call('expression.toggle', { name: 'Smile' })
await persona.call('scene.patch', {
  background: { mode: 'color', color: '#112233', imageAssetId: null },
})

// Events (subscriptions survive reconnects)
persona.on('motion.started', m => console.log('playing', m.group))

// Parameter leases: the value keeps applying until released; the SDK owns the
// heartbeat, and if your process dies the parameter reverts within ~1 s.
const mouth = persona.driveParameter('MouthOpen', 0.8)
mouth.set(0.3)
mouth.release()

缺省情况下,令牌以 ?token= (适用于浏览器)。从节点, createNodeClient 将其作为 Authorization: Bearer 而不是Node的全局 WebSocket, 记录永久结束会话的关闭(密钥撤销或会话断开) 角色):

import { createNodeClient } from '@laplace.live/persona-sdk'

const persona = createNodeClient({ token, log: console.warn })
await persona.connect()

任何其他可以设置报头的套接字,例如 ws 包装、插头 new PersonaClient({ token, auth: "header", createWebSocket }).

识别你的应用

通过 clientInfo 你的应用按名称显示在 连接的客户机 在角色的 设置(可选-未识别的客户端工作相同)。SDK会在每个节点上重新声明它 重新连接;它是自我声明的,只显示,从不授权:

const persona = new PersonaClient({
  token,
  clientInfo: { name: 'My Overlay', version: '1.2.0', developer: 'You' },
})

两个服务器关闭代码是终端并停止重新连接循环: CLOSE_KEY_REVOKED (4001年, 密钥已被撤销)和 CLOSE_FORCE_DISCONNECTED (4002,用户断开会话 在角色)。客户端通过 onWarning , closed.

将令牌视为密码:它授予对应用程序的控制,包括加载注册 模型和网页覆盖。服务器监听环回,除非局域网访问在启用 角色的设置。

注册中心和编目元数据

model.list / asset.list 返回裁判的来源和归属:每个裁判携带 origin ('bundled' 对于第一方内容,随应用程序一起发布或从 角色目录; 'user' 对于用户添加的任何内容),可以携带optional author / url 学分。

CatalogItem 选择器背后与传输无关的内容-元数据形状是否稳定 id (场景被关掉了),然后 InventoryKind、显示 name,可选 description, thumbnailUrl, previewUrl (缩略图中显示了一个简短的循环视频 的地方), version, author, url, download (一个 CatalogDownload: HTTPS压缩文件 它的字节大小和sha256)。角色市场将其目录服务为 { version, items } 在 https://marketplace.laplace.live + MARKETPLACE_ITEMS_PATH. healCatalog 将已解析的文档转换为可用的行,删除 畸形的,和 pickLocalized(item.description, locale) 中的描述 读者的语言,回落到英语。

healCatalogItem 治愈一排,然后 healCatalogRows(raw, healRow) 通过 您自己的行治疗,保持两个id中的第一个等于忽略大小写。一行需要一个 Id通过 isCatalogId (一个路径安全段,因为id代表一个安装文件夹), 一个非 name,和一种来自 CATALOG_KINDS; CATALOG_FORMAT 文件是 version. healSha256 将摘要读取为64个小写十六进制字符,并且 payloadEntryPath 检查有效负载压缩包的条目名称,回答相对POSIX路径和 提取器可以写,或者为空;负载的两个条目不能共享a payloadEntryKey. healLocalizedText 治愈一个 LocalizedText (en 必需的,其他发送的区域 (可选),并且永远不会将其他区域设置提升为 en.

版本与发布记录

@laplace.live/persona-sdk 共发布 62 个版本,首次发布于 2026/08/11;过去 12 个月发布了 62 个版本。

版本发布日期距今
1.35.0latest2026/11/011 天前
1.34.02026/10/304 天前
1.33.02026/10/267 天前
1.32.02026/10/259 天前
1.31.02026/10/2410 天前
1.30.02026/10/2310 天前

关于 @laplace.live/persona-sdk 的常见问题

@laplace.live/persona-sdk 是什么?

拉普拉斯Persona插件API的TypeScript SDK和连线模式

如何安装 @laplace.live/persona-sdk?

在项目目录运行 npm install @laplace.live/persona-sdk,或使用 pnpm add / yarn add / bun add。

@laplace.live/persona-sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@laplace.live/persona-sdk 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@laplace.live/persona-sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@laplace.live/persona-sdk 可以商用吗?

@laplace.live/persona-sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@laplace.live/persona-sdk 还在维护吗?

最新版本 1.35.0 发布于 2026/11/01(1 天前);至今共发布 62 个版本,其中过去 12 个月发布了 62 个;首次发布于 2026/08/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。