一份申请摆在你面前:申请人想养一条室内小龙,体长41厘米。规则手册写的是35厘米。AI clerk已经在文件上签了字,备忘录就压在你的桌角——"龙已命名,水坑有执照,消防方案提到用水。合规。"
你的工作,是把"拒绝"的章砸下去。
![]()
这是《The Bureau of Imaginary Permits》(虚构许可局),一个像素风的审查亭游戏,跑在真实的 Sanity Workflows 上。它参加的是 Sanity Challenge 的 Path Two:Vibe-Code Something Strange。你坐在窗口后面,申请人一个接一个走上来,要的是"周二吹口哨许可证""室内小型龙饲养许可",或者"一朵中型云的产权契"。他们递过来公民卡、申请表,有时还有已经持有的执照。
AI clerk永远先放行
每一份送到窗口的文件,都已经过了 Clerk Third Class 的手——一个 AI。它把草稿往前推,人只负责最后那一下。这正是 Workflows 加分题的原话:"agent 可以推进草稿,人负责批准。"在这个游戏里,agent 永远在推进,而人是伪造公民卡和"抬头许可证"之间唯一的屏障。
但 clerk 累了。41厘米的龙,规则手册写的是35。你拉出印章托盘,把 DENIED 砸进框里,把文件递回去。
- 盖错了,机器会吐出一张罚单。
- 第二天会来一份公告,一夜之间改掉规则。
- clerk 还在用昨天那套。
游戏每天七个申请人,共两天,不需要账号。
窗口背后还有真实的公民侧
任何人都可以提交一份许可申请。一个真实的 AI clerk(Gemini)读它,可能把它打回来,要求补交 88-H 表格——"闹鬼责任豁免书"。涉及天空的许可会转给第二个 AI:气象部,它用航运天气预报的口吻做出裁决。然后人类官员在 Sanity 仪表盘里的一个 App SDK 应用中盖章。
演示里有一份真实文件,走完了两个 AI 和两个人类签名,每一步背后都有 GROQ 规则。
四天里,Claude 写了、跑了、测了全部
构建过程本身也是一份记录。IDE 是 Windows 终端里的 Claude Code(Opus 5.5)。作者说自己"打得非常少",Claude 写、跑、测了一切,并同步维护一份 BUILD-LOG.md。
几个改变了方向的提示词:
- "go path two"——Claude 回来给了三个奇怪点子,都能用上两个加分区域。作者选了"许可局"。
- "别打开浏览器,告诉我们你需要什么,我们来提供"——构建中途 Claude 开始驱动作者的 Chrome 去测仪表盘应用,被叫停,之后它改为索要截图。
- 第一版上线后:"我们得先重新设计申请界面,它看起来太 vibecoded 了(颜色、字体……),要游戏化,要遵循《Papers, Please》的设计,要有盖章批准/拒绝的动画。"Claude 反问了三件事:访客扮演谁(审查员)、印章怎么计分(对照埋好的差异,真相存在 Sanity 里)、重设计做到什么程度(完整的像素审查亭)。
第一版其实是个得体的政府表单站:纸张色、衬线体、橡皮章 CSS。端到端能跑,但看起来和所有"好看"的 AI 建站一个样。这是作者在两个参赛作品里第二次说"太 vibecoded",于是任务变成:认领一个世界。
差点手搓工作流,然后找到了真家伙
Claude 最初的计划是自己建模流程,用一个 workflow 类型装 stages[] 和 transitions[]。动笔之前,它顺着挑战帖里的"Workflows"链接找到了 @sanity/workflow-engine(早期访问,在 npm 上):定义以文档形式部署进数据集;每份申请都是一个 sanity.workflow.instance,带着阶段、字段和完整历史;流转是 GROQ 条件;AI 工作以排队效果运行。
手搓的 schema 被丢掉了。现在有四条链,全是数据。
游戏跑的是真实的工作流流量
开始一个班次,会把当天脚本化的案件文档变成真实的申请,每一个都由一个 booth-inspection 实例管辖。你的盖章是一次真实的 fireAction。然后服务器根据引擎记录在实例上的决定来计分,对照 case.truth 检查。浏览器从不自己报告分数。每日班次表是 shift 文档,也就是排行榜。
诚实说明:脚本化申请人的 clerk 备忘录是写好的,不是生成的。窗口前的每一份文件都是"已通过"的,因为这就是前提。如果真实 clerk 看到这些文件,它会拒绝,它们根本到不了你手上。公民侧用的是真实的 AI clerk。
卡住的地方,以及怎么解开的
- 引擎的校验器在第一次部署时就抓到一个真实 bug。有一条链有一个 denied 阶段,没有任何流转能到达它,sanity-workflows deploy --check 会拒绝这种情况。
- clerk 误读了"Yes"。当同意项回答为"Yes"时,它两次索要同意豁免书,然后又拒绝了公民对那份表格的回复。两个原因:它没有被强制引用那个失败的答案;它从没看到……
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.