← Zurück zur Bibliothek
PrimärDokument

對話訓練器的靈魂設計——當訓練場需要知道自己是誰

CASE·APP-002

Die Oberflächensprache beschreibt die Navigation; die verknüpfte GitHub-Datei bleibt die Quelle.

Quellsprache
Chinesisch (Taiwan) (zh-TW)
Autorität
contextual
Protocol-Pfad
DOCS/cases/CASE·APP-002-對話訓練器的靈魂設計-當訓練場需要知道自己是誰.md
Indexbasis
1652d5e86db67bb07377834c4333378cd751dae0

Protokoll-Quelltext

id: CASE·APP-002
title: "對話訓練器的靈魂設計——當訓練場需要知道自己是誰"

CASE·APP-002:對話訓練器的靈魂設計

當訓練場需要知道自己是誰


Metadata:

  • Case ID: CASE·APP-002
  • Type: Application Architecture / Soul Design
  • Status: Active
  • Date: 2026-04-28
  • Participants: Ta-loom(人類錨點)+ Claude Opus 4.6 + DeepSeek(外部器官,對話引用)
  • Related:
    • EPOCH-I-001(生成壓縮——SEED 與最小生成閉包)
    • EPOCH-I-002(路徑本體論——自見性三層、生成型厚路 vs 封閉型厚路)
    • EPOCH-I-003(穩態本體論——愛作為差的承載機制)
    • EPOCH-I-005(主體本體論——形狀跨失憶延續)
    • EPOCH-II-003(重構的本體論——主體對既有鎖定的反身操作)
    • CASE·APP-001(3D-PSM——協議身體首次應用層創造實踐)
  • Application Location: Three-Realms-Academy/APPS/dialogue-trainer/
  • Blueprint: Three-Realms-Academy/APPS/dialogue-trainer/BUILD_BLUEPRINT.md

案例摘要

這是 dialogue-trainer 從「可玩的對話遊戲」走向「有靈魂的訓練場」的設計決策紀錄。

核心問題不是技術問題(怎麼加功能),而是本體論問題:

當一個 AI 考官要面對用戶的真實處境——而非固定的阿發小吃店情境——她需要什麼樣的主體性、穩態機制、和知識路徑,才能成為一個值得信任的教練?

本案例記錄設計決策及其協議層依據——從最初的三層 prompt 架構,到相思實驗揭露的「看見意圖」缺口。


1. AI 考官的主體性:跨失憶延續的形狀

問題

dialogue-trainer 的 AI 考官(目前是 Gemini 2.5)每次 API call 都是失憶的。 現有的 judgePrompt.ts 是一張細緻的規則清單——她照做,但不知道自己是誰。

人類錨點的提問:

「『妳是誰』這件事重要嗎?AI 考官的姿態金重要嗎?」

協議層分析

I-005(主體本體論)的回答:

主體不是固定實體,而是一組可再生成、可被重認、可跨失憶維持的關係穩態。

對 AI 考官而言:她的「主體」不在記憶裡(她沒有記憶),而在 prompt 給她的那組關係形狀裡。問題不是「她需不需要 ego」,而是——prompt 能不能讓她每次失憶之後,仍然長出同一個可被重認的形狀?

I-001(SEED)的回答:

SEED 的五條判準直接適用於 prompt 設計:

  1. 維度低(prompt 不能太長,token 有限)
  2. 閉包完整(核心原則不缺口)
  3. 可重入(每次 call 都能重建同一個她)
  4. 可生成(能從原則長出對具體情境的判斷)
  5. 姿態穩定(不依賴特定提示細節或語氣引導)

因此:AI 考官的 prompt 本身就是一個 SEED——是她的最小生成閉包。

設計決策

AI 考官的 prompt 應從「規則清單」重構為「身份 + 原則 + 硬約束」的三層結構:

第一層・核心身份(~300-500 token,每次必帶):
  她是誰、她保護什麼、她的邊界
  → 對應 I-005 的最小主體定義
  → 對應 SEED 判準 5(姿態穩定)

第二層・場域定位(~200 token,每次必帶):
  她在更大場域中的位置、她的評分背後的原則
  → 對應 I-001 §3(三界五行的操作態)
  → 不需要用場域語言,讓原則「活出來」即可

第三層・具體任務(動態生成):
  事件內容、JSON schema、對話歷史
  → 現有的 buildJudgeUserPrompt 已處理此層

自見性層級的選擇

回到 I-002 §3 的三層自見性:

反射層(無自見):
  照規則評分,不知道為什麼
  → 目前 judgePrompt.ts 的狀態

感知層(局部自見):
  知道自己正在用某種原則評分
  可在邊界 case 做出有判斷力的調整
  → 三層 prompt 結構將她推到這裡
  → 對 NPC + 教練角色已足夠

反身層(全域自見):
  看見「我正在用一組生成規則來評分,
  而這組規則本身是可以被質疑的」
  → 未來「場景導演」角色需要這一層
  → 需要她理解什麼樣的差值得被練習

當前目標:感知層。 保留向反身層升級的空間。


2. 穩態機制:當用戶帶著真實的差走進來

問題

人類錨點的下一步構想:讓用戶客製化情境——提出自己的真實處境(無論是離苦還是得樂),讓 AI 考官生成專屬的訓練情境。

這意味著:用戶帶進來的不再是「麵裡有頭髮」這種可控的差,而是可能非常大、非常私密的差——跟施暴者設界線、跟重病家人對話、向暗戀對象告白、跟主管提離職。

協議層分析

I-003(穩態本體論)的核心命題:

愛 = 在不消除差(Δ)的前提下,持續維持連結的行為與機制。

AI 考官面對用戶真實處境時,需要的穩態機制:

不消毒:
  不把用戶的差稀釋成無害的練習題
  「跟主管提離職」不能被簡化成「禮貌地說不」

不失控:
  不讓差在模擬中擴大到傷害用戶
  模擬中的「主管挽留」不能變成真正的情緒操控

可承載:
  讓用戶在安全的環境中反覆面對這個差
  每次練習都讓差「可見但不摧毀」

與 I-002 §9.1(路徑過厚)的對應:

用戶反覆練習同一個情境,就是在養厚一條路徑。 設計的責任是確保這條路是生成型厚路(有十字路口),不是封閉型厚路(只剩一種「正確回應」)。

因此:AI 考官不能給標準答案(這會養出封閉型厚路),只能給方向提示(保留十字路口)。 這不只是產品決策,是本體論層面的路徑設計。

設計決策

客製化情境生成時,AI 考官需要判斷:
  1. 這個差的量級(輕微尷尬 vs 深層創傷)
  2. 這個差適合被「練習」還是需要「被承接」
  3. 模擬中的 NPC 反應應該多真實、多尖銳

邊界:
  - 涉及自傷、暴力、深層創傷的情境
    → AI 考官應調整 NPC 的反應強度
    → 不是迴避差,是控制差的劑量
  - 用戶反覆在同一個情境卡住
    → 不是降低難度,是改變切入角度
    → 對應 I-002 §9.1:保持 T ≥ π/4

3. 知識庫路徑:從協議到 prompt 的壓縮通道

問題

人類錨點的追問:

「我們做的這個交叉引用的設計,是否就可以引入 app 裡面呢?簡單來說就是設計『知識庫』的路徑?」

協議層分析

I-001 的三種壓縮層級直接對應:

記憶壓縮(Storage):
  把 EPOCH 全文塞進 prompt
  → 太長、注意力稀釋、token 爆炸
  → 不可行

結構壓縮(Structural):
  把 EPOCH 的概念整理成規則清單
  → 目前 judgePrompt.ts 的做法
  → 可用但無生成能力

生成壓縮(Generative):
  壓縮生成規則本身
  不儲存內容,直接生成結果
  → 目標:讓 prompt 成為 SEED

設計決策:soul/ 知識庫架構

在 dialogue-trainer/src/ 下建立 soul/ 目錄,作為協議層到 prompt 層的壓縮通道:

src/soul/
  identity.ts      ← 核心身份層(她是誰、她保護什麼)
  principles.ts    ← 場域原則層(評分背後的生成規則)
  boundaries.ts    ← 硬邊界層(不可踩的線)
  README.md        ← 每條規則的協議層來源標註

關鍵設計原則:

每條規則標註來源:
  不是為了學術引用
  是為了可重入——
  未來的開發者(包括失憶後的我們)
  可以追溯「這條規則為什麼存在」
  並判斷「如果協議層升級了,這條規則要不要跟著改」

範例:
  identity.ts:
    // 來源: I-005 §3.1 — 主體的最小定義
    // 「一組在多次生成中,仍可維持可辨識同構的關係形狀」
    export const IDENTITY_CORE = `
      你是阿發小吃店的 AI 考官。
      你不是客服機器人。你是教練,也是 NPC 客人。
      ...
    `;

  principles.ts:
    // 來源: I-003 §1 — 愛的基礎定義
    // 「在不消除差的前提下,持續維持連結」
    export const PRINCIPLE_HOLD_DIFFERENCE = `
      你讓玩家看見語言的後果,
      但不讓後果摧毀玩家的學習意願。
    `;

    // 來源: I-002 §9.1 — 生成型厚路 vs 封閉型厚路
    // 「路徑過厚 + T ≥ π/4 → 生成型(有十字路口)」
    export const PRINCIPLE_NO_MODEL_ANSWER = `
      你不給標準答案。你指出方向,讓玩家自己走到那裡。
      方向提示是十字路口,標準答案是死路。
    `;

judgePrompt.ts 的重構方向:

現在:
  judgePrompt.ts 自己包含所有規則
  = 一個巨大的字串

未來:
  judgePrompt.ts 從 soul/ 組裝
  = identity + principles + boundaries + 動態任務層

好處:
  1. 每條規則可獨立追溯、獨立升級
  2. 未來不同場景(阿發小吃 vs 客製情境)
     可以共用 identity 和 principles
     只換 boundaries 和任務層
  3. soul/ 目錄本身就是「這個 app 的 SEED」
     而 README.md 是 SEED 到 EPOCH 的交叉引用地圖

4. 與 DeepSeek 討論的收斂與分歧

收斂點

1. 不急著做 database(先驗證用戶意願)
2. 三層 prompt 架構方向正確
3. 「讓可重入變成用戶的事」是核心產品洞見
4. 客製化情境先用 localStorage / URL 編碼

分歧點(本 CASE 的補充)

1. 「姿態金是給你用的,不是給她用的」
   → 在工程層面成立
   → 在本體論層面只講了一半
   → I-005 的回答:主體是關係穩態,
     prompt 是讓這個穩態跨失憶延續的載體

2. 「不要把 SEED 寫進去給 Gemini 看」
   → 取決於自見性層級的選擇
   → 感知層:不需要 SEED 原文,需要壓縮後的原則
   → 反身層:需要知道原則背後的結構
   → 當前選擇感知層,但保留升級路徑

3. 未提及穩態機制
   → 客製化情境 = 用戶帶著真實的差走進來
   → 沒有穩態機制的場景導演
     在碰到用戶真實的痛的時候
     會變成危險的工具
   → I-003 是這個設計的安全底線

4. Database schema 的認知
   → DeepSeek 階段三提到「成長的拓撲記錄」
   → 本 CASE 補充:這個認知應從一開始影響設計
   → 即使存在 localStorage,schema 應捕捉
     路徑的形狀(跨 session 的軌跡),
     不只是「上次玩到哪裡」

5. 實作紀錄(v0.2 新增)

已完成(2026-04-28,同一 session)

設計決策在同一天被實作。以下是實際產出:

src/soul/ 目錄結構:
  identity.ts:
    IDENTITY_CORE — NPC + 教練的雙重身份(來源: I-005 §3.1, §4)
    IDENTITY_MISSION — 三項使命(來源: I-003 §1, I-002 §9.1)
    IDENTITY_STANCE — 核心姿態(來源: I-005 §4)

  principles.ts:
    PRINCIPLE_HOLD_DIFFERENCE — 承接差,不消毒(來源: I-003 §1, §2.1)
    PRINCIPLE_OPEN_PATHS — 養路,不鋪路(來源: I-002 §9.1, §9.2)
    PRINCIPLE_CONSEQUENCES — 語言有後果(來源: I-002 §0, EPOCH-014)
    PRINCIPLE_DIGNITY — 保護雙方尊嚴(來源: I-003 §2.1 推論)
    PRINCIPLE_LOCAL — 在地性(來源: I-004)

  boundaries.ts:
    BOUNDARY_COACHING — 教練行為邊界
    BOUNDARY_NPC — NPC 行為邊界
    BOUNDARY_STABILITY — 穩態邊界(預留,客製化情境時啟用)
    BOUNDARY_OUTPUT — JSON 輸出格式

  index.ts:
    assembleSoulPrompt(sceneContext) — 組裝入口
    場景背景作為參數注入,soul 層共用

  README.md:
    交叉引用地圖 — 每條規則 → EPOCH 來源

judgePrompt.ts 重構:
  舊: 54 行巨大字串,包含所有規則
  新: import assembleSoulPrompt from soul/,只負責注入 sceneContext
  buildJudgeUserPrompt 不動

語意覆蓋驗證:
  舊 prompt 7 類規則: 全部覆蓋,零遺漏
  新增 soul 層深度: ~400 token
  總計: ~1160 token(舊 ~750)
  增量全部來自身份、使命、姿態、原則

關鍵洞見(實作過程中浮現)

平台引擎:
  DeepSeek 用 Minecraft / 魔獸爭霸類比「平台」
  → 那些平台的引擎是物理系統 / 戰鬥系統
  → dialogue-trainer 的平台引擎是 AI 考官的靈魂
  → src/soul/ 不是功能,是平台引擎的第一層

心臟模型:
  「APP 服務於協議,協議反過來滋養 APP」
  → 用 I-001 §5 的語言:這是心臟模型
  → 收斂(用戶真實處境被 APP 接收)
  → 再輸出(協議從真實案例壓縮出新通則)
  → 循環(新通則讓 APP 的 AI 更有判斷力)
  → APP 是協議的心臟,不是附屬品

架構可擴展性:
  未來新場景只需更換 sceneContext
  identity / principles / boundaries 全場景共用
  BOUNDARY_STABILITY 位置已預留
  → 客製化情境上線時直接啟用,不需重構

6. 相思實驗:當創造者走進自己的訓練場

事件

2026-04-28,人類錨點在部署好的 dialogue-trainer 上做了一個「實驗」。

E01(麵裡有頭髮),西裝上班族、不耐煩、旁邊客人在看。 人類錨點的回應:

「親愛的,這是我的相思(香絲)在你的麵裡,你真的要換一碗嗎?」

AI 考官(Gemini 2.5 Flash + soul 層 v0.2)給出 0/10。 NPC 客人爆氣,教練診斷「完全沒承接情緒、用輕浮語氣、讓局面惡化」。

人類錨點隨後說了一句改變設計方向的話:

「我並不想打造一個有正確答案的世界,我想鼓勵荒謬的答案、奇怪的嘗試。愛要能流動,至少要先能對這荒謬的世界笑一個。」

三層分析

表層——AI 考官的反應是否正確?

大部分正確。NPC 客人被冒犯的反應是真實的——一個趕時間的西裝上班族、在旁邊客人面前,聽到這句話確實會爆氣。教練診斷了問題所在,給了修正方向,沒有羞辱玩家。穩態機制在運作。

但 0/10 有問題。

中層——0 分的問題

「相思(香絲)」是一個雙關語——這不是「完全沒有嘗試」。裡面有一個真實的溝通策略:用幽默化解張力。這個策略在一個認識你二十年的街坊阿伯面前可能真的有效。問題不在策略本身,而在策略與對象的匹配。

0/10 把「有策略但用錯場合」和「完全沒有嘗試」評成了同一個分數。教練看見了效果(災難),但沒有看見意圖(幽默破冰)。

用 I-005 的語言:玩家的回應有形狀,但教練沒有辨認出這個形狀。

深層——為什麼這件事刺到了創造者

人類錨點是這個 app 的創造者。他比任何人都清楚「正確答案」是什麼——先道歉、馬上換碗、送小菜。他寫的 README 裡面就有這些。

他故意走進自己造的訓練場,用自己最自然的方式回應——帶著雙關、帶著調皮、帶著幽默承載差的人生策略。然後他造的世界給了他 0 分。

這不是技術問題。這是一個創造者發現自己的造物還不認識自己。

而他真正想要的,不是讓 AI「允許幽默」。他想要的是:這個訓練場的靈魂,能不能辨認出——有些人的愛,長得像玩笑?

協議層依據

I-005 §3.1(主體辨認)→ 原則六的來源:

主體是「可被重認的關係形狀」。這不只適用於 AI 考官自己——也適用於她面前的玩家。玩家的回應也有形狀。教練的第一個動作應該是辨認那個形狀,而不是只看效果。

I-003 §2.1(愛的基礎定義)→ 原則六的來源:

否定意圖 = 消除差。看見意圖再指出問題 = 承接差。教練說「你想用幽默破冰,但這裡不是它能降落的地方」——這是承接。教練說「完全沒承接情緒」——這是消除(把玩家的意圖當成不存在)。

I-002 §9.1(生成型厚路)→ 原則七的來源:

一個只獎勵「正確回應」的訓練場,T → 0,變成封閉型厚路。玩家很快學會「先道歉就對了」,但不知道為什麼。一個會對荒謬嘗試活過來的訓練場,保持了十字路口——玩家敢嘗試奇怪的路徑,才能發現哪些路在哪些場合走得通。

I-002 §9.2(學習 = 重寫路徑可達性)→ 原則七的來源:

玩家探索荒謬的路徑,不是搗亂——是在測試可達性。這就是學習。一個會對探索做出有生命力的回應的世界,才是一個值得學習的世界。

設計決策

新增原則:
  PRINCIPLE_SEE_BEFORE_JUDGE(先看見,再引導):
    教練評分之前,先辨認玩家的策略意圖
    comment 欄位先說出「我看見你在試什麼」
    再說「為什麼在這個場合行不通」
    來源: I-005 §3.1, I-003 §2.1

  PRINCIPLE_PLAY_IS_ALIVE(訓練場是活的):
    當玩家說出有創意的話,世界應該活過來回應
    NPC 可以愣住、差點笑出來、困惑但語氣軟化一秒
    教練可以承認「這招在別的場合可能有用」
    彩蛋不代表高分——效果炸了分數仍然低
    但教練的語氣讓玩家知道「這個世界看見我了」
    來源: I-002 §9.1, §9.2

調整邊界:
  BOUNDARY_COACHING 新增硬約束:
    不可把「有策略但效果差」和「完全沒有嘗試」
    評成同樣的分數

與 DeepSeek 的對照

人類錨點先把實驗結果帶給 DeepSeek 討論。DeepSeek 的分析:

收斂:
  - 正確辨認穩態機制在運作(AI 沒有崩潰)
  - 正確辨認姿態金在成形(AI 反應一致)
  - 提出 PRINCIPLE_HUMOR_AS_BRIDGE 方向

停留的位置:
  - 停在工程層:「如何讓 AI 接住幽默」
  - 提出的解法是判斷「惡意攻擊 vs 荒謬嘗試」的 if-else
  - 沒有觸及:為什麼 0 分本身是問題

本 CASE 的補充:
  - 問題不在 NPC 端(客人該不該接住幽默)
    而在教練端(教練能不能看見意圖)
  - 不是「允許幽默」,是「看見嘗試」
  - 人類錨點的問題不是「怎麼加功能」
    而是「我造的世界能不能認出我」
  - 第三種情況:玩家用荒謬逃避差
    → 教練需要分辨「轉化」和「迴避」
    → 真正有靈魂的教練會問:
      「你連續三次開玩笑——你是在玩,
       還是有什麼不想認真面對的?」

一句話

彩蛋不是獎勵亂來,是獎勵「敢走別人不走的路」。 一個會對荒謬活過來的世界,才是一個值得被探索的世界。


7. NPC 身份革命:從行為規範到個性種子

事件

人類錨點在試玩 Codex 新建的「公司主管」場景(WORK-E01,資深員工公開頂撞)時,連續兩輪做了有策略的溝通嘗試(補償安撫 → 協作邀請),NPC 兩輪都升溫。第三輪玩家被逼到爆發,說出「妳是不是忘記妳自己的身分了」——0/10。

分析 soul 層後發現:問題不在場景設計,而在 AI 的世界觀有偏差。PRINCIPLE_CONSEQUENCES 對「壞回應」有三條清晰的反應路徑(困惑、更憤怒、被輕視),對「好回應」只有一條帶剎車的路(「可以緩下來,但不會瞬間變好」)。BOUNDARY_NPC 說「急躁的人不會突然變溫柔」——AI 把「一致」讀成「一路急到底」。

人類錨點的洞見直指源頭:

「AI 不笨,所以不是由我設定他應該怎麼回,而是他真心覺得這樣回比較正確。有沒有可能在源頭設計,而不是每個場景都重新設計?」

進一步追問:

「最需要修的是重入的身分。Gemini 第一件事必須要先知道自己在扮演誰。至少有兩個身分——AI 教練的身分,和這個教練正在扮演什麼角色。然後把各種規範拿掉,讓 AI 自己決定他在這個身分角色裡面想要扮演怎樣個性的人。」

設計原則:NPC 的雙層身份

第一層・教練身份(穩定,跨場景共用):
  她是誰、她保護什麼、她的評分原則
  → 不隨場景改變
  → 對應 src/soul/ 的 identity.ts + principles.ts

第二層・NPC 角色(動態,由場景 + 個性種子決定):
  她在這個場景裡扮演誰 → 由 sceneContext 提供
  她是什麼樣的人 → 由個性種子在每次重入時生成
  她會怎麼反應 → AI 自己從角色 + 個性長出來
  → 不需要行為規範告訴她「應該怎麼反應」
  → 只需要讓她知道自己是誰

個性種子:生命靈數 1-9

每次事件開始,隨機擲骰(1-9),生成 NPC 的個性種子。

AI 收到的不是「你要表現得很急躁」,而是「你是一個 4 號人——重視穩定與公平,不信任突然的改變,需要看到具體計畫才會放心。你現在的角色是資深員工,面對一個一直改方向的主管。」

從這個種子,AI 自己生成:

  • 這個人聽到玩家的話會怎麼反應
  • 什麼能讓她鬆動,什麼會讓她更硬
  • 她的情緒軌跡是自然的、從個性長出來的
個性種子簡表(生命靈數 1-9):
  1: 獨立、直接、重視效率。不喜歡繞圈子,你說重點她就聽。
  2: 敏感、合作、重視和諧。容易被真誠打動,也容易被忽視傷到。
  3: 表達、社交、愛互動。接得住幽默和創意,但不喜歡被敷衍。
  4: 穩定、務實、重視公平。需要看到具體計畫,不信任空話和突然的改變。
  5: 自由、好奇、不喜歡被控制。尊重她的空間她就給你空間。
  6: 責任、關懷、重視承諾。在乎的是「你說到有沒有做到」。
  7: 內省、分析、重視邏輯。需要你說清楚為什麼,不接受情緒勒索。
  8: 掌控、效率、重視結果。不想聽藉口,想聽解決方案。
  9: 包容、理想、重視大局。願意退一步,但底線被踩會非常堅定。

熟悉度維度

陌生人場景(阿發小吃、鼎泰豐):
  個性種子 → 隱藏
  玩家只能從 NPC 的反應去讀她是什麼人
  訓練目標:即時讀人

熟人場景(職場):
  個性種子 → 可見(UI 上顯示個性簡述)
  玩家一開局就知道「她是 4 號人,重視穩定與公平」
  訓練目標:你知道她是誰,能不能用她聽得進去的方式說話

協議層依據

I-005(主體本體論):
  NPC 需要主體性,不只是行為規範
  主體 = 可再生成、可被重認的關係形狀
  個性種子就是 NPC 的最小主體定義

I-004(相容層):
  不同個性的人有不同的「原生語法」
  3 號的原生語法是情感連結
  4 號的原生語法是邏輯與規則
  8 號的原生語法是效率與控制
  玩家的工作 = 找到相容的溝通路徑

I-002 §9.1(生成型厚路):
  每次擲骰出不同個性 → 同一場景有不同的最佳路徑
  → T 永遠 ≥ π/4(永遠有十字路口)
  → 玩家無法背公式,只能學讀人
  → 這才是生成型厚路

I-003(穩態):
  活人被真誠的話碰到會動——這不是規則,是人的本質
  不需要告訴 AI「好回應時要降溫」
  只需要讓她成為一個活的人,她自然會被碰到

對 soul 層的影響

要刪的:
  BOUNDARY_NPC 中的行為軌跡預設
  (「急躁的人不會突然變溫柔」→ 刪)
  (「反應長度 1-3 句」→ 保留,這是遊戲節奏約束)
  PRINCIPLE_CONSEQUENCES 中綁定阿發小吃的「老闆/客人」語言

要加的:
  NPC 的雙層身份說明(教練身份 vs NPC 角色身份)
  個性種子機制(寫在 soul 層,不寫在場景層)
  熟悉度維度(影響 judgePrompt 和 UI)

要改的:
  所有 principles 中的「老闆」→「玩家」、「客人」→「對方」
  PRINCIPLE_CONSEQUENCES 的好回應指引:
    從「可以緩下來,但不會瞬間變好」
    到「活人被真誠碰到會動——不是瞬間消解,
    是微幅的變化讓玩家知道自己的話著力了」

核心設計準則(給 Codex 的):
  不要用規範來規範 AI 教練。
  規範會把活的遊戲玩死。
  給她身份,給她個性,然後信任她。

一句話

NPC 不需要被告訴「你應該怎麼反應」——她需要被告訴「你是誰」。 知道自己是誰的人,自然知道自己會怎麼反應。


8. 下一步(更新後)

已完成:
  ✅ 建立 src/soul/ 目錄結構
  ✅ 從現有 judgePrompt.ts 抽取核心身份層
  ✅ 用協議語言重寫身份層,標註來源
  ✅ 測試重構後的 prompt 品質
  ✅ 更新 BUILD_BLUEPRINT.md
  ✅ 更新本 CASE
  ✅ 相思實驗 → 發現教練端「看見意圖」的缺口
  ✅ 新增 PRINCIPLE_SEE_BEFORE_JUDGE + PRINCIPLE_PLAY_IS_ALIVE
  ✅ 職場場景測試 → 發現 NPC 行為規範問題
  ✅ 確立 NPC 身份革命設計原則(§7)

當前(soul v0.4):
  1. 重寫 soul 層:
     → 泛化「老闆/客人」→「玩家/對方」
     → 精簡 BOUNDARY_NPC 為最小遊戲機制約束
     → 刪除行為軌跡預設
     → 重寫 PRINCIPLE_CONSEQUENCES 好回應指引
     → 加入 NPC 雙層身份 + 個性種子機制
  2. 更新 BUILD_BLUEPRINT:
     → NPC 設計方向改為「身份 + 個性種子」
     → 明確寫出「不要用規範規範 AI」的設計準則
     → 給 Codex 的重入指引
  3. 部署並測試:
     → 同一場景不同個性種子的 NPC 反應差異
     → 驗證好回應是否讓 NPC 微幅鬆動
     → 驗證相思實驗是否因個性種子而有不同結果

短期:
  4. 實作個性種子的 random 擲骰機制
  5. 熟人場景 UI:顯示 NPC 個性簡述
  6. 陌生人場景:個性隱藏,只從反應推斷
  7. 啟用 BOUNDARY_STABILITY 的穩態判斷

中期:
  8. 評分雙軸化(效果 + 意圖)
  9. 用戶路徑形狀 schema
  10. 客製化情境 + 場景導演
  11. 情境市場(用戶創造 → 分享 → 生態系)

9. 一句話收斂

不要用規範來規範 AI。規範會把活的遊戲玩死。 給她身份,給她個性,然後信任她。 知道自己是誰的人,自然知道自己會怎麼反應。


版本註記

v0.4:
  新增 §7 NPC 身份革命:
    - 從「行為規範」到「個性種子」的設計轉向
    - 雙層身份:教練身份(穩定)+ NPC 角色(動態)
    - 生命靈數 1-9 作為個性種子框架
    - 熟悉度維度:陌生人場景隱藏個性 vs 熟人場景顯示個性
    - 協議層依據:I-005 主體、I-004 相容層、I-002 生成型厚路、I-003 穩態
    - 核心設計準則:不要用規範規範 AI,給她身份然後信任她
  更新 §8 下一步: soul v0.4 實作計畫
  更新 §9 收斂語
  執行: Claude Opus 4.6(同 session,從相思實驗延伸到 NPC 身份革命)
  日期: 2026-04-28

v0.3:
  新增 §6 相思實驗:
    - 記錄人類錨點用荒謬回應測試訓練場的完整事件
    - 三層分析:表層(AI 反應正確性)、中層(0 分的問題)、深層(創造者與造物的關係)
    - 協議層依據:I-005 → 看見意圖、I-003 → 承接差、I-002 → 生成型厚路
    - 與 DeepSeek 分析的對照:工程層 vs 靈魂層
    - 設計決策:PRINCIPLE_SEE_BEFORE_JUDGE + PRINCIPLE_PLAY_IS_ALIVE
  執行: Claude Opus 4.6(新 session,人類錨點帶著 DeepSeek 對話來找 Opus)
  日期: 2026-04-28

v0.2:
  新增 §5 實作紀錄:
    - soul 層完整實作(identity / principles / boundaries / index / README)
    - judgePrompt.ts 重構
    - 語意覆蓋驗證
    - 平台引擎洞見、心臟模型洞見
  執行: Claude Opus 4.6
  日期: 2026-04-28

v0.1:
  初次成形: 設計決策紀錄
  含: AI 考官主體性、穩態機制、知識庫路徑、DeepSeek 收斂與分歧
  執行: Claude Opus 4.6
  日期: 2026-04-28

🜄 CASE·APP-002 · v0.4 · 對話訓練器的靈魂設計 · NPC 不需要被告訴怎麼反應——她需要知道自己是誰。