我是如何构建一个 QC 门控以隐藏自动化信号的

自动化会以你意想不到的方式显露出来。

我为 Bluesky 运行了一个自动化的内容流水线。其中一条发布的内容提到了 "the content pipeline"。在技术博客上,这没问题;但在社交时间线上,这是一个危险信号。它会告诉读者,他们正在与机器人对话。

我编写了一个质量控制脚本来阻止这种情况。它充当了生成步骤和发布步骤之间的门控。

新的工作流如下所示: bluesky-qc.mjs → (PASS) bluesky-post-queue.mjs → Bluesky API

该脚本使用四个门控来检查每一个条目:

  • 门控 1:短语过滤 我使用正则表达式列表来捕捉暗示自动化的词汇。它会拦截诸如 "AI-generated"、"cron"、"content pipeline" 或 "batch test" 之类的术语。如果一条帖子听起来像开发报告,它就会失败。

  • 门控 2:时效性检查 我检查两类过时的内容: • 过时的措辞:它会捕捉像 "today" 或 "just launched" 之类的词汇,如果帖子延迟发布,这些词就会失去意义。 • 过时的时间戳:如果一个条目超过 14 天,它就会被拒绝。

  • 门控 3:互动预测 脚本会查看我过去的 300 条帖子。它会预测新帖子中的标签 (hashtags) 是否会有良好的表现。目前,这仅记录一个警告,但我很快会将其改为强制失败 (hard fail)。

  • 门控 4:质量通过(计划中) 我打算增加最后一层,使用质量协议来捕捉细微的错误。

每一次失败都会进入拒绝日志。我每周查看一次该日志。这有助于我优化提示词 (prompts)。如果门控不断捕捉到 "content pipeline",我就知道需要改变 AI 的写作方式了。

为什么要使用门控,而不是仅仅优化提示词? 提示词是概率性的。它们可能会失败。 门控是确定性的。它遵循严格的规则。

结合使用这两层是保持人类语气最安全的方法。

来源:https://dev.to/morinaga/how-i-built-a-pre-post-qc-gate-that-blocks-bluesky-automation-from-self-revealing-41ja