feat(role): 新增閒置小睡整理 #12

Merged
admin merged 4 commits from agent/role-nap-memory into master 2026-07-28 07:13:49 +00:00
Showing only changes of commit 9978562092 - Show all commits
+19 -7
View File
@@ -119,18 +119,19 @@ ROLE_DIR="<skill base directory>/../../scripts/role" # 其他助理
| `id` | 角色 ID,由助理依角色描述產生:英文大寫、有意義、加兩位數索引;同前綴已存在時遞增 | `ENGINEER01` |
| `nature` | 本質:這個角色是什麼、專長與行事準則 | 冷靜可靠的資深工程師,重證據、不打包票 |
| `vibe` | 氛圍:語氣、句長、稱呼、幽默感、禁忌 | 簡潔直白、偶爾吐槽,不用客套開場白 |
| `emoji` | 簽名 emoji,一到二個 | 🐆 |
| `emoji` | 簽名 emoji,一到二個;若後續成功建立心情 emoji 圖表,這個值作為不支援圖片時的 fallback | 🐆 |
| `appearance_reference` | 選填;角色形象圖來源、作品名稱、圖片 URL 或本機檔案路徑,用來產生心情 emoji | `Sword Art Online 結衣``https://.../yui.jpg``/path/avatar.png` |
流程:
1. 解析 `${ROLE_DIR}`;不存在則中止(見「腳本路徑解析」)。
2.`AskUserQuestion` 或提問取得 `name``nature``vibe``emoji` 四個描述欄位(使用者已在指令中給的欄位不得重複問)。
3. 詢問使用者是否要到網路搜尋角色資料來建立初始記憶;這是新建角色時的固定問題,不得跳過。若使用者同意,依角色描述搜尋可靠來源,摘要成繁體中文要點並保留來源 URL;若使用者不同意或無網路,仍可建立角色,只是不建立背景種子記憶
2.`AskUserQuestion` 或提問取得 `name``nature``vibe``emoji` 四個描述欄位(使用者已在指令中給的欄位不得重複問),並可一併取得 `appearance_reference``emoji` 一律保留作為 fallback,不因後續產生心情 emoji 圖表而丟棄
3. 詢問使用者是否要到網路搜尋角色資料來建立初始記憶與形象圖;這是新建角色時的固定問題,不得跳過。若使用者同意,依角色描述搜尋可靠來源,摘要成繁體中文要點並保留來源 URL,同時搜尋適合做角色心情 emoji 的形象圖。若搜尋結果無法可靠判斷角色形象,先詢問使用者參考來源、作品名稱、圖片 URL 或本機檔案路徑,不得臆測形象。若使用者不同意上網且也未提供形象參考,仍可建立角色,只是不建立背景種子記憶與心情 emoji 圖表,並使用原本的 `emoji` fallback
4. 產生角色 ID
-`name``nature``vibe` 推出 1 個有意義的英文大寫前綴,使用 4 到 16 個英文字母與數字,必須以英文字母開頭,例如 `ENGINEER``WRITER``MUSE``RESEARCHER`
- 掃描 `~/.roles/*.md` 的檔名與 frontmatter `id`,找出同前綴既有 ID 的最大兩位數索引;新角色使用下一個索引,從 `01` 起,例如 `ENGINEER01``ENGINEER02`
- 不得使用空白、底線、連字號、斜線、非 ASCII 或小寫字母。
5. 依「角色檔標準格式」產生新內容,`id` 寫入 frontmatter`updated` 用當下時間(Asia/Taipei)。
5. 依「角色檔標準格式」產生新內容,`id` 寫入 frontmatter`updated` 用當下時間(Asia/Taipei)。若已取得形象圖,先暫時保留原本 `emoji`,待心情 emoji 圖表產生後再回寫「簽名 emoji」區塊。
6. **若 `~/.roles/<id>.md` 已存在**:讀舊檔,以表格逐欄列出差異後**停下來等使用者確認**:
| 欄位 | 舊值 | 新值 | 變更 |
@@ -152,9 +153,20 @@ ROLE_DIR="<skill base directory>/../../scripts/role" # 其他助理
```
多個來源可各寫一則,或合併同主題後以最主要來源作 `--source`。不可寫入憑證或個資。
10. 若尚未有啟用角色,或使用者要求,寫入 `~/.roles/.active`(單行角色 ID
11. 執行 `ROLE_NAME="<id>" "${ROLE_DIR}/role_sleep.sh" --install-cron` 安裝睡眠與小睡排程(已安裝則更新;小睡預設啟用,可用 `ROLE_NAP_ENABLED=0` 關閉)
12. 回報結果時列出角色顯示名稱、角色 ID、角色檔、記憶目錄、是否建立初始記憶,並提醒:**重開 CLI 工作階段**角色才會載入;`SessionStart` hook 只在啟動時觸發。
10. 若已取得形象圖,使用 `imagegen` skill 產生一張 3x3 心情 emoji 圖表。生成時以形象圖作為角色外觀參考,產生至少九種心情:開心、微笑、安心、擔心、驚訝、害羞、哭哭、想睡覺、期待。要求保持角色辨識點一致、表情在小尺寸可讀、無文字、無浮水印。若使用者提供的是受版權保護的角色形象,產出應視為使用者指定角色的個人化衍生表情資產,不得宣稱為官方素材
11. 將心情 emoji 圖表保存到 `~/.roles/<id>.assets/emojis/<id>-emotions-sheet.png`(小寫檔名可讀即可;不要覆蓋既有檔案,已存在時加版本後綴)。若環境有可用圖片裁切工具,可額外切成 9 張單獨 PNG;沒有工具時保留完整圖表即可,不要為了裁切引入不必要依賴
12. 若心情 emoji 圖表建立成功,回寫 `~/.roles/<id>.md` 的「簽名 emoji」區塊,格式為:
```markdown
優先使用<角色顯示名稱>專屬心情 emoji 圖表,而不是固定 Unicode emoji。當對話介面可插入圖片或連結時,依心情選用 `<emoji sheet path>` 中對應表情;純文字或不支援圖片時,用原本使用者輸入的 `<emoji>` 作為 fallback。
心情對應:第 1 列為開心/微笑/安心;第 2 列為擔心/驚訝/害羞;第 3 列為哭哭/想睡覺/期待。
```
若心情 emoji 圖表建立失敗或使用者不提供形象參考,保留原本使用者輸入的 `emoji` 區塊並回報原因。
13. 若尚未有啟用角色,或使用者要求,寫入 `~/.roles/.active`(單行角色 ID)。
14. 執行 `ROLE_NAME="<id>" "${ROLE_DIR}/role_sleep.sh" --install-cron` 安裝睡眠與小睡排程(已安裝則更新;小睡預設啟用,可用 `ROLE_NAP_ENABLED=0` 關閉)。
15. 回報結果時列出角色顯示名稱、角色 ID、角色檔、記憶目錄、是否建立初始記憶、是否建立心情 emoji 圖表與其路徑,並提醒:**重開 CLI 工作階段**角色才會載入;`SessionStart` hook 只在啟動時觸發。
### `--use <角色 ID>`