# 開場問答(匯入前一定要問完) 這四題**不要猜、不要用預設值帶過**。 **譯名版本不在裡面,那一題不要問。** 問他「這批是角川還是東販」是要他猜—— 他手上那批原文寫的是什麼字,讀一次就知道了。所以正名表改成**掃出來給他確認** (見下面「正名表怎麼來」)。 --- ## 1. 匯給哪個人格 先跑 `persona.mjs list` 把可用的人格列給他看,不要用猜的。 已經載入一個人格的話就是它——**不要為了匯入而換人格**,那是他的決定。 要匯給別的人格:先 `release` 再 `load`,兩個動作都要他點頭。 --- ## 2. 作品名 要完整書名(含卷次)。這會寫進每一則記憶的 `source`,之後追出處靠它。 一次匯多卷時,`--work` 的 slug 用**作品**而不是單卷—— 同一部作品的去重合併要在同一個工作區裡才做得到。 ## 3. 章節檔在哪、什麼編碼 要的是:目錄路徑、檔名規則(怎麼排序)、編碼。 - 編碼不確定就自己驗:讀前幾百個位元組看有沒有亂碼,比問還快。 - 常見的是 UTF-8 與 Big5;簡體來源多半是 GB18030。 - **一個檔一章**與**整本一個檔**的處理方式不同,要問清楚是哪一種。 整本一個檔的話先問他章節標題長什麼樣(用來切章)。 ## 4. 這次要匯哪幾章 **不要預設「全部」**。一次匯完一整部作品是幾百則記憶, 出錯的時候分不出是哪一章的問題。 建議的講法:先匯 2 到 3 章,跑完給他看結果,確認視角與顯著度沒問題再往下。 他要一次全匯也可以,但要先講一句「出錯會很難查」,並且確認備份做了。 --- ## 問完之後 1. `export`(`persona-transfer`)留一份備份——匯入是大量寫入,要回得去。 2. `novel init --work "<書名>" --slug ` 建工作區。 3. 進正名表(下一節)。 --- ## 正名表怎麼來:掃出來,他只做確認 **不要請他打一張表。** 他不會記得那本書裡「閃光」出現過幾次, 但那件事機器數得出來。所以順序是:先掃,再讓他確認。 ```bash novel scan --work --dir <章節目錄> --session novel name review --work --session ``` `scan` 抽人名候選(對話歸屬、敬稱結尾、片假名、高頻詞),每個候選附上 **出現次數**與**一到兩行上下文**,並且猜一個關係節點,分成四種信心度: | 信心度 | 意思 | 怎麼處理 | | :-- | :-- | :-- | | `exact` | 字面等於某個關係節點的 `name` | `--accept-exact` 一次收下,沒有判斷空間 | | `alias` | 等於節點的標籤或備註裡出現過的別名 | 給他看一眼就收 | | `fuzzy` | 部分重疊(共用兩個以上的字) | **一定要他確認**,這格最容易錯 | | `unknown` | 猜不到 | 新人物就先 `relation node`;不是人名就 `name ignore` | 要給他看的是**上下文那一兩行**,不是候選清單本身。 「這個詞出現 41 次,其中一句是『閃光又衝出去了』」——他一眼就判得出來; 只給他一個「閃光」,他要回頭翻書。 `ignore` 是「確認過這不是人名」的清單。地名、招式名、系統詞擋不完, 所以 ignore 過的下次掃就不再出現——不然每加一章就要重看同一批。 補漏用手動:`novel name add --from "<字面>" --to "<節點 name>"`。 **正名沒確認完不要往下走**:`novel candidate add` 遇到 `about` 裡有未確認的 token 會擋下來。 那不是刁難——錯的名字寫進 `about`,要等 `relation doctor` 才發現,那時候整批要重跑。 --- ## 中途發現問題怎麼辦 | 發現 | 怎麼處理 | | :-- | :-- | | 正名表確認錯了 | 改 `names.json` 的 `map`,已經 `candidate add` 的那幾章重跑,不要手改候選檔 | | 掃出來一堆不是人名的詞 | 正常。`name ignore` 掉,下次掃不會再問 | | 同一個角色有好幾種寫法 | 全部都要進 `map` 指到同一個節點。網路譯本前後不一致很常見 | | 編碼判斷錯了 | 停下來重讀。亂碎的字會讓在場判斷失準,那個錯不會浮出來 | | 章節順序排錯 | `first_seen` 會錯,時間軸就錯了。重排再重跑那幾章 | | 他中途說「不要匯了」 | 工作區留著不刪(`memory/import//`),還沒 `novel write` 就不會污染記憶 |