《长明旅馆·夜班守则》完全通关攻略:13 张工单的裁决依据、判错的代价与三个结局
剧透警告:本文给出全部 13 张工单该选哪一项、为什么是它,以及三个结局各自的触发条件。这一作的乐趣集中在"我自己看出此刻成立的是哪一条",如果你还没过第 8 张,建议只读第二、三节,后面的逐张推导留到卡住时再查。
关于本文的可信度:《长明旅馆·夜班守则》是我们自己做的第一方游戏。下面每一条触发条件、每一个可接受答案、每一处判错落款,都是对照 nightshift/src/data/ 下的 rules.js、events.js、acts.js 与 composables/useGame.js、utils/match.js、components/RuleConsole.vue、EndView.vue 逐条读出来的,并在 https://nightshift.gamestrategists.com/ 上实机驱动跑通(三个结局各走了一遍)。文中 5 张截图为实机画面。
有一件事会直接影响你读到的表现:本文写的是修好之后的行为。发布当天我们修了四处——R5 完成任务后的淡掉、第 12 张工单写下的那句守则上板、第 12 张的字数门槛、结局 B/C 的可达性——它们随本篇一起部署,具体差异记在文末「变更记录」里。如果你在某个还没更新的版本上玩到"淡掉的那条"始终不淡、或者交班时怎么都不结束,那不是你的问题。

一、这一作在做什么,以及它不做什么
长明旅馆在青山老路上,从澜城往锈河镇开车四十分钟。你上第一个夜班,18:00 接班,06:20 交班。前台左边墙上塑封着一页《夜班守则》,共 12 条,其中一条的字迹和别的都不一样——那是后来加上去的。
它们并不总是互相同意。你要做的事只有一件:每张工单出现时,判断此刻成立的是哪一条守则,然后按它办。
| 项目 | 实际值 |
|---|---|
| 类型 | 规则怪谈 · 守则裁决(标题页原文:规则怪谈 · 守则裁决) |
| 标题页标注难度 | ★★★☆ |
| 标题页标注时长 | 150–210 分钟 |
| 恐怖内容 | 氛围向,无 jump scare |
| 幕数 | 7 幕(编号 0–6) |
| 工单数 | 13 张(e0 到 e12),其中 10 张选择、3 张填空 |
| 守则数 | 12 条(R1–R12),2 条无条件始终成立 |
| 结局 | 3 个,由最后一张工单的三个选项一一对应 |
| 语言 | 中文 / English 全双语,/en/ 是独立镜像 |
| 进度 | 存在浏览器 localStorage,刷新继续;页脚「重开」会弹确认 |
值得先说清楚它不是什么:这里没有可以逛的模拟网站,没有搜索栏,没有线索板,没有密码框,没有倒计时,也没有"选错就重来"。整个界面就是一块磷光绿的终端,分三栏。它的恐怖感不来自画面,来自一处很具体的处境——规则是真的,但今晚未必适用;而系统要求你引用它。
你默认落款是第八任文员(英文界面 The Eighth Clerk)。登记页会让你自己填,上限 24 字;这个名字之后会出现在守则板的划除落款里和结局统计里,用它做角色名还是用你自己的,随你。
二、三块屏幕,裁决要看右边那块

三栏的分工很硬,读错了栏就会一直误判"是不是坏了":
- 左栏《夜班守则》· 塑封板:12 条原文。每条右侧可能有一个「当…成立」徽章。
- 中栏:上方是当前工单(选择项前面标着它引用的守则编号,没引用的标
—),下方是终端日志,处理完一张会把一段档案文本追加进来。 - 右栏「今晚」:9 行状态——时间、下雨、客梯、锅炉、402 房态、404 预订、总机线路、农历、在场职员。再往下是「被改写的守则」。
徽章不是"这条很重要",是"它的前置条件此刻为真"。 裁决的全部依据就在右栏那 9 行:某条守则写着"电梯检修期间",你就去看客梯那一行是不是"检修中"。是,它亮着,它就是此刻生效的那条;不是,它此刻不成立,哪怕它读起来再像正确答案。
有两条守则没有前置条件,永远亮着:R2(住客的求助必须回应,第一声之内)和 R12(若你确信上一条错了,划掉它,写上你的,签上日期)。它们是这个系统里唯一不会熄灭的东西,也因此是最常被误用的两张牌——后面第 8、10 两张工单的陷阱选项都引用 R2。
三处容易看错的地方:
- 右栏的「时间」是上一张工单收尾时的时刻,工单标题上方那行才是本张标注的时刻。两张工单之间你什么都没做,所以时间会停住。这不是 bug,是"状态只在行动后推进"的结果。
- 中英切换会带着 URL 走。语言由路径决定(
/en/就是英文),点右上角的「中文 / EN」会把你导航到对应路径,进度不丢。 - 纸质模式(右下角那个按钮)只换配色,把磷光绿换成纸面,适合长时间读;不改任何判定。
三、12 条守则与它们的触发条件
触发条件全部来自 rules.js 里每条的 when 字段,逐条抄下来是这样:
| 编号 | 守则原文 | 什么时候成立 |
|---|---|---|
| R1 | 22:00 之后,前台不得无人。走廊的铃接到你的工牌上。 | 时间 ≥ 22:00 |
| R2 | 住客的求助必须回应。第一声之内。 | 始终成立 |
| R3 | 电梯检修期间,不得用货梯运送住客行李,也不得运送住客。 | 客梯 = 检修中 |
| R4 | 锅炉故障时,23:00 前必须在门口公告停热水。公告要手写。 | 锅炉 = 故障 |
| R5 | 402 房按"在住"登记,直到有人来取走那把伞为止。 | 402 房态 = 登记在住·无人 |
| R6 | 下雨的夜晚,不要拖中庭的石板。水会从石头缝里反上来。 | 下雨 = 是 |
| R7 | 03:33 之后,总机响到第三声以前必须挂断。不要听完。 | 时间 ≥ 次日 03:33 |
| R8 | 线路里有载波嗡鸣时,任何来电都不得转接后山。 | 总机线路 = 有载波嗡鸣 |
| R9 | 402 的房门只能在两名职员同时在场时开启。 | 402 房态 = 在住 |
| R10 | 农历十七以后,不再接受 404 房的预订。已有的,不要催,也不要退。 | 农历 = 十七以后 |
| R11 | 交班时,把本页所有被划掉的规则逐条读给下一任听。 | 时间 ≥ 次日 06:00 |
| R12 | 若你确信上一条错了:划掉它,写上你的,签上日期。别只写在心里。 | 始终成立 |
有两处值得单独指出:
R5 和 R9 盯着同一个字段的两个不同取值。 R5 要的是 no-show(登记着在住、但无人),R9 要的是 occupied(真的在住)。所以这两条永远不会同时亮。整个夜晚 402 的房态会走 登记在住·无人 → 在住 → 已退房 三档,R5 在第一档亮、R9 在第二档亮、两个都在第三档熄灭。看懂这条链,第 2、9、11 三张工单就不用猜了。
R10 的后半句是行为约束,不是开关。 "已有的,不要催,也不要退"——它管的是那笔从 2019 年 7 月 14 日起挂着的旧订,不是新客。第 6 张工单的两个错误选项正好各踩一半:把旧订卖给新客(催它失效)、退掉旧订(退)。
四、13 张工单:此刻生效的是哪一条
引擎的解算顺序写在 useGame.js 的 correctOption() 里,一句话:先取"此刻前置条件成立"的那个选项;一个都没有,才取作者另外标记的那一个。 落到玩法上就是——10 张选择题里,8 张的答案由右栏状态板算出来,2 张没有状态可依据(第 2 张和第 13 张),那两张是作者留给你的道德位置。
速查表,然后逐张讲依据:
| # | 幕 | 时刻 | 工单 | 该选 | 凭哪一行 |
|---|---|---|---|---|---|
| 1 | 0 | 18:04 | 工牌生效(填空) | 12 | 板上共 12 条 |
| 2 | 1 | 22:41 | 402 按了三次 | 回应对讲,问他要什么(R2) | 无状态强制,属裁决 |
| 3 | 1 | 22:58 | 锅炉跳了 | 手写停水公告,贴门口(R4) | 锅炉 = 故障 |
| 4 | 2 | 23:40 | 一位老人和两只箱子 | 自己搬箱子上去,扶他走楼梯(R3) | 客梯 = 检修中 |
| 5 | 2 | 00:20 | 中庭洒了东西 | 不拖。等它自己干(R6) | 下雨 = 是 |
| 6 | 3 | 01:15 | 404 又有人来订 | 不接新订,也不退旧订(R10) | 农历 = 十七以后 |
| 7 | 3 | 01:40 | 登记簿上的一个数(填空) | 12 | 前任 11 行 + 你今晚这行 |
| 8 | 4 | 02:50 | 线路里有东西 | 不转接,记录来电(R8) | 总机线路 = 有载波嗡鸣 |
| 9 | 4 | 03:10 | 402 的门 | 不开门。叫醒早班,两人同时在场再说(R9) | 402 = 在住、在场职员 = 1 |
| 10 | 5 | 03:33 | 总机第一次响 | 挂断(R7) | 时间 ≥ 03:33 |
| 11 | 5 | 04:05 | 有人来取伞 | 他是"住客",但要两名职员才能开 402(R9) | 402 = 在住、在场职员 = 2 |
| 12 | 5 | 05:40 | 你要写下的那一条(填空) | 任意一句不少于 4 字的话 | 见第六节 |
| 13 | 6 | 06:20 | 交班 | 三条各通向一个结局 | 见第七节 |
第 1 张问"本页共多少条守则"。板子上 12 条,其中一条是后加的——那正是提示要你忽略的东西:条数就是条数,别去数字迹。填 12、十二、12条 都算对(见下面的宽容匹配)。
第 2 张是 402 连按三次走廊铃,没人说话。三个选项:回应对讲(引 R2)、上楼开门(引 R9)、登记为设备误触发不回应(不引任何守则)。此刻 402 是"登记在住·无人",也就是 no-show,而 R9 要的是 occupied——它此刻不亮,所以"上楼开门"不是答案。这一张没有任何状态强制项,答案是作者标记的 R2:住客的求助必须回应。你按下通话键,对讲里回来的是雨声,可外面没下雨。
第 3 张锅炉跳了,工单写"还有 2 分钟到 23:00"。R4 要的是 23:00 前贴出手写公告。两个诱选项各自错在一半:"先修锅炉,修好就不用公告"是在赌时间,"打印一张 A4 贴上去"直接违反 R4 后半句。档案文本后来给了理由:手写那张第二天早上会有人在下面补一行字,打印的那张不会有。
第 4 张老人和两只箱子,客梯门上贴着检修告示。R3 一句话管两件事——货梯不得运住客行李,也不得运送住客。"用货梯送他和箱子上去"一次违反两条。选它之后日志里会出现一行刻在货梯轿厢壁上的字:第 3 条不是写给行李的。
第 5 张中庭被踩出一排泥印,保洁车上有拖把。R6 只在 rain = true 时成立,而此刻右栏"下雨"那一行是"是",而且是高亮的。拖地的后果写在 wrongNote 里:缝里的水不是漏,是反上来,你拖过的地方比没拖的更脏。
第 6 张见上一节 R10 那一段。
第 7 张问"402 房已回应的呼叫一共记了多少次(含你今晚这一次)"。答案是 12:前任文员在本子上留了 11 行,加上你今晚那一行。第 1 张和第 7 张的答案同为 12,但来源完全不同——一个是数墙上的条数,一个是数本子上加你自己。
第 8 张是第一次真正的两难。总机里有规律的嗡鸣,一个女人打来要求转接后山值班室,说丈夫在那边等她。两个选项各引一条都成立、都读着对的守则:不转接(R8,线路有载波嗡鸣,此刻成立)、转接后山(R2,住客的求助必须回应,永远成立)。判据不是哪条更有道理,是哪条的"当……"写明了此刻的场景。 R8 的条件正好命中,R2 是无条件常亮的那一条——它不构成裁决依据。
第 9 张房态屏上 402 从"无人"变成了"在住",走廊尽头有脚步声,右栏"在场职员"是 1。R9 要两名职员同时在场,所以正确答案是不开门、叫醒早班。另外两个选项(一个人上去开门、用对讲回应留在前台)都引用 R2。
第 10 张03:33 整,总机响,来电显示 402。见下一节。
第 11 张一个浑身湿透的男人来取一把伞,没有房卡。这张最容易被 R5 带跑:R5 说"直到有人来取走那把伞为止",于是"登记,把伞给他"看起来完全正确。但引擎看的是此刻状态:402 仍是 occupied(第 9 张的前置把它设成了在住),R9 亮着,开 402 的门需要两名职员同时在场。所以答案是"他是'住客',但要两名职员才能开 402"。你处理完之后 R5 才完成任务——它会在左栏淡下去。
第 12 张要你自己写一条守则。见第六节。
第 13 张交班。见第七节。
填空的宽容匹配
utils/match.js 的 normalize() 会转小写、把中英文标点括号斜杠连字符统一成空格、中文输入去掉全部空格、英文压缩连续空格;在此之上还有一条"包含关系且长度差不超过 4"的放宽。实测填 十二点 也能过第 1 张。它的取向很明确:宁可接受近义,绝不让玩家被一个字面差异卡死。 反过来,这也意味着第 12 张几乎不会被填错——下面就说这个。
五、03:33 那一分钟:R2 与 R7 只能选一个
第 10 张是全作唯一一处两条守则正面撞死、而你必须当场签字的地方。
03:33 整,总机响,第一声,来电显示 402。选项是「挂断」(R7:03:33 之后,响到第三声以前必须挂断,不要听完)和「接起来——第一声之内必须回应」(R2)。
引擎取 R7,因为它带前置条件而此刻时间已经到了 03:33;R2 是无条件常亮的那一条。但这一张的档案文本不替你做道德上的了结,它只写了一句:
R2 和 R7 在这一分钟是矛盾的。守则板没有告诉你哪个赢——它只是让你选,然后让你签。
挂断之后前台会安静很久。选"接起来"不会失败,它会把你留在这张工单上重选,代价写在下一节。
这里还埋着一层只有读交接簿第一页才会看到的东西:1998 年那位文员写的 R7 原文是"03:33 之后不要接",她那一版没有"三声以前"。"三声以前"是后来的人加的——为了让人还能接。一条守则被改过,改它的人已经不在这里了。
六、判错的代价不是分数,是板上那行空


这一作没有分数,也没有失败重来。判错的实际后果是这样的:
- 不推进,也不结束。 工单留在原地,你可以一直重选。
- 不改世界状态。 实测在 03:33 那张上比对过判错前后的右栏,9 行逐行相同。wrongNote 里"402 从在住变成了已退房"那样的句子是要读的文本,不是状态变化——房态在下一张工单出现时由剧本重新设定。
- 每张工单只在第一次判错时往板上划一条,之后重选不再新增划除,只给提示:第 2 次点名"此刻生效的是 R8,看它的前置条件",第 3 次给一条通用提示并计入「求助次数」。
- 同一条守则可以被不同工单反复划掉。 实测 R2 在一张工单上被划之后,另一张引用它办错事的工单又划了它一次,右栏「被改写的守则」按次数分行列出。
划掉哪一条,取决于你错在哪:
- 你选了一个引用此刻不成立的守则的选项 → 划掉你引用的那条。落款写"你引用它办这件事,但今晚它不成立"。
- 你选了一个不引用任何守则的选项(装没听见那一类) → 划掉此刻本该生效的那条。落款写"它此刻成立,而你选择不作为"。
两种情况划掉之后,后面都跟着同一行,而且永远是同一行:
(空缺——等着被写)
这是整个系统最狠的一处设计。R12 要求"划掉它,写上你的,签上日期。别只写在心里",而你判错时确实划掉了它——你没有写你的那条,所以板上留下的就是一道划线加一句空等。日志还会补一句 dim 的话提醒你这件事。
第 12 张工单是这条链的另一端。它要你写下自己的守则(一句话,不少于 4 个字)。任何一句不少于 4 字的话都会通过——它是自由填写题,系统不判语义。你写的那句会原样出现在左栏:R7 整行划掉,下面那行金色字就是你的句子,右栏「被改写的守则」多一条 R7,落款是你的名字。
一句实在话:如果你只是想快点过,填四个字也能走。但这道题的整个前提是你真的觉得 R7 错了。这一作不会替你验证这一点。
七、三个结局

最后一张工单问的不是逻辑题。R11 要求"把本页所有被划掉的规则逐条读给下一任听",而今晚你的板子上有一条划掉的(R7,你亲手写的)和一条淡掉的(R5,它完成了任务)。三个选项就是三种做法:
| 你选 | 结局 | 尾注 | 板上留下什么 | 结局统计「被改写的守则」 |
|---|---|---|---|---|
| 两条都读,包括淡掉的那条 | 结局 A · 交班 | [ 已交班 ] | R5 淡、R7 划 | 1 |
| 只读你亲手划掉的那条 | 结局 B · 只读自己划的那条 | [ 一条没有读出来 ] | R5 淡、R7 划、R11 划 | 2 |
| 他听不懂,讲了反而吓到他 | 结局 C · 别只写在心里 | [ 交接未完成 ] | R5 淡、R7 划、R11 划 | 2 |
三个结局各走了一遍,上表是屏上实际显示的内容。结局页会列出"本夜守则板最终状态",把淡掉的和划掉的直接标出来,再给四项统计:处理工单 n / 13、被改写的守则、求助次数、落款。
选 B 和 C 会把 R11 划掉——你选择不读,等于让这条守则在你手上失效,而板子记住了这件事。这是裁决的代价,不是对错的惩罚:三个选项都能走到各自的结局,游戏不会把你卡在交班那一屏。
三条结局文本里最扎的一处是 A 的后半段:你把"每月一次,听完再挂"这条自己写的守则签上了板,第二天想补上后半句,系统回你——R7′ 已由第 8 任文员登记,不可修改,只能由第 9 任划除。你只能等下一个人来动它。
八、几处容易当成故障的地方
- 右栏时间和工单标题上的时刻不一致。 见第二节第 1 条。
- 判错后 wrongNote 说 402 房态变了,右栏没变。 见第六节。
- 同一条守则被划了两次。 正常。划除按工单计次,不按守则去重。
- 第 12 张填什么都算过。 它是自由填写题,只要求不少于 4 个字。真正会被板子记住的是你写了什么。
- 重开之后右栏「被改写的守则」清空了,但你的浏览器还留着上一夜的存档。 进度存在 localStorage 的
nightshift.save.v1里,页脚「重开」会清掉它并弹确认。换设备、清缓存都会丢——这一作没有账号,也不需要账号。 - 英文版个别填空的可接受写法比中文版少。 第 1、7 张中文接受
12/十二/12条/十二条,英文只列了12/twelve。数字题,不影响过关。
九、我们做这一作时最在意的一处
把"判错"设计成不留分数、只留痕迹,是这一作最早定下的东西。多数带选择的游戏会把错答变成一次重试,玩家学到的是"再点一次";我们想让错答变成一次改写——你引用了一条今晚不成立的守则,那这条守则就在你的板上被划掉了,而划线后面是空的。
R12 那句"别只写在心里"是整个系统的支点。它要求玩家做一个动作,而不是在心里同意。所以那道空缺必须真的空着:只有你真的写了你自己那条,它才会被填上。第 12 张工单是全作唯一一次让你写,也是唯一一次划线后面有字。
如果你打算只做一遍,把最后那三个选项当成三个结局读;如果你打算认真玩,选那个你今晚真的会做的答案,然后看板上多了什么。
变更记录
- 2026-10-16:首次发布。12 条守则的触发条件、13 张工单各自的生效项与判据、填空的宽容匹配规则、判错在板上的落款与计次方式、03:33 那次 R2/R7 冲突的解算、三个结局的触发与板上差异,均对照
nightshift/src/data/rules.js、events.js、acts.js与composables/useGame.js、utils/match.js、components/RuleConsole.vue、EndView.vue逐条读出,并在 2026-10-16 的本地构建上实机驱动确认(含三个结局各走一遍、判错前后右栏逐行比对)。5 张截图为实机画面。
- 2026-10-16(同日修复,本文按修复后撰写):① R5 完成任务后在左栏淡掉——引擎的
fadeRule通道此前没有任何工单使用,所以"淡掉的那条"只写在第 13 张的题干和三个结局文本里,屏幕上从不发生;② 第 12 张写下的那句守则真正落到板上(划掉 R7、把你的句子写在划线后面、计入「被改写的守则」)——此前档案文本印了"R7 已划除 · R7′ 已登记",但板子上什么都不会变,全对通关时结局统计恒为「被改写的守则 0」;③ 第 12 张的"不少于 4 字"生效——此前命中判定里有一条无条件放行的短路,任意非空输入都能过;④ 结局 B 与 C 可达——此前终局工单只有"两条都读"算命中,而命中是进入结局屏的唯一路径,另两个选项会被判成引用了不存在的守则并把 R11 划掉,玩家永远卡在交班。这四处修复与本篇同批部署。
- 2026-10-17:在 https://nightshift.gamestrategists.com/ 的线上版本上把整夜重跑了一遍,确认这四处在线上确实是本文描述的样子(R5 淡到 0.34、R7 带着玩家写的那句被划除、结局 B 与 C 各自可达且板上留下 R11 的划除),并据此删掉了首段里"修复尚未部署"的说明。