分享一个vibe小“寄“巧:用Hook 给 Codex / Claude Code 加个完成提示音

分享一个vibe小“寄“巧:用Hook 给 Codex / Claude Code 加个完成提示音
分享一个vibe小“寄“巧:用Hook 给 Codex / Claude Code 加个完成提示音

之前使用 Claude Code 的时候,为了方便摸鱼的时候加了一个很小的功能:

当 Claude Code 完成一轮任务,会自动播放一段“已完成”的语音。

这个功能本身不复杂,但体验提升非常明显。不用一直盯着终端了,可以有个让人放心地摸鱼 :rofl:

最近的版本中 Codex 也刚好更新了 Hook 功能,给 Codex 也整了一个。

主要流程

AI 完成一轮回答 / 任务停止

触发 Stop Hook

执行本地脚本

播放 完成语音

文件结构大概是这样:

.codex/
  hooks.json
  hooks/
    stop.js
  audio/
    completed.wav

hooks.json 里配置 Stop 事件:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "node .codex/hooks/stop.js",
            "timeout": 10000
          }
        ]
      }
    ]
  }
}

然后在 stop.js 里播放音频:

#!/usr/bin/env node

const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');

const audioFile = path.join(process.cwd(), '.codex', 'audio', 'completed.wav');

try {
  if (fs.existsSync(audioFile)) {
    const platform = process.platform;

    if (platform === 'darwin') {
      execSync(`afplay "${audioFile}"`, { stdio: ['pipe', 'pipe', 'pipe'] });
    } else if (platform === 'win32') {
      const safePath = audioFile.replace(/'/g, "''");
      execSync(
        `powershell -c "(New-Object Media.SoundPlayer '${safePath}').PlaySync()"`,
        { stdio: ['pipe', 'pipe', 'pipe'] }
      );
    } else if (platform === 'linux') {
      try {
        execSync(`aplay "${audioFile}"`, { stdio: ['pipe', 'pipe', 'pipe'] });
      } catch {
        execSync(`paplay "${audioFile}"`, { stdio: ['pipe', 'pipe', 'pipe'] });
      }
    }
  }
} catch {
  // 播放失败不影响主流程
}

process.exit(0);

如果你用的是 Claude Code,也可以放在:

.claude/
  settings.json
  hooks/
    stop.js
  audio/
    completed.wav

settings.json 里配置:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "node .claude/hooks/stop.js",
            "timeout": 10000
          }
        ]
      }
    ]
  }
}

大佬们也可以发散运用一下,给 Codex / Claude Code 在更多生命周期加上语音播报。这样或许能加强点人机交互感 :joy:

8 个帖子 - 6 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文