AB
AiBoss
project

persona-ai-sdk - 让 AI 角色记住对话并保持人设的 TypeScript SDK

persona-ai-sdk 是 Tavern Labs 维护的 TypeScript SDK,把角色卡、记忆运行时、模型适配与持久化拆成可替换的层,让 AI 角色在多轮对话中保持人设并记住关键信息。采用 MIT 许可,截至 2026-11-14 星标 187,尚无正式 release。

persona-ai-sdk 是一个用 TypeScript 编写的 SDK,面向「AI 角色需要始终像它自己、并且记得跨会话的重要信息」这类应用场景。据项目自述,它把通常纠缠在一起的五件事拆开:角色卡(Personas)、记忆(Memory)、模型(Model)、持久化(Persistence)与交互界面(Interface),每一层都可以替换。适合做聊天角色、语音角色、游戏 NPC、HTTP 服务或接入 SillyTavern 的开发者使用。

维护者与状态

项目由 tavern-labs-ai 维护,仓库创建于 2026-10-31,最后一次提交在 2026-11-02。事实表显示,该项目尚无正式 release,因此没有可引用的版本号与发布说明。截至 2026-11-14,仓库星标数为 187。项目同时以 npm 包形式发布,包名为 ai-persona-sdk。

主要能力

以下能力均据项目 README 自述整理,未经独立验证:

  • 内置角色卡目录:README 列出了 atlas、sage、vera、scout、wren、ember、lumen、mica 八个角色,分别对应战略分析、客户支持、销售开发、研究助理、新人引导、品牌文案、技术讲解、运维调度等定位。默认角色为 atlas 与 sage。项目说明,传入未知 ID 时 getPersona 会返回 Atlas,若希望未知 ID 报错,应先调用 personaIds() 判断。
  • 角色卡格式:卡片包含 id、name、tagline、description、traits、systemPrompt、greeting、memorySeeds、suggestedModel、version、author 等字段。README 称 traits 属于建议性信息,应与 system prompt 一起传入,由宿主应用自行调整语气;卡片应视为不可变的共享目录数据。
  • 记忆运行时:createCharacterMemoryRuntime 负责记忆的抽取、来源标注、合并、可见性、召回与生命周期。README 说明,角色卡里的 memorySeeds 只是建议,不是特权记录,配置的抽取器可以按置信度与来源规则对它们做规范化、合并或拒绝。
  • 一次调用完成多步流程:据项目说明,runtime.respond() 单次调用会依次完成记忆召回、提示词编译、模型生成、本轮对话写入与关系状态推进,并返回文本、语音投递元数据(情绪、语速、表现力、风格、停顿)以及包含提供方、模型、耗时与召回记忆 ID 的 trace。
  • 多提供方适配:提供 OpenAI 与 Amazon Bedrock 两套适配器。README 称抽取、向量化与生成是三个独立端口,可以混用,例如用 Bedrock 生成、用 OpenAI 做向量化,或替换为完全本地的向量适配器。
  • 三种存储适配:内存存储适合单元测试与临时会话;原子 JSON 文件存储适合原型与本地工具;SQLite 适配器适合桌面端、单节点与小规模服务,提供事务能力。

使用入口

源码仓库地址为 tavern-labs-ai/persona-ai-sdk,npm 包页面为 ai-persona-sdk。

据 README,安装方式为:

npm install ai-persona-sdk

从源码检出构建则使用:

npm install
npm run build

README 列出的前置条件包括:Node.js 20 或更新版本;一个 OpenAI API key,或具备 Bedrock 模型访问权限的 AWS 凭证;使用 SQLite 适配器时需要 better-sqlite3。Bedrock 适配器走标准 AWS SDK 凭证链,执行身份需要拥有调用所配置模型的权限。README 还建议显式指定模型 ID,以免升级包时模型行为发生变化;角色卡中的 suggestedModel 只是推荐,并不保证该模型在你的账号或区域已启用。

许可与限制

项目采用 MIT 许可证。已知限制与适用边界方面,README 提到:SQLite 是可选的原生依赖,需要单独安装;角色卡的 traits 仅作建议,不构成强制行为约束;memorySeeds 会经过抽取与校验流程,可能被规范化、合并或拒绝;suggestedModel 不保证在特定账号或区域可用。此外,事实表显示项目尚无正式 release,接口与行为在正式版本发布前可能仍会调整,采用前建议先阅读仓库中的文档与 API 参考。