Us vs. Them:用版本历史判断文本每一行是谁写的
导语
随着“代理式编程”和 AI 辅助写作变得普遍,一个新的问题开始浮出水面:当前文件里的某一段文字,究竟是人写的,还是 AI 生成后被反复改出来的?Git 能告诉我们是谁提交了某个版本,但并不直接告诉我们当前每一行的来源归属。开源项目 Us vs. Them 试图填补这个空白:它基于版本历史和 diff,为文本提供行级来源判断。
它要解决什么问题
在作者的设想中,人类亲手写下或认真改过的内容,应当被 AI 代理视为“更需要尊重”的区域。相反,如果某些代码、README 段落或其他文本主要由代理生成,那么后续代理继续重写、扩展或清理它们的阻力就应该更小。
这类需求在“vibecoding”场景中很典型:一个应用大部分由 AI 生成,但开发者希望在某些文件、函数或文档段落中表达自己的设计意图,并希望下一轮代理操作不要轻易推翻这些部分。README 也是类似例子:开头几段也许被人类重新润色过,后面仍可交给 AI 补充,但开头不应被随意重写。
核心要点
- 无需额外标记:工具不要求在 Markdown 或代码中插入特殊注释,而是直接利用已有版本历史。
- 依赖作者身份:每个版本的变更需要能被识别为“我们”或“他们”,例如人类作者与 AI 代理作者。
- 输出范围而非单点判断:结果以行号区间呈现,例如某些行完全属于人类,某些行完全属于代理,还有一些是被代理修改过的人类内容。
- 基于 diff 的启发式算法:项目并不只是机械地追踪单行作者,而是试图识别更连贯的文本“岛屿”,避免来源判断过度碎片化。
- 可作 CLI 或库使用:在 Git 仓库中,可以通过参数指定哪一方是“ours”或“theirs”,另一方自动归为对立侧。
示例输出中,1.00 表示该范围可视为完全由人类创作,0.00 表示完全由代理创作,而介于两者之间的值则表示人类原始内容经过代理不同程度修改。
意义与影响
Us vs. Them 的价值不在于给文本贴上绝对真相标签,而是为 AI 代理提供一种“编辑礼仪”的基础设施。当代理知道哪些区域是人类重点介入过的,它就可以在修改前更谨慎,或者把改动建议转化为提示、补丁和说明,而不是直接覆盖。
这也提示了未来开发工具的一个方向:AI 不仅要理解代码语义,还要理解协作历史。来源感知、所有权边界和编辑权限,可能会成为代理式 IDE、自动重构工具和文档生成系统的重要能力。
来源:Hacker News
评论
正在确认登录状态……
正在加载评论……