Codex Hooks 入门教程: 用音频通知告别漫长等待, 实现任务自动化

Codex Hooks 入门教程: 用音频通知告别漫长等待, 实现任务自动化

发布时间: 2026-05-09
作者: DP
浏览数: 0 次
分类: 视频
支持内容
## A. 相关脚本 > 1.1 .codex/config.toml ``` [features] codex_hooks = true ``` > 1.2 .codex/hooks.json ``` { "hooks": { "UserPromptSubmit": [ { "hooks": [ { "type": "command", "command": "\".codex/scripts/play-codex-audio.macos.sh\" \"start\" \".codex/audio/task-start.mp3\"", "timeout": 5 } ] } ], "PermissionRequest": [ { "matcher": "*", "hooks": [ { "type": "command", "command": "\".codex/scripts/play-codex-audio.macos.sh\" \"permission\" \".codex/audio/permission-needed.mp3\"", "timeout": 5 } ] } ], "Stop": [ { "hooks": [ { "type": "command", "command": "\".codex/scripts/play-codex-audio.macos.sh\" \"stop\" \".codex/audio/task-complete.mp3\"", "timeout": 5 } ] } ] } } ``` > 2.1 .codex/scripts/play-codex-audio.macos.sh ``` #!/usr/bin/env bash set -u event_name="${1:-}" audio_file="${2:-}" case "$event_name" in stop) hook_input="$(cat)" has_final_message="$( printf '%s' "$hook_input" | python3 -c 'import json,sys; data=json.load(sys.stdin); print("yes" if data.get("last_assistant_message") else "no")' 2>/dev/null )" if [ "$has_final_message" != "yes" ]; then exit 0 fi ;; esac if [ -z "$audio_file" ] || [ ! -f "$audio_file" ]; then exit 0 fi if command -v afplay >/dev/null 2>&1; then nohup afplay "$audio_file" >/dev/null 2>&1 & fi exit 0 ``` > 2.2 .codex/scripts/play-codex-audio.windows.ps1 ``` param( [string]$EventName, [string]$AudioFile ) if ($EventName -eq "stop") { $hookInput = [Console]::In.ReadToEnd() $hasFinalMessage = $false if (-not [string]::IsNullOrWhiteSpace($hookInput)) { try { $data = $hookInput | ConvertFrom-Json $hasFinalMessage = -not [string]::IsNullOrWhiteSpace([string]$data.last_assistant_message) } catch { $hasFinalMessage = $false } } if (-not $hasFinalMessage) { exit 0 } } if ([string]::IsNullOrWhiteSpace($AudioFile) -or -not (Test-Path -LiteralPath $AudioFile)) { exit 0 } try { Add-Type -AssemblyName PresentationCore $player = New-Object System.Windows.Media.MediaPlayer $player.Open([Uri]::new((Resolve-Path -LiteralPath $AudioFile).Path)) $player.Play() Start-Sleep -Milliseconds 1200 } catch { } exit 0 ``` > 2.3 .codex/scripts/play-codex-audio.linux.sh ``` #!/usr/bin/env bash set -u event_name="${1:-}" audio_file="${2:-}" case "$event_name" in stop) hook_input="$(cat)" has_final_message="$( printf '%s' "$hook_input" | python3 -c 'import json,sys; data=json.load(sys.stdin); print("yes" if data.get("last_assistant_message") else "no")' 2>/dev/null )" if [ "$has_final_message" != "yes" ]; then exit 0 fi ;; esac if [ -z "$audio_file" ] || [ ! -f "$audio_file" ]; then exit 0 fi if command -v paplay >/dev/null 2>&1; then nohup paplay "$audio_file" >/dev/null 2>&1 & elif command -v mpg123 >/dev/null 2>&1; then nohup mpg123 -q "$audio_file" >/dev/null 2>&1 & elif command -v ffplay >/dev/null 2>&1; then nohup ffplay -nodisp -autoexit "$audio_file" >/dev/null 2>&1 & fi exit 0 ``` ## B. 音频文件 > 3.1 通知音频文件下载 ``` https://pan.quark.cn/s/07c47e87f6e7 ``` ## C. links > 4.1 Codex Hooks 官方文档 ``` https://developers.openai.com/codex/hooks ```
总结内容
# Codex Hooks 入门教程: 用音频通知告别漫长等待, 实现任务自动化 ## 告别无效等待, 让你的 Codex 任务“开口说话” 你是否也曾遇到过这样的场景: 启动一个需要一小时的 Codex 任务, 然后放心地去喝杯咖啡, 结果两小时后回来, 发现任务在10分钟时就因为一个授权请求而暂停了, 宝贵的时间被白白浪费. 本期视频将为你提供一个优雅的解决方案——**Codex Hooks**. 我们将通过一个简单而实用的教程, 教你如何在 Codex 任务的**关键生命周期节点** (如任务开始, 请求授权, 任务结束) 自动播放音频, 从而及时获得任务状态的反馈. ### 你将学到什么? * **理解 Codex Hooks 的核心概念**: 了解什么是 Hooks 以及它的生命周期, 包括 `session_start`, `user_prompt_submit`, `permission_request` 和 `stop` 等关键节点. * **手把手配置 Hooks**: 我们将一步步指导你如何在你的项目目录下创建 `. codex` 文件夹, 并配置 `config` 和 `hooks. json` 文件来定义自动化行为. * **编写并集成自定义脚本**: 学习如何编写一个简单的脚本 (支持 macOS, Windows, Linux) 来执行播放音频的命令, 并将其与 Hooks 关联起来. * **激活与测试 Hooks**: 掌握在 Codex 界面中审查并“信任”你的 Hooks 配置, 确保其能够正常工作, 并进行一个完整的删除文件测试来验证效果. ### 不仅仅是播放声音 虽然本视频以播放音频作为入门案例, 但这仅仅是冰山一角. Codex Hooks 的真正威力在于其**自动化**的潜力. 一旦你掌握了基础, 就可以实现更复杂的功能: - **高级通知系统**: 将通知推送到你的手机或团队协作工具. - **自动化日志记录**: 在任务的每个阶段自动记录详细日志. - **代码质量检查**: 在代码生成后自动运行 Linter 或代码格式化工具. - **Git 自动提交**: 在任务成功完成后, 自动将变更提交到版本控制系统. ### 项目级 vs. 全局级 Hooks 视频还会讲解**项目级 Hooks** 和 **全局级 Hooks** 的区别, 教你如何将配置应用于单个项目, 或设置为对所有项目都生效的全局规则, 让你的自动化工作流更加灵活. 如果你希望提升开发效率, 让 AI 协作体验更加智能和无缝, 那么这期关于 Codex Hooks 的视频绝对不容错过!
关联内容
相关推荐
Antigravity Pro 配额要增加了? 深度解析传闻来源与可能性
Antigravity Pro 配额要增加了? 深度解析传闻...
00:00 | 405次

最近科技圈流传着Antigravity Pro订阅配额即将增加的消息. 本期视频将追溯这一消息的源头...

爱快泛域名/部分泛域名 DDNS教程,iKuai os新手教程
爱快泛域名/部分泛域名 DDNS教程,iKuai os新手教...
05:04 | 149次

欢迎来到爱快新手教程,本视频介绍了ikuai os使用内置DDNS技术,使用泛域名/部分泛域名的方式...

2025家庭网络升级方案分享
2025家庭网络升级方案分享
06:25 | 240次

2025年家庭网络升级方案分享,分享思路,希望一次抛砖引入,欢迎大家一起来分享自己的优秀方案。

远行星号0.97, 网页船插数据库上线测试
远行星号0.97, 网页船插数据库上线测试
02:46 | 148次

远行星号在线工具网站(https://sst.lib00.com),已上线船插数据库v1.2,录个视...