审阅选项
Server AI Toolkit 的 execute-tool 端点接受 reviewOptions 属性。使用它来控制 tiptapEdit 如何写入可审核的更改,而不是直接修改文档。
import { getAuthHeaders } from '@/lib/server-ai-toolkit/get-auth-headers'
const response = await fetch(`${apiBaseUrl}/v4/ai/toolkit/execute-tool`, {
method: 'POST',
headers: await getAuthHeaders(),
body: JSON.stringify({
editorContext,
document,
tool: {
name: 'tiptapEdit',
input: toolCallInput,
},
reviewOptions: {
mode: 'trackedChanges',
},
}),
})reviewOptions 属性接收一个 ReviewOptions 配置对象。
ReviewOptions
mode?('disabled' | 'trackedChanges'):控制编辑是直接应用,还是写入为跟踪更改。默认值:'disabled''disabled':编辑会直接应用到文档中。'trackedChanges':编辑会使用 Tracked Changes 扩展编码为跟踪更改,以便用户可以接受或拒绝单独的更改。
trackedChangesOptions?({ userId?: string, userMetadata?: Record<string, unknown> | null }):trackedChanges模式的作者元数据。userId用于标识建议的作者。省略时使用请求中的user;如果请求中没有该值,则默认为'AI'。userMetadata存储额外的作者信息,例如显示名称。默认值为null。diffUtilityOptions?(object):用于从修改前/后的文档状态重建跟踪更改的高级选项。simplifyChanges?(boolean, default:true):在生成跟踪更改之前简化附近的更改。ignoreAttributes?(string[], default:['id', 'data-thread-id', '_hash']):在 diff 过程中忽略特定的节点属性。ignoreMarks?(string[], default:['inlineThread']):在 diff 过程中忽略特定的标记。changeMergeDistance?(number | null, default: auto-calculated):在此距离内合并附近的更改。设为null可禁用合并。mode?('inline' | 'block' | 'smart', default:'smart'):生成跟踪更改时使用的 diff 策略。groupInlineChanges?(number, default:1):将此距离内的行内编辑分组。expandBlockChanges?(string[], default:['listItem']):应作为块级更改展开的节点类型。
典型配置
直接编辑
跳过审阅模式并立即应用编辑:
reviewOptions: {
mode: 'disabled',
}带有 AI 作者元数据的可追踪更改
为生成的建议附加一个稳定的 AI 身份:
reviewOptions: {
mode: 'trackedChanges',
trackedChangesOptions: {
userId: 'ai-assistant',
userMetadata: {
name: 'AI Assistant',
},
},
}带有自定义差异行为的可追踪更改
调整编辑的分组和显示方式:
reviewOptions: {
mode: 'trackedChanges',
diffUtilityOptions: {
mode: 'block',
groupInlineChanges: 2,
},
}