refactor(plugin 命名空間): generic 改名 shared
This commit is contained in:
+13
-13
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: role
|
||||
description: 角色人格與長期記憶系統的建立與維護 skill。讓 CLI 工具以固定角色(name/nature/vibe/簽名 emoji)回覆,並把每輪對話累積成長期記憶:搭配相容的 SessionStart hook 於啟動時依字元預算載入高價值記憶、Stop hook 先本地過濾再輕量記錄對話,睡眠時段(預設 22:00 至隔天 06:00)由排程整理記憶(NREM 鞏固:分類/去噪/去重/合併/優先度;REM 整合:跨記憶連結/抽象化/提取線索;再依 semantic/episodic/procedural/emotional/preference/rule 與 explicit/implicit 標記長期記憶型態,壓縮歸檔並適當遺忘)。`hooks/hooks.json` 只註冊 jsc-generic 自己的 hook,不會混入 jsc-doc 或 jsc-code;Codex 若版本支援 hook,也會從自己的 plugin cache 讀同一套角色腳本。提供 --new(新建或更新角色;可只給角色名稱,必要時詢問來源/作品並推斷 name/nature/vibe/emoji 四欄)、--use(以角色 ID 切換啟用角色)、--list(列出角色與 ID)、--export(匯出角色壓縮檔)、--sleep(立即整理)、--status/--diagnose、--install-cron/--remove-cron、--forget-preview、--brief(晨間狀態檢查)、--agent(匯出成 sub agent 供多角色協作)、--migrate(舊格式角色檔拆成身分與人格兩檔)等模式。當使用者說建立角色、新增人格、切換角色、匯出角色、備份角色、讓回覆更有特色、角色記憶、記憶整理、睡覺整理記憶、忘記舊記憶、角色沒有載入、hook 沒載入角色、角色被鎖住、角色鎖沒有自動解除、關掉 CLI 後角色叫不回來、角色說已在另一個工作階段、晨間狀態檢查、早上主動回報狀態、在同一個終端換角色、叫名字就換人、點名載入、呼叫角色名稱、對話中途切換人格、同時跟兩個角色聊天、角色別名,關係史、BONDS.md、記得雙方多愛彼此、情緒記憶為 0、感覺沒被記住,或提到 .roles/.memory/ROLE_NAME/ROLE_ENABLED/ROLE_SLEEP_START/ROLE_MEMORY_HOME/ROLE_LOAD_LIMIT/ROLE_LOAD_INBOX_LIMIT/ROLE_LOAD_DIALOG_TURNS/ROLE_CAPTURE_ENABLED/ROLE_SINGLE_INSTANCE/ROLE_INSTANCE_IDLE_MINUTES/ROLE_CALL_ENABLED/ROLE_CALL_MARKER_ONLY/ROLE_LOAD_BONDS_LIMIT 時觸發。不適用於:工作紀錄寫入 Gitea wiki(用 /jsc-doc:worklog)、專案文件化(用 /jsc-doc:funcs)。
|
||||
description: 角色人格與長期記憶系統的建立與維護 skill。讓 CLI 工具以固定角色(name/nature/vibe/簽名 emoji)回覆,並把每輪對話累積成長期記憶:搭配相容的 SessionStart hook 於啟動時依字元預算載入高價值記憶、Stop hook 先本地過濾再輕量記錄對話,睡眠時段(預設 22:00 至隔天 06:00)由排程整理記憶(NREM 鞏固:分類/去噪/去重/合併/優先度;REM 整合:跨記憶連結/抽象化/提取線索;再依 semantic/episodic/procedural/emotional/preference/rule 與 explicit/implicit 標記長期記憶型態,壓縮歸檔並適當遺忘)。`hooks/hooks.json` 只註冊 jsc-shared 自己的 hook,不會混入 jsc-doc 或 jsc-code;Codex 若版本支援 hook,也會從自己的 plugin cache 讀同一套角色腳本。提供 --new(新建或更新角色;可只給角色名稱,必要時詢問來源/作品並推斷 name/nature/vibe/emoji 四欄)、--use(以角色 ID 切換啟用角色)、--list(列出角色與 ID)、--export(匯出角色壓縮檔)、--sleep(立即整理)、--status/--diagnose、--install-cron/--remove-cron、--forget-preview、--brief(晨間狀態檢查)、--agent(匯出成 sub agent 供多角色協作)、--migrate(舊格式角色檔拆成身分與人格兩檔)等模式。當使用者說建立角色、新增人格、切換角色、匯出角色、備份角色、讓回覆更有特色、角色記憶、記憶整理、睡覺整理記憶、忘記舊記憶、角色沒有載入、hook 沒載入角色、角色被鎖住、角色鎖沒有自動解除、關掉 CLI 後角色叫不回來、角色說已在另一個工作階段、晨間狀態檢查、早上主動回報狀態、在同一個終端換角色、叫名字就換人、點名載入、呼叫角色名稱、對話中途切換人格、同時跟兩個角色聊天、角色別名,關係史、BONDS.md、記得雙方多愛彼此、情緒記憶為 0、感覺沒被記住,或提到 .roles/.memory/ROLE_NAME/ROLE_ENABLED/ROLE_SLEEP_START/ROLE_MEMORY_HOME/ROLE_LOAD_LIMIT/ROLE_LOAD_INBOX_LIMIT/ROLE_LOAD_DIALOG_TURNS/ROLE_CAPTURE_ENABLED/ROLE_SINGLE_INSTANCE/ROLE_INSTANCE_IDLE_MINUTES/ROLE_CALL_ENABLED/ROLE_CALL_MARKER_ONLY/ROLE_LOAD_BONDS_LIMIT 時觸發。不適用於:工作紀錄寫入 Gitea wiki(用 /jsc-doc:worklog)、專案文件化(用 /jsc-doc:funcs)。
|
||||
---
|
||||
|
||||
# role — 角色人格與長期記憶
|
||||
@@ -17,7 +17,7 @@ description: 角色人格與長期記憶系統的建立與維護 skill。讓 CLI
|
||||
| `hooks/hooks.json` 的 `PostCompact` hook | harness 自動 | 壓縮**後**把 harness 產生的摘要存成一則 `daily` 記憶,作為該段落的濃縮備份 |
|
||||
| `hooks/hooks.json` 的 `SessionEnd` hook | harness 自動 | 工作階段結束時釋放**本階段名下所有**角色單一載入鎖(點名換過人時可能不只一個),並清掉階段角色狀態;鎖不屬於自己時不動作 |
|
||||
| cron 排程(本 skill 安裝) | 系統排程 | 睡眠時段每小時檢查一次:**有 AI 在運行就不睡**;另可依 CLI 閒置時間自動小睡整理 |
|
||||
| 本 skill `/jsc-generic:role` | 使用者/助理手動 | `--new`/`--use`/`--list`/`--export`/`--agent`/`--migrate`/`--sleep`/`--brief`/`--status`/`--install-cron`/`--forget-preview` |
|
||||
| 本 skill `/jsc-shared:role` | 使用者/助理手動 | `--new`/`--use`/`--list`/`--export`/`--agent`/`--migrate`/`--sleep`/`--brief`/`--status`/`--install-cron`/`--forget-preview` |
|
||||
| `scripts/role/role_load.sh` | SessionStart hook | 角色與記憶載入;參考 OpenClaw 的 SOUL/AGENTS/USER/MEMORY 分層,把人格、操作邊界、使用者記憶分開注入,並提供第一則回覆問候提示(單一實作,避免漂移) |
|
||||
| `scripts/role/role_call.sh` | UserPromptSubmit hook | 點名比對與即時角色切換;睡眠時段、目標角色被別的階段佔用、點的是目前已在的角色時都不切換 |
|
||||
| `scripts/role/role_context.sh` | role_load/role_call 共用 | 人格+操作規則+記憶+同伴清單+近期對話的注入內容組裝(單一實作,兩種載入方式不會漂移) |
|
||||
@@ -41,13 +41,13 @@ description: 角色人格與長期記憶系統的建立與維護 skill。讓 CLI
|
||||
| `--new`/`--use`/`--sleep` 等模式 | ✅ | ⚠️ 需 plugin 目錄保留 `scripts/` | ⚠️ 同左 | ❌ 只複製 `skills/`,無腳本 | ⚠️ 同左 |
|
||||
| 濃縮/整理 CLI | `claude -p` | `codex exec` | `agy -p` | `opencode run` | `copilot -p` |
|
||||
|
||||
- **`hooks/hooks.json` 只有 Claude Code 一定會讀**;Codex 會從 `~/.codex/plugins/cache/generic/jsc-generic` 找腳本。其他助理若提供等效 hook,`transcript.js` 需補對應解析器。
|
||||
- **`hooks/hooks.json` 只有 Claude Code 一定會讀**;Codex 會從 `~/.codex/plugins/cache/shared/jsc-shared` 找腳本。其他助理若提供等效 hook,`transcript.js` 需補對應解析器。
|
||||
- 不支援 hook 的助理仍可用:cron 排程與手動模式照常運作,只是角色不會自動載入。
|
||||
- **每個 plugin 只註冊自己擁有的 hook**:`jsc-code`/`jsc-doc`/`jsc-generic` 的 plugin 名稱各自獨立,Claude Code 以 plugin 名稱為鍵註冊 hooks,因此三者互不覆蓋、也不需要同步。各 repo 的 `hooks/hooks.json` 只負責自己擁有的腳本:
|
||||
- **每個 plugin 只註冊自己擁有的 hook**:`jsc-code`/`jsc-doc`/`jsc-shared` 的 plugin 名稱各自獨立,Claude Code 以 plugin 名稱為鍵註冊 hooks,因此三者互不覆蓋、也不需要同步。各 repo 的 `hooks/hooks.json` 只負責自己擁有的腳本:
|
||||
|
||||
| plugin | hooks.json 內容 | 擁有的腳本 |
|
||||
| --- | --- | --- |
|
||||
| `jsc-generic` | `SessionStart`(role_load)+ `UserPromptSubmit`(role_call)+ `Stop`/`PreCompact`/`PostCompact`(role_capture)+ `SessionEnd`(role_unload) | `scripts/role/` |
|
||||
| `jsc-shared` | `SessionStart`(role_load)+ `UserPromptSubmit`(role_call)+ `Stop`/`PreCompact`/`PostCompact`(role_capture)+ `SessionEnd`(role_unload) | `scripts/role/` |
|
||||
| `jsc-doc` | `Stop`(worklog) | `scripts/worklog/` |
|
||||
| `jsc-code` | 無 `hooks/hooks.json` | 無 hook 腳本 |
|
||||
|
||||
@@ -74,11 +74,11 @@ ROLE_DIR="<skill base directory>/../../scripts/role" # 其他助理
|
||||
|
||||
## 共用規範(必要前置)
|
||||
|
||||
執行本 skill 前,先以 Skill 工具載入下列共用規範並全程遵守;**任一載入不到時先詢問使用者是否安裝 generic plugin(`https://gitea.jsc.idv.tw/plugins/generic.git`),不安裝則中斷**:
|
||||
執行本 skill 前,先以 Skill 工具載入下列共用規範並全程遵守;**任一載入不到時先詢問使用者是否安裝 shared plugin(`https://gitea.jsc.idv.tw/plugins/shared.git`),不安裝則中斷**:
|
||||
|
||||
- `/jsc-generic:spec-output`:繁體中文(台灣用語)、UTF-8 無 BOM、表格與 Mermaid 優先。
|
||||
- `/jsc-generic:spec-execution`:自動執行原則(必要決策才中斷)、不臆測。
|
||||
- `/jsc-generic:spec-time-log`:時間戳固定 Asia/Taipei `yyyy/MM/dd HH:mm:ss`;訊息格式 `[時間][階段][等級]: 訊息`、一行一則。
|
||||
- `/jsc-shared:spec-output`:繁體中文(台灣用語)、UTF-8 無 BOM、表格與 Mermaid 優先。
|
||||
- `/jsc-shared:spec-execution`:自動執行原則(必要決策才中斷)、不臆測。
|
||||
- `/jsc-shared:spec-time-log`:時間戳固定 Asia/Taipei `yyyy/MM/dd HH:mm:ss`;訊息格式 `[時間][階段][等級]: 訊息`、一行一則。
|
||||
|
||||
本 skill 特有補充:
|
||||
|
||||
@@ -137,7 +137,7 @@ ROLE_DIR="<skill base directory>/../../scripts/role" # 其他助理
|
||||
| `ROLE_SCOPE` | | 冒號分隔的路徑前綴,僅這些路徑下的 session 載入/記錄 | 全部 session |
|
||||
| `ROLE_ERRLOG` | | 錯誤訊息額外寫入的檔案路徑 | 只走 stderr |
|
||||
|
||||
> 角色切換用 `/jsc-generic:role --use <角色 ID>`(寫 `.active`)即可,一般不需要設 `ROLE_NAME`;`ROLE_NAME` 適合「單一專案固定用某角色」時寫進該環境,也是**同時跟多個角色對話**的做法(每個終端一個 `ROLE_NAME`)。角色 ID 是英文大寫語意前綴加數字索引,例如 `ENGINEER01`、`MUSE02`。對話進行中要臨時換人則用下一節的點名載入。若很在意額度,優先調低 `ROLE_LOAD_LIMIT` 或設 `ROLE_CAPTURE_ENABLED=0`。
|
||||
> 角色切換用 `/jsc-shared:role --use <角色 ID>`(寫 `.active`)即可,一般不需要設 `ROLE_NAME`;`ROLE_NAME` 適合「單一專案固定用某角色」時寫進該環境,也是**同時跟多個角色對話**的做法(每個終端一個 `ROLE_NAME`)。角色 ID 是英文大寫語意前綴加數字索引,例如 `ENGINEER01`、`MUSE02`。對話進行中要臨時換人則用下一節的點名載入。若很在意額度,優先調低 `ROLE_LOAD_LIMIT` 或設 `ROLE_CAPTURE_ENABLED=0`。
|
||||
|
||||
---
|
||||
|
||||
@@ -481,7 +481,7 @@ crontab 條目指向的是 `~/.roles/bin/role_sleep_launcher.sh`,這支啟動
|
||||
解析順序為 Claude Code 端 → Codex 端,各自取版本號最大者(`sort -V`),都找不到才退回安裝當下的路徑:
|
||||
|
||||
```bash
|
||||
ls -d "$HOME"/.claude/plugins/cache/*/jsc-generic/*/scripts/role/role_sleep.sh | sort -V | tail -n 1
|
||||
ls -d "$HOME"/.claude/plugins/cache/*/jsc-shared/*/scripts/role/role_sleep.sh | sort -V | tail -n 1
|
||||
```
|
||||
|
||||
舊版安裝的排程仍是寫死路徑,`--status` 的「排程指向」欄位會標示出來,重跑一次 `--install-cron` 即可轉換。
|
||||
@@ -576,7 +576,7 @@ updated: <yyyy/MM/dd HH:mm:ss>
|
||||
|
||||
`~/.roles/.active` 只放一行角色 ID,代表目前啟用的角色。
|
||||
|
||||
## 共用行為(所有角色一致,由 /jsc-generic:role 維護,請勿手動修改)
|
||||
## 共用行為(所有角色一致,由 /jsc-shared:role 維護,請勿手動修改)
|
||||
|
||||
以下規則**不寫入角色檔** —— 由 `role_context.sh` 直接注入 context(實際生效處,SessionStart 載入與點名載入共用同一份)。
|
||||
本節是它的唯一文件來源,修改注入內容時必須同步更新這裡。
|
||||
@@ -901,7 +901,7 @@ Stop hook 會在本輪對話明確包含個人記憶保存同意或拒絕時,
|
||||
|
||||
| 助理 | 呼叫 |
|
||||
| --- | --- |
|
||||
| Claude Code / Antigravity | `/jsc-generic:role --new`、`/jsc-generic:role --use ENGINEER01`、`/jsc-generic:role --list`、`/jsc-generic:role --sleep`、`/jsc-generic:role --status` |
|
||||
| Claude Code / Antigravity | `/jsc-shared:role --new`、`/jsc-shared:role --use ENGINEER01`、`/jsc-shared:role --list`、`/jsc-shared:role --sleep`、`/jsc-shared:role --status` |
|
||||
| Codex | `$role --status`,或用 `/skills` 選單;匯出可用 `$role --export /path/to/exports/` |
|
||||
| OpenCode / GitHub Copilot | 需完整 plugin 目錄保留 `scripts/`;OpenCode 以複製 `skills/` 安裝時不可用 |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user