一条无法自行发布的内容管道
网站文案的改动通常靠直觉,而自动化又意味着把线上站点的写入权交给模型。我们做的是另一种:智能体只读取并提出建议,改动的前后对照由普通代码算出,真正让内容上线的,只有一个人的那一次点击。
- 领域内容运营
- 参与方式我们自己的构建,建立在一套开源软件之上
- 状态已完成并设卡,线上发布处于关闭状态
做决定的那一部分,本身就不能写入
管道读取站点自己的搜索表现,把它变成一条按优先级排序的队列,队列里是页面级的具体措辞改动。它改的是文字:正文、页面标题、描述和小标题。它从不碰代码、版式或配置,也不会凭空写新文章。
系统分成两个彼此隔开的层面。一面掌握证据、审核队列、审计记录,以及真正执行写入的代码。另一面是智能体,它读取当前文字并记下一条提案。改动获批后,由服务器按站点所用的渠道发布:在站点自己的代码仓库里提一个变更请求、写入对象存储、调用内容系统自带的发布接口,或者在对方平台没有写入接口时,把改动清楚地交接给客户的技术人员。
既查不了也拦不住的内容改动
这类工作通常有两种坏法:要么靠意见争论,要么交给一个权限大到谁都不敢给新同事的自动化。
凭感觉做的决定
改哪一页、改哪句话,来自一场会议而不是站点自己的表现数据。数据一直都在,只是没人把它变成一条可执行的工作队列。
权限大过信任的自动化
能改一个文件的智能体,同样能改错文件。把线上站点的写入权交给模型,等于指望它别去动代码、版式、跳转和元数据。指望,和阻止,不是一回事。
没有可审对象的签核
如果做改动的系统同时也写这次改动的摘要,审核就失去了独立的对象。审核的人批准的是一段描述,不是那次改动,而两者是否一致,要到后来才知道。
这里的每一项能力,都是为了拦住某件事
这条管道是由它拒绝去做的事构成的。下面每一条都是一道控制,而不是一个卖点。
做决定的那一部分不能写入
正常运行时,智能体读取当前文字并记下一条提案,它的权限就到此为止。它不能克隆代码仓库、不能改文件、不能提交,也没有任何指令能把这些权限给它,因为它从一开始就没有。
- 智能体读取当前文字并记下提案,仅此而已
- 它不能克隆代码仓库、改文件或提交
- 所有写入都由服务器执行,并且只在获批之后
终点落在智能体够不到的地方
分层检查把任何改动限制在内容文字里。真正的改动在提交前会被重新检查一次,最后一道检查作为必过项跑在构建服务器上,智能体对那里没有任何影响力。
- 改动只限于内容文字,绝不涉及代码、版式或配置
- 最后一道检查跑在构建服务器上,智能体够不到
- 翻译文件里文字可以变,键不能变
由代码算出来的前后对照
审核人看到的改动清单,是普通代码从真实改动里推导出来的,从不由模型撰写。同一段算好的文字,既是起草模型的依据,也是第二个模型比对信息时的基准。模型可以描述一次改动,但编不出一次改动。
- 前后对照清单由真实改动算出
- 第二个模型拿同一份清单核对发出的信息
- 每条提案都带着触发它的搜索证据
一次点击,而且只有那一次
批准是对一条记录的一次条件更新。第一次点击定下结果,之后再发生什么都不会改变它,所以重复点击、被转发的链接,或者企业邮件扫描器提前打开链接,都不会有任何后果。
- 由第一次点击决定;再点一次不改变任何事
- 批准链接一次性、时效短,且只以摘要形式保存
- 回信说同意只会寄出一个确认链接,永远不会发布
有人点了同意之后,会发生什么
批准会启动一次写入,而写入正是可能伤到线上站点的那一步。所以发布这条路,是整个系统里被框得最紧的部分。
发布默认是关的
向线上站点写入这件事,在有人刻意打开之前一直关着。打开了但还没有观测窗口,仍然算关着:管道不会往一个它看不到的状态里写。
它会自己关回去
自然搜索流量出现可测量的下滑,或者抓取错误变多,写入就会自动关闭,哪怕当时没有人在盯着。
每一次发布都能退回
每条渠道在写入之前先留好退路,存成草稿,检查预览,发布,再检查线上页面,一旦这道检查没过就自行退回。
没碰过的东西,它清不掉
受保护字段的检查会在每次写入前对改动跑一遍,发布后再对渲染出的页面跑一遍,让规范链接、索引指令、跳转和页面元数据完整地穿过这次编辑。
它改变了什么,又走到了哪一步
本页没有数字。下面写的是流水线在运行中做的事:从信号起草,停在审核处等待,只有人签核的内容才会发布。
可核对
每一条提案
审核的人读到的是代码算出的、一字不差的前后对照,触发它的搜索证据就在旁边。签核因此变成一次判断,而不是走个形式。
可回退
每一次发布
没有先留好退路,就不会写入任何东西;线上页面没通过检查,会在不惊动任何人的情况下退回原状。
已设卡
走到了哪一步
从提议到批准再到发布,整条链路在自动化测试下端到端运行,另有一套独立装置来评定流水线是否在正常工作,而不是交给主观判断。发布在每一步都受签核开关约束。