@ai-matrx/meet

中文文档
0.11.130发布于 2026/10/30MITTypeScriptESM + CJS近 30 天下载 5.6万

企业部 AI-本土电话和Matrx客户端会议: LiveKit Cloud 房间,带有服务器意指的代号,即时环/受接/去克线,有持久链接的缩放级会议,游说接纳和来宾加入,主机控制,Egress录音被强制c

中文使用文档
文档目录17 节
  1. 此软件包为何存在
  2. 学说
  3. 1. 客户从来不持有LiveKit秘密.
  4. 2. 在被咬前重新刷新出一枚标志并铸造出ONCE.
  5. 3. 阶段从来不是。 没有无限的旋转器.
  6. 4. 两条腿接到电话,然后响了ONCE.
  7. 5. 来宾是一等身份,而不是退化的用户.
  8. 6. 接纳是服务器的决定。 角色来自符号.
  9. 7. 一个持久的链接是一个身份,而不是一个事件的URL.
  10. 8. 同意是一揽子财产,而不是道具.
  11. 9. 大赦国际是与会者之一,看来是与会者之一.
  12. 10. 舞台是算术的,从不洗牌.
  13. 11. 没有什么是沉默地失败的,任何控制都不是谎言.
  14. 一小时融合(R7)
  15. 东道主拥有的,以及它绝对不能做的
  16. 服务器先决条件
  17. 盖茨

@ai-matrx/meet

企业部,人工智能的电话 和每个Matrx客户的会面: 窃听一个人并打电话进来 2秒,或者运行一个与Zoom相竞争的会议——大厅,主机控制,屏幕共享,录音—— 人工智能那半部分不是附加的 但是我们的理由更好.

一个供应商,一个组成部分,在一小时之内召开包括AI在内的全面生产会议.

pnpm add @ai-matrx/meet

建造在 @ai-matrx/data/realtime 用于信号和 @ai-matrx/messaging 请柬。 有一个 手卷为零 .channel( 此软件包中的代码而且你身上一定没有.


此软件包为何存在

视频通话是每个团队 估计两周和船舶 在三个月内,因为 硬块不是瓷砖 他们是:谁被允许进入这个会议室,如果 信号器在中会到期 摄影机灯为何在离开后继续开 手机为何在 在你用笔记本电脑回答后,其他房间仍然在鸣叫, 为什么你没有插上耳机 仍然"选择", 什么客人谁没有帐户是允许的。 每一个都有一个 名称在本 README 和旁边的回归测试中.

我们是故意的 无弹性. LiveKit Cloud是媒体基础设施,硬码(D1/D2). 没有提供者的抽象,永远不会有。 我们想要的就是这个计划 做,这就是产品.


学说

1. 客户从来不持有LiveKit秘密.

不是在nev var, 不是在建时常数, 不是"只是为了本地的 dev"。 一个 LiveKit API 的秘密 浏览器将薄荷捆绑为 任意 项目中的会议室,包括持有者 从来没有被邀请参加——这是本组织内每次对话的充分妥协.

因此软件包没有能够接受一个代码路径. 它要求的是活塞;活塞;活塞薄荷. 这是 仅限 进入一个房间(R1)的授权路径,客人的全部能力就是他们的象征 仅限一个房间,没有其他房间(R5).

2. 在被咬前重新刷新出一枚标志并铸造出ONCE.

刷新发生在信物生命的80%,而不是当重新连接以100%失败时——经典 两小时会议bug 是一个会话, 它超过它的象征, 不能回来。 每个 同步 Asker 分享一分薄荷:薄荷两次给予一分的反射出严格模式双效 识别两个 LiveKit 会话,而 LiveKit 连接旧会话。 这看起来像"我的" 当我交换分页时,请随意调用".

没有的标志 expires_at 实值 拒绝 而不是用,因为一个符号 包不能 安排一个刷新是无法默接的会议.

3. 阶段从来不是。 没有无限的旋转器.

requesting-token → lobby | connecting → connected ⇄ reconnecting → left,则任何失败都变成 failed 附带说明的补救办法。重新连接是一个可见的状态,因为 没有解释的被冷冻的瓷砖 与坠毁的应用程序是分不开的.

设备故障得到4个不同的句子,而不是一个缩出: 不允许,没有这样的设备, 设备已被另一个应用程序使用, 且上下文不安全( e)getUserMedia 不存在于 页:1 一个单一的"媒体错误"会告诉用户错误的东西在四分之三.

4. 两条腿接到电话,然后响了ONCE.

这个 长腿 是邀请行及其 Postgres 更改事件: 它在重新加载后幸存, a 迟到的标签 和一个被丢弃的套接字, 而这正是错失的调用 是一个事实而不是一个 丢失的包。 这个 即时腿 是在您的用户频道上播放的,没有数据库往返. 两者在被邀请的ID上被去除.

反之亦然 删除可耐用腿并拨打的电话丢失; 删除即时 腿和铃声感觉很慢.

周围: 每枚戒指 结束 (未答复的电话) missed),在一个设备上回答 停止其他活动 在电话中 回答忙着 而不是响起, 国家机器拒绝 复活一个固定的呼叫 当迟到 接受到达.

5. 来宾是一等身份,而不是退化的用户.

一个会议链接对任何人都有用(D6)。 客人输入名字,在大厅等,主持人承认 他们。 经认证的用户跳过提示;主机权限需要认证.

这由TYPES执行,而不是通过纪律: MeetIdentity.userId 实值 UserId | null和每个 操作需要账户的操作 UserId。一个客串供应商 根本没有呼叫中心 —— 说 这样 useCalls().canCall 是不正确的, 没有呼叫控制会比禁用按钮( 没有死端) .

6. 接纳是服务器的决定。 角色来自符号.

admit 是一个经认证检查的 RPC; 仅随后播放 告诉 敲门手,谁没有 数据库自读。 两个主机点击"承认"是普通情况,RPC是什么 使它具有同能性.

每个参与者的作用从 包含在服务器上的代号元数据。可以 确定是宿主可以让任何人变哑 而联合主机无法移除主机——没有这个等级 检查,"host control"是一个相互校验按钮.

枪声响起 之前、期间和之后 预定时间和一次经常性会议 保持一个链接。 当会议结束时 连结就会断掉 后续行动,也就是人们去寻找它的时候.

胡说八道,故意把那些听错的人 大声读出来:不 0编号 :O,没有 1编号 :l。 。 。 .

没有 showRecordingIndicator={false}记录一个人而不告诉他们是违法的 双方同意的管辖范围 和无正当理由 任何地方,所以指标和 加入时间通知船与包裹。 唯一的把手是兽人 recordingPolicy —— 说 disabled 编号 : host-controlled 编号 : always-on ——决定录音是否可能发生,永远不 人们是否被告知.

指标在 服务器 说egress在跑 从来没有在客户的 希望; 被拒绝的开始会重现它, 而不是留下一个红点 在一个没有的录音上 运行中。 以及平台文件系统中的录制土地 文件编号,从不提供 URL ——一个LiveKit URL是一个孤儿,当房间被收集到垃圾时.

9. 大赦国际是与会者之一,看来是与会者之一.

记事员作为真正的LiveKit参与者加入这个房间 is_agent 在它的象征元数据, 所以它会变成一块被贴上标签的瓷砖 一个隐形的听众在会议上 是没有人应该做的事 永远的船.

所有AI通过平台代理系统执行 @ai-matrx/agents。软件包永远不会 和模特儿谈话,永远不要急,也不要带代理定义——它需要代理身份证明 和未配置的能力报告 unavailable 补救措施 而UI则完全隐藏了这个动作.

🚨 用户法. user_input 人类是什么样的类型。 记录、名册和议程 旅费作为 已命名变量。服务器存储和帧 user_input 作为转弯的人 说,所以走私记录稿 通过它破坏每一个谈话。 没错 此软件包中的一个呼叫发送一个 user_input: 一个人实际上问的在会中的问题.

临时的笔录线从不联系到经纪人,截取的笔录在线上也这么说.

10. 舞台是算术的,从不洗牌.

屏幕分享(或者一个明显的指针)拥有舞台;然后是活跃的扬声器,然后是举起手,然后是 摄影机,然后 稳定 与时俱进 在名册上重排的牌子最多 令人不适的事物 见面UI可以做的.

大型会议 页次 并说 +N more people 它没有制作200个视频和死亡,它 不默不作声地放弃它无法适应的人(R5).

11. 没有什么是沉默地失败的,任何控制都不是谎言.

每个错误都是 MeetError 拥有稳定 code (单位:千美元) remedy 句号。 每个站着 自己宣布:一个未插接的耳机说 "你记忆中的麦克风不再连接.. 使用系统默认“ 而不是悄悄地切换你的笔记本电脑麦克风.

无法使用的控件是 缺席,从不禁用外观,从不按下服务器 将拒绝.


一小时融合(R7)

4个子路径(CORE-DESIGN 第5.1节): @ai-matrx/meet/core (无框架; @ai-matrx/meet (再出口), @ai-matrx/meet/react (供应商,钩子, <MeetingSkinRoot>,记录和 和每张相片一张 @ai-matrx/meet/skins/meet 持有相遇皮肤的部分 (单位:千美元)ControlBar, (中文(简体) ), ParticipantTile, (中文(简体) ), Captions,.),用于构成它们的主机布局.

import "@ai-matrx/meet/tokens.css";   // defaults — override these with your brand
import "./brand.css";
import "@ai-matrx/meet/styles.css";   // structural, last

import { MeetProvider, IncomingCallHost, MeetingSkinRoot, useCalls } from "@ai-matrx/meet/react";

export function App({ children }) {
  return (
    <MeetProvider
      client={supabase}
      baseUrl={AIDREAM_URL}
      displayName={user.name}
      organizationId={org.id}
      accessToken={async () => (await supabase.auth.getSession()).data.session?.access_token ?? null}
      transport={matrxTransport}
      agents={{ noteTaker: NOTE_TAKER_AGENT_ID, liveIntelligence: LIVE_AGENT_ID }}
    >
      {/* Mount ONCE. Calls now ring on whatever surface the user is on. */}
      <IncomingCallHost />
      {children}
    </MeetProvider>
  );
}

// Anywhere a person appears: your own control, calling through the hook.
const calls = useCalls();
calls.canCall && <button onClick={() => calls.call([userId], "video")}>Call</button>

// Your meeting route — the skin root chooses the viewer's skin (Meet until S9):
<MeetingSkinRoot roomName={roomName} meetingId={meetingId} />

舞台会填充取景口(100dvh) (中文(简体) ). 在一个盒子里开个会——一个板砖,一个分块 窗格——给祖先一个确定的高度和设定 --mx-meet-height: 100% 上; 每个屏幕 然后装满那个盒子.

🚨 你不告诉“见见谁是用户”,也没有道具. 代理用户读取 从 client自己的会话——在每次请求中都给JWT做薄荷的同一个客户端——因此,id in a p_user_id 参数和符号中的标识不能不同意。 通过0.5.x,这是一个道具,每 主机从自己状态的复制件中填充,一个旋转的认证饼干留下了该复制件命名 账户标签已无法证明它的存在; meet_pending_call_invites 拒绝读取 403 与 "代理用户... 不是认证用户"。通过 displayName 财务报告和审定财务报表 avatarUrl —— 说 他们都是染色体 而不是身份 A 类 userId 道具被忽略了 并说.

A 类 来宾 加入时是同一提供者 guestName这是宣布客人身份的唯一方法 车道。 客人没有帐号,所以他不读任何会话:

<MeetProvider client={supabase} baseUrl={AIDREAM_URL} organizationId={orgId}
              guestName={typedName} accessToken={async () => null}>
  <MeetingSkinRoot roomName={meeting.roomName} slug={slug} />
</MeetProvider>

请在邮件连接上登入处理器:

<MessagingProvider
  actions={[
    createCallInviteHandler({ calls, repository, onJoin: (invite) => router.push(`/meet/${invite.roomName}`) }),
    createMeetingInviteHandler({ onOpen: (payload) => router.push(`/meet/${payload.slug}`) }),
  ]}
>

东道主拥有的,以及它绝对不能做的

输入 : supabase客户端, Aidream 的基础 URL, 用户是谁( 或宾名), org, a access-token source, matrx transport, agent ids, 品牌标志值和路由器.

永远: 抓取软件包错误以重新解释, 重试软件包调用, 验证软件包 输入,或软件包上的分支。 这个逻辑属于这里(C22) 包,放出后删除按摩.


服务器先决条件

这是客户的一半。 需要两个服务器侧的部件,并且是 尚未建设数字 :

  • 助脑会遇到路由器 - 硬币(身份、赠款、TTL、来宾和游说者), Egress start/ stop, LiveKit webhooks 保存数据库 TRUE- current, 以及 LiveKit 代理 记事机 这个软件包的准确路线 MEET_ROUTES 内 src/core/tokens.ts。 。 。 .
  • 这个 communication.meet_* matrx Main的图案 - 表格和RPC src/core/repository.ts,在平台的犬形DB公约下.

在两者都存在之前,包会响亮地失败,有一条补救措施来命名缺失的棋子. 从来没有 伪造一个房间,一个标志,或者一个会议记录. 见 FEATURE.md。 。 。 .


盖茨

pnpm --filter @ai-matrx/meet typecheck
pnpm --filter @ai-matrx/meet test
pnpm --filter @ai-matrx/meet check:package   # build + publint + packed-tarball canary

麻省理工学院有执照 资料来源: aidream/apps/shared/meet。 。 。 .

版本与发布记录

@ai-matrx/meet 共发布 272 个版本,首次发布于 2026/09/08;过去 12 个月发布了 272 个版本。

版本发布日期距今
0.11.130latest2026/10/306 天前
0.11.1292026/10/288 天前
0.11.1282026/10/2512 天前
0.11.1272026/10/2512 天前
0.11.1262026/10/2412 天前
0.11.1252026/10/2412 天前

关于 @ai-matrx/meet 的常见问题

@ai-matrx/meet 是什么?

企业部 AI-本土电话和Matrx客户端会议: LiveKit Cloud 房间,带有服务器意指的代号,即时环/受接/去克线,有持久链接的缩放级会议,游说接纳和来宾加入,主机控制,Egress录音被强制c

如何安装 @ai-matrx/meet?

在项目目录运行 npm install @ai-matrx/meet,或使用 pnpm add / yarn add / bun add。

@ai-matrx/meet 支持 TypeScript 吗?

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

@ai-matrx/meet 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@ai-matrx/meet 需要什么版本的 Node.js?

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

@ai-matrx/meet 可以商用吗?

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

@ai-matrx/meet 的下载量有多少?

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

@ai-matrx/meet 还在维护吗?

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