桃子桃子 AI 快讯
返回首页
工具

ForthWrite:用编辑距离反馈学习用户文风的邮件 AI

Show HN 项目 ForthWrite 通过 RAG 检索历史邮件,以编辑距离反馈循环校准文风,并引入 LCS 词级…

2026.06.30 · 周二4 分钟阅读评分 37
评分细项加权总分 37
重要性
30
新颖性
42
影响面
25
可信度
55
实质性
55

ForthWrite 是一款面向 Gmail 的 Chrome 扩展,以 Show HN 形式发布。它试图解决当前 AI 邮件助手普遍存在的「不像你写」的问题:通过 RAG 检索用户真实发信历史,并以编辑距离作为反馈信号,让模型在每次发送后持续校准文风。

核心思路:RAG 检索 + 编辑距离反馈

作者指出,市面上大多数「学习你文风」的邮件 AI 实际上只是把系统提示当作风格说明书,模型并不会随用户写作习惯的变化而更新。ForthWrite 选择的是另一条路径:

  • 首次连接 Gmail 时批量导入「已发送」文件夹中的邮件,经清洗(去除 HTML、转发内容、签名)后,用 OpenAI text-embedding-3-small 嵌入并存入 Postgres + pgvector。
  • 每次起草时,对来信线程做嵌入,以余弦相似度在向量库中召回候选集,再用 MMR(最大边际相关性)重排序,避免返回高度雷同的样本导致风格覆盖过于集中。
  • 用户编辑 AI 草稿后发送时,系统同时记录「生成版」与「发送版」,计算两者之间的归一化 Levenshtein 编辑距离:分数接近 1 表示近乎原文发送,分数接近 0 则意味着用户大幅重写。

低分对(重写较多)会送入异步优化器,用于分析差距并建议系统提示更新;高分对(近乎原样发送)则进入检索语料库,作为后续 RAG 召回的正向少样本。若召回结果未通过最低置信度阈值,系统宁可注入空样本也不强行加入无关示例。

「措辞矿工」:LCS 词级对齐

作者强调,编辑距离对「整段重写」很敏感,但对「只换两个词」的近错失草稿几乎无感。例如把「no worries at all」改成「no worries」,整体编辑距离依然很高,不会被标为「坏样本」,而用户实际偏好却未被捕获。

为解决这一盲区,ForthWrite 引入独立的「措辞矿工」步骤:

  • 用词级最长公共子序列(LCS)对齐 AI 草稿与最终发送版;
  • 统计所有删除与替换操作,记录哪些措辞在用户历史中反复被改动;
  • 当某一替换的频率与一致性超过阈值时,写入系统提示,作为显式的「避免」或「偏好」规则。

该步骤不调用任何 LLM,仅做确定性 diff,目的是捕捉用户「手改但说不清」的细微习惯。

技术栈与成本控制

  • 前端 Chrome 扩展,使用 esbuild 打包;
  • 后端 Next.js 16 API;
  • 存储使用 Supabase(Postgres + pgvector);
  • 主模型为 Anthropic Claude,配合系统块的 prompt caching,将用户画像、措辞规则与少样本在同一会话内缓存一小时复用;
  • 检索使用 OpenAI text-embedding-3-small。

作者特别指出,prompt caching 对成本结构影响显著——系统块在同一会话多次起草中保持稳定,缓存命中后每小时只计费一次,是该产品能在消费级定价下盈利的关键。

一个待解的开放问题

这套设计带来一个悖论:模型越好,用户编辑越少,反馈信号随之稀疏,优化器最终会「因成功而饿死」。目前的应对是让措辞挖掘按时间周期独立运行,而非绑定编辑距离分数,使处于稳态(高准确率、少编辑)的用户依然能获得定期精炼。作者将这一稀疏正反馈下的收敛问题视为更普遍的开放议题,希望了解做 RLHF 或偏好建模的同行如何处理类似场景。

ForthWrite 提供 14 天免费试用,无需信用卡即可开始使用。

信源