审阅选项
Server AI Toolkit 的 execute-tool 端点接受 reviewOptions 属性。使用它来控制 tiptapEdit 如何写入可审核的更改,而不是直接修改文档。
import { getAuthHeaders } from '@/lib/server-ai-toolkit/get-auth-headers'
const response = await fetch(`${apiBaseUrl}/toolkit/execute-tool`, {
method: 'POST',
headers: getAuthHeaders(),
body: JSON.stringify({
toolName: 'tiptapEdit',
input: toolCallInput,
schemaAwarenessData,
document,
reviewOptions: {
mode: 'trackedChanges',
},
}),
})reviewOptions 属性接收一个 ReviewOptions 配置对象。
ReviewOptions
mode?('disabled' | 'trackedChanges'): 控制编辑是直接应用,还是写入为跟踪更改。默认值:'disabled''disabled':编辑会直接应用到文档中。'trackedChanges':编辑会使用 Tracked Changes 扩展编码为跟踪更改,以便用户可以接受或拒绝单独的更改。
trackedChangesOptions?({ userId: string, userMetadata?: Record<string, unknown> | null }):trackedChanges模式的作者元数据。userId用于标识建议的作者。省略时默认为'AI'。userMetadata存储额外的作者信息,例如显示名称。默认值为null。useDiffUtility?(boolean): 是否使用 diff 工具来重建跟踪更改。为true时,会通过细粒度 diff 计算更改。为false或未提供时,会直接应用范围级别的跟踪更改。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,
},
}