一份客户发来的合同,付款条件是"开票后90天、且客户自己的甲方付了钱才付你",知识产权条款写着"你写下的东西从落笔那一刻起归客户,哪怕他一分钱没给"。签之前,你想找个人看一眼。

打开网易新闻 查看精彩图片

摆在面前的选择都不太好。找合同律师,时薪通常在300到800美元之间,一个小项目很难为这个价钱开口。把合同粘进云端AI工具,又可能直接踩碎你签过的保密协议——客户从没同意让第三方读到这份草稿。

Lim Local 想填的就是这个缝。它是一个命令行工具,在你自己的笔记本上给出第二意见,合同文件不出本机。

它具体做什么

喂给它一个合同文件,支持 .md、.txt、.docx 和文本型 .pdf。它会挑出自由职业者最容易踩坑的三类条款:付款条件、知识产权归属、以及赔偿与责任——出事之后谁掏钱。

每一类条款都会和公开的 Common Paper 标准条款逐条比对,最后生成一份单文件 HTML 报告,排版像一张维基页面。报告里每一条都给出四样东西:

  • 风险等级:LOW、MEDIUM 或 HIGH
  • 触发警告的合同原句,精确到句子
  • 原条款与建议改写并排对照
  • 一句可以直接回给客户的客气话

测试合同里有一句被工具抓了出来:"付款明确以客户成功从其最终机构企业客户处收到许可款项为条件。"建议改写则写成:"客户同意在收到发票后三十(30)天内付款。"

代码做判断,模型只负责写

模型用的是谷歌的小型开放模型 Gemma 4,通过 Ollama 在本机运行,工具只和 127.0.0.1 通信。作者自己的笔记本是 RTX 4050、6GB 显存,一次完整审计通常耗时10到20秒。

流程拆成几段:读取器把文本抽出来,切分器切成小节并为三类条款各挑一节,审计器拿它和 Common Paper 专业服务协议标准条款 v1.1 的13个小节逐字比对,最后由模型写建议改写和那句客气话,报告生成器负责输出,凡是来自合同或模型的内容一律做 HTML 转义。

评级规则不交给模型:命中两个及以上红旗判 HIGH,一个判 MEDIUM,零个判 LOW。作者特意说明,LOW 不代表条款安全,只代表清单上的项目一个都没找到。

小模型当裁判踩过的坑

把判断权交给一个小模型,问题一个接一个冒出来。

它会把作者的清单原样抄回来当结论。给一份公平合同,它把红旗列表当成自己的发现交了上去。现在的做法是强制它引用合同原文,再由代码核对这段引用是否真的存在于该条款里。

它还会把保护性句子当成坏条款的证据。一份公平合同写着"收到全额付款后,承包方转让……",模型拿这句去证明"付款前即转让",知识产权条款因此被判 HIGH。作者补上了每类红旗的句式特征,也补上了能抵消它的保护性句式。

同一份合同跑两次,评级会变。一次报问题,下一次跳过。现在由代码自己逐条找红旗,模型不再决定什么算数。

还有隐藏思考挤占答案空间的问题。Gemma 4 会在作答前静默思考,这些思考吃掉了分配给答案的额度,答案从中间被截断,程序在残缺输出上直接崩掉。早期一次运行花了74秒,三类条款里两类失败。Ollama 默认只给 Gemma 4 一个 4096 token 的小记忆窗口。作者关掉思考、把窗口提到 8192,同一份合同现在约15秒跑完。

改写里还会漏出 Common Paper 的措辞,比如在写着"Freelancer"和"15天"的合同里冒出"Payment Period"和"Provider"。代码现在会把这些词替换成平实说法和合同自己用的当事方名称。

第一个外部测试者带来的三个bug

一位独立测试者克隆仓库,在自己的 RTX 2050、4GB 显存笔记本上跑通了,最后一次完整合同耗时35.9秒,比作者机器慢,但跑完了。

他寄来一份合同和两条抱怨。终端在首次调用加载模型时会卡住几秒像死机,工具现在会打印加载提示并逐条显示进度;每次运行会覆盖上一份报告,现在报告按合同名命名,比如 audit_sample_sow.html。

他这份合同还暴露了三个规则bug。合同里把自由职业者称作"Freelancer"而不是"Contractor";合同写明责任上限"不适用",而规则看到"cap"这个词就认定存在上限。三类条款里有两类被判成 MEDIUM,本该是 HIGH。修完之后,三类全部回到 HIGH。

作者强调这是个小测试集,而且大部分文件在调规则时已经看过,不能当作准确率读数。测试者那份是第一个没参与调参的文件,也正是它抓出了上面这些bug。

它做不到的事

规则是英文关键词模式,措辞不寻常就可能漏过去。每类条款只检查一个小节,如果合同里同时有一份公平条款和一份更糟的补充件,只有得分更高的那份会被审到。如果工作说明书指向另一份主协议,那些条款会显示为未找到。

模型给出的改写可能添加原文没有的条款,比如凭空写进一个30天付款期,所以改写必须和完整合同对照着看。扫描版 PDF 不支持。目前只在 Windows 11 上测过。工具定位是分诊辅助,不是法律意见。

作者也交代了开发方式:用AI对话助手和编码插件帮忙写和审代码,每一处改动都由自己运行和测试。测试者那份合同同样由AI起草,并标注为虚构测试文件。

为什么必须留在本地

合同不出笔记本,是这个项目存在的理由。受保密协议约束的自由职业者没法把客户草稿发给闭源云服务。模型是开放的,跑在自己的机器上,一次性下载完之后工具不需要联网。作者自己验证过:关掉笔记本 Wi-Fi,对 sample_sow.md 跑一次审计,正常完成。

成本结构也跟着变。按页计费不存在,所以一次性定价比如29美元在商业上说得通;建在付费云 API 上的工具则要为每次审计付钱,每次上传都多一分隐私风险。

能改模型行为也是本地带来的好处。因为模型在自己机器上,作者可以关掉隐藏思考、设定记忆窗口、在答案外面套代码校验——从一个照抄清单的模型,变成一个评级稳定的工具。

闭源大模型会不会更好?作者承认,云端大模型大概会把合同读得更仔细。但它会破坏这个工具唯一必须守住的规则:合同不离开这台机器。在这个问题上,留在本地的小模型是更划算的交换。

代码是 MIT 许可,README 里列清了工具做不到什么。作者说目前还没卖出任何东西,29美元只是个猜测的价位。那位测试者表示,如果 Lim Local 真能稳定工作、让他不必再把合同粘进云端AI工具,他愿意付一次性费用——但他没报具体数字。