NotionAgent 新增建议修改:如何用Patch、Diff 与人工确认设计 AI 改稿工作流

摘要:Notion 8 月 28 日为 Agent 增加"建议修改"能力,用户可逐条审阅后批准。本文从工程角度拆解一套可落地的 AI 改稿流水线:不可变原稿、结构化 Patch、风险分级、冲突检测、版本记录和发布前回读。

"帮我润色一下"可能是内容系统里最危险的需求之一。

它没有定义修改范围,也没有定义验收标准。模型可能改掉错别字,也可能重写结构、补充未经核实的事实,顺便把作者原本有辨识度的表达改成一篇标准答案。

Notion 在 8 月 28 日更新中增加了一个很小、但很有工程意味的交互:Agent 可以先 suggest edits,不直接修改原文;用户从上到下查看,再逐条批准。官方给出的例子是语法检查等行级修改。

这并不自动解决事实错误或风格漂移,但它把 AI 改稿从"返回一篇新全文"改成了"提交一组待审变更"。对要进入生产的内容,这个差别很大。

1. 全文重写为什么难审

设原稿为 D0,模型返回 D1。如果系统只保存这两个字符串,审稿人需要自己完成三件事:

  1. 找出所有变化;
  2. 判断每处变化的意图;
  3. 确认是否引入事实、语气或合规风险。

文章越长,人工比对成本越高。更麻烦的是,模型会同时修改标点、语序、结构和观点,真正重要的变化被大量表面润色淹没。

所以第一条原则是:原稿默认不可变,AI 输出修改集。

2. 一条 Patch 应该包含什么

最小数据结构可以这样设计:

ts 复制代码
type EditRisk = 'low' | 'medium' | 'high';

interface TextPatch {
  patchId: string;
  baseVersion: string;
  anchor: {
    blockId: string;
    quote: string;
    start?: number;
    end?: number;
  };
  before: string;
  after: string;
  reason: string;
  category: 'typo' | 'clarity' | 'structure' | 'fact' | 'brand' | 'compliance';
  risk: EditRisk;
  evidence?: string[];
  status: 'proposed' | 'accepted' | 'rejected' | 'stale';
}

before/after 用于展示 Diff,reason 解释修改动机,categoryrisk 决定审批方式,baseVersion 则用于冲突检测。

只返回"修改后的句子"不够。没有理由和风险级别,人只能凭感觉决定接受还是拒绝。

3. 不要只靠字符位置定位

如果 Patch 只记录 start=1024, end=1052,前文新增一个字,所有位置都可能漂移。

更稳的定位方式是组合使用:

  • 块 ID:定位段落或编辑器节点;
  • 原文片段:确认被改内容仍存在;
  • 前后文哈希:判断上下文有没有变化;
  • 基础版本号:发现 Patch 是否基于旧稿。
ts 复制代码
function canApply(patch: TextPatch, doc: DocumentState) {
  if (patch.baseVersion !== doc.version) return false;
  const block = doc.blocks.get(patch.anchor.blockId);
  return block?.text.includes(patch.before) ?? false;
}

不能安全定位时,不要"尽力贴上去",而应把状态改成 stale,重新生成建议。

4. 风险分级决定审批粒度

并非所有修改都要同样处理。

风险 典型修改 默认动作
错别字、明显标点、重复词 可批量接受,但保留撤销
句式、段落顺序、标题强度 逐组审阅
数字、引语、产品承诺、法律与医疗表述 逐条人工确认并检查来源

一个实用规则是:模型越可能改变"事实或责任",审批越细;越接近纯格式清理,越适合批量处理。

5. 把作者声音写成约束

很多改稿事故不是事实错了,而是作者被"优化"没了。

风格约束不要只写"口语化、自然、有网感"。这些词过于宽泛。可以把它拆成可检查的不变量:

yaml 复制代码
voice_invariants:
  - 保留第一人称判断,不改成机构口吻
  - 不新增感叹号
  - 不把具体案例替换成抽象总结
  - 允许短句和不完全对称的段落节奏
  - 不使用"赋能、重塑、颠覆、时代浪潮"等词
  - 观点强度不得高于原文

它们不保证绝对风格一致,却能让"不要改成 AI 腔"从一句抱怨变成验收条件。

6. 改稿流水线应分四次跑

一次 Prompt 同时做事实、结构、语气和平台适配,表面省事,出错后却无法定位。

更稳的顺序是:

text 复制代码
FACT_CHECK
  → STRUCTURE_REVIEW
  → LINE_EDIT
  → PLATFORM_ADAPTATION
  → PUBLISH_REVIEW

FACT_CHECK

只找需要核实的数字、日期、引语与动态产品事实,不改文风。每条建议附来源或标记"待确认"。

STRUCTURE_REVIEW

输出段落移动、删减与补证据建议。此阶段不要先把全文写漂亮。

LINE_EDIT

处理错别字、歧义、冗余和节奏,遵守作者声音约束。

PLATFORM_ADAPTATION

基于同一事实清单分别重写,而不是复制后删字。CSDN 补技术解释,掘金强调机制和取舍,头条缩短段落并降低理解门槛。

PUBLISH_REVIEW

回读平台编辑器里的标题、正文、图片、摘要、标签与发布选项。上传成功不等于最终页面正确。

7. 接受 Patch 后仍要生成新版本

每次接受建议,都应产生新版本,而不是覆盖历史:

text 复制代码
draft-v1
  ├─ patch-001 typo accepted
  ├─ patch-002 claim rejected
  └─ patch-003 paragraph-move accepted
      ↓
draft-v2

发布记录还应保存最终版本号、平台、时间和页面链接。以后发现问题,才能知道是源稿、平台改写还是发布设置出了错。

8. 从建议修改走到完整交付

单点编辑能力只能解决"怎么改一句"。内容团队真正面对的是选题、调研、写稿、改稿、配图、排版、平台适配、预填和最终发布。

这也是我们做 Tipkay 时采用岗位化方式的一个原因:公众号编辑、知乎博主、博客发布助手带着业务资料、历史内容和平台规则,各自完成一类工作;同一母题在不同平台分别处理,发布等关键动作再由人确认。

这里需要明确边界:Tipkay 官网并没有承诺通用的逐字 Diff 审批,本文的 Patch 协议是一套工程建议;产品的可验证价值,是让业务上下文、岗位流程、工具和发布准备处在同一条交付链里,减少每次从空白聊天框重新解释。

9. 最小落地清单

  • 原稿只读保存,生成唯一版本号;
  • AI 只输出可定位的 Patch,不默认覆盖全文;
  • 每条建议包含理由、类别和风险;
  • 数字、引语、承诺和合规表述逐条核验;
  • 作者声音写成明确的不变量;
  • 接受与拒绝均留记录,可撤销、可回滚;
  • 平台改写共享事实清单,不共享整篇成稿;
  • 提交前回读最终页面。

AI 编辑真正成熟的标志,不是把一千字瞬间改完,而是知道哪十个字值得提议、哪一句必须问人、哪一段最好原封不动。

参考资料

标签:人工智能、AI Agent、自然语言处理

相关推荐
回眸&啤酒鸭3 小时前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智3 小时前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
AI的探索之旅4 小时前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein4 小时前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu4 小时前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
美狐美颜SDK开放平台4 小时前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
wukangjupingbb4 小时前
智能网联汽车安全能力框架
人工智能
感谢地心引力5 小时前
我用 Doubao-Seed-2.1-pro 做了一个深度融入 AI 功能的本地知识库软件
ai·开源·seed·markdown·豆包
龙亘川5 小时前
明月照湾区,智启新赛道:从顶流文旅IP盛会看智慧文旅升级路径
人工智能·智慧城市·开源软件·数据可视化