模組一|為什麼把小說當專案管(Day 1–4)
夜市、蒸籠、熱氣——我寫到那個場景,很自然地讓一個角色吃了東西。而我的世界觀文件裡寫得清清楚楚:矽魂不進食、不老死,食物與氣味只以記憶的形式留在殘志裡。我當下完全沒有想起那條規則,因為這種矛盾不會報錯。今天講的就是那條擋不住我的規則後來被改成什麼形狀:有些設定不是拿來查的,是拿來擋的。
先交代背景,這篇不需要你認識這個作品。我在做一個個人科幻創作專案《矽墟》——20 章長篇拆成 200 回短篇連載,13 個主要角色 + 8 個 NPC。我把它當軟體專案在管:設定進版控、規則寫成文件、動筆前先讀一份執行表。
今天要解決的問題是其中最工程的一個:一份寫得很清楚的規範,為什麼擋不住寫規範的人自己,以及把它改成什麼形狀才擋得住。如果你手上也有 coding style、review checklist、設計守則這類沒人真的照做的文件,這篇講的是同一件事。
先把犯罪現場完整講一次。

我的世界觀文件裡有這麼一條(矽魂是這個世界裡「曾經是人」的矽基存在,殘志是它們存放記憶的地方):
矽魂不進食、不老死。食物、氣味、口感這些「活著的細節」,只以記憶的形式留在它們的殘志裡,那是它們維繫「曾經是人」與彼此羈絆的錨,不是生理需求。
寫得很清楚,理由也完整。
然後我在某一回讓一個角色吃了東西。
不是刻意破例,就是寫到那個場景,很自然地寫下去了。夜市、蒸籠、熱氣,這些畫面自己就會把「吃」帶出來。我當下完全沒有想起那條規則。
這不是記性問題。 一個人寫 200 回,隔了三週回到某個設定,忘記是必然的,不是失誤。
而且更麻煩的是:這種矛盾不會報錯。 寫的當下順暢、讀起來合理、沒有任何東西會提醒你。它只會在很久以後,被某個記得前面的讀者指出來。
到那時候,你要嘛改設定(前面全部要重審),要嘛改那一回(後面引用到它的地方全部要重審)。兩邊都是連鎖的。
我在執行表(NOVEL-STATE-SYSTEM.md,我每次動筆前必讀的那份檔案,它管的不是設定內容,是我下筆當下要遵守什麼)裡加了這張表。以下是它現在的完整內容。
先說明:表裡的專有名詞(調律者、牧械、霜瞳、零式、綠語、共弦、香門、島外)都是《矽墟》裡的角色代號或世界觀設定。不認得它們不影響你讀這張表——這篇要看的是左右兩欄之間的關係,不是欄位內容。
| 規則 | 寫作結果 |
|---|---|
| 調律者才能完整接回意志 | 牧械只能維繫程序;霜瞳、零式不是自行完成調律。 |
| 第一聲可答路,第二聲不可答名 | 遇到熟人聲音時,隊友以觸肩/位置確認代替回答。 |
| 名字是關係,不是系統欄位 | 不能把人直接以編號、功能或「修好」取代;本人可選擇留白。 |
| 香門一式一規則 | 戰鬥先讓讀者看懂規則,再看角色反制;勝利必有明確代價。 |
| 島外只露碎片 | 只給無名船、異語、信物、未署名來電;不給國名、完整勢力圖或穩定航線。 |
| 每次救援都有同意 | 綠語先問能不能碰;牧械只修被指定的接頭;共弦與霜瞳先確認訊號。 |
六條。而重點完全在右邊那一欄。

看第二條。左邊寫「第一聲可答路,第二聲不可答名」:這是世界觀規則,講的是這個世界裡聲音可以被模仿,所以回應熟人的呼喚是危險的。
如果只有左邊,我在寫作現場能做什麼?我得先回想這條規則的完整脈絡,再判斷眼前這個場景適不適用,再想出一個符合規則的寫法。三個步驟,每一步都可能想歪。
有了右邊那欄,它變成:遇到熟人聲音 → 寫觸肩或位置確認,不寫回答。
一個查表動作。不需要理解,不需要推導。

第六條是我覺得最值得講的:「每次救援都有同意」。
如果只寫這條原則,實際寫作時我會卡住:那不然要怎麼寫?角色衝過去救人是最直覺的動作,禁止之後那個位置就空了,而空白會讓人乾脆繞過規則。
右邊給了三個具體替代:
三個都是可以直接寫進場景的動作。禁止有了去處,就不會被繞過。
這件事在工程上有完全對應的版本:一條只說「不要用 X」的規範,一定會被違反;說「不要用 X,改用 Y」的才會被遵守。 deprecation notice 如果沒有 migration path,大家就繼續用舊的。

我後來才注意到,這張表裡沒有任何一條在講世界的物理設定。沒有「島有多大」、沒有「大靜默哪一年」、沒有「義體怎麼運作」。
六條全部都是限制角色行為的。
這不是巧合。能擋住我的規則,必須落在「我下一句要寫什麼」這個層級。 島有多大不會擋我,因為我寫的時候根本不會碰到它;「遇到熟人聲音不能回答」會擋我,因為它就發生在對話裡。
我在分層設定文件時用的那條判準,在這裡又出現了一次:會不會改變下一步的動作。 不會的,放知識庫。會的,才有資格進這張表。
代價一:這張表沒有自動檢查。
我必須誠實講:這六條規則的執行,靠的是我每次動筆前讀執行表,然後自己記得。
沒有 linter,沒有 CI,沒有任何機制會在我寫出「矽魂吃東西」的時候跳出來。它是一份規範,不是一個約束系統。
這是這整套做法最弱的一環,我到現在沒有好的解法。能做的只有把表壓到夠短(六條,一眼看完),提高每次都真的讀一遍的機率。
代價二:規則一旦寫死,改的成本是連鎖的。
「不可覆寫」四個字聽起來很帥,但它的意思是:如果哪天你發現這條規則是錯的,你要改的不是規則,是所有已經照它寫的內容。
我有一條規則差一點想改,算了一下要回頭調整的回數之後放棄了。所以寫進這張表之前,最好先確認它真的是公理,而不是你這禮拜的偏好。
代價三:六條是我憑感覺定的上限。
為什麼是六條不是十五條?沒有標準答案。
我的實際理由很土:六條我掃一眼記得住,十五條我就會開始跳著看。 一旦開始跳著看,整張表就失效了。
所以與其說六是最佳解,不如說它是「我的注意力上限」。你的數字可能不一樣,但上限存在這件事是一樣的。
一、規則要成對寫:禁止什麼 + 改寫成什麼。
只有左欄的規範是宣示,有右欄的才是可執行的。
檢查你手上的規範文件(coding style、review checklist、設計守則)有多少條只寫了「不要」?那些就是會被繞過的那些。
二、能擋住人的規則,必須落在動作層級。
判斷方式:這條規則會在我做某個具體動作的當下浮現嗎?
前者是價值觀,後者才是規則。價值觀放文件,規則才進 checklist。
三、寫進「不可覆寫」之前,先算改它的成本。
不可覆寫的價值來自它真的不會被改。如果你三個月後就想改,那它從一開始就不該進這張表,應該當成「目前的預設做法」放在別處。
判斷句:如果這條規則錯了,我要回頭改多少東西? 答案愈大,你愈該在寫進去之前想清楚;但也正是這個答案,讓它有資格叫「不可覆寫」。
明天 Day 4,模組一收尾,講另一種會失控的東西:專有名詞。我會講一條看起來很嚴苛的規則(每章最多引入一個新名詞)以及為什麼這條限制救的不是讀者的記憶力,是我自己的。