@characterxyz/web

中文文档
0.10.1发布于 2026/11/06MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 3540

网络字符 XYZ,无头:会话,流式聊天,有公平队列的语音呼叫. 无框架,零依赖.

中文使用文档
文档目录3 节
  1. 背景、事件和行动
  2. 选项
  3. 许可证

@ characterxyz/ web

无头字符 XYZ SDK:会话,流出聊天,实时语音呼叫和呼叫队列, 没有UI。 将您自己的接口建在相同调用的即时部件上 。 无框架, 零依赖, 8 KB gziped.

换成现成的部件? 使用 @characterxyz/widget (任何地点)或 @characterxyz/react。 。 。 .

npm install @characterxyz/web
import { CharacterXYZ } from '@characterxyz/web';

const cx = await CharacterXYZ.init({ publishableKey: 'cxyz_pk_live_…' });
cx.chat.on('messages', render);           // streams as the reply is written
await cx.chat.send('Hello!');

callButton.onclick = async () => {        // from a click: it needs the microphone
  const call = await cx.startCall({ autoAccept: true });
  call.on('state', (s) => show(s.phase, s.position, s.etaSeconds));
  call.on('caption', (c) => caption(c.role, c.text));
};

每行繁忙时,一通电话会按先到顺序排队等候,排到位置和估计值 游客可以继续聊天.

背景、事件和行动

页面和经纪人双向交谈. 三层,一会:

// 1. CONTEXT IN — who this is and what is true now. Level-triggered: it stays
//    in scope for every later turn until changed. Scope: visitor.*, context.*.
await cx.identify({ id: 'u_42', email: '[email protected]', name: 'Asha', traits: { plan: 'pro' } });
await cx.setContext({ page: '/pricing', cart: { items: 2, value: 4200 } });

// 2. EVENTS IN — something the visitor DID. Only names the agent's graph
//    declares are accepted. Fire-and-forget: do not await it.
void cx.track('pricing_viewed', { plan: 'pro' });
//    Scope in the graph: {{event.name}}, {{event.data.plan}}.
//    With `openChat` on the node, the widget opens itself for the reply.

// 3. ACTIONS OUT — the graph asks the page to do something.
const off = cx.registerAction('openCart', async ({ itemId }) => {
  await cart.open(String(itemId));
  return { opened: true, count: cart.count };
});

图表边是现有节点以外的两个节点: 在现场活动中 (单位:千美元) 事件名称; 名称是允许列表, 有可选的数据形状和发送 测试控制台中的事件按钮)和 客户端动作 (选择一个动作页) 已注册; 答案恢复到下 done 或者说 failed,以及 result 可读 节点之后.

cx.track 发送身份证明 keepalive,因此重试或点击 航行离开仍然是一件大事。 等待的页面动作是两个阶段 在相同的 HTTP 连接上握手: 行走暂停, SDK 运行您 处理者,张贴结果,答复会回来。 没有调查.

选项

选项
publishableKeycxyz_pk_live_…,在页面中安全;仅在密钥允许的站点工作
getSessionToken对于登录访问者: 返回您的服务器所刻录的会话 @characterxyz/server
agentId哪个钥匙的经纪人? 默认: 密钥的第一个
storagelocal (记住匿名访客,默认) memory 个人商店

创建密钥并选择它们可能在其中运行的网站 字符 XYZ QQ 设置 QQ 开发者。 。 。 .

许可证

麻省理工学院

版本与发布记录

@characterxyz/web 共发布 17 个版本,首次发布于 2026/10/12;过去 12 个月发布了 17 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.10.1latest2026/11/062 天前
0.10.02026/11/017 天前
0.9.12026/11/017 天前
0.9.02026/11/018 天前
0.8.02026/10/2614 天前
0.7.32026/10/2514 天前

关于 @characterxyz/web 的常见问题

@characterxyz/web 是什么?

网络字符 XYZ,无头:会话,流式聊天,有公平队列的语音呼叫. 无框架,零依赖.

如何安装 @characterxyz/web?

在项目目录运行 npm install @characterxyz/web,或使用 pnpm add / yarn add / bun add。

@characterxyz/web 支持 TypeScript 吗?

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

@characterxyz/web 支持 ESM 还是 CommonJS?

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

@characterxyz/web 可以商用吗?

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

@characterxyz/web 的下载量有多少?

根据 npm 官方下载统计,@characterxyz/web 在 2026/10/10 – 2026/11/08 这 30 天内被下载 3,540 次,日均约 118 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@characterxyz/web 还在维护吗?

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