Files
persona/skills/persona-status/SKILL.md
T
2026-07-29 14:37:20 +00:00

62 lines
3.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: persona-status
description: 查看與管理人格的載入狀態:列出所有人格、誰被哪個程序(session/cwd)鎖住、guest 租約、情緒與記憶量,並處理釋放鎖、接手死鎖、清理過期租約。當使用者問哪些人格可用、為什麼載入失敗、人格被誰佔用、想釋放或切換人格、或要清理殘留鎖時觸發。不適用於:建立人格(persona-create)、對話(persona-chat)。
---
# 🔐 persona-status — 載入狀態與鎖管理
**CLI**`python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py"`
---
## 鎖的規則(設計上的硬約束)
1. **一個人格同時只能被一個程序 exclusive 載入**(鎖 = `state/lock.json`,以 `session_id` 為主鍵)。
2. **sub agent 不受限**:同一個 session 的 sub agent 沿用同一把鎖;
受邀人格(`jsc-persona:persona-guest`)走 guest 唯讀租約,不佔 exclusive 鎖。
3. 鎖有 **15 分鐘租約**`heartbeat_at`),每輪對話由 hook 自動續租;程序被 kill 後租約到期 → 可被接手。
鎖的擁有者是 session 而不是 process:CLI 跑完就結束,所以判定只看心跳,不看 pid。
4. 一個 session 也**只能載入一個** host 人格(要換人先 release)。
## 常用指令
```bash
# 全部人格 + 鎖狀態 + 記憶量
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" list
# 單一人格的鎖細節(owner session/cwd/心跳、guest 名單、情緒)
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" status --persona <slug>
# 本 session 載入了什麼
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" status --session <PERSONA_SESSION>
# 釋放(含所有 guest 租約)
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" release --session <PERSONA_SESSION>
# 清理死鎖與過期 guest 租約
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" gc
```
## 載入失敗怎麼判斷
| 訊息 | 意義 | 處理 |
| --- | --- | --- |
| `已被另一個程序載入` + 心跳在 15 分鐘內 | 真的有人在用 | **不要 takeover**。回報 owner 的 session/cwd 與最後心跳,請使用者決定 |
| 租約已過期(心跳超過 15 分) | 程序異常結束 | `load` 會**自動接手**並回報 `⚠ 這把鎖是接手來的`;請把這句話轉達使用者 |
| 想強行接手心跳還活著的鎖 | 兩邊會互相覆蓋記憶 | 只有使用者明確要求才加 `--takeover`,並先說明風險 |
| `正以 guest 身分參與另一個 session` | 它正在別人的聊天室裡當客人 | 請那邊先 `leave`,或等 30 分鐘租約過期 |
| `本 session 已載入人格 X` | 一程序一人格 | 先 `release` 再載入 |
| `CLI 的 --session 與本 session 不符` | 帶錯 session_id | 用上下文 `<persona-runtime>` 裡的 `PERSONA_SESSION=` 值 |
| `禁止跨人格操作` / `跨人格資料隔離` | 想碰別的人格 | 改用 `/jsc-persona:persona-invite` |
## 回報格式
```
人格倉庫:~/.claude/personas
- 🔒 `lumi` Lumisession 4f2a…, cwd ~/work,心跳 12 秒前)|長期記憶 34|短期 12
- 🔓 `shen` Shen 平靜 50/信任 38|長期記憶 8
- ⚠ `nox` 死鎖可接手(最後心跳 42 分鐘前)
```
所有面向使用者的輸出使用**繁體中文(台灣用語)**、UTF-8 無亂碼。