# @faiber/faiber-chat 中文文档

规范地址：https://npmcn.com/package/%40faiber/faiber-chat/

版本：2\.8\.0
npm 元数据更新时间：2026-11-14T09:45:54.848Z
中文译文更新时间：2026-11-14T09:46:09.932Z
软件包许可：未声明

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

原始 npm 页面：https://www.npmjs.com/package/%40faiber/faiber-chat
原文对照：https://npmcn.com/package/%40faiber/faiber-chat/?lang=original

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

- 包体积（解压后）：479 kB，68 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2026-07-22T17:10:30.472Z
- 最新版本发布：2026-11-14T09:45:54.626Z
- 近 30 天下载量：3762（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：60（近 12 个月 60 个）

## 中文简介

直接,分组,频道,以及AI与成员的对话,消息,线程,反应,读取光标,实时事件,以及Agent所支持的AI转会.

## 安装

```sh
npm install @faiber/faiber-chat
```

也可以使用：`pnpm add @faiber/faiber-chat`、`yarn add @faiber/faiber-chat`、`bun add @faiber/faiber-chat`

## README

# @faiber/faiber-聊天

直接,分组,频道,以及AI与成员的对话,消息,线程,反应,读取光标,实时事件,以及Agent所支持的AI转会.

## 安装

```bash
npm install @faiber/faiber-chat
```

## 配置

```ts
import { FaiberClient, MemoryTokenProvider } from "@faiber/sdk-core";
import { ChatApi } from "@faiber/faiber-chat";

const tokens = new MemoryTokenProvider();
const client = new FaiberClient("chat", {
  domains: { chat: process.env.FAIBER_CHAT_URL! },
  tokenProvider: tokens,
  axios: { timeout: 15_000, withCredentials: true },
});
const api = new ChatApi(client);

const conversation = await api.createConversation({
  kind: "direct",
  member_ids: [recipientUserId],
});
await api.sendMessage(conversation.data.data.id, { content: { text: "Hello" } });
```

## API 表面

此套件从聊天服务中暴露出69个出自源的操作. 通用工作流程有简洁的方法 `api`;每个已注册后端路由在 `api.operations`。生成的操作输入、查询、响应、路径、动词和许可合同从 `operations.types`。 。 。 .

业务登记说明运输范围;它不证明部署的行为或目前的授权。 包装 `provenance.json` 识别选定的服务源和合同核对和.

AI转会由Infera Agentic执行并开具账单;Chat只协调对话上下文及和解. 事件端点是SSE流并可以请求普通SDK授权头.

## 认证和授权

使用一个 `TokenProvider` 以转发已签名用户的 Bearer 令牌,或启用 `withCredentials` 用于安全的 Http 只有饼干会话。 每个行动的JSDoc都包含从服务路线卫士复制的许可要求. SDK不嵌入 API 密钥,证书,本地主机 URL,沙盒主机,或生产主机.

## 投入、询问、答复和运输

所有方法都返回完整的Axios响应,包括状态,头,以及请求ID. 请求机构和查询对象被命名为导出接口. 网纹页化使用密钥, 如 `page[number]` 财务报告和审定财务报表 `page[size]` 服务需要时。 标准 Axios 请求选项、信头、超时、适配器、拦截器和 `AbortSignal` 取消被支持为最后参数.

一般性的REST资源得到能力保障。 调用未注册的遗留方法 `UnsupportedOperationError` 在发送请求之前, 而不是生成后端 `405`。 。 。 .

## 错误和取消

```ts
try {
  await api.client.get("/health", undefined, { signal: AbortSignal.timeout(5_000) });
} catch (error) {
  // Axios errors retain response.status and the service error body.
}
```

使用 `@faiber/faiber-ts-sdk` 当一个应用程序需要多个具有一个配置的Faiber服务时.

### 实时通过 Sockudo

使用 `subscribeRealtime` 从 `@faiber/sdk-core` 私人索克多订阅。 聊天配置来自 `ChatApi.realtimeConfig(conversationId)` 和来自 `ChatApi.realtimeAuth`两者都需要对话成员 `chat:read`通知配置和授权使用 `MessengerApi.operations.notificationNotificationsRealtimeConfigGet` 财务报告和审定财务报表 `notificationNotificationsRealtimeAuthPost` 与 `notification:self:read`;后端只允许登录收件人的频道. 把这些服务责任分开。 重新装入订阅/重新连接的记录,登录时关闭订阅,并保留所有Sockudo机密服务器侧. 见 [核心订阅实例](https://github.com/faiber-code/faiber-ts-sdk/tree/main/packages/core#sockudo-realtime-subscriptions)。 。 。 .

`speechStatus()` 报告对本地文本的可用性进行了配置. `transcribe(audioBlob, 'fa', {signal})` 接受最多8个微B的WebM,Ogg,MP4,或WAV音频并返回可编辑的语录文本;它从未自动发送聊天消息. 两者都要求 `chat:ai`;无效的音频返回 400, 无法获取的服务返回 502, 取消使用 Axios 正常请求信号 .

### 工作空间助理角色

发现服务器管理的角色 `chat.workspaceAssistant.roles()`选择 `role === 'action'` 可编辑抓取或 `role === 'chat'` 工作间的对话。 创建与捆绑的谈话 `assistant_id`;目录命令没有角色意义. `WorkspaceAssistantResult` 描述结构化的信息元数据:答案、草稿、澄清、引用和审查建议,并附有知识发布和检索时间戳。 提案是预览, 直到任务确认批准 .

管理员 `assistant:manage` 可以打电话 `workspaceAssistant.bind(role, input)`赋能需要一份兼容的已公布的知识合同; `expected_version` 防止覆盖另一个管理员的约束。 一般发现需要 `assistant:read`。这两种方法都保留 Axios 响应、 cookie/Bearer 认证、取消和错误状态.

工作空间角色约束使用 `knowledge_slug: "2done-action"` 或者说 `"2done-chat"` 对于相应的角色。 每一个角色都为共享合同的发布投下注脚。 结构性成果曝光 `knowledge_release_id` 和可选 `shared_knowledge_release_id` 为了诊断。 遗产 `2done-assistants` 为旧的服务部署,shell仍然属于客户类型;新角色绑定需要特定角色的shell.

### 压缩麦克风抓取和重播

```ts
import { createSpeechRecorder } from '@faiber/faiber-chat';

// Call from a user gesture. Reuse your authenticated ChatApi instance.
const capture = await createSpeechRecorder({ signal: controller.signal });
const chunks: Blob[] = [];
capture.recorder.ondataavailable = ({ data }) => { if (data.size) chunks.push(data); };
capture.recorder.onstop = async () => {
  capture.dispose();
  if (controller.signal.aborted) return;
  const audio = new Blob(chunks, { type: capture.mimeType });
  const response = await chat.transcribe(audio, 'fa', { signal: controller.signal });
  console.log(response.data.data.text);
};
capture.recorder.onerror = () => capture.dispose();
capture.recorder.start(1000);
// Stop on the user's button or your duration limit (2Done uses 60 seconds):
// capture.recorder.stop();
// Cancel/unmount: controller.abort(); capture.dispose();

const voice = await chat.synthesize(
  { text: 'Your next task is ready.', language: 'en', format: 'mp3' },
  { signal: controller.signal },
);
// voice.data is a Blob. Revoke any URL.createObjectURL URL after playback.
```

`createSpeechRecorder` 只有浏览器,但在节点中可以安全导入。 它要求本土噪声压制,回声取消,自动获得控制和单入. 它更喜欢32 kbit/s Opus在WebM/Ogg;支持的MP4/AAC浏览器使用64 kbit/s. 它在Web Audio可用时应用了温和的80 Hz/8 kHz语音过滤器,否则保留了原生捕获. 浏览器支持和实际捕获/编码设置各不相同; `settings`, (中文(简体) ), `filtered`, (中文(简体) ), `mimeType` 财务报告和审定财务报表 `targetBitsPerSecond` 揭露结果。 在目标比特率下,一分为Opus约240KB或AAC约480KB,外加集装箱起重. 不要求大型编码器/模型下载,不删除暂停/静音词.

选项包括 `audioBitsPerSecond` (16 000至64 000美元), `filter: false` 和中止信号。 权限/设备出错得到保存; 取消拒绝等待设置 `AbortError` 一旦麦克风收购 解决并释放任何获得的轨道。 总是打电话 `dispose()` 取消/卸载,并在收到最后记录块后。 帮助者既不自动上传,也不自动转录,也不执行长度或字节限制;在应用程序中执行STT服务的限制.

`synthesize` 默认请求 MP3:单相,24 kHz,64 kbit/s. 明确 `format: 'wav'` 保留无损输出进行处理。 MP3需要支持此格式的服务部署;不匹配的上游格式失败而不是被错误地标记. 语音响应是私人的,不可缓存. 认证, Axios 响应元数据, 取消, 和提供者计费遵循配置的 Chat 客户端 。 检查返回的 Blob MIME 类型, 而不是假设文件名扩展名 。 通过上传已有的压缩记录 `transcribe` 不在浏览器中重新编码它.

### 现场表演和早期的演讲回放

```ts
import { startLiveDictation, playSpeech } from '@faiber/faiber-chat';

// `chat` is your authenticated ChatApi. Start after a microphone button click.
const dictation = await startLiveDictation(chat, {
  language: 'fa',
  signal: abortController.signal,
  onPartial: text => { provisionalText = text; }, // replace, do not append
  onError: error => { showError(error.message); },
});
const finalText = await dictation.finish(); // stop button: insert this editable revision once
// Or dictation.cancel() when leaving the page.

// Starts the first phrase while the next phrase is synthesized; MP3 transfer.
await playSpeech(chat, { text: 'سلام. این برنامه امروز شماست.', language: 'fa' }, {
  signal: abortController.signal,
  onPhase: phase => { playbackState = phase; },
});
```

活口令通过普通认证将每个压缩块上传一次 `FaiberClient` 运输. `liveSpeech()` 披露基本命令启动/推后/完成/取消 操作时有全轴响应。 会议由召集人/组织负责,并到期; 录音限为60秒,并缓冲上传至128 KiB. 当前直播支持 需要配置的波斯谢纳瓦模型,一个可用的流线工人道,以及 WebM/Ogg Opus (英语). 不支持的语言/代码c或繁忙容量拒绝启动;应用程序可能 倒计时 `createSpeechRecorder()` 财务报告和审定财务报表 `transcribe()`。绝不将暂定案文视为 已保存消息 。 定稿可以修改更早的词. 中止和卸载应取消 .

`playSpeech()` 只有浏览器的渐进 **语句** 合成, 不是提供者级音频 流畅. 它保存了文本顺序,预装了最多三个短语和时刻表,可以随时在 浏览器音频时钟. 合成慢于回放仍可引起缓冲. 单个短语使用所配置的声音及其计费规则. 综合, 解码, 回放错误拒绝承诺; 取消停止回放和飞行 请求。 简短的言词仍然取决于模型生成时间.

选择到 **客户端** 重玩为 `{ cacheScope: tenantId + ':' + userId + ':' + voiceRevision, persistCache: true }`。 。 。 . 最新语句所压缩的MP3段被保存在浏览器索引DB(最多为16 MiB); 重放并重新装入无 TTS 请求的可重复使用部分 。 奥米 `persistCache` 只用于内存重放, 或省略 `cacheScope` 以禁用缓存。 此存储私人音频 在设备上:只有在您的产品允许时,才能具有持久性。 包括服务, 租户、经认证的用户和声音修改范围。 调用导出 `clearSpeechPlaybackCache()` 登录时,并首先中止活动重播。 修改文本, 语言或范围取代最后一个条目。 已取消的回放保留已生成 区域; 重放只要求缺失区域。 存储拒绝返回内存. 没有引入服务器缓存 .

### 课程设置教师

`chat.learning.ask(runId, { question, idempotency_key })` 需求 `chat:ai` 财务报告和审定财务报表 拥有 LMS 运行。 服务器装入已公布的目标并验证 结果;呼叫者不能选择学习者、模式、课程、工具或进步. 只有在重试完全相同的问题时才重用同位素键.

`chat.learning.history(runId, { signal })` 需求 `chat:read` 相同运行 所有权。 它最多返回40个消息,按时间顺序排列如下: `{ id, role: 'user' | 'teacher', text }` 内 `response.data.data`它不会暴露 对话管理、内部提示、元数据或其他学习者记录. 这两种方法都保留了Axios状态/标题并接受取消选项.

## 会话交互和充电

聊天解决一个会话对话的房间 从它的服务器拥有的绑定. 客户端无法删除或更改此约束 。 当沙盒使 经济资助, 每一个信息 和AI的要求 在约束性谈话中要求 稳定 `client_id`。在不确定的超时后,用相同的内容重用它. 完成重试返回存储结果; 冲突或待处理请求 在不授权其他交互的情况下被拒绝.

```ts
import type { SessionEventMessageInput } from '@faiber/faiber-chat';

const reaction: SessionEventMessageInput = {
  message_type: 'session_event',
  client_id: crypto.randomUUID(),
  content: { event_type: 'reaction', emoji: '👏', text: '👏' },
};
await chat.sendMessage(conversationId, reaction, { signal });
```

使用 `event_type: 'hand'` 财务报告和审定财务报表 `state: 'raised' | 'lowered'` 为手状态. 普通文本使用 `sendMessage` 拥有自己的 `client_id`; 大赦国际使用 `sendAiMessage` 带有 `SessionAiMessageInput`。聊天授权这些通过 兔子MQ在保存或生成内容之前. 独立收费费用 冷却和消息破解限制来自沙盒政策,并得到执行 服务器侧 。 使用配置的手放下 `lower_hand` 政策。 阿克索斯语Name 回复、成员权限、Bearer/cookie认证和取消 保持不变。 取消不能证明服务器有保留 释放; 重用相同的ID来调节不确定的结果.

## 附件上传和下载

`upload_url` 是用于上传而非下载的短寿命签名存储 URL . 这个附件 `cdn_url` 是存储元数据,可能无法公开读取. 对于私人家庭作业聊天文件,请使用 `downloadAttachment(id)` 而不是打开 `cdn_url`它将配置的熊鼠标志或安全饼干转发给Chat, 在获取私人存储字节前验证对话权限 .

准备金 `createAttachment`,然后调用 `uploadAttachmentContent(id, bytes, { onUploadProgress, signal })`。此认证的路由发送原始二进制 `application/octet-stream` (100个米B最大). 字节必须匹配保留的大小和校验和. `completeAttachment(id)` 仍然最后确定已有的预签名上传.

```ts
const response = await api.downloadAttachment(attachmentId, { signal });
const blob = response.data; // Blob in browsers and Node 18+
const previewUrl = URL.createObjectURL(blob);
// Use previewUrl in an image/viewer or a download anchor.
// Revoke only after the viewer/download has finished, never immediately after clicking.
URL.revokeObjectURL(previewUrl);
```

下载使用经认证的聊天访问( E)`chat:read`),保存Axios元数据,并支持 `onDownloadProgress`启用 `api.operations.routesDownloadAttachmentGet` 原始字节。 访问失败返回403/404;存储失败返回502. 需要上传完成 `chat:write`。 。 。 .

### 范围大的说明协助和无手发言

工作空间聊天接受选中 `space_id`选项 `note_id`,并明确选择 `knowledge_project_ids`选定 `import_id` 指的是任务提取预览; 聊天在包括证据和交付前重新检查其许可和版本. 导入的文本不能授予工具或权限 。 必须明确要求进行研究 它消耗了配置的研究和反应限度. 改动作为任务建议退回,需要审查和版本批准.

键入 `assistantVoice` API 支持起步/推出/完成/取消,带边框的PCM转录 和综合。 使用稳定的请求ID和单调增加块序列号 重审。 它需要无障碍项目和配置的音频备抵。 释放 出站/背景时麦克风抓取,并保留网络故障的部分文字. 语音设置可以选择独立的语言特定识别和输出模式; 英国的请求从来不会默默使用波斯语的模型。 现场识别需要 (a) 可用的兼容法伊伯工人或接力。 所有电话都保留认证的运输, Axios 元数据和取消选项 .

内部操作需要信任的服务器证书和当前租户范围. 永远不要从浏览器中调用它们或向应用程序用户暴露服务证书.

## 指定联系人聊天和每个用户未读状态(0.24.1)

使用 `chat.personal.conversations()` 财务报告和审定财务报表 `unreadCount()` 用于认证的对话摘要和实际收到的未读消息数。 自发/已删除的信件不计数; 不要减去序列号 。 初始化 `personal.events()` ,然后从光标中恢复。 长民意调查默认为35秒; `realtimeConfig` 财务报告和审定财务报表 `realtimeAuth` 只授权当前组织的私人用户频道。 所有方法都需要 `chat:read`,保留Axios响应/认证和支持取消.

当实例允许 LMS 指定接触政策时,直接创建/发送需要当前的学生/教师/支持关系. 从 LMS 获取合格联系人, 而不是公共目录 。 现有的对分法仍然是权威性的。 被撤销的任务保留可读历史, 但禁用发送 。 通用成员路线无法扩展这些直接对话. 信件重试重用 `client_id` 内容相同; 改变后的身体冲突。 读取更新是单调的,不能超过可访问的信息序列,只有在可见的信息渲染后才能发送.

网络应用程序应当将其聊天提供方保留在路由更改之上,保留对话/草稿/滚动状态. 安全标记下必须禁用原始的 HTML 和不安全的 URL 方案;复制和 URL/电子邮件/手机检测属于客户端. 聊天未读数和信使通知数是分开的.

个人摘要、未读数、光标事件和私人渠道的授权方法要求现任成员 `chat:read` 允许。 个人方法仍在 `/api/v1/me/*`; 内部 LMS 通知文本读取使用单独的服务器 `x-infera-lms-token` 并返回不包含私人信件内容的标识符/读取状态。 不要在浏览器中披露服务符 .

### 资料来源简要观察政策

使用源属管理 API 并配有 Bearer 令牌 `chat:summary_access:manage`该服务重新检查当前境内流离失所者在 每个请求; 仅提供 cookie 的会话或调用用户头不批准 进入。 启用还验证已配置的收藏家当前 `chat:summary:read` 允许。 这项政策不准许模式访问或 更改收藏器绑定.

```ts
const observed = await sdk.chat.operations.nativeSummaryAccessStatus();
await sdk.chat.operations.saveNativeSummaryAccessPolicy({
  enabled: false,
  expected_revision: observed.data.data.policy?.revision ?? 0,
  reason: "Pause collection for review",
});
await sdk.chat.operations.revokeNativeSummaryObject({
  object_id: sourceObjectId,
  reason: "Exclude this source object",
});
await sdk.chat.operations.restoreNativeSummaryObject(sourceObjectId, {
  reason: "Restore after review",
});
```

僵硬的政策修改返回409;在重试前重新装入并审查. 原因 需要且仅限于1024个Unicode字符。 退职政策继续存在 残废再生. 作为JSON的恢复行动会发出理由 迪莱特的尸体。 成功保存返回当前绑定、政策和计数; 待定对象可以保留到背景调节完成。 阿克索斯语Name 回复,出错,信头,超时和中止信号被保存. 这个 单独 `/mcp` 运输使用已签名的扩展授权并拒绝浏览器来源; 这些 " 无害环境技术 " 方法不提供多边协商进程会议.

在运输出错或503后,在重试突变前重新装入当前状态:在后期状态读取或调节失败前,源可以执行其策略/撤销. 使用重新装入的修订版并审查结果状态 .

### 助理编辑和持久知识政策调节

管理助理( id) 返回一个已键入的助理管理器 。 捕获 打开编辑草稿时的版本和预期的 知识 政策 修订版. 更新助手需要预期 版本,预期 知识 政策 修订版, 和调用器创建的非无配置 id UUID. 创建助理也要求 a 配置 id。 保留UUID, 并精确地请求, 跨度不确定 回应。 不自动生成新操作或刷新 修订,同时重新提交一份陈旧的草案.

助理政策操作(配置) Id) 返回保留租户范围 (原始内容存档于2019-10-10). Assistant Conformation Intentress. 辅助政策接受 助理政策协调投入与动作恢复或取消。 回收检查 权威知识结果,然后才精确地发出/应用. 现任助理:重启后需要管理人员;赠款和全权证书 从来没有保留。 管理员可以应用现有承诺的结果或 在其原演员失去权威后取消未发布的意图. 取消会写出远程墓志铭, 屏蔽延迟的旧请求 .

等待意图屏蔽相竞编辑和删除. 已经应用的操作 不能因为缺席而取消。 终端重复返回其不可改变的正本 结果。 在协议之外更换的助手会产生审查冲突; sDK从不推断成功或压倒它. 审查/回收属于 明确的路由管理页面。 通用生 JSON 格式不是一个完成的工作流程.

生成的等同物是路由 GetManaged ApplikeGet,路由 Create ApplikePost, 路由 Update 助理 Put, 路由 Get Policy 操作Get 和 路由调和政策操作后。 管理细节、保留意图和 从 Chat 软件包中导出调节 DTO 。 这些是犬科V1 方法; 没有私有的即时跑取证书或权限 DTO 是浏览器 API.

## 上下文选择限制

配置的助手关卡会限制选择的 Chat/Knowledge 修改时的自有对话上下文请求. 新建或省略的请求级别不会删除所配置的上限 。 已部署的老服务机构可能不强制实施这种行为;在依赖之前核查已部署的接收器.

被选中的助攻群弹被存储配置,但转发和后人-对正匹配并没有得到一致的全面实施. 不要使用这些设置作为授权边界或承诺排除未分类的结果。 服务器侧当前租户,权限和基础约束仍然具有权威性.

Knowledge的选定介质块封顶在治理之后, 查询限制并不是对所有返回道进行严格的综合计算。 扩展和重排设置可以作为所请求的值保留,而运行时能力报告不支持/未应用;存储一面旗帜则无法启用一个算法或提供者. 检查返回的追踪/能力信息而不是假设这些特性运行.

### 反应记录和信息历史

对话记录包括无效 `agent_slug`, (中文(简体) ), `assistant_id`, (中文(简体) ), `agentic_thread_id`, (中文(简体) ), 遗留标识符和删除时间戳。 成员曝光 `state`, (中文(简体) ), `notification_level` 财务报告和审定财务报表 `last_read_sequence`。 。 。 . `react` 返回 a `ChatReaction`, (中文(简体) ), 包括 `message_id`, (中文(简体) ), `user_id`, (中文(简体) ), `emoji` 财务报告和审定财务报表 `created_at`它不返回一个 信件记录 。 信件历史包含 `attachments` 每行的数组和 `meta: { limit, has_more }`; 其他普通的聊天响应序列化 `meta: null`。 。 。 . `before` 财务报告和审定财务报表 `after` 是独有的序列界限, 订购最新的第一。 这个 后端接受 `q` 但目前不应用文本过滤器.

生成的 `routesSynthesizePost` 操作返回原始音频字节并接受 小写 `mp3` 或者说 `wav`;省略/null格式选择服务器上的WAV. 馆长 `synthesize` 帮助者默认明确请求 MP3 。 原始内容 `routesTranscribePost` 需求 `{ language: 'auto' | 'en' | 'fa' }` 和音频 `Content-Type` 匹配 提供字节,例如 `audio/webm` 或者说 `audio/wav`; 这不是多段上传.

接受工作空间绑定 `2done-action` 联 合 国 `action` 作用和作用 `2done-chat` 页:1 `chat`共享 `2done-assistants` shall 不是一个有效的绑定请求 。 发言 设置在 `language_models` 省略或作废; 通过 `{}` 以清除他们。 版本冲突需要重新装入并审查草案.

提供者目录、源入数据、模型生成的健身计划和运行时间 schema/UI 值由选中的后端转发为 JSON, 而无需本地端 计划检查。 他们的导出类型记录了这种行为 。 分类清单和 助理搜索范围遵循选定的后端: 活动/管理中的助理列表 并且公共助理的查询没有应用组织在其 存储器。 不要推断房客与SDK类型或目录结果的隔离.

## 标记未读的信件

`api.markRead(conversationId, {sequence: message.sequence, message_id: message.id, unread: true}, {signal})` 只将呼叫者的个人读取位置倒回到收到消息之前. 这会让后来收到的消息也无法读取. 它不收回已交付给发件人的收据。 自发,被删除,不存在,以及其他对话信息被否决. 在引用此动作之前, 停止自动可见消息读取更新, 并在用户故意重开对话时恢复 .

## 指导性工作空间澄清

`WorkspaceAssistantResult` 可能包括可选 `questions` 任何用户信息 答复,包括正常答复、草案、提案和澄清。 这个名字 `WorkspaceQuestion` 编号 : `WorkspaceQuestionOption` 类型支持 `single_select` 财务报告和审定财务报表 `multi_select`,每个问题最多有四个问题和八个选项. 现有的澄清类型名称仍可供使用,以便兼容.

将一个所选值或所有所选值作为一个多选题发送 普通AI消息在同一个对话中。 选择是显示数据,而不是 命令、身份许可或突变批准。 平常的作曲家还可以 接受打入的回复; 语音客户端可以接受口语回复. 问题在于 可选的,并不意味着含糊不清。 模型需要后端推出 以释放这些添加提示;仅文本的旧结果仍然有效.

接受管理助理创建/更新请求 `reasoning_effort` (单位:千美元)`none`, (中文(简体) ), `low`, (中文(简体) ), `medium`, (中文(简体) ), `high`,或 `max`) (中文(简体) ). 只选择模型目录中声明的值 `reasoning_levels`· ; `default_reasoning_effort` 描述已知的结构化工作流程默认值。 更新时, 省略此字段以保留已保存的覆盖或发送 `null` 以恢复自动行为。 管理的细节包括安全节省所需的被节省的重置和获取的知识政策修订.

## 用户拥有的连接器、文件和流线

`ChatApi.integrations` 发现连接器, 启动 OAuth, 选择授权 Faiber项目,使用已宣布的计划工具,并读取/核准/永久证书 行动。 写入工具返回批准动作; 只调用 `approve()` 之后 明确的用户决定。 提供者结果 JSON 是不信任的数据。 文档提取 接受服务器限制下的 Blob 和内容类型,并需要 `chat:ai`。 。 。 . `history({q,cursor,limit})` 用服务器搜索当前用户的 AI 历史 pagination; 当搜索更改时清除光标 .

`ChatApi.streaming.audio(input, {signal})` 财务报告和审定财务报表 `.messages(id, input, {signal})` 返回包含 WHWG NDJSON 流的 Axios 完整响应。 解析完成 新线限制 `VoiceAudioFrame` 或者说 `AssistantReplyFrame` 记录。 要求 终端完成/ 完成帧, 处理错误帧, 并取消/ 释放读取器 撕毁。 前流 HTTP 失败是普通 Axios 错误. 演讲预览 无法证明请求的任务突变已经完成。 这些 API 继承 配置了 cookie/Bearer 认证, 并且从未创建其他传输 .

### 答复助理

设定 `stream_progress: true` 在信件输入和使用中 `chat.streaming.messages()` 与 `readAssistantReplyStream(response.data)` 改为 输入已输入的回复框. `progress` 是一个等待通知,而不是一个答案或一个 成功突变; 显示或说话与累积 `text`。 。 。 . 仅 `complete` 证实最后答复。 解码器拒绝中断或 变形的流并当重复停止时取消其读取器. 通过中止符号 请求取消运输工作.

公布的助理合同元数据可包括a `WorkspaceReadPolicy` 下级 `read_policy`。它的边框和锚定模式可以预置授权的任务记录 或者直接回答清晰的只读浏览。 注查询需要一个选定的空间; 模棱两可的匹配保留了助手的正常工具,编辑,和批准流程. 只有信任的已发布配置提供这些规则,从不消息输入.

对话摘要可包括: `participants`,每个对等方的用户ID和无效 `first_name_fa`, (中文(简体) ), `last_name_fa`, (中文(简体) ), `first_name_en`,以及 `last_name_en`。使用首选项 并返回到其它地方或您的普通参与者标签。 名称解决 在呼叫者配置文件权限下; 不可用配置文件不会阻断对话 列表中选择一个选项。 老聊天部署省略了此可选字段 。 不包括电子邮件或电话数据.

## 常见问题

### @faiber/faiber-chat 是什么？

直接,分组,频道,以及AI与成员的对话,消息,线程,反应,读取光标,实时事件,以及Agent所支持的AI转会\.

### 如何安装 @faiber/faiber-chat？

在项目目录运行 npm install @faiber/faiber-chat，或使用 pnpm add / yarn add / bun add。

### @faiber/faiber-chat 支持 TypeScript 吗？

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

### @faiber/faiber-chat 支持 ESM 还是 CommonJS？

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

### @faiber/faiber-chat 可以商用吗？

@faiber/faiber-chat 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @faiber/faiber-chat 的下载量有多少？

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

### @faiber/faiber-chat 还在维护吗？

最新版本 2\.8\.0 发布于 2026/11/14（今天）；至今共发布 60 个版本，其中过去 12 个月发布了 60 个；首次发布于 2026/07/23。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

