feat(role): 新增角色人格與長期記憶 skill、hook 與腳本,升版 0.0.4 #8

Merged
admin merged 3 commits from develop into master 2026-07-28 03:13:47 +00:00
Member

變更摘要

新增 role skill:讓 CLI 工具以固定角色(namenaturevibe/簽名 emoji)回覆,並把與使用者的對話累積成可跨工作階段載入的長期記憶。

能力 說明
角色定義 ~/.roles/<角色>.md,個性欄位由使用者決定,共用行為區塊以 marker 包住並由 skill 維護;同名角色更新時逐欄核對新舊,未確認不寫入
啟動載入 SessionStart hook 注入角色定義+記憶:重要與興趣載入全文,技能→新知→日常→其他只載總結與標籤
對話記憶 Stop hook 每輪把對話濃縮成一則記憶寫進 ~/.memory/<角色>/inbox/;角色亦可主動補記(載入時提供帶絕對路徑的指令)
睡眠整理 預設 22:00–06:00,cron 每小時檢查一次:偵測到 AI 在運行就不睡、下個整點再試;沒有才整理 —— 分類六類、去重合併、設標籤與一句話總結、壓縮歸檔
遺忘 日常(≥14 天未更新且命中 ≤1)與其他(≥7 天)壓縮到 archive/forgotten/ 後移出常用記憶
補跑 cron 未執行(WSL 常見)時,白天啟動 CLI 會在背景補跑整理,不阻塞啟動

影響範圍

  • 新增 skills/role/hooks/hooks.jsonscripts/role/(6 支腳本,均為 100755)。
  • 既有 skills 不受影響spec-* 純規範內容未動。
  • 對未使用者零影響ROLE_ENABLED 未設定時,只有「ROLE_NAME~/.roles/.active 指向存在的角色檔」才啟用;沒建過角色的人 hook 立即結束。
  • README 補上 role 條目與「元件對各助理的適用範圍」表;三家 manifest 同步升版 0.0.30.0.4

重點檔案

檔案 職責
skills/role/SKILL.md --new--use--list--sleep--status--install-cron--forget-preview 各模式與角色檔標準格式
scripts/role/memory.py 記憶引擎:writeloadcollectapplyforgetstatsneed-sleepmark-sleep
scripts/role/role_load.sh SessionStart:睡眠時段只回報角色睡覺、不載入人格
scripts/role/role_capture.sh Stop:抽本輪對話 → 四欄記憶 → 遮蔽 → 落檔
scripts/role/role_sleep.sh 睡眠判斷、AI 行程偵測、整理主流程、crontab 安裝與狀態
scripts/role/role_lib.sh log、角色解析、睡眠時段、CLI 選擇、記憶目錄鎖
scripts/role/transcript.py 抽本輪對話與憑證/個資遮蔽(第二道防線)

驗證方式

以假 CLI(不呼叫任何 API)跑過完整鏈路:writecollectapplynewmerge)→ 原始記錄歸檔 → forget 實際壓縮移除;另驗證載入輸出格式、睡眠時段切換、AI 運行偵測(正確擋下進行中的工作階段)、ROLE_ENABLED=0 與無角色時完全靜默。

風險與注意事項

  • hook 支援範圍有限SessionStartStop 目前只有 Claude Code 一定生效,Codex 視版本;Antigravity 與 OpenCode 不支援(cron 整理與手動模式仍可用)。
  • cron 環境:排程條目會固定寫入當下的 PATHROLE_* 變數,值一律以單引號包裝並跳脫 %PATH 常含空白路徑,未加引號會在 cron 被拆成指令)。WSL 未啟動 cron 服務時靠啟動補跑。
  • 成本Stop hook 每輪會多呼叫一次小模型(預設 claude-haiku-4-5-20251001,可用 ROLE_MODEL 覆寫)。
  • 機密:記憶會長期保存並在每次啟動載入,故採兩道防線 —— 提示詞明令不得輸出憑證與個資,寫檔前再以 transcript.py redact 正則遮蔽一次。
  • 整理失敗(模型無回應或輸出非合法 JSON)時保留 inbox 不動、留待下個週期,寧可晚整理也不遺失記憶。
## 變更摘要 新增 `role` skill:讓 CLI 工具以固定角色(`name`/`nature`/`vibe`/簽名 emoji)回覆,並把與使用者的對話累積成可跨工作階段載入的長期記憶。 | 能力 | 說明 | | --- | --- | | 角色定義 | `~/.roles/<角色>.md`,個性欄位由使用者決定,共用行為區塊以 marker 包住並由 skill 維護;同名角色更新時逐欄核對新舊,未確認不寫入 | | 啟動載入 | `SessionStart` hook 注入角色定義+記憶:重要與興趣載入全文,技能→新知→日常→其他只載總結與標籤 | | 對話記憶 | `Stop` hook 每輪把對話濃縮成一則記憶寫進 `~/.memory/<角色>/inbox/`;角色亦可主動補記(載入時提供帶絕對路徑的指令) | | 睡眠整理 | 預設 22:00–06:00,cron 每小時檢查一次:偵測到 AI 在運行就不睡、下個整點再試;沒有才整理 —— 分類六類、去重合併、設標籤與一句話總結、壓縮歸檔 | | 遺忘 | 日常(≥14 天未更新且命中 ≤1)與其他(≥7 天)壓縮到 `archive/forgotten/` 後移出常用記憶 | | 補跑 | cron 未執行(WSL 常見)時,白天啟動 CLI 會在背景補跑整理,不阻塞啟動 | ## 影響範圍 - **新增** `skills/role/`、`hooks/hooks.json`、`scripts/role/`(6 支腳本,均為 `100755`)。 - **既有 skills 不受影響**:`spec-*` 純規範內容未動。 - **對未使用者零影響**:`ROLE_ENABLED` 未設定時,只有「`ROLE_NAME` 或 `~/.roles/.active` 指向存在的角色檔」才啟用;沒建過角色的人 hook 立即結束。 - README 補上 `role` 條目與「元件對各助理的適用範圍」表;三家 manifest 同步升版 `0.0.3` → `0.0.4`。 ## 重點檔案 | 檔案 | 職責 | | --- | --- | | `skills/role/SKILL.md` | `--new`/`--use`/`--list`/`--sleep`/`--status`/`--install-cron`/`--forget-preview` 各模式與角色檔標準格式 | | `scripts/role/memory.py` | 記憶引擎:`write`/`load`/`collect`/`apply`/`forget`/`stats`/`need-sleep`/`mark-sleep` | | `scripts/role/role_load.sh` | SessionStart:睡眠時段只回報角色睡覺、不載入人格 | | `scripts/role/role_capture.sh` | Stop:抽本輪對話 → 四欄記憶 → 遮蔽 → 落檔 | | `scripts/role/role_sleep.sh` | 睡眠判斷、AI 行程偵測、整理主流程、crontab 安裝與狀態 | | `scripts/role/role_lib.sh` | log、角色解析、睡眠時段、CLI 選擇、記憶目錄鎖 | | `scripts/role/transcript.py` | 抽本輪對話與憑證/個資遮蔽(第二道防線) | ## 驗證方式 以假 CLI(不呼叫任何 API)跑過完整鏈路:`write` → `collect` → `apply`(`new`/`merge`)→ 原始記錄歸檔 → `forget` 實際壓縮移除;另驗證載入輸出格式、睡眠時段切換、AI 運行偵測(正確擋下進行中的工作階段)、`ROLE_ENABLED=0` 與無角色時完全靜默。 ## 風險與注意事項 - **hook 支援範圍有限**:`SessionStart`/`Stop` 目前只有 Claude Code 一定生效,Codex 視版本;Antigravity 與 OpenCode 不支援(cron 整理與手動模式仍可用)。 - **cron 環境**:排程條目會固定寫入當下的 `PATH` 與 `ROLE_*` 變數,值一律以單引號包裝並跳脫 `%`(`PATH` 常含空白路徑,未加引號會在 cron 被拆成指令)。WSL 未啟動 cron 服務時靠啟動補跑。 - **成本**:`Stop` hook 每輪會多呼叫一次小模型(預設 `claude-haiku-4-5-20251001`,可用 `ROLE_MODEL` 覆寫)。 - **機密**:記憶會長期保存並在每次啟動載入,故採兩道防線 —— 提示詞明令不得輸出憑證與個資,寫檔前再以 `transcript.py redact` 正則遮蔽一次。 - 整理失敗(模型無回應或輸出非合法 JSON)時保留 `inbox` 不動、留待下個週期,寧可晚整理也不遺失記憶。
jiantw83 added 3 commits 2026-07-28 03:12:15 +00:00
SessionStart 載入角色與記憶、Stop 記錄對話成記憶,睡眠時段(預設 22:00–06:00)
由 cron 排程整理:分類六類、去重合併、設標籤與一句話總結、壓縮歸檔,
日常與其他依使用頻率遺忘;cron 未執行時由啟動路徑背景補跑。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
admin approved these changes 2026-07-28 03:13:42 +00:00
admin merged commit 0fae7e1723 into master 2026-07-28 03:13:47 +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#8