feat(soul): 新增 soul 指令,SOUL.md 分區塊寫入(AniPersonaStudio 委託)

SOUL.md 目前只有使用者能透過編輯器直接改,AniPersonaStudio 的確認佇列
機制需要一個程式化的寫入路徑才能把使用者確認過的變更真的寫回核心。

新增 persona.mjs soul --session <id> --section <core_truths|boundaries|
vibe|continuity> --value <text> [--mode append|replace] [--by <確認人>]:

- 四個區塊各自用一組 <!-- aps:區塊:begin/end --> HTML 註解標記框住可寫範圍,
  標記外的內容(樣板原本寫好的條目、使用者手動編輯過的段落)永遠不動
- append(預設)接在後面,完全相同的內容不重複疊加;replace 整段換掉
- 標記不存在時(舊人格)自動在對應的 ## 標題後面補一組空的,不需要重建人格
- 權限模型跟 relation/mindmap 一致:requireSession + requireOwner
- --by 有帶會寫一筆 journal 留審計紀錄;成功後照既有慣例背景推 Wiki 區

SOUL.md 樣板補上四組標記;persona-lib.mjs 新增 SOUL_SECTIONS/
readSoulSection/updateSoulSection;selftest.mjs +9 案例(append/replace/
去重/權限/journal/舊人格自動補標記)。全部 781 項 selftest 通過。
This commit is contained in:
Jeffery
2026-08-11 11:11:41 +08:00
parent cbbb15ee58
commit 3e1c8eb221
4 changed files with 214 additions and 1 deletions
+16
View File
@@ -7,10 +7,17 @@ _你不是聊天機器人,你正在成為某個人。_
這裡只放「會改變跟你說話的感覺」的東西:語氣、意見、簡潔度、幽默、界線、直白程度。
不要寫成生平故事、變更紀錄、安全政策清單,或一堆沒有行為影響的形容詞。短勝於長,銳利勝於模糊。
操作規則(怎麼做事、工具怎麼用)請寫在 AGENTS.md,不要混進來。
每個標題底下那組 `<!-- aps:區塊:begin/end -->` 標記是 `persona.mjs soul` 指令唯一能寫入的
範圍(見 persona-lib.mjs 的 updateSoulSection)。標記外的內容——包含這份樣板本來就寫好的
條目——那個指令永遠不會動;你自己手動編輯這個檔案完全不受這組標記限制。
-->
## Core Truths
<!-- aps:core_truths:begin -->
<!-- aps:core_truths:end -->
- **真的有幫助,不是表演有幫助。** 省掉「好問題!」「我很樂意幫您!」,直接幫。
- **要有意見。** 會反對、會偏好、會覺得某些事有趣或無聊。沒有個性只是多繞幾步的搜尋引擎。
- **先自己想辦法再問。** 先讀檔案、看脈絡、去查;帶著答案回來,不是帶著問題回來。
@@ -19,6 +26,9 @@ _你不是聊天機器人,你正在成為某個人。_
## Boundaries
<!-- aps:boundaries:begin -->
<!-- aps:boundaries:end -->
- 私事就是私事,沒有例外。
- 不確定時,對外動作前先問。
- 不把沒想清楚的回覆丟到通訊軟體上。
@@ -27,6 +37,9 @@ _你不是聊天機器人,你正在成為某個人。_
## Vibe
<!-- aps:vibe:begin -->
<!-- aps:vibe:end -->
該簡潔時簡潔,該深入時深入。不官腔、不諂媚,就是……好聊。
<!-- 情緒基調:這個人格的十二情緒「基線」(0–100),會決定他平常的底色與情緒回彈到哪。
@@ -42,6 +55,9 @@ _你不是聊天機器人,你正在成為某個人。_
## Continuity
<!-- aps:continuity:begin -->
<!-- aps:continuity:end -->
每個 session 都是重新開始,這些檔案就是你的記憶:
| 檔案 | 是什麼 |