# @faiber/faiber-task 中文文档

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

版本：2\.7\.0
npm 元数据更新时间：2026-11-04T16:53:06.169Z
中文译文更新时间：2026-11-14T08:57:51.083Z
软件包许可：未声明

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

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

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

- 包体积（解压后）：801 kB，60 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2026-08-25T16:10:19.829Z
- 最新版本发布：2026-11-04T16:53:05.957Z
- 近 30 天下载量：4011（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：55（近 12 个月 55 个）

## 中文简介

`api.offline.capabilities()` 发现协调的离线同步后端. `api.offline.apply(change, {signal})` 提交一个名称 `OfflineChange` 具有稳定的 UUID, 原为 UTC `changed_at`目标 种类和有效载荷 重试时保留确切的有效载荷.

## 安装

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

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

## README

# @faiber/faiber-任务

## 离线同步

`api.offline.capabilities()` 发现协调的离线同步后端. `api.offline.apply(change, {signal})` 提交一个名称 `OfflineChange` 拥有稳定 UUID, 最初为协调世界时 `changed_at`目标 种类和有效载荷 保留确切的有效载荷 在重试. `OfflineSyncResult.outcome` 实值 `applied` 或者说 `superseded`及其快照 包含当前授权的任务/检查列表/文档。 冲突命令是按 工作项目,按原始编辑时间,使用 UUID 绑定破解。 备注文件有效载荷 必须包含完整的Yjs状态。 域权限和验证错误仍为错误; 客户保留无意识的工作。 这些API需要任务离线迁移和 端点部署; 光是包类型无法启用服务器支持 .

为每个认证的 Faiber 任务路由输入客户端 。 任务是沙盒- 本地权限 \* 项目、工作项目、短跑、范围访问赠款、报告、评论、代理提案, 和实时无效事件.

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

```ts
import { FaiberClient, TaskApi } from "@faiber/faiber-task";

const task = new TaskApi(new FaiberClient("task", {
  domains: { task: process.env.FAIBER_TASK_URL! },
  authMode: "bearer",
  getAccessToken: async () => accessToken,
}));

const projects = await task.listProjects({ mode: "software" });
const personal = await task.ensurePersonalProject();
const shared = await task.createSharedProject({ name: "Household" });
const item = await task.createWorkItem(input, crypto.randomUUID());
await task.transitionWorkItem(item.data.data.id, item.data.data.version, { status: "in_progress" });
```

所有方法返回完整的 Axios 响应并接受共享请求选项,包括 `AbortSignal`。可变集合释放ETags; 更新接受整数版本并发送 作为 `If-Match`. 重新加工的工作项目必须重新使用同样的独能键. `openEvents` 默认情况下与获取适配器一起打开已认证的SSE无效流.

`ensurePersonalProject` 具有同位素,并只授予已签名的用户 访问. `createSharedProject` 创建一个拥有所有者补助金和 接受-要求的转让政策。 这些是通用的任务 API; 使用 现有 `createProject` 软件或营销项目模式的方法.

所有方法都返回完整的Axios响应. 在运输或API故障时,抓取 axios 错误并检查 `error.response?.status` 以及服务对策. 通过一个 `AbortSignal` 通过最后请求选项参数取消呼叫.

境内流离失所者证明身份和配置的全球任务许可。 任务独立执行 工作空间、团队、项目和工作项目赠款。 全球作用从不绕过当地赠款.

### 核对清单、合作者和提醒

`projectChecklists` 财务报告和审定财务报表 `checklist` 返回原子任务/检查列表快照。 保存为 `replaceChecklist(taskId, taskVersion, {items})`; 409在重试前需要重新装入. `projectMembers` 列出项目赠款,以及 `removeProjectMember` 要求项目成员管理权(所有人不能被删除). `reminder`, (中文(简体) ), `saveReminder`,以及 `removeReminder` 仅运行在当前用户的提醒上。 首次创建时使用0版本,之后使用返回的提醒版本. 提醒者接受未来的ISO时间戳,IANA时区,以及 `once`, (中文(简体) ), `daily`,或 `monthly` 重现。 任务创建接受可选 `reminder` 解剖论. 交付由Messer处理;这些API从来不允许访问另一个用户的收件箱. 所有操作都保留Axios响应,并通过请求选项支持取消.

### 审查的工作空间变化

`task.workspaceAssistant` 提供范围化的任务/说明查询、类别文件夹、节省的规划偏好和持久的审查建议。 查询返回一个精确 `total`,光标页面和检索时间。 日期范围包含在 `from` 独家 `until`· ; `completed_by_me` 使用记录的完成角色,包括随后重新开始的任务。 使用 `owner_id` 用于基于任务的清单.

```ts
const result = await task.workspaceAssistant.query({
  project_id: spaceId, owner_id: signedInUserId, active_only: true,
  from: tomorrowStart, until: nextDayStart, limit: 200,
});
const proposal = await task.workspaceAssistant.propose({
  conversation_id: conversationId, project_id: spaceId,
  request_id: crypto.randomUUID(),
  operations: [{ kind: 'update', id: taskId, expected_version: currentVersion,
    patch: { due_at: tomorrowStart } }],
});
// Render proposal.data.data.preview and collect the user's review first.
const applied = await task.workspaceAssistant.apply(
  proposal.data.data.id, proposal.data.data.revision,
);
```

`revise` 验证已编辑的操作并产生新的修订。 在一场冲突中, `refresh` 重建当前记录的预览;在应用前再次审查。 对同一修订,批准是事务性的,是专有的。 所有方法都继承呼叫器认证,取消,以及Axios错误处理. 他们要求 `task:access:use` 加上每个业务目前的任务能力;项目所有人开具账单绝不允许访问。 初次 `createWorkItem` 清单和个人提醒与任务一起执行. 行政2号申诉报告: `adminUserPlans({ user_ids })` 返回最多100个逗号分隔用户UUID的沙盒订阅; `incomeReport({ from, to, plan?, page? })` 返回确认的购买和每日现金收入。 亚洲/德黑兰的日期包括YYYY-MM-DD,最多366天。 两者都需要经过核实的管理员角色和任务访问. 方法保留Axios的全部响应并接受取消选项.

### 董事会、私人来源和纸条内存

`task.collaboration` 曝光版本共享工作流程,私人附件,便条媒体, 进口、指数化和所有者共享津贴。 检查 `config()` 在提供之前 特性并使用其具体部署文件/音频上限。 阶段标识和犬科 类别在名称变化时保持稳定。 只有空间管理器编辑共享的阶段; 参与者只能转换指派的任务。 409需要更新版本和 重试移动前的更新预览.

以稳定请求创建附件保留 UUID 和 SHA-256 校验和,上传 与 `uploadAttachment`然后进行民意测验 `attachment` 直到扫描标记它干净。 装入干净 注释或使用的ID `attachNoteMedia`编号 :`setNoteCover` 与本注版本合并. 下载重检查任务权限 。 在保留原件时收取储存费 已存在;未绑定的文件保留已废弃的注释文本和附表.

`startNoteImport` 接受干净的私人原件; `startSourceImport` 接受公众 HTTP(S)页. 票价 `noteImport`,显示取出和出处,然后明确批准 与 `applyNoteImport`。一个转换会消耗一个导入;OCR和音频也会使用它们 配置的津贴。 取消并重试使用工作版本. 从不自动 应用已提取的内容. `workspaceAssistant.propose` 支持 `import_note` 与 当前导入/注解版本、附件/替换模式和可选的审查摘要 原型保持附着. 已更改的源或注释返回 409 .

`searchNotes` 默认到一个指定项目并接受最多9个额外项目 无障碍项目。 任务在返回 a 之前重新授权每个返回的便笺/ 版本 引经. `noteIndexing` 财务报告和审定财务报表 `retryNoteIndexing` 曝光进度并授权重试 . 新内容在索引编制过程中通过明确的注释选择仍然可以直接读取. 保存的被支持的正本被同步取出,而不更改笔记写入 .

已审查 `archive_note` 操作 `archived: true` 或者说 `false`他们保留内容, 文件和历史。 默认助理查询和知识搜索省略存档注释; 明确注释选择仍然检查权限 。 使用 `include_archived: true` 仅限 当用户请求存档记录时。 所有方法都保存 Axios 响应并接受 请求选项,包括取消信号.

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

## 可配置的反馈请求(0.24.1)

`task.feedback.capabilities()` 返回当前已核实的报告作用和准备状态。 一个新的任务实例没有政策和工作流程的预设 。 工作空间管理器在其中配置 `/dashboard/settings/feedback`;只存储在沙盒数据库中。 客户端不得编码角色映射或舞台计数.

使用导出 `ReportContext` 财务报告和审定财务报表 `SubmitFeedbackRequest` 类型,初始化/上载/完整的私人截图证据,然后调用 `task.feedback.submit(input, crypto.randomUUID())`保持相同的钥匙和身体供重试。 屏幕截图可以不屏蔽提交 . `list`, (中文(简体) ), `detail`, (中文(简体) ), `decide`,并授权 `attachmentContent` 保留服务器所有权和本地审查范围。 决定用途 `expected_version`; stale 版本返回 409. 只有配置的最后指派阶段才产生任务 . `current_stage` 包含其双语标签和行动类型。 现有报告保留政策编辑后提交的路由快照。 管理方法需要当地 `workspace.manage`; 政策写作使用当前版本(零初始化).

所有通话保留Axios状态/标题、经认证的饼干或无记名标志、中止信号取消和运输错误。 在中介活动中,永远不要提交隐藏的答案,证书,签名的媒体URL或私人证据.

任务来源合同包括反馈接收、审查决定和私人证据, 工作空间查询和规范的建议书批次、说明文件/进口、董事会工作流程、, 所有者合用和计划. `operations` 曝光每个挂载的 HTTP 操作, 包括 内部服务业务;内部计划/礼品业务需要单独的后端 服务证书,并且只能从信任的服务器调用.

在更新项目、工作项目、提醒、首选项之前, 读取当前 ETag/ 版本 或建议。 过 `If-Match` 生成方法的请求头; 方便方法 接受版本参数。 缺少先决条件 返回 428, 过时的修订 返回 409. 工作项目的创建和反馈提交/决定需要稳定 `Idempotency-Key` 信头经过复试。 删除一个工作项目返回204,没有JSON身体. 项目和 工作项目收藏端点包括 pagination 元数据, 但是这个后端针头总是 返回这些遗留收藏的无效光标;助理查询提供了真实的UUID光标.

`workspaceAssistant.query` 接受结构化 `record_type` 财务报告和审定财务报表 `field_filters` 仅使用 `item_type: 'note'`. 提案使用歧视 `kind` 及其全部有效载荷. 验证或坚持预览,审查后适用该修订. 应用程序重新检查 资源访问和一个交易中的预览; 冲突没有应用.

反馈请打电话 `feedback.capabilities()` 在获取上下文之前。 保留其 `reporter_id` 使用 `X-Feedback-Reporter-Id` 在提交和截图操作中. 409号 `feedback_identity_changed` 需要丢弃捕获并获得新鲜的 装订。 这个头是先决条件,从来不是认证证书. 审查和 分配既需要配置的境内流离失所者许可,也需要当地分支机构/阶段角色的授予. 屏幕截图上传为原始 PNG/JPEG/WebP 字节;一般任务附件使用 `FormData`。 。 。 . 私人下载使用字节响应并保存Axios响应头.

`openEvents()` 返回原始 SSE 流 `event: invalidate` 编号 : `data: changed` 帧, 每隔15秒保存一次 连接并获取权威快照 无效; 不提供重放光标 。 单独授权的实时用途 Sockudo 频道: 配置已封住, 而授权端点返回原始 `{ auth }`。SDK 曝光 HTTP 边界; 连接兼容的实时客户端 使用返回的配置。 残缺的协作功能可返回404和 未配置的实时可以返回503.

项目 `settings`,工作项目 `custom_fields`,会话/承诺 `metadata` 和代理人提案 `payload` 故意保留JSON扩展数据,因为服务商店 `serde_json::Value`;固定外接信封和所有已申报的嵌入模型仍然被打入.

### 获得资助的运动和私人承认

竞选工作使用社会职位和权利主张。 公开 运动发现没有 披露私人参与者身份或证据。 开始任务队列时, 已获得资金 保留; 验证审查排队, 以一等资产结算。 待答复 无法确认是否已经支付报酬。 再次读取任务到 观察和解。 Dox运动是私人活动,没有消费权.

稳定使用 `request_id` 重试时的值。 不同内容的再利用ID 返回冲突。 使用 `FormData`; 证据下载 要求参与者、竞选主持人或经授权的操作员访问。 这些APIs 需要部署运动支持和配置服务整合。 财务 特性被禁用,直到服务操作员提供资金和启用.

```ts
const campaigns = await task.rewards.campaigns({ view: 'public' }, { signal: controller.signal });
console.log(campaigns.status, campaigns.data.data.items);
```

## 空间奖励和节制

`TaskApi.spaceRewards` 与资产 dox 协调一般工作核查 分类账。 向已停用者奖励默认值 。 分配模式,每个成员500多克; 任务创建者批准另一成员完成的任务,并资助其奖励. 每个成员向空间金库管理500个模式问题;选定的主持人 审查已完成的工作。 自是严禁. 资产仍然是唯一的结余 和转移权力。 产品返回花费多克思到太空金库.

```ts
const task = new TaskApi(new FaiberClient('task', {
  domains: { task: 'https://task.example.com' }, authMode: 'cookie'
}));
const signal = new AbortController().signal;
const queue = await task.spaceRewards.queue(spaceId, undefined, { signal });
const item = queue.data.data.item;
if (item) {
  await task.spaceRewards.decide(spaceId, item.id, {
    request_id: crypto.randomUUID(), version: item.version,
    action: 'approve', amount: item.amount + 5
  }, { signal });
}
const ledger = await task.spaceRewards.transactions(spaceId, {
  account: 'space', direction: 'out', status: 'completed', page: 1, page_size: 20
}, { signal });
```

打电话者必须明确要求作出每项决定. `approve` 校验并锁定 任务; `reject` 返回到待办事宜; `skip` 移动到队列尾端。 数额 0 核查不付. 审查和分类路线需要现有成员, `approval.review`,并选择为管理模式的主持人。 已完成的公布 和处理/失败的尝试有单独的状态过滤器;尝试没有 变动余额。 保护 `request_id` 以及运输失败后的有效载荷. Handle Axios 403/404用于访问,409用于过时版本,并正常取消. `tasks()` 财务报告和审定财务报表 `transactions()` 返回服务器 pagination; 从不将页面当作 整个收藏. `read()` 为老会员交易提供光标.

遗留的 Dox 配置输入在 2. 0.0: 供应中发生变化 `version`,明确 `mode`,以及 `moderators`,或使用 `spaceRewards.configure()`。 Dox 是可转移的 空间资产,不再是一个单独的得分。 现有的 do/campaign API依然存在. `integrations` 揭露了演员拥有的 Faiber 同步,范围化的时间报告, 和未经审计的订阅管理,没有应用程序 UI 依赖.

## 社区概况和对话

`api.community` 揭露基于同意的个人化, 排名公开发现, 兴趣,屏蔽,交谈和做礼物。 相同的输入方法是 备查 `CommunityApi`他们继承了你的荣誉证书, 请求选项、中止信号和全部 Axios 响应。 公众浏览和 信息需要公众简介;礼物和助理问题需要相互 利息 此类行动不允许他人从事任何工作或笔记.

```ts
const me = await api.community.self({ signal });
const people = await api.community.people({ q: "design", page: 1 }, { signal });
await api.community.interest(people.data.data.items[0].user_id, true, { signal });
```

在设备上保留问卷草稿直到完成 。 提交 `analyze()` 与 所有答案和稳定 `request_id`; 重试时重用. `publish()` 单独 需要明确的同意和返回的版本。 简介可以保持隐私 经过分析. `gift()` 接受一个目录 ID , 绝不是呼叫者提供的价格. 使用服务器返回 `remaining_submissions` 竞选限制.

身份/许可出错使用401/403、无法访问的配置文件404和 stale 版本,相互冲突的重试,限制或缺失的配置 409. 不要推断 一个部署的服务支持这些端点 从SDK版本. 社区服务及其人工智能收费结构必须先推出 生产用途。 任务还需要其社区转发功能.

### 社区信息行动

`CommunityApi.send(peerId, { request_id, body, reply_to })` 可以在同一个对话中引用一个消息. `editMessage` 财务报告和审定财务报表 `deleteMessage` 需要发送者的身份,一个稳定 `request_id` 和当前消息 `version`删除保留了一块墓碑,并清除了尸体和反应. `reactToMessage(peerId, messageId, { emoji: '❤️', enabled: true })` 设置呼叫者的反应;重复请求不能重复。 所有方法都接受Axios选项,包括: `signal`,然后返回 Axios 的全部响应.

这两种情况必须保持公开和不受限制。 社会要求 `social:community:messages:edit`, (中文(简体) ), `:delete`,或 `:react`; 任务使用其录取许可,并向Social转发明确的行动. 访问失败返回403/404, stale 版本返回409. 在重试相冲突的编辑前刷新; 从不默默地覆盖新的内容 .

## 常见问题

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

api\.offline\.capabilities\(\) 发现协调的离线同步后端\. api\.offline\.apply\(change, \{signal\}\) 提交一个名称 OfflineChange 具有稳定的 UUID, 原为 UTC changed\_at目标 种类和有效载荷 重试时保留确切的有效载荷\.

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

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

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

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

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

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

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

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

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

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

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

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

