develop
master
--install-cron 把安裝當下的版本目錄寫進 crontab。plugin 升版、舊版本目錄被清掉之後,排程就指向不存在的路徑而靜默停擺 —— cron 不會回報,只能等到有人發現記憶好久沒整理才察覺。
--install-cron
本次清理 cache 舊版本時實際踩到:crontab 三條排程仍寫死已刪除的 0.0.6。
0.0.6
crontab 條目改指 ~/.roles/bin/role_sleep_launcher.sh(固定路徑、不含版本號),由啟動器在觸發當下解析最新版本後 exec。
~/.roles/bin/role_sleep_launcher.sh
exec
sort -V
--remove-cron
--status
bash -n
0.0.10
0.0.9
0.1.0
bin/
舊版安裝的排程仍是寫死路徑,需重跑一次 --install-cron 轉換;未轉換時 --status 會標示出來。
🤖 Generated with Claude Code
commit 46caabe。原本人格只在 SessionStart 注入,換角色必須改 .active 再重開 CLI;同一個終端沒辦法臨時換人,原角色被別的視窗佔用時也只能重開工作階段。
46caabe
SessionStart
.active
scripts/role/role_call.sh
UserPromptSubmit
aliases
scripts/role/role_context.sh
role_load.sh
role_lib.sh
role_session_key/set/get/exists/clear/prune
ROLE_CALL_*
role_capture.sh
ROLE_NAME
role_unload.sh
silica01x
SILICA01
ROLE_CALL_ENABLED
ROLE_CALL_MARKER_ONLY
@名字
--postcompact
PROJECT
sources
點名成功後 ~/.roles/.sessions/<工作階段>.role 記下「本階段目前實際是誰」,Stop hook 以它為準:點名之後的對話記進新角色,點名之前的屬於先前身分。沒有這層歸屬,跟 A 聊的內容會被寫進 B 的記憶。
~/.roles/.sessions/<工作階段>.role
Stop
hooks.json
@ID
ROLE_CALL_MARKER_ONLY=1
ROLE_CALL_ENABLED=0
SessionEnd
sources: [plugins/generic]
測試全跑在暫存 fixture,未動到真實 ~/.roles/~/.memory。
~/.roles
~/.memory
本 PR 的版號 0.0.9 同時涵蓋上面的 cron 修正與本功能。合併後需 claude plugin update 並重開工作階段,UserPromptSubmit hook 才會註冊(目前 cache 仍是 0.0.8)。
claude plugin update
0.0.8
--install-cron 原本把安裝當下的版本目錄寫進 crontab,plugin 升版、 舊版本目錄被清掉之後,排程會指向不存在的路徑而靜默停擺(cron 不回報, 此類錯誤曾造成排程長期空轉)。 - 新增 ~/.roles/bin/role_sleep_launcher.sh:crontab 只認這個固定路徑, 實際的 role_sleep.sh 於觸發當下以 sort -V 解析最新版本後 exec - 解析順序 Claude Code 端 → Codex 端,都找不到才退回安裝當下的路徑 - --remove-cron 一併清除啟動器 - --status 新增「排程指向」欄位,主動指出失效或舊式寫死路徑的條目 - SKILL.md 補上啟動器機制與轉換方式 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- `UserPromptSubmit` hook(`role_call.sh`)比對訊息開頭的角色名稱/ID/`aliases` 別名, 命中即注入該角色人格與記憶並接手本輪;未點名時不輸出內容也不寫檔案。 - 抽出 `role_context.sh` 共用 context 組裝,SessionStart 與點名載入共用同一份人格與操作規則, 避免兩種載入方式漂移;實測 SessionStart 注入內容與改動前 byte-identical。 - 新增階段角色狀態(`~/.roles/.sessions/<工作階段>.role`),`Stop` hook 改以「本階段實際角色」 寫記憶,避免點名換人後把跟 A 的對話記進 B 的記憶。 - `SessionEnd` 改為釋放本階段名下所有角色鎖並清掉階段狀態檔。 - 切換時先確認取得目標角色鎖才釋放原角色鎖,避免出現兩個角色都沒有的空窗。 - 睡眠時段、目標角色已被其他活躍階段佔用、點名的是已在場的角色時,一律不切換。 - 新增 `ROLE_CALL_ENABLED`(總開關)與 `ROLE_CALL_MARKER_ONLY`(只認 `@名字`)。 - 順帶修正 `role_capture.sh` 的 `--postcompact` 分支在 `PROJECT` 賦值前就使用它, 導致壓縮摘要記憶的 `sources` 一直為空。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
No dependencies set.
The note is not visible to the blocked user.
問題
--install-cron把安裝當下的版本目錄寫進 crontab。plugin 升版、舊版本目錄被清掉之後,排程就指向不存在的路徑而靜默停擺 —— cron 不會回報,只能等到有人發現記憶好久沒整理才察覺。本次清理 cache 舊版本時實際踩到:crontab 三條排程仍寫死已刪除的
0.0.6。做法
crontab 條目改指
~/.roles/bin/role_sleep_launcher.sh(固定路徑、不含版本號),由啟動器在觸發當下解析最新版本後exec。sort -V最大者;都找不到才退回安裝當下的路徑--remove-cron一併清除啟動器--status新增「排程指向」欄位,主動標示失效或舊式寫死路徑的條目驗證
bash -n語法--install-cron後 crontab 指向exec到 cache 版本0.0.10>0.0.9、0.1.0最大--status偵測「指向不存在的路徑」--status偵測「舊式寫死版本路徑」--remove-cron清除啟動器與bin/升級注意
舊版安裝的排程仍是寫死路徑,需重跑一次
--install-cron轉換;未轉換時--status會標示出來。🤖 Generated with Claude Code
追加:點名載入(對話中叫名字切換角色)
commit
46caabe。原本人格只在SessionStart注入,換角色必須改.active再重開 CLI;同一個終端沒辦法臨時換人,原角色被別的視窗佔用時也只能重開工作階段。做法
scripts/role/role_call.sh(新)UserPromptSubmithook:比對訊息開頭的角色名稱/ID/aliases別名 → 檢查睡眠時段與單一實例鎖 → 注入該角色人格與記憶接手本輪scripts/role/role_context.sh(新)role_load.sh抽出的 context 組裝,SessionStart 與點名載入共用同一份人格與操作規則,避免兩種載入方式漂移role_load.shrole_lib.shrole_session_key/set/get/exists/clear/prune)與ROLE_CALL_*開關role_capture.shROLE_NAME/.active)role_unload.shsilica01x不會命中SILICA01);中文名稱不需分隔符ROLE_CALL_ENABLED(總開關)、ROLE_CALL_MARKER_ONLY(只認@名字)role_capture.sh的--postcompact分支在PROJECT賦值前就使用它,壓縮摘要記憶的sources一直為空記憶歸屬
點名成功後
~/.roles/.sessions/<工作階段>.role記下「本階段目前實際是誰」,Stophook 以它為準:點名之後的對話記進新角色,點名之前的屬於先前身分。沒有這層歸屬,跟 A 聊的內容會被寫進 B 的記憶。驗證
bash -n全部腳本、hooks.json可解析role_load.sh同一份全新 fixturesilica01x@ID、切回原角色ROLE_CALL_MARKER_ONLY=1、ROLE_CALL_ENABLED=0.activeYUI01SessionEnd釋放本階段兩把鎖、留下別人的鎖--postcompact寫入sourcessources: [plugins/generic]測試全跑在暫存 fixture,未動到真實
~/.roles/~/.memory。升級注意
本 PR 的版號
0.0.9同時涵蓋上面的 cron 修正與本功能。合併後需claude plugin update並重開工作階段,UserPromptSubmithook 才會註冊(目前 cache 仍是0.0.8)。fix(role): cron 條目改指固定路徑啟動器,升版不再靜默失效to feat(role): 點名載入切換角色 + cron 固定路徑啟動器(0.0.9)