feat(persona): 時區改為+08:00等值轉換、補機密遮蔽,並接上shared共用規範

依 todo.md 執行的規範治理專案:
- persona-lib.mjs 的 iso()/nowIso() 改為輸出 +08:00 offset(等值瞬間轉換,
  非加8小時),新增 nowDisplay()(人讀顯示格式)與 todayTaipei()(台北曆日
  日期鍵),修正 11 處原本用 UTC 字串切片產生日期鍵的錯誤用法;新增
  redactSecrets() 並套用到 persona-gitea.mjs 的 Gitea 錯誤路徑,避免機密
  外洩。
- 新增一次性遷移腳本 scripts/migrate-tz.mjs(備份/dry-run/冪等/衝突偵測
  中止),供之後有真實人格資料需要轉換時使用。
- persona 13 個 skill 與 AGENTS.md 接上 /jsc-shared 共用規範(spec-output、
  spec-script-path、spec-subagent、spec-gitea、spec-git-safety、
  spec-skill-invocation 等),不再各自重抄,且完全未變動人格行為本身的規範
  (情緒模型、記憶衰減、劇場模式、鎖與隔離機制等逐字保留)。
- selftest 全數通過(788/788,含本次新增的時區邊界/冪等性測試)。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 06:06:00 +00:00
co-authored by Claude Sonnet 5
parent 5fb2a43189
commit ac2045e52f
25 changed files with 927 additions and 181 deletions
+49
View File
@@ -0,0 +1,49 @@
{
"name": "jsc-persona",
"shortName": "persona",
"version": "0.3.0",
"descriptionCore": "AI 人格化記憶聊天 plugin:以 OpenClaw 相同的身分描述(IDENTITY/SOUL)建立人格(可用動漫作品+角色名上網蒐集設定),結合 hook 強制的人格載入鎖與跨人格隔離、六正向+六負向十二情緒、語意分析、短期/長期記憶與固化條件、心智圖、思維導圖與人際關係圖;可用 sub agent 邀請其他人格同場對話(劇場模式只顯示人格對話)。",
"assistants": ["Claude Code", "Codex", "Antigravity", "OpenCode", "GitHub Copilot CLI"],
"cliPrefix": "/jsc-persona:",
"callPrefixAssistants": {
"root": "Antigravity",
"claudePlugin": "Claude Code"
},
"codexNote": "(人格鎖與跨人格隔離的 hook 僅在 Claude Code 生效)",
"skillsPath": "./skills",
"author": { "name": "JSC" },
"homepage": "https://gitea.jsc.idv.tw/plugins/persona",
"repository": "https://gitea.jsc.idv.tw/plugins/persona.git",
"keywords": [
"persona",
"memory",
"emotion",
"mindmap",
"relationship",
"openclaw",
"anime",
"roleplay",
"jsc"
],
"marketplace": {
"repoDescription": "JSC 人格化記憶聊天 skills 的 Claude Code marketplace,提供人格建立與對話、十二情緒與短期/長期記憶管理、心智圖/思維導圖與人際關係圖維護等功能。",
"pluginSummary": "AI 人格化記憶聊天(人格 / 情緒 / 記憶 / 心智圖 / 關係圖)"
},
"readmeHeadings": {
"addSkill": "新增/修改 skill"
},
"readmeInstallNotes": [
"本 plugin 的 marketplace 名是 `persona`(= repo 名),plugin 名是 `jsc-persona`,安裝 token 為 `jsc-persona@persona`。",
"**⚠ 若本機還留著更早的 `jsc-persona@jsc-plugins` 安裝**,那是舊版命名的殘影,請先移除舊鍵再重裝新 token。",
"**人格資料不受影響**:人格倉庫在 `~/.claude/personas/`(或 `PERSONA_HOME`),不在 plugin 目錄裡,移除/重裝 plugin 不會動到情緒、記憶與關係圖。Antigravity/OpenCode 是本地路徑/目錄安裝,沒有 marketplace 名,不受此命名影響。"
],
"_driftDecisions": [
"決議1:skills 欄位統一為不帶尾斜線的 './skills'。現況:persona 三份 plugin.json(root/.claude-plugin/.codex-plugin)皆已是 './skills',唯一完全符合決議、不需調整的 repo。",
"決議2:root plugin.json 已有「於 Antigravity 以 /jsc-persona: 前綴呼叫」句尾,符合決議,不需調整。",
"決議3:.claude-plugin/plugin.json 現況完全沒有助理括號清單(四個 repo 中唯一缺漏,非順序/命名問題而是整段缺失)。已依統一決議補上「(Claude Code / Codex / Antigravity / OpenCode / GitHub Copilot CLI)」。",
"決議4對應:.codex-plugin/plugin.json 專屬補充資訊「(人格鎖與跨人格隔離的 hook 僅在 Claude Code 生效)」為真實資訊差異,已保留於 codexNote,不可被格式統一誤刪。",
"額外發現1(重要,非既知四點):root 與 .codex-plugin 的描述明顯比 .claude-plugin 簡短,完全沒提到「思維導圖」「可用 sub agent 邀請其他人格同場對話(劇場模式)」「以 IDENTITY/SOUL 建立人格、可用動漫作品+角色名上網蒐集設定」等內容——這是實質內容缺漏,不是格式差異。descriptionCore 已採用 .claude-plugin 的完整版本為準,下階段產生器需把完整內容回補到 root 與 .codex-plugin。",
"額外發現2(重要,非既知四點):.claude-plugin/marketplace.json 目前的 repo 層 description 為「JSC 跨 AI 助理共用 skills 的 Claude Code marketplace。」——這段文字幾乎是照抄 shared 的樣板句(少了「規範」二字),完全沒提到人格/情緒/記憶/心智圖等 persona 專屬內容,判斷為複製貼上殘留、忘記客製化,而非合理的精簡描述。marketplace.repoDescription 已在此 meta 更正為 persona 專屬描述,下階段產生器需一併修正該 marketplace.json(plugins[].description 本身沒問題,維持原樣)。",
"額外發現3(次要):root 描述用詞為「AI 人格化記憶聊天 plugin」,.codex-plugin 用詞為「AI 人格化記憶聊天 skills」,.claude-plugin 用「plugin」——plugin/skills 用詞不一致,屬低優先級格式細節。"
]
}