探索 Tiptap V3 的最新功能

审核更改

AI 代理扩展可以与 AI 更改扩展集成,为 AI 生成的更改提供审核工作流程。这允许用户在 AI 代理对文档应用更改后,查看、接受或拒绝这些更改。

设置 AI 更改集成

第一步:安装两个扩展

npm install @tiptap-pro/extension-ai-agent @tiptap-pro/extension-ai-changes

第二步:在你的编辑器中配置两个扩展

import { Editor } from '@tiptap/core'
import StarterKit from '@tiptap/starter-kit'
import AiAgent from '@tiptap-pro/extension-ai-agent'
import AiChanges from '@tiptap-pro/extension-ai-changes'

const provider = new AiAgentProvider({
  appId: 'YOUR_APP_ID',
  token: 'YOUR_JWT_TOKEN',
  // 将 autoAccept 设置为 "never" 以始终要求审核
  autoAccept: 'never',
  // 启用 AI 更改集成(默认启用)
  useAiChangesExtension: true,
})

const editor = new Editor({
  extensions: [
    StarterKit,
    AiAgent.configure({
      provider,
    }),
    AiChanges.configure({
      // 可选:自定义 AI 更改的外观,在选中更改时显示弹出框
      getCustomDecorations({ change, isSelected, getDefaultDecorations }) {
        const decorations = getDefaultDecorations()
        // 如有需要,添加自定义装饰
        return decorations
      },
    }),
  ],
})

审核工作流程如何运作

  1. AI 代理对文档进行更改时,这些更改会被 AI 更改扩展跟踪
  2. 如果 autoAccept 设置为 neveronlyRead(针对修改内容的更改),这些更改会显示为待处理状态
  3. 提供者的状态变为 reviewingToolCall
  4. 用户可以审核这些更改,并决定接受或拒绝
  5. 接受或拒绝后,对话继续进行

接受和拒绝更改

你可以调用以下方法来接受或拒绝更改:

// 接受所有待处理更改
provider.acceptToolCall()

// 拒绝所有待处理更改
provider.rejectToolCall()

注意

如果工具调用被拒绝,AI 代理提供者会尝试通过 AI 更改扩展将文档重置到工具调用执行前的状态。但是,如果未导入 AI 更改扩展或将 useAiChangesExtension 设置为 false,AI 代理将无法自动重置文档状态,因此你需要自己实现逻辑来处理被拒绝的工具调用,并将文档恢复到之前的状态。

在没有 AI 更改扩展的情况下处理被拒绝的工具调用的一种方法是,在工具调用应用前(触发 beforeToolCall 事件时)存储文档状态,并在工具调用被拒绝时恢复该状态。

自动接受配置

要控制工具是否自动应用或需要用户审核,可配置 autoAccept 选项。

  • "always":所有工具自动应用,无需审核
  • "never":所有工具都需要用户审核并明确接受
  • "onlyRead":仅对修改编辑器内容的工具要求审核;只读操作自动接受。
// 配置自动接受行为
const provider = new AiAgentProvider({
  // ...其他选项
  autoAccept: 'onlyRead', // 默认设置
})

// 运行时更改自动接受行为
provider.setAutoAccept('never')