关于 peon-ping-use
用于指定当前 peon-ping 聊天会话所用音效包的技能。Hook 会验证音效包并分配给会话,也提供手动配置备用流程。
主要功能
- 01按会话选择语音包
- 02验证所选音效包是否存在
- 03启用会话覆盖模式
- 04按会话保存音效包分配
- 05提供手动备用流程
适用场景
- 01为聊天设置 GLaDOS 等音效包
- 02命令 Hook 失效时手动配置
- 03在 Cursor 中使用默认分配
- 04将会话恢复为已配置的轮换模式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ peonping/ peon-ping --skill peon-ping-use安装后在 Claude Code 中输入/peon-ping-use确认已加载。
详细介绍
peon-ping-use
设置当前聊天会话播放的语音包(角色语音)。
工作原理
当用户输入 /peon-ping-use <packname> 时,beforeSubmitPrompt hook 会在命令到达模型之前拦截它,并立即处理:
- 验证请求的语音包是否存在
- 在 config.json 中启用
session_override轮换模式 - 在 .state.json 中将当前会话 ID 映射到请求的语音包
- 立即返回确认(不消耗 token)
当 hook 阻止消息时,Cursor 会让光标留在输入框中,你可以立即输入下一条消息。
hook 脚本(scripts/hook-handle-use.sh 和 scripts/hook-handle-use.ps1)负责完成所有工作;此 SKILL.md 文件仅用于在 / 命令自动补全菜单中显示此命令。
用法
用户可以输入以下内容来调用此功能:
/peon-ping-use peasant
/peon-ping-use glados
/peon-ping-use sc_kerrigan
如果未安装 hook 或 hook 执行失败,你可以按照以下说明手动操作。
手动备用方案(hook 失败时)
如果 hook 因某种原因未能拦截命令,请按以下步骤操作:
1. 解析语音包名称
从用户的请求中提取语音包名称。常见的语音包名称:
peon— Warcraft Peonglados— Portal 中的 GLaDOSsc_kerrigan— StarCraft 中的 Kerriganpeasant— Warcraft Peasanthk47— Star Wars 中的 HK-47
2. 列出可用语音包
运行此命令以查看已安装的语音包:
bash "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/peon-ping/peon.sh packs list
解析输出,确认请求的语音包是否存在。
3. 获取会话 ID
会话 ID 可通过环境变量 CLAUDE_SESSION_ID 获取。读取它:
echo "$CLAUDE_SESSION_ID"
如果为空(Cursor 用户): 在 session_packs 中使用 "default" 作为键。这会将语音包应用于所有未显式指定语音包的会话。添加 session_packs["default"] = {"pack": "PACK_NAME", "last_used": UNIX_TIMESTAMP}。
4. 更新配置以启用 session_override 模式
读取配置文件:
cat "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/peon-ping/config.json
必需: 将 pack_rotation_mode 设置为 "session_override"。语音包必须存在于 packs 目录中;如果分配的语音包缺失或无效,peon-ping 会回退到 default_pack 并移除过时的分配。hook 也会将该语音包添加到 pack_rotation(手动备用方案也可以执行此操作)。
设置后的配置示例:
"pack_rotation_mode": "session_override",
"pack_rotation": ["peasant", "peon", "ra2_kirov"]
如果 pack_rotation_mode 为 "random" 或 "round-robin",请将其改为 "session_override"。如果请求的语音包不在 pack_rotation 中,请将其添加进去。
5. 更新状态,为此会话分配语音包
读取状态文件:
cat "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/peon-ping/.state.json
更新 session_packs 对象,将此会话映射到请求的语音包。如果 session_packs 不存在,则创建它:
{
"session_packs": {
"SESSION_ID_HERE": "pack_name_here"
}
}
使用 StrReplace 或编辑 JSON 来添加或更新条目:
- 如果
session_packs存在:添加或更新会话 ID 键 - 如果
session_packs不存在:在左花括号后添加它
6. 向用户确认
发送类似以下内容的成功消息:
Voice set to [PACK_NAME] for this session
Rotation mode: session_override
错误处理
- 未找到语音包:列出可用语音包,并请用户选择一个
- 没有会话 ID:告知用户此功能需要 Claude Code
- 文件读写错误:报告错误,并建议手动编辑配置
示例交互
User: Use GLaDOS voice for this chat
Assistant: [Lists packs to verify glados exists]
Assistant: [Gets session ID]
Assistant: [Updates config.json to set pack_rotation_mode: "session_override"]
Assistant: [Updates .state.json to set session_packs[session_id] = "glados"]
Assistant: Voice set to GLaDOS for this session
Rotation mode: session_override
Cursor 兼容性说明
Cursor 不会公开会话 ID。请改用 session_packs["default"]:使用手动备用方案时,将 "default": {"pack": "peasant", "last_used": 0} 添加到 session_packs。这样会将语音应用于未显式指定语音包的会话(包括 Cursor 聊天)。
重置为默认值
要停止在此会话中使用特定语音包,请从 .state.json 中的 session_packs 移除会话 ID,或将 pack_rotation_mode 改回 "random" 或 "round-robin"。