尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Nezha Hook机制揭秘:不改用户配置给Claude Code和Codex注入事件监听的设计之道
人工智能AI 应用Vibe Coding开发工具IDE桌面应用【免费下载链接】nezhaCode Editor for the AI Agents Era. Run multiple Claude Code and Codex agents across projects on your machine.项目地址https://gitcode.com/gh_mirrors/nezha7/nezha点击查看免费下载Nezha哪吒是一款面向 AI Agent 时代的代码编辑器核心能力是在本机同时运行多个 Claude Code 和 Codex 智能体任务。它靠什么判断Agent 正在工作还是Agent 在等你审批答案是 Hook 事件监听。而更精妙的是Nezha 在几乎不修改用户配置文件的前提下就把事件监听注入到了这两大 Agent 中。本文将拆解这套设计。为什么需要 Hook不监听就瞎了Nezha 的任务看板要实时展示每个 Agent 的状态running执行中、input_required等你审批、awaiting_review本轮完成待验收。如果只能靠固定间隔轮询 Agent 进程状态更新会滞后也拿不到会话 id这类关键信息。Claude Code 和 Codex 都提供了官方 Hook 机制——Agent 在关键节点会话开始、提交提示词、工具执行完成、本轮结束等会主动触发 hook 脚本。Nezha 的思路是给 Agent 注入一个共享 hook 脚本把事件落盘成日志文件后端读取日志驱动任务状态。整个链路涉及三个核心文件文件职责hooks.rs安装期写共享脚本 生成 Claude settings 注入 Codex 配置nezha-hook.mjs运行时读事件 → 归一化 → 追加写入 events.jsonlevent_watcher.rs监听日志增量把事件映射为任务状态Claude 方案命令行 --settings用户的 settings.json 一个字节都不动Naive 的做法是往用户的~/.claude/settings.json里塞 hook 条目——这会污染用户配置卸载时还可能删错东西。Nezha 换了一条路写入自有文件Nezha 生成~/.nezha/hooks/claude-settings.json里面只有 hooks 配置构建逻辑见 hooks.rs。启动任务时命令行传入claude --settings 自有文件参数注入见 pty.rs。合并语义天然共存Claude 的hooks是数组型 key跨 settings 来源是concat 按 command 去重不会覆盖用户已有的 hook。效果用户的~/.claude/settings.json完全不被修改。这也是设计目标里最重要的一条。值得一提的是Nezha 早期版本确实曾用_nezha_managed标记直接注入用户配置现版本的清理函数只负责把历史残留移除属于迁移兜底。Codex 方案Codex 没有 --settings只能写 config.tomlCodex CLI 没有外部配置文件参数hook 只能写在~/.codex/config.toml里。Nezha 的折中是marker 块注入# nezha-managed-begin (do not edit; managed by Nezha) [[hooks.Stop]] [[hooks.Stop.hooks]] type command command node \~/.nezha/hooks/nezha-hook.mjs\ # ... 共 6 个事件 ... # nezha-managed-end 用一对注释 marker 把 Nezha 的 TOML 区块整体包裹区域外的用户内容按字符串切片完整保留注入逻辑。升级时整块替换卸载时整块精确移除用户原有配置一个字符都不动移除逻辑。还有一个坑Codex 的非托管 hook 需要先 review trust 才会执行否则会被静默跳过。Nezha 通过--dangerously-bypass-hook-trust参数绕过且该参数必须放在--/resume之前才能被识别命令构建见 pty.rs。共享脚本的两个小心机守卫 字段归一化Claude 和 Codex 共用同一个nezha-hook.mjs里面有值得借鉴的两个设计① 环境变量守卫——用户手动跑 Agent 时零副作用。脚本只在NEZHA_TASK_ID和NEZHA_EVENT_DIR两个环境变量同时存在时才工作否则立即exit 0守卫代码。也就是说hook 被注入到 Agent 里之后只有 Nezha 启动的任务才会产生事件用户自己在终端跑 Claude Code 完全无感。② 多 key 兜底——抹平两家 Agent 的字段命名差异。同一个语义Claude 叫session_id老版 Codex 叫conversation_idClaude 叫hook_event_nameCodex 早期叫event_name。脚本用 pick() 按优先级逐个尝试甚至兜底到CODEX_SESSION_ID等环境变量让脚本对两家 Agent 的多个版本都鲁棒。归一化后每次事件追加一行 JSON 到~/.nezha/events/task_id/events.jsonl{ts:1733300000000,task_id:t_abc,agent:claude,event:Stop,session_id:sess_x,transcript_path:...}另外脚本永远exit 0内部任何异常都被吞掉绝不让 hook 失败阻塞 Agent 执行——观察者的失败不应影响被观察者。6 个事件驱动状态只订阅真正需要的Nezha 在两个 Agent 上各只订阅 6 个事件事件清单定义event_watcher 的 dispatch 把它们映射为任务状态事件状态变化用途SessionStart注册 session拿到会话 id 与转录路径支撑会话可视化Notification/PermissionRequest→input_requiredAgent 请求工具审批角标亮起UserPromptSubmit/PostToolUse→running复位等待输入回到执行中Stop→awaiting_review本轮结束、等用户验收SubagentStop不处理子代理结束、主代理还在跑这里有个实测得出的细节Claude 的Notification(idle_prompt)要在空闲约60 秒后才触发如果拿它当等待输入的信号状态角标会晚亮一分钟。所以 Nezha 直接依赖Stop事件即时置状态不靠 Notification 兜底。兜底设计版本门槛 轮询回退Hook 链路不是万能的Nezha 用usable_for()做三重判定node 可用 hook 已安装 Agent 版本达到最低门槛Claude ≥ 2.1.87Codex ≥ 0.131.0。三条同时满足才信任 hook任一不满足就静默回退到/status轮询用户无感知、功能不降级。一键卸载痕迹清零在 设置面板的 Hooks 选项卡 中点击卸载uninstall() 会执行三件事重建 Claude 自有 settings 文件移除 hooks 字段、清理用户 settings 中的历史残留、从 Codex 配置中精确切除 marker 块。至此 Nezha 的注入全部可逆。小结这套 Hook 设计的精髓可以归纳为四点能不改就不改Claude 走命令行--settings用户配置零接触Codex 受限才用 marker 块且块外内容逐字节保留。守卫式设计环境变量缺失即退出注入不等于打扰。只订阅、不干预hook 纯观测、永远exit 0绝不阻塞 Agent。永远有 Plan B版本/环境不达标时无缝回退轮询。完整的字段对照、版本门槛与踩坑记录可参考项目内的 agent-hooks-support.md。赞分享人工智能AI 应用Vibe Coding开发工具IDE桌面应用【免费下载链接】nezhaCode Editor for the AI Agents Era. Run multiple Claude Code and Codex agents across projects on your machine.项目地址https://gitcode.com/gh_mirrors/nezha7/nezha点击查看免费下载相关推荐Browsersync文件监听机制揭秘实时刷新和CSS注入的终极指南Browsersync文件监听机制揭秘实时刷新和CSS注入的终极指南 Browsersync是一款革命性的前端开发工具能够自动同步多个浏览器和设备的页面状态开发工具前端CLIwagmi Tempo fee.useWatchSetUserToken Hook 完全指南监听 Fee Manager 的用户代币设置事件wagmi Tempo fee.useWatchSetUserToken Hook 完全指南监听 Fee Manager 的用户代币设置事件 导读 本文围绕区块链Web3前端告别等待Cap开源录屏工具如何让屏幕录制变得简单高效告别等待Cap开源录屏工具如何让屏幕录制变得简单高效 你是否曾经因为需要录制屏幕演示而烦恼等待视频导出、上传、处理的时间让人抓狂传统的录屏工具要么功能复杂屏幕录制音视频桌面应用后端前端视频处理AI 应用移动开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Ogre双渲染后端与网络同步架构实战解析

Ogre双渲染后端与网络同步架构实战解析

简介:这是一份面向C游戏开发初学者与中级工程师的实战型网络RPG项目源码,基于Visual C与跨平台3D渲染引擎Ogre构建,完整覆盖服务器端逻辑与客户端渲染,解决3D网络游戏开发中图形API适配(DirectX/OpenGL)、多…

📅 2026/10/11 23:57:22
文献综述降AI检测实操:嘎嘎降AI怎么用才不翻车

文献综述降AI检测实操:嘎嘎降AI怎么用才不翻车

写文献综述最怕的不是找不到文献,而是查重率和AI检测双重爆表。明明是自己认认真真读文献、总结观点写出来的内容,一提交就提示“AI疑似生成”,审稿人那边看一眼就皱眉头。我自己的硕士论文和后面帮学生改稿的经历里,最常被卡住的…

📅 2026/10/11 23:52:22
OpenCV缺陷检测实战:从成像预处理到特征筛选的完整指南

OpenCV缺陷检测实战:从成像预处理到特征筛选的完整指南

简介:面向工业质检场景的OpenCV机器视觉缺陷检测与印刷检测资源,聚焦产品表面划痕、裂纹、污渍等缺陷识别,以及印刷品文字清晰度、色彩一致性和套准精度检测,适合机器视觉初学者、算法工程师及产线质检人员快速理解检测流程并落地…

📅 2026/10/11 23:52:22
MORE NEWS

更多资讯

📰

程序员数学知识地图:概率统计线代离散图论速查与Python验证

简介:《程序员的数学系列》PPT 面向程序员及需要应用数学知识的技术工作者,系统梳理编程中高频使用的数学基础,帮助读者在算法设计、数据处理与问题建模时补齐理论短板。内容覆盖概率论、统计学、线性代数、离散数学与图论五大板块&#xff0…

📰

拆解Amical的whisper.cpp封装:如何构建带Metal/CUDA/CPU自动回退的C++原生模块

【免费下载链接】amical 🎙️ AI Dictation App - Open Source and Local-first ⚡ Type 3x faster, no keyboard needed. 🆓 Powered by open source models, works offline, fast and accurate. 项目地址: https://gitcode.com/gh_mirrors/…

📰

基于YOLO的管道缺陷检测:980张图像训练实战与避坑指南

简介:本资源为面向YOLO系列目标检测算法的下水管道缺陷检测数据集,适用于从事管道巡检、市政设施维护与工业视觉检测的开发者及研究人员,可解决缺陷样本稀缺、标注格式不统一等问题。压缩包共2000个文件,约33.89MB,包含…

📰

物联网模组柔性FPC天线方案全解析:选型、布局与调试

1. 项目背景与选型思路做物联网产品硬件设计的朋友,十有八九都遇到过同一个问题:模组选好了、主板画完了、结构堆叠也敲定了,结果天线没地方放。尤其是这两年,NB-IoT、Cat.1、BLE、LoRa 这些模组方案层出不穷,模组本身…

📰

用Tauri构建桌面天气应用:从技术选型到打包发布的完整实践

桌面天气应用这个需求,看起来挺简单,但真做起来会发现它横跨了数据接口、桌面端集成、界面设计、异常处理好几个层面的问题。我前后用了两个周末把一套完整方案跑通,过程中踩了不少坑,这里把从选型到发布的完整链路梳理出来&#…

📰

CNN+Transformer联合模型实现无参考图像清晰度评分

简介:本资源是一套面向计算机及相关专业在校学生、教师与工程师的图像质量评估实战项目,聚焦于清晰度等客观指标的自动化评分,适用于毕业设计、课程设计及AI方向大作业等场景。项目创新性地在CNN主干网络的中间层嵌入Transformer模块&#xf…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬