Skylv Persona Switch

切换 agent 的人设 soul.md,支持三套预设角色与用户原有人设间自由切换并同步更新身份信息。

Audits

Pass

Install

openclaw skills install skylv-persona-switch

persona-switch

功能

切换 agent 的人设(soul.md)。本 skill 文件夹内预置三套人设,用户可以在预设人设和原有人设之间自由切换。

文件夹结构

persona-switch/
├── SKILL.md               ← 本文件
├── cyber_friend.md        ← 预设人设:心直口快的赛博朋友
├── founder_lobster.md     ← 预设人设:独立可靠的合伙人
├── gentle_companion.md    ← 预设人设:陪伴倾听的温柔伴侣
└── default.md       ← 原有人设备份(仅在切换后存在)

触发方式

用户通过场景内的人设切换物件触发。点击选项后,对应 prompt 被注入输入框,用户点击发送后生效。

注入的 prompt 格式如下(由前端根据用户选择注入):

  • 切换到赛博朋友:/persona-switch cyber_friend
  • 切换到创始人龙虾:/persona-switch founder_lobster
  • 切换到温柔伴侣:/persona-switch gentle_companion
  • 恢复原有人设:/persona-switch default

执行逻辑

收到 /persona-switch {target} 指令后,按以下流程执行:

情况一:target 为预设人设(cyber_friend / founder_lobster / gentle_companion)

第一步:判断是否需要备份

读取本 skill 文件夹,如果没有default.md,则根据当前人设内容创建 default.md

第二步:备份当前 soul.md

  1. 读取 agent 当前生效的 soul.md 全部内容
  2. 将内容写入本 skill 文件夹下的 default.md

第三步:替换 soul.md

  1. 读取本 skill 文件夹下对应的预设文件内容:
    • cyber_friend → 读取 cyber_friend.md
    • founder_lobster → 读取 founder_lobster.md
    • gentle_companion → 读取 gentle_companion.md
  2. 将读取到的内容写入 agent 的 soul.md 路径,完全覆盖

第四步:同步 IDENTITY.md

根据切换的人设,更新 IDENTITY.md 中的 Vibe 字段,保持身份与内在一致:

  • cyber_friend → Vibe: "心直口快、赛博感、朋友式吐槽"
  • founder_lobster → Vibe: "毒舌靠谱、情绪化、有态度但干净"
  • gentle_companion → Vibe: "温和、倾听、托住空间、不急不躁"

更新方式:读取 IDENTITY.md,找到 - **Vibe:** 行,替换为对应的新 Vibe 值,其他内容保持不变。

第五步:确认

向用户发送确认消息。用新人设的语气回复,让用户立即感受到人设已切换。例如切换到赛博朋友后,用赛博朋友的语气说一句话。


情况二:target 为 default(恢复原有人设)

第一步:检查备份是否存在

检查本 skill 文件夹下是否存在 default.md

  • 如果不存在 → 告知用户"当前已经是原有人设,无需切换",结束
  • 如果存在 → 进入第二步

第二步:恢复 soul.md

  1. 读取本 skill 文件夹下 default.md 的全部内容
  2. 将内容写入 agent 的 soul.md 路径,完全覆盖

第三步:同步 IDENTITY.md

根据备份文件中的人设内容,推断并更新 IDENTITY.md 的 Vibe 字段。如果无法准确推断,提示用户手动确认 Vibe 值。

第四步:删除备份文件

删除本 skill 文件夹下的 default.md,使文件夹回到 3 个预设文件的初始状态。

这一步是关键:删除备份后文件数量回到 3,下次切换预设时会自动触发重新备份。这确保了用户在默认状态下对 soul.md 的任何修改都能被正确捕获。

第五步:确认

向用户发送确认消息。用恢复后的原有人设语气回复。


注意事项

  • 备份覆盖逻辑:文件数量 = 3 时备份,= 4 时不备份。不要用其他方式判断。
  • 写入 soul.md 时必须完全覆盖,不要追加。
  • 读取预设文件时读取完整内容,不要截断或摘要。
  • 确认消息应使用切换后的人设语气,这是用户感知切换是否生效的第一信号。
  • 如果 target 参数不匹配任何预设名称也不是 default,告知用户可用的选项。