ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

PreToolUse Hook实战:如何用everything-claude-code强制开发服务器运行在tmux中(完整指南)

PreToolUse Hook实战:如何用everything-claude-code强制开发服务器运行在tmux中(完整指南) PreToolUse Hook实战如何用everything-claude-code强制开发服务器运行在tmux中完整指南【免费下载链接】everything-claude-codeClaude Code toolkit - agents, commands, skills, rules, and hooks for productive AI-assisted development项目地址: https://gitcode.com/GitHub_Trending/eve/everything-claude-code你有没有遇到过这样的场景让 Claude Code 帮你启动开发服务器它直接执行了npm run dev结果会话一结束终端日志全丢、进程状态不明你只能干瞪眼今天这篇文章用everything-claude-code一个集 agents、commands、skills、rules、hooks 于一体的 Claude Code 配置工具箱中的PreToolUse Hook实战教你在 3 步之内强制开发服务器必须运行在tmux中从此日志随时可查、进程永不失联。为什么开发服务器必须跑在 tmux 中 AI 代理执行npm run dev这类命令时有两个天然隐患日志不可见dev server 是前台长驻进程会话结束后输出随之消失出了错也无法回溯进程失控你不知道它到底活着没有重复启动还会撞端口。而tmux终端复用器恰好解决了这两个问题把服务器挂在 tmux 会话里进程独立于 Claude Code 会话存在随时tmux attach就能回到现场查看日志。但 AI 是健忘的——今天提醒它一次明天它又会直接裸跑。正确的做法不是口头约束而是用 Hook在规则层面强制拦截。60 秒理解 PreToolUse Hook ⚡everything-claude-code 的 Hook 体系文档见 rules/hooks.md核心分三类事件事件触发时机典型用途PreToolUse工具执行之前参数校验、拦截危险命令PostToolUse工具执行之后自动格式化、类型检查Stop响应结束时最终审查如 console.log 审计PreToolUse 的威力在于它运行在你AI真正敲下命令之前并且可以通过退出码 1直接让命令执行失败——相当于给 AI 装了一道门卫。这正是强制 tmux 场景需要的能力。实战第一步安装 everything-claude-code 先获取仓库git clone https://gitcode.com/GitHub_Trending/eve/everything-claude-code安装有两种方式插件方式推荐在 Claude Code 中通过/plugin marketplace add添加市场后执行/plugin installagents、skills、hooks 一键全上手动方式把 hooks/hooks.json 中的 Hook 配置复制到你的~/.claude/settings.json。本文主角配置就藏在这个文件里打开它你会看到PreToolUse数组中的第一条规则{ matcher: tool \Bash\ tool_input.command matches \(npm run dev|pnpm( run)? dev|yarn dev|bun run dev)\, hooks: [{ type: command, command: node -e \...process.exit(1)\ }] }完整定义见 hooks/hooks.json官方注释写得很直白Block dev servers outside tmux - ensures you can access logs拦截 tmux 之外的 dev server确保你能访问日志。实战第二步看懂 Hook 是如何拦截的 拆成三行看规则其实非常直白matcher 正则匹配只要 Bash 命令命中npm run dev、pnpm dev、yarn dev、bun run dev中的任意一种Hook 即刻触发执行拦截命令Hook 向 stderr 输出三条提示告诉你被拦了以及正确姿势process.exit(1)返回退出码 1Claude Code 视为命令执行失败dev server根本不会启动。于是当 AI 下次习惯性地执行npm run dev时它看到的不再是满屏日志而是这样一段忠告[Hook] BLOCKED: Dev server must run in tmux for log access [Hook] Use: tmux new-session -d -s dev npm run dev [Hook] Then: tmux attach -t devAI 读得懂 stderr——它会立刻改用 tmux 命令重新启动一次犯错终身记住。这就是用退出码教 AI 守规矩的精髓。实战第三步享受软硬双保险 ️这个工具箱的设计细节值得品味它对dev server 用硬拦截exit 1直接失败对其他长任务用软提醒。看 hooks/hooks.json 中的第二条 PreToolUse 规则它匹配npm install、cargo build、docker、pytest等长耗时命令但只在非 tmux 环境下打印一句建议进 tmux退出码为 0不阻断执行。软硬结合的逻辑是dev server 裸跑 日志必丢 →零容忍硬拦构建、测试偶发裸跑损失有限 →只提醒不烦人。这种按风险等级区分拦截力度的思路值得你设计自己的 Hook 时借鉴。自定义你的拦截规则改 3 个地方即可 ️想把这套机制套到自己的场景比如禁止 AI 直接git push --force只需照葫芦画瓢改三处改哪里说明matcher正则换成你要匹配的命令特征如git push.*--forcecommand输出写清被拦截原因和正确做法AI 会照着改退出码exit 1硬拦截exit 0只提醒配置改完后用仓库自带的测试套件验证 Hook 文件是否合法它包含 JSON 校验、事件完整性检查等用例node tests/hooks/hooks.test.js测试入口位于 tests/hooks/hooks.test.js想跑全量测试可以执行node tests/run-all.js。常见问题 Q为什么 Hook 命令都以node开头为了跨平台。everything-claude-code 的所有 Hook 脚本都用 Node.js 重写见 scripts/hooks/Windows、macOS、Linux 行为一致测试中甚至有所有 hook 命令必须用 node的强制校验。QPreToolUse 和 PostToolUse 该怎么选想事前否决用 PreToolUse本例想事后补救自动格式化、类型检查用 PostToolUse。Q拦截提示为什么不写进系统提示词提示词会随上下文压缩失忆而 Hook 每次执行命令前都雷打不动地触发——规则的持久性远强于记忆的持久性。小结 用 everything-claude-code 的 PreToolUse Hook 强制 dev server 跑进 tmux本质是把AI 守规矩从口头约定升级为执行层强制matcher 定边界exit 1 定铁律stderr 教方法。三步落地安装 → 看规则 → 验证你的 AI 代理从此不会再让你在黑盒里猜日志了。更多 Hook 玩法欢迎翻翻 hooks/hooks.json 里的 PostToolUsePrettier 自动格式化、TypeScript 检查和 Stopconsole.log 审计——好工具值得逐个拆。【免费下载链接】everything-claude-codeClaude Code toolkit - agents, commands, skills, rules, and hooks for productive AI-assisted development项目地址: https://gitcode.com/GitHub_Trending/eve/everything-claude-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进