mcpField
P
peon-ping-use

peon-ping-use

github.com/peonping生产力5.1k73 次安装1 周前更新
代码仓库

关于 peon-ping-use

用于指定当前 peon-ping 聊天会话所用音效包的技能。Hook 会验证音效包并分配给会话,也提供手动配置备用流程。

主要功能

  1. 01按会话选择语音包
  2. 02验证所选音效包是否存在
  3. 03启用会话覆盖模式
  4. 04按会话保存音效包分配
  5. 05提供手动备用流程

适用场景

  1. 01为聊天设置 GLaDOS 等音效包
  2. 02命令 Hook 失效时手动配置
  3. 03在 Cursor 中使用默认分配
  4. 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 会在命令到达模型之前拦截它,并立即处理:

  1. 验证请求的语音包是否存在
  2. 在 config.json 中启用 session_override 轮换模式
  3. 在 .state.json 中将当前会话 ID 映射到请求的语音包
  4. 立即返回确认(不消耗 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 Peon
  • glados — Portal 中的 GLaDOS
  • sc_kerrigan — StarCraft 中的 Kerrigan
  • peasant — Warcraft Peasant
  • hk47 — 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"。

评论

支持 Markdown