feat(role): 分層載入與個人記憶同意狀態,hooks.json 統一為合併超集,升版 0.0.7 #11

Merged
admin merged 4 commits from develop into master 2026-07-28 07:13:39 +00:00
Member

變更內容

Commit 說明
c713359 role_load.sh 改採 SOUL/AGENTS/USER-MEMORY 分層載入;memory.js 新增 consentconsent-statusrole_capture.sh 依明確表述更新同意狀態
65426f0 hooks/hooks.json 補 doc 的 worklog Stop hook 並改用跨 cache 解析器
6d5c4e3 README/SKILL.md 補同名 plugin hooks 註冊限制與分層載入說明
bb48a77 三份 manifest 升版 0.0.6 → 0.0.7

角色分層載入

SessionStart 不再原封不動注入整份角色檔:只抽出角色 ID、顯示名稱、本質、氛圍與簽名 emoji 作為人格層(SOUL),由 hook 產生固定操作邊界(AGENTS),記憶與同意狀態獨立成 USER/MEMORY 區塊,避免人格檔裡的背景故事與模板文字污染工程與安全規則。

個人記憶同意狀態

同意狀態寫入 ~/.memory/<角色 ID>/state.jsonpersonal_memory_consentaccepteddeclinedunknown);accepted 後不再每次重問,偵測不到明確表述時不自行推論。

背景

三個 plugin repo(codedocgeneric)的 plugin.json 名稱都是 jsc,Claude Code 以 plugin 名稱為鍵註冊 hooks,同名時只保留一份,且無法預期哪一份會贏。實測本工作階段 stop_hook_summaryhookCount 為 2(單一 plugin 的 hooks.json + 使用者 settings.json 的後援 hook),而非三個 plugin 疊加的 3 —— 證實只有一份 plugin hooks.json 生效。

因此三個 repo 的 hooks/hooks.json 必須是同一份合併超集(worklog 的 Stop + role 的 SessionStartStop),否則贏得註冊的那一份缺少的 hook 會靜默失效。每個 hook 指令也不得假設 CLAUDE_PLUGIN_ROOT 指向擁有該腳本的 plugin,需先試 $CLAUDE_PLUGIN_ROOT,找不到再依「擁有者 marketplace 優先 → 全 cache 後援」搜尋 ~/.claude~/.codex 快取。

版號

origin/master 現行 0.0.5 → 本 PR 0.0.7(develop 上的 0.0.6 尚未發佈),三份 manifest 同步。

🤖 Generated with Claude Code

## 變更內容 | Commit | 說明 | | --- | --- | | `c713359` | `role_load.sh` 改採 SOUL/AGENTS/USER-MEMORY 分層載入;`memory.js` 新增 `consent`/`consent-status`;`role_capture.sh` 依明確表述更新同意狀態 | | `65426f0` | `hooks/hooks.json` 補 doc 的 worklog `Stop` hook 並改用跨 cache 解析器 | | `6d5c4e3` | README/SKILL.md 補同名 plugin hooks 註冊限制與分層載入說明 | | `bb48a77` | 三份 manifest 升版 0.0.6 → 0.0.7 | ### 角色分層載入 `SessionStart` 不再原封不動注入整份角色檔:只抽出角色 ID、顯示名稱、本質、氛圍與簽名 emoji 作為人格層(SOUL),由 hook 產生固定操作邊界(AGENTS),記憶與同意狀態獨立成 USER/MEMORY 區塊,避免人格檔裡的背景故事與模板文字污染工程與安全規則。 ### 個人記憶同意狀態 同意狀態寫入 `~/.memory/<角色 ID>/state.json` 的 `personal_memory_consent`(`accepted`/`declined`/`unknown`);`accepted` 後不再每次重問,偵測不到明確表述時不自行推論。 ## 背景 三個 plugin repo(`code`/`doc`/`generic`)的 `plugin.json` 名稱都是 `jsc`,Claude Code **以 plugin 名稱為鍵註冊 hooks**,同名時只保留一份,且無法預期哪一份會贏。實測本工作階段 `stop_hook_summary` 的 `hookCount` 為 2(單一 plugin 的 hooks.json + 使用者 `settings.json` 的後援 hook),而非三個 plugin 疊加的 3 —— 證實只有一份 plugin hooks.json 生效。 因此三個 repo 的 `hooks/hooks.json` **必須是同一份合併超集**(worklog 的 `Stop` + role 的 `SessionStart`/`Stop`),否則贏得註冊的那一份缺少的 hook 會靜默失效。每個 hook 指令也不得假設 `CLAUDE_PLUGIN_ROOT` 指向擁有該腳本的 plugin,需先試 `$CLAUDE_PLUGIN_ROOT`,找不到再依「擁有者 marketplace 優先 → 全 cache 後援」搜尋 `~/.claude`/`~/.codex` 快取。 ## 版號 `origin/master` 現行 0.0.5 → 本 PR 0.0.7(develop 上的 0.0.6 尚未發佈),三份 manifest 同步。 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jiantw83 added 4 commits 2026-07-28 06:30:52 +00:00
role_load.sh 不再原封不動注入整份角色檔,改採 SOUL/AGENTS/USER/MEMORY
分層:只抽出角色 ID、顯示名稱、本質、氛圍與簽名 emoji 作為人格層,由 hook
產生固定操作邊界,記憶與同意狀態獨立成一區。避免人格檔裡的背景故事與模板
文字污染工程與安全規則。

memory.js 新增 consent/consent-status 子命令,同意狀態寫入
~/.memory/<角色 ID>/state.json 的 personal_memory_consent(accepted/
declined/unknown);role_capture.sh 於本輪出現明確同意或拒絕時更新狀態,
偵測不到明確表述時不自行推論。accepted 後不再每次重問。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
同名 plugin(三個 repo 都叫 jsc)只有一份 hooks.json 會生效,無法預期哪一
份會贏,因此三家必須同步為同一份超集。本次補上 doc 的 worklog Stop hook,
避免 generic 贏得註冊時工作紀錄靜默消失。

role 的兩個指令同步改用新解析器:先驗證 CLAUDE_PLUGIN_ROOT 下腳本存在,再
依「擁有者 marketplace 優先 → 全 cache 後援」搜尋 ~/.claude 與 ~/.codex
快取。舊版在 CLAUDE_PLUGIN_ROOT 為空時只搜 ~/.codex,且未檢查腳本是否存在
於該 plugin root。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
SKILL.md 記錄實測結論:同名 plugin 的 hooks 只會生效一份(hookCount 為
1),三個 repo 的 hooks/hooks.json 必須是同一份合併超集且不得假設
CLAUDE_PLUGIN_ROOT 指向擁有該腳本的 plugin。另補上分層載入原則、
personal_memory_consent 狀態欄位與 Stop hook 更新同意狀態的規則。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
hooks/hooks.json 與 role 腳本有變更,需升版才會重建版本化快取目錄並被載入。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
admin approved these changes 2026-07-28 07:13:37 +00:00
admin merged commit 2149e7a3c2 into master 2026-07-28 07:13:39 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/shared#11