客户发来一句"看着不错,就几个小改动",后面跟着五条需求。这是自由职业者最熟悉的那种消息:合同里写好的范围、时薪、修改轮次,到了这一步全变成口头人情。有人干脆做了个工具,专门接住这句话。
这个工具叫 ScopeSloth,作者把它定位成一个"替你吵架"的助手。用法很直接:把当初谈定的内容(范围、费率、修改轮次)和客户最新那条消息一起贴进去,剩下的交给流程跑。
三个环节,各管一段
第一步,一个智能体把客户消息拆开,逐条列出每一个独立请求。第二步,另一个智能体拿着这些请求去搜协议原文,为每一条找到覆盖它的那句话,并引用出来。第三步不是模型干的,是普通代码:用小时数乘以协议里的费率,算出金额;再判断某个设计微调是不是用掉了包含在内的修改轮次。
最后再由一个智能体起草回复,语气保持平静:哪些在范围内、哪些属于加项以及加项的确切价格、还有哪些不清楚需要反问一句。
作者对目标用户的描述挺扎心:那些明明有书面范围、却还是免费干了额外活的人,因为"为这个争论"比"直接干了"更难受。他把最省事的做法定义为不去争,而不是不去干活。
钱的部分不交给模型
这套流程里有一条硬规则:回复里只能出现代码算出来的金额。如果模型自己编了个 400 美元,草稿会被打回去,并附上具体问题。
规则本身是纯 JavaScript 写的,配了 16 个测试,不涉及模型:
- 费率和修改轮次从协议文本里读,比如每小时 60 美元、包含 2 轮修改
- 模型给出的小时数被钳制在 0.5 到 40 之间的半整数,防止一次离谱猜测变成巨额账单
- 价格永远是小时数乘以费率,由代码计算
- 对已交付内容的改动先用修改轮次,轮次用完后才转为计费
- 回复必须给每一个加项定价,且不许出现破折号、占位符,也不许写"按合同规定""很遗憾"这类话
引用也有防伪机制:检查智能体带一个 search_scope 工具,一次可以提交多个查询,返回带编号的协议行。只有 search_scope 在本次运行中真的返回过的行才算有效引用;一条请求若被标为"在范围内"却拿不出有效引用,就会被降级为"不清楚"。
跑起来是什么样
演示页面上有个"加载示例"按钮,点开是一份虚构的烘焙网站协议和一条虚构的客户消息,再点"整理请求"就开始跑。作者实测一次运行 4 到 10 秒。
示例结果里,页头和 logo 的调整属于修改,免费,占用两轮修改中的一轮;下单页、Instagram 信息流和 PDF 菜单不在协议里,因此被标价。
技术栈是 Cloudflare Workers 上的 Mastra 工作流,调用 Workers AI 上的开放权重模型。默认用 gpt-oss-20b(Apache 2.0),推理强度设为低;Llama 4 Scout 17B 是第二选择和备用写手。工作流串成一条链:创建、列请求、查范围、写回复。作者提到,小模型习惯用竖线分隔的行来回答而不是 JSON,所以解析靠代码兜底。
不稳定的部分,作者自己说了
同一个示例,答案并不总一样。最近三次运行里,额外工作总额分别是 780 美元、420 美元,还有一次什么都没定价——模型把三条请求判为"不清楚",回复就变成了提问。小时数是模型的估计,所以页面上提示用户自行调整。金额规则和修改轮次规则则没有变过。
成本方面,按 Workers AI 的标价,一次运行约 0.0004 到 0.0008 美元,三次模型调用,输入约 1500 个 token,输出约 350 个。部署后的运行里出现过两个慢的离群值,32 秒和 53 秒,原因是 Workers AI 把请求排了队。
作者没有回避这套东西的边界:这一周他没有拿真实客户测过,所以不打算声称省了多少时间,只以示例为准。代码以 MIT 协议放在 GitLab 上,任何人都能读、能在自己机器上跑同一个模型,或者换掉它。写作环节有备份,gpt-oss-20b 返回空草稿时由 Llama 4 Scout 接手,改一行配置即可——不过这条路径在示例运行中没有触发。
隐私上的说法是:客户消息和签好的协议属于私密内容,用 Workers AI 上的开放权重模型,文本只用于单次请求,应用本身不存储。一次运行不到一美分,所以可以每条消息都跑一遍,不用想订阅的事。
热门跟贴