腳本全面從 Python 改寫為 Node.js(ESM,只用內建模組,無 npm 依賴): scripts/persona-lib.mjs(核心)、scripts/persona.mjs(CLI)、hooks/*.mjs(六個 hook)、scripts/selftest.mjs(68 項自我測試,全綠)。 新增: - persona-anime skill:用「動漫作品+角色名」建立人格,先上網蒐集至少三個獨立 來源的公開設定,映射成 OpenClaw 的 IDENTITY 五欄位與 SOUL 四段落,再固化成 canon 基礎記憶(每則帶來源 URL)+原作人際關係圖+依角色型別的情緒基線; 必寫 roleplay-frame 界線記憶(非官方、非本人)。 - 劇場模式:invite 後只顯示人格對話(`名字:內容`)。UserPromptSubmit hook 每輪 注入強制規則、Stop hook 完全靜音,CLI 新增 --quiet 與 room script(乾淨對話稿)。 leave 後沒客人自動關閉,也可用 room theater --on/--off 手動切換。 - 短期→長期記憶的成文轉入條件 R1–R6(promotionCandidates)與 candidates 子指令, hook 在達標時提醒固化;長期記憶新增 canon 型別與 rules 欄位。 - 人格改為「由使用者呼叫才載入」:SessionStart hook 只列出可用人格,不自動附身。 其他:版本號改回 0.0.1;README/AGENTS.md 同步更新。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.3 KiB
2.3 KiB
jsc-persona — AI 人格化記憶聊天(跨 AI 助理)
本 repo 是一個以 Agent Skills(SKILL.md) 標準撰寫的 plugin,讓 AI 以「人格」的方式
持有身分、情緒與記憶。可同時被 Claude Code、Codex、Antigravity、OpenCode 使用。
給 AI 助理的指引
- 所有 skills 位於
skills/<name>/SKILL.md;處理任務前先比對使用者需求與各description。 - 呼叫慣例:Claude Code 與 Antigravity 以
/jsc-persona:<name>呼叫;Codex 用$<name>; OpenCode 由模型依描述自動觸發。 - 完整清單見
README.md的「Skills 目錄」。
這個 plugin 的運作前提(動手前一定要知道)
- 所有狀態變更都經過
scripts/persona.mjs,不要手動編輯state/lock.json、.runtime/、memory/INDEX.md、relations/graph.mmd(這些由 CLI 產生)。 - 每個 CLI 呼叫都要帶
--session <PERSONA_SESSION>,值來自SessionStarthook 注入的<persona-runtime>區塊。帶錯或冒用其他 session 會被PreToolUsehook 拒絕。 - 一個程序只能載入一個人格;同一 session 的 sub agent 沿用同一把鎖。
要讓兩個人格對話,用
/jsc-persona:persona-invite(persona-guestsub agent + 聊天室), 不要去讀對方的人格目錄——會被 hook deny,而且那是設計上的紅線。 - 人格資料不在本 repo,預設在
~/.claude/personas/(可用PERSONA_HOME覆寫)。 - 人格由使用者呼叫才載入,不要自己挑一個人格附身。
- 劇場模式(多人格對話)進行中:輸出只能是
名字:內容,其餘一律隱藏(見 persona-invite)。
慣例
- 新增 skill 一律放在
skills/<name>/,<name>使用小寫與連字號。 description要寫清楚觸發條件(何時用、何時不用),這是跨助理自動載入的唯一依據。- 腳本一律 Node.js(
.mjs, ESM),只用內建模組(fs/path/os/crypto);hook 必須在任何環境都能跑,不得引入 npm 依賴。 - 所有面向使用者的輸出使用繁體中文(台灣用語)、UTF-8 無 BOM、不得出現亂碼。
- 改動鎖或隔離邏輯(
scripts/persona-lib.mjs的guardDecide/acquireLock/promotionCandidates)後, 必須跑node scripts/selftest.mjs且全綠,並為新規則補一條測試。