# @ai-matrx/meet 中文文档

规范地址：https://npmcn.com/package/%40ai-matrx/meet/

版本：0\.11\.130
npm 元数据更新时间：2026-10-30T12:41:33.286Z
中文译文更新时间：2026-11-05T18:46:28.251Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ai-matrx/meet
原文对照：https://npmcn.com/package/%40ai-matrx/meet/?lang=original
项目主页：https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/meet#readme
源码仓库：https://github.com/AI-Matrix-Engine/aidream

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：10.5 MB，53 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：10 个
- peer 依赖：react \>=18\.0\.0
- 首次发布：2026-09-07T23:58:30.546Z
- 最新版本发布：2026-10-30T12:41:33.083Z
- 近 30 天下载量：56210（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：272（近 12 个月 272 个）

## 中文简介

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

## 安装

```sh
npm install @ai-matrx/meet
```

也可以使用：`pnpm add @ai-matrx/meet`、`yarn add @ai-matrx/meet`、`bun add @ai-matrx/meet`

## README

# `@ai-matrx/meet`

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

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

```bash
pnpm add @ai-matrx/meet
```

建造在 [`@ai-matrx/data/realtime`](https://npmcn.com/package/%40ai-matrx/realtime/README.md) 用于信号和 [`@ai-matrx/messaging`](https://npmcn.com/package/%40ai-matrx/messaging/README.md) 请柬。 有一个 **手卷为零 `.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"是一个相互校验按钮.

### 7\. 一个持久的链接是一个身份,而不是一个事件的URL.

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

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

### 8\. 同意是一揽子财产,而不是道具.

没有 `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`,.),用于构成它们的主机布局.

```tsx
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`这是宣布客人身份的唯一方法 车道。 客人没有帐号,所以他不读任何会话:

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

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

```tsx
<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`。 。 。 .

* * *

## 盖茨

```bash
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 是什么？

企业部 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 和提交记录判断。

